From 8d73917011d0772f10e85767193d2955a67c96fe Mon Sep 17 00:00:00 2001 From: linkmluser Date: Thu, 20 Jun 2024 19:05:14 -0700 Subject: [PATCH] refactor --- project/excel/linkml_common.xlsx | Bin 62455 -> 73861 bytes project/graphql/linkml_common.graphql | 292 +- project/jsonld/linkml_common.context.jsonld | 170 +- project/jsonld/linkml_common.jsonld | 1301 +- project/jsonschema/linkml_common.schema.json | 13523 ++++++++++++---- project/owl/linkml_common.owl.ttl | 2613 +-- project/prefixmap/linkml_common.yaml | 2 + project/protobuf/linkml_common.proto | 249 +- project/shacl/linkml_common.shacl.ttl | 4892 +++--- project/shex/linkml_common.shex | 408 +- project/sqlschema/linkml_common.sql | 1906 ++- src/linkml_common/datamodel/bibliographic.py | 130 +- .../datamodel/civilengineering.py | 307 +- .../datamodel/clinicalresearch.py | 137 +- src/linkml_common/datamodel/computational.py | 115 +- src/linkml_common/datamodel/core.py | 29 +- src/linkml_common/datamodel/datasets.py | 130 +- .../datamodel/energytechnology.py | 75 +- src/linkml_common/datamodel/engineering.py | 321 +- src/linkml_common/datamodel/environmental.py | 588 +- .../datamodel/extractiveindustry.py | 560 +- src/linkml_common/datamodel/financial.py | 247 +- src/linkml_common/datamodel/foods.py | 351 +- src/linkml_common/datamodel/geography.py | 224 +- src/linkml_common/datamodel/healthcare.py | 406 +- src/linkml_common/datamodel/investigations.py | 145 +- src/linkml_common/datamodel/linkml_common.py | 953 +- src/linkml_common/datamodel/measurements.py | 46 +- src/linkml_common/datamodel/plannedprocess.py | 31 +- src/linkml_common/datamodel/quantities.py | 10 +- src/linkml_common/datamodel/social.py | 219 +- src/linkml_common/datamodel/statistics.py | 122 +- src/linkml_common/datamodel/time.py | 38 +- src/linkml_common/schema/biodiversity.yaml | 30 + .../schema/civilengineering.yaml | 2 +- .../schema/clinicalresearch.yaml | 2 +- src/linkml_common/schema/computational.yaml | 1 + src/linkml_common/schema/core.yaml | 25 +- src/linkml_common/schema/economy.yaml | 35 + src/linkml_common/schema/engineering.yaml | 4 +- src/linkml_common/schema/environmental.yaml | 13 + src/linkml_common/schema/foods.yaml | 6 + src/linkml_common/schema/geography.yaml | 24 +- src/linkml_common/schema/healthcare.yaml | 6 + src/linkml_common/schema/investigations.yaml | 39 +- src/linkml_common/schema/linkml_common.yaml | 1 + src/linkml_common/schema/measurements.yaml | 25 + src/linkml_common/schema/organisms.yaml | 34 + src/linkml_common/schema/social.yaml | 73 +- src/linkml_common/schema/statistics.yaml | 3 + src/linkml_common/schema/time.yaml | 12 + 51 files changed, 21953 insertions(+), 8922 deletions(-) create mode 100644 src/linkml_common/schema/biodiversity.yaml create mode 100644 src/linkml_common/schema/economy.yaml create mode 100644 src/linkml_common/schema/organisms.yaml diff --git a/project/excel/linkml_common.xlsx b/project/excel/linkml_common.xlsx index 1a72ea7d4591eea53a9cb4219c38216fcca52191..7a95e1b639dc16164ebe7506ba92057d611c7b6a 100644 GIT binary patch delta 19435 zcmeHucT`kMv+poS5+q1wh)PD%fCN#31Ot*KXUUQ?k_JhV1qMWr43d>F0s?{}AgDx% zl9PY}f*?T+cOuBxux)m>d(U9&Zh9nyH@n5rW75ef(d zf)B|`=!-k{00I1?(?|)wz7BvqPzZz!_}ARgOx4BF$(7&C(Zzz#%igXdzVULi0BNYP zyo)1;eeU^%xoj_WQUlc|A?6;UL&7YyHe1W~iw@d7c&m4lr6zo_ds8@-E^a5BZ`CP^bZBc(3(N#6V9O;SYVjX|H_ly%&*@l`3p?axj;l*`kz z&An8>l}kRJLdhhhUj3{DYpL5zg|?^ynl~5zNz8-S03sA6@a3zfblvf!4;e%Ev6m9) zQTiH90trDnF1^H*Pb4MJ@-I?7?8@~C>MdPjWjN_DbYm^@as9}+kmmYM?WB^Lw!YD& zo{KEw9F~Jj{?w*SB_lQ8%zaPZ*z4FnRiL-+PW^%W&{Uzuu_SS^fyqKK;oD(>f5Z^v zVg3*$^aKAuzBa4G-3!?QC7r(mbo4?(r2{OkndQ^M*wd%ZTP(46@`pOb zTRoN%PKI`gK~z6=(NXgVl76w}G7}2W{6uu_v0JZcSwuX{o7NA~ugq#YoAGw(yx#q^ zg4bMCN8Q6=@Zm;o3TLwiM@RGp#I&Xj=%M_z2&ORX3cmUeQnQvHF@my>2@?$wucE&XCe=(RJMrqdFa$h4{{; zB^SPkvU{7IET4NVOXKjD&57R!Nt;O5u8_W`oLsG7cxtf6bjapNz-m}xC^FIuKh5h+ zabR8nI4e|80JU=59P1d`s4S7b;|hRLrI9RBbWlM-6h75e44W}E8x|ZDLd}9{f{a2x z8Dm4=<`)Buibzu)I%MY%F3N^cLo8J4^tJU$A^gxsmnr!+GYs& zK?)TVLzNfb#I!T6up+xzaZyC&Ss0*%l@$sXK)qot$LLFch8-FQ40{_H%ML?68%D3e zx5|qGqnkPp@Q`J}85`Mej1q>;iSZm=E}iZ4KB-$5 zjkB;Pms;tlkM;=e>T}8V-_)D}mf&5R*plf5b)Fy&)eY$i1*3LL?Kj-Za>*p+Y>DCy zL)LhTub#iqldqEy7@`JNAa-f(vKRu#JlUuJIc&AgSpD;C;pGRsk28BLjwrG0r%mwT zeuZpzci)ooxRX#q_B4Lofcn}UTqrhW{!wm5{kuVeg{t&3yQ&(gdhFB2yE=Q$-Heqb zngQY|Du%AwVX(OV?tK5w3LAkZuj5FM+>av-(8?N zR#iv2^3}TQ7MEq8ZrmpMF{XU$T1FWurL43Hfk5LcQ^<&KpWqGS&L=m!lC?JE)rt+< zh=j|5^|+&M{s^&O-?VT`)A*zi%W&h;^lhxm0e2lqzbxb~OYAkSQ6FB9GMwm@WWcM9 zF=-(*CRwh3B&hTe-y3456hC5TVmRePg5w`iU_9B+k?_0F(j57*~vwpc3u z_Qv+1uJ=Wj`f-_u^UON(nT@P|pYR>TZ>^hLQ(?aSy46Y4RSZURF|-TC_N`sU^e&f& z1djv6JB^$81q0T22i6xB9{nWL(Mm#l@*WO zLMCXi9Xz8`5HD)Ps9T>QKX}Jr=_X>kZAX2DpE6vX3qjru@SvY-WtHYrEnrwk{hah%v7Zr7Z`xT1eZPzv~Www*s1Co|c(=16)eUr{I zJ4x3cXGE%GTbG4I&vDSLtO|6s6gI+43NBwTo0?A5tU<&mlrXrxda-`Pl6sn(Vmji( zgxJP{;>)aPn#4tH_q3dZYXXiSGG7Ik($?dvFKKAisoPxQeA~X=x^eb9BFG zi6PI_o9g;CcA;cHFT-wmneB<=pL)VYH$EF_euEs^#X5D7ddyaUkw?)d1+r`u7xhE{ zt#&87H>@wTaNW;z?z&Lq?;G&5vbPS^6LrE z+$Yv|V$opHZE3u(w{u52@!U(g8&Y)VE*3u`zcJjZm5~3~Dup(s5zTt#2A33ofkP;GTq{(c`->fplhKyLD`nfDc~TLCJ^(wc5Q>RtK z$#aHCX*k8W3s%2AqmK$dpB24=%zK;=)oi<4(y(Mjg0f4zC7!}>=z6XcF0w-sqV zv6^)g7WIWR=ZJCa`11$wNS1g$$4ukUZe`uaH;sv>zI5+5y)LU-*QVd1ahx?&dyu9= zbXCU6ZA*-dfMLtujb>#3MO9l=mFPXEB55+xHOdniY1_+5GhM$K5{W*ZV-5GLU@aI@FpCZXEusJ)QeYKyStDo;YNilN6zpLw#B=fQ?-m~deU8bXN z1-A(ApYOlfJB91B`YBJwCB^LWgQMqeK5S*T>bJi$#+4tPWFa{)aCOeh#P)2-rQjgf zlo-V_F$x#<{O2zoG2{nwuNzgD;rOo%QV6-57Di(;5qZmWQ>-~x>BJzm$yQBG@U_b? zDtme`89y3(2Oy&Iny>zCXDD2G)vT(#Tq zxUO4&Zd}8?MJ=|QY>eysrsQ?16KR6)og0aPxeU%P^7rhLuZ_vE@G%US$UYQ{iRCUj z<9X`a;-nb~;uCj~60!1{ja;Q;ir!36S+`vJ(wsjZPTGreY*BmL!V=~RqM?SqrkO{= zwvL@pximcRt}Ef`;VpM~Leu4Ok;kZL|1+WgmnIZT9EnfG`2YKK%Ks16C)T=CkTjG35j`ZVUMtzXJjiKJR2dIU9 zURlaKSdq+AxX7D46sV6L6&SxH#>0L_8xRqUK7bIyr_skqw7Q{UlK{mY51W+9`{2T; zs!8r_lIKIJOl zL8$kb*2Ba%U!fT1OP|Q7JC)q&z(>>C&b}R$v7r_(b@WG0HKr#BmsQ0rR#I)2K|^F; z&DkNi?aX`CIag1;m&4Z2OmeXId(m|&vCkw`j$F4u!$Z_~Zsx1lDz~Wl=s=w}PY&E@T1Ip|)M;q{h> z(KAlXS~*jB@n19#Z(*ruw7QePf?v0nDm>+ns5196+>uW(oqG0Bo^525C|=hY4Nf{UZNvIW@_L9*RTJB zXxzSaetY|kubg)zFT{#zJVdA9PEFmLGY|Dw+0#w%WQ^!o9d!(b7lz30dP8sIcTq(e z55r(rlU2$o6U8@|>;fn)%D2Y5=TD2#6S@~|-sGsWL5SnHC3{+8cRfSYQHJM}oT}U) z&2EV$6Asz&^L7_~r$X@URMe+?Y4?@6o2zHf_J!!N%1oMcgg3TX1+a-Fg~`3xjnQDZ z%s%Pq)8#L*!B_v+Xne!fpY(e){sGlK`0`>UTUV$s5R4t$x^kueLfRh~rS!^WaUNtU+)`=kJ~)kIN4ZvB{T25c*+uo$rQXnyXh@gr4oR{&}S zFs!?xgOBR+I>-P_MY2Lq3!pw&q+{6mZnGj0`nae!(YikX=xI2rGujZdLsh*Vc7*}5 zo*|u#m{H@g@ffl!EkKSiDmmT=L#9i7B6AcVdkK)i5a2#`*HF7XEI_o+qnWNkEf!rz zew~Msla9n1e`uL3WS~3h(Z}PSV|%;eINS~rM)BK`QX?5N!Mwvr9th{QM#?MsZ04d? z_1cmE^_mMMS=0Bhht9~Hpq5W*^E+0Ozs42OmF8?SFhgg+Iy~( ziA!WE<2ti(G~0pCq!lCsr{ z+=2AOMS_oBZ1NaxVv%_9=e_=XDB8d>)egA69O7@O(M>ywP-rO0DBU!8u zp9jI~V%fJYQbn!RdIV>5=WSU(eEV&-!S{UfSkB}*1@GH3D;rXJtfDi+ldhgFMiU7= zPu5S?FgN98yH-mYZLDkvD~AU0m*yl{`8PpFl3Tn(?cYt*VN+?2bstZi$@CStHx=FUTVXB)k zSzmRQ5djh;U)0~`SSI5Vm$4CO7;rb*k8;*#Q$d1A`r&a}tyBgD;1Kek>JTti$nYDmTSYIfPYaWLC=q^HD{N%p$(@>uGtwp|9dR-tRwNn% z?8id{{gqRvN8wQZ<@CLpUdBfy3Aea_9F9v`0djjgp9{G9}Ir zrz+fqudS$}F9h+xeZaao#D3yILsLoetbi=h%MAi}4bIJTVw>8ez54j0*nT#x(moas zAy(A^zSfh7dZJf5_6+x5IQnWl>gnXbEqaC|W>h$lHFG_N*sM3L5%3ZomJAOGIH`ht zL)z-e5p%v7Ex+XmfkYdSX2C1R|qI2R%GluT$F`s zI0pEn#tIb?L{Y0>!?b-hSdol#xTri0PYi(e9wI_Ny~n;iI?wYXD~Y~Kh+ys#V4_DT zF7Ng%uqYJ4TZf1U>dL(}j3AIw^yjSuY>WMDbLy}nNfvNX>N>U<2Gdej)MZ~iOamQS zhzkB3*TE5J!%+#2_L!{pkAxyNQqY$UA%w{={aYzT1ejC&_fm=oFsJzMr4$9hoZ^3* zQq-wn6@M8Itd?4g)r2ut8&Pg%1`@%cB(eR?idRPD21g|C+6jM{3BBKY2cPJ9iTgLB z1*7asH?Hx`wdOMLto_~c5kpT&2S%8J9eBmW%=kxV(L75&2$Ie7idheqI@b8 zRaX*2#ZsVkDej|NAn+EE&DJ+$ul>kf;Qp6bGZE5UZN8J+cXJ9Yp?e9k`lfk&zHv?Y zT>CROd>5M5mW(9rH&Cl-6x$kt=%LUAof(3Pp8lCB0#Xt2A268+&HF!f8O# z0w9G}y};~ifE6k#{`2Jk*z`~_0h9ru4yGR+bchLpK?j(W0=xuN431LPam4gL(*^uh z0v>XS3x>kgQ^$b%`oO*84jw90-v9#uQjv%y;BABOASNO;0mO))L`>MBpjfmTVxpiL z;3L_u?&KaFLhL{8B#-9bb0_Tod+r2@J|x7%!9xPHq6X<#S65&iQi2y-gt)+W|MFZK z@Gl+y0fg)YEcWDB;gWYr!*;BzmJ=L?6w??=wl_XfS%+n*q`elm;*(I)yCq?aO}Z;M zypu2}*Krl!xX&c_sq?X+*g|@`ON}iLR*waql8En__7JWmSKxk)%8h&=pg5ZTsG{ur z+}4YWXWOOgMBbVCBZy1-tMX__b>Fn{+64g5%eX3^x$nbG>Rs-zT;)R0t0XZrU_arp z-V5oNX036pTX>Sd#nciiEi0oY6WS%(F0;r9-{PDp{Xy1F^bW6>)g)8C02ArnL@QS8BU?C7sSrYrhJ@qxiEXhYGBF%>m>6m&-}tt zGi>2o@Dd5=KYqOY>!cMBD>wj#p*b)Nm`e@;uAtv@$+*XJdWvfO%7MH!zZGkr@gxE+jJx< zTrMlR^jyB!WrfK?Ka-3N)Gb}DS4~GcZt>N;Y)-p)xuEaGDzuJcsLR#Q&Z+2^Y_i-k z5IiDAyLdFh7MYuCCQ2k_OJ7s9QVT*lxIGq^wy{{*|aN!JBPjI?t zZKrn5kmBDmx0J;nuR>6m>qc=$w%u4fkvfPth??c;hXg5`13d4a0Ejt8-{_KqS` zZa1&Vv}uR=I!)8kBSOFaeEcCsS7Yc7_0yfD9Z;(zOft-MP<9CCUxn0B-u1p+a zKY~u~J1Of|A5)x;f1I#)?ozcDeh=_IxAL~j<4w-F8r*gZ9nVr#tsBU|WnW2-YMc^HvdHW0wrMq2mCASrg!>r+h@0c0}gOMvN!CuZGc5}@BB==7pX_U%b zrpKRuwKPZS=J4(6q*1?EVPt#Rb81stbY5od?5AmmmJ>d-uUlB`Zjrae;cu9T?8iR~ zJ@U<%<;_CygDcg^dxzg-(5ZZ=xX{l-5Qw>vrNy`?_B$z<^DEK{AUKUGw`#<+0Y?YC z)MTB%h-vbN0^Oo0<$%HO#~m9`Iq>5Q&G!Sk#Zeu8I#4pSrAM@cB3=TP#>PP>^3;f_ zumuGKK<>YHBUe}PQ0f7_SYUTcj2C$~zzzR}8#s`I$1&Z12uB8d`i1+CZeVQTpJTr@ z^o9BW!Y=|DDo`~fX#)XDKOzVt{EY?ulq_)F%=kVwlKB}PN-awX^I;B%CY@-Ydmr~Z zcjg)%>UB;Mrkmo#YlJ({-SE8|7+VY#nHPlV{zEv>Esj#kQp0pl5#D=-K1`^-tA;HI zRA8V>9>ACvIl10wE}P5E%bERXT`+GM#^`N(XUJrt@!A>2M#E>HM`y=a+J-pXNHqh5g4| z|3*>Oe{HTGZ*hPhIPiUfBL8_nTC=(MKX^cL8F$#Q0X!Q1FCI-4HBjM+ad=VXwyml_ z_vK&aT3bZJ8!8WSB=?3Ohz4&4dtRA-auzx6r4}tV6 zK_DdHn-;&Pql@h|M@L)qZLdDnQF~g9;>FX5TO?&wsykMlV)LAVE(5xTP8;ra*ybEc zL#*=2Do<^AQXV;ZPK@5T|0qO~_5I5D=sE-cu;`VeK4p@t z%?ri*XN{kp9TDs>qOr0>2wLyYyE$pW8!vAnsi=cYobp81Hng}mHIB+|!?okrBV~rt zy|Q1GJ@NF?jr3*ZuNA-6_Bv39g*r&AjOp>U%lGCY<`C=Q{f~1tr#Ce%W}}>C`%epg zR(N^+b#v`L%`R_eT4~RtrYXmfFyp>&HVQR*<*7!mpKuon*h_G~vb}lUaY&1#^9a}b z788f3r8?D0Z$>SQ9vOG*SSY&|^0%j}u4ngz<QBfM78?ZQ(#qO8}~X6x>-$3TGL^tym*{)M?tfukb*ZIztliYkePe` z^s&lOTUo^m8c^%Yv8OMwx2Lt=6N<^Dh)p=LHFjsN-Do5+0V^IptECRl4`EQ|n?;NyhViOxNb$ zZ^qU?PsCR954-Y(pt{%T-mwX|eeT+v59!jawz7;!hW^k8K3yl}zOukSF{ssfufmcQ zKSl%%Ni}y4Drqh`Zt2^IToqb=6*ws+7m7H!ILxhAH--=k%#=DG>VMKk#=WIJ0xGvd z27jNFJL?V81j8Xsy-hY=Iz_DQ%}t;TI!~( zkB}h{!B@W8R#}FwwrbB^3bd9wpSQotPC$M*qt*b8z27eWVudx`CerRng z_-1`Zn>6@~phri8`WT)gks!deE!)bQihL;IRJk!|($KXj*t{vY>CMBj?=391AqekB ztb}oX5UurQj=3Et?q3)kfBug9jwc&oX)km7?eZkO`}L=vo;vzYrN}I7Q4l`pSa7yd zl~GpUcATk$yWz`fvm)k%);7+JhMp(auTK`65zY(BZO|ltxI=Khd%9i{9(S!}z^}WN zbir)tOg%@BCJu|_3%Qo_5l{jbio1d`a^oImYVXqdIFGWnsZGibT8x*t z)YWE+#WJ_vBr)W;^O&5Il(p@qNlNuw6@(CD^Zt?KJ&kh9Ks~LnjY4}T0t%etvz%qj zh|&uK5y!)J2;duO?2D~AM@IF+ulQY{rGXshgs`?@ne3>vRHdzHLmQ=JLcg)l>~+db zSzl&Z%Ws>NI?k*Sw#~I!#9N%y8B-YOm2qOdK~U!LHRgu=HeV^>&cLuriQS7VPx9Nm zz9|ays$5qOTi}BCFcrMn?{vhU#e!$6N@3D=boWaD;`l@^7+wl{3%-a^RaQ;4Fd0?s(Uh5yJ8Fd zb!lxT)%vcZDBxD&Y8t zkF*}=j2hH6lVYAI2bHB~)nyPzFmCCWrZJaUwV7mGl8~K5MXVW_-DKo6FZ!nTE;Zf= zFBHoz_`KzA;L#mD{)=1gH~kABK7@M>s__Hv7hBdEM7o(NnNRw0eJS@p!k~@?@6K3u zb5wY;Q7!;cQpfV(ovUBRf2vlp>UQ&E0Roczp;t6VPveULMWV=cM7scGKujT|j-u-b z`C?A3^!(KTqOVr3zNl$t-r$zTZAdFFBCp3E&WA45pRSMdDAA*MuB_w6W2a*N^eof< zEm10Qs?Tha5#>;tC6@|v70Fn;F>7I zUhplhzsf)|N9E4gw=aWVoS#b4rzh>+nsM1&eE;c2&Cpos;-__C-odT)UjHv{Vx3+5 zrK60>D!Uu+*4#uHwgxA*Jl82?3wq!0(bm0Q-?B>g+x1KRHs6eBT3&A2`1;OiZ^p*o z=$rHE=XIx@hS9F|T8Z5%sj-g57KfdU?aj~dJ-;#)evXyShYoxm`NgmiC4G_zIH!XY z=gZ7Tdzq(#);5D8h`2{cir@tfQUxzFtM)Saf_658LW$@`NGdYnxX)N`otC!MczA5G zl4}T;bR@wJ`>uTiTNPHHh{XuR;oft5NR85ak$|y0FPQX7f%k=gakY&YNPW(3#WAE* zHw@|6jiVM*xR@ z?9ZJ=p12EXnkz)z62;@RnVud}9>}t8dgN3$9nE7Y9xQL_{yNBKz9LVo1;eW=(C)f| zaU3Lh4+~=q58V{WA-(d@+cRL?aN{GS zzV5>qmba%TO7sAf-C#sO>Ti8G2k|E9_knz7EZTxBoV&V$)$LO-j-9!sT8}5alI2Yj zFb+@xgpuwLZ~fI8;%AP8d_x3~M&8Hf91x=F$?PS*9=59l*zLcUP~$V=YGZXA$P z)sxd{kZz#E6Z*`RkZ+RUNRMB@OHKj5z)PfK7w(1~?X|j#2qW&jbvNvIZ~omds@~SS zVRXIocf%Na@sh(%^l~Hzv-cV#*aUO;8r-o7=IhPw`aqCfC)|r~pI0N+i|?LSbG8@X zFRwIynpCQC z=Ap4{`}@79cWVgDg8&e&W3~_jA%d?GxRY62gh0pvRA1K7!OgNcmknUOhI_fbjSv_Lk-B+h|wg-Br&9#XN7Hf)%^$MEFY& z`X>xuhxt!u-&<7i(4O%0-}pk~Q0GA}(qkt<{XkNZ*TCC8+dHM!Lw|Sm>>wyZr7mu#b0mM8#9sI)4 z2zozG9}(R0}y@qHDtR)-QuWEjpLid>bAAj<4R!~vs5=NBZ$PWabu$76c%xu$B zHAln9)n0l8oBTk;30wKN%Ir2hHS-6Y6iaF_UpV6;+-pO~nz{5^nAc*G*NW;z(=>w=i|l4J5E6U{7YdYkkM0 z0%%wfu&1%z^}1uS1~jZ+B9yHCm|B^eq#O{nFZ{-c`S+0b3+lcQs48MXDX@RMX(6xl zNf4m3>)_8>k+FRuV0z+Z9}Mda@?GBvu=Q{N1|`Qwexjs8p6e$CA=Q2uG>`z9B|rtf zPW~oUC!Dvh@G_7)u?2Pq4X`u5{}*tRhY)ExL4|yIAZHYiQ%r;;yF`T~8Tct$lo;7F zLxt2lfY1s|k{}!1sF3#tNSV?4{+e$-Jc0@tQf7e)89;Uf*sg~^7A@x}Ig)IU9sCIN z;5R6cpUS9^_Jf$giHBfN94g>bVaUgWL?BhbAPgE$4SxO3AQ?D#Vmcc!Iq-Sy!2jrq z)bIZV+$5nz6H>s@d;j;*0oho(NarC=P{xm+Fdq3`#vBYBtZRr29N+mZ4BEzk>|uZ* zVQ(=iaRZPG6G)ZGg!9K|qPuxm!0z0)KZVSm0HMVLC~E}cmJ#}_+4iaPLS}~FlM;uVHnmva&;K$0& z2BqKyp~M3SkOW=l1EJ9oj21tBl?OyGhsC)H0E93k=O__4#Xo)-_Qw?Sz(I-EM=|5B z0^^<(Mne=}&BWg<*NB`NGja{WnH`s5Bx55{8cbw1eLn5V|e# zr{z+{U{H>;U^m4$hJy%zPD+B1{sCmO41NVO@9-oF=; z|J=4&>Y(7#Da>sBC}RF&;pkok2{)%Os-uU2lsOL4dlq9wwC}iW0m4saF`A$uLn{y}v%*2* zzxzqaV*|pM-(e^}PQsvHuA{xVz+VrKvjelqR{?iX^v4XAA{*af_Mq<+40^@^JQ0}Y ze$MB(BM4a@KYv}Iw444D+Q}xIE5XFOpObLJPk_kXgJ`(H}U;1GPs9+)p1uS7i zH=6kl(g0!y{@CIbcaY^v96yd;tYnancp1a@&z2}o0SPsiF=L|5?V1WgsRz723%hs>?_#;MJv@^2H1);Ly zKj*Z276ui{1G^PgetsWA0SHAOK%MVlSkcI=kJQM%0|agP=wgrvwu<4iU4TJ}AD|(@ zzl9x#%RCPGq1&ZEutJS2TE%?(p_+_Cgt6slLP4-R>$gR$bEppF5LX-u6o2N^eYyU3(pOs3f2F1TR5Pzs-#bq5KU7n4i11}S zDE@D5P3KUl$sw+oXCT+#qND#pDTyYK>#ue`^yGPHtg04(iwZ9I*TdmQ!3wZ%=?<}( zwxZc6|7vz*1K@9BUSj0_EjZU{`L(>|kX+K&7`DIK``2s8VRa_jF>GKF%HS||F419;n8%vF>HTx+&YIIx(|KZKo5rPudCtE1Nb2}&t44MUzfwJH#1#N0H^Kr zhlRfNVc7n<9{!naeE`iy3IE%A01Z1ogdzCbh6f33hA{+xvph(!I09-0|ErDvd8OKq zVc7m^<6nLAVPnxuVA%d@;}cy+a?OD0dj=d%huI1zF<Z#T?Ofb7f5RIwX=@&?xaU%u468L dzbEH@N~_#Lwy!e~heN_4eQXfOy&ZJd{{r)B*3tj~ delta 10811 zcmeHNX*^Zm*T47T8Z%F~Yn~}G56Rd-luQ|tifA;YLZpk7NVyz!GE-#Ea12qTWN45? zC>e^7F$uqn&$;K^Qu+Tr&&&Vw;_>F5{oUWS_F8MNz4kt5yY!fLZir@`xhV}THwJ@Y zz$le8MX$>z!9R9FhZxho!QciQ2EzgWx_BNo_xAKUz3H&0x2uAmyIWJtW3yUCmdgj} zKKE4aZeXX@Lo)c{dse@1Zz(=3JyMKLrI3L+`dRz2 zG;z6+euC%s5H{hW7m9bV+GmDk4IJBR2DT_A*5A9d;m~D{9bh%nF<$3;%i&FehlU1j zjm50LoF)*TnBbH3ac1hHR)K?Eit)K?tpzT0NjQ&A*Kej!Radvlvkld9IcF^je0cbF zi=SAQQh%`g^#Rj^p3bVJgY`}08vR#O-9C0WHtzW&Qcy2e7f%Dn3KC&(!y*q+jCauo zP3A!K;XX?^@&H6JN&Io;6954Ruc-=aQW4Qa=2a5 zMhc%KRuQl;5`y~q)KN%)Ac<9i3<;uW^Oc$epijUzi5D?C+TjeN0oifqBcS$D8-HOFic77Vi3Hp6#%=$UWE~J`v*|s!krMbxA!Dr(|PXBGP%bKILmNR0trR`2#cP@Gv z(9HY2;nXG%duP_xFf`F><@U<+PL|U2@7-%wq-HBQ{&aoRNrfk`wE8-TB_vgaw;7x1 zl6Q5OG7aYlq}Cpdove+&li6&)zW+7-*6KrU;7IG|nf~+?T0NHQAFny4o1M4~4s201 zEj6Y~tIJPkVHXbApH?bsv9W(nDRc9|xSH}=*@f=5fU%6rK^uzoc8f1r23l{wC_k3B zrNu9*;ljOFbUh*ZdzG)zW$Na7lM*7&__h&JdYU1x$OOM=YwMLK+4bfp!d=s|dW5nQ z1WM`E&AaT6-MAQnG3^X`sb8+e5C|CP4v~c}Yw8e26!u)YHWl)aUb{B%hj7Oj|C^!Y zj}xa88HwKn3BB&l_!CDv!!~xk%z8A~CM57`SopO6Il<+YQBAW<4xN{_?~}AWYm%nY z3Onn!T)oO>o6}djMMxmc>3voFw#MB@gl+k?7(bmem5`Rsulu^OvYXi7{1WTnC4p^R>{v;i815;$co$kDJB6;RZb1cEf^pnbYSRKQmP zr=kR%(0`7$H4G(zg3WZ0lVLLoWE#T+6{yMh3fhKC7fwYL857B^X6aGAG&r}`!?{Jg zNr$C_*mmWj)SyHOtjcN)MI`^U7N?>KrF93R^rbKfV2=?VlD<-m0*bJ0s*0<&!S3Ny zl~x7d5(j?8!|v8eq@fa&qNl2Y6g|Ya-komRB-l7xxW*Ad5iQLHh6R^Y2Li-F==+_}6_Nkl!PLQ&)o`Y@Va@#s}#ZHNZ6^3po?2 zt3#32Z_z1-nPBfaI4iE()T4;49W1K}h(z&1fZa9}i_eBJEvP2D18GC|&R;+~i1`vY z4JF7R-wsDP5d##WhVm~W+Ezi@tdzrP-E}{%*RUbVbU;h!dbrlrK|QNOXsG=m2_9gF z4SSm1iaPPm@jNa7mNllFGI1IjP;&*f{=%yvCW0Q~^@>Avr8&S>XhFLjsbvvv14-8y zAS*}e$tVAS1RxZJhdK_#pc0fqtf`C?Vx%x?l-|1f0v^kSG8VXp6N@Lob@BRpMfRl| zjm^1gdCw=9B%`0~{*2|pcI%1(EKi?IrO&2+Sq^N#ij|F5cP95&B&rBC$X7y}url+G zgi$UF&bNnU0}mKxEQ+@u`Z0Lrp5@cK+B*+wn{Vf{Cj3z4-}1ub_=Y$4YugpB6^Y)F z&vP6|$g!LV#NoTPvDB^WBn?~b#FCHi&*gFpuI@P5aB~deuEdS1y>EQ1#PQB+%lM*p zn8v#NN7_aP&#+Shk*?8K3`A)0-b@5;&qs%t>O;5f>K{_e95%gNvoI~caJ%)@KGx^8 z+)Zqb=5beSIe5IRucfUkJNPl@Xd73etmW~s!fX3q$JL+H41GVA=|0>{x+%~f&usC0 zxBQuV49+`WiUlb@!td5)_C93&x>R~`Pv>_?(Z66tPCRaC_rfK=$D;|#@xBu&QQmGF z9YfDQ9C7%e`s(t%WTWMGo)F&X*z?_)y7<+MiVsC|fFOot>+@wcN^!ZS&54w5vxeu0*pb~J}C~K;E*D<3>8*cWc|?q%r;M7UFnux@Y5L^pa92m|QJvhP1;h36M3U4c9Xnw^*Y8_X zUUh6L@Yx0V*2ld&7!^-Cy}42@?vUid_N$}O8kKK|Kc=?I&6+Z8{YTk0W_mQbH`y=a zdErA}Kl`oKWZ!N9rGY?$jg2!hQ)Be^ZoRo%ar?)4XM%6rfe+O=k%>wkS(W0Kdp6j+ z$JuoVA12jx{vhlYU?r6skQQ$*@8SP^qR!i2dO9clNy#be*p47W&rX}Dd$h7&W{!D~ z3hc^7k5{`MDA9Xur!2jHgc*`nV05AX`otJf;4c56h*NPlckHdm=9VWNU@X|5MH^&7 zrjd+OWK;HhrD-f16f4$n-1PL30v)4xj4{`MjBH%%6ZNEv09KQrU>1-mpFN7{y~y(A zBd(iau6oYEUc76*!hdL~x_@i+Z1g2}6}gt~`jE(R@eK8^# zSh+kZZ-VeFAvpR4jeVC9soh8L-tC0NK;ur`;-Z8>hl$d(jH|SaT}JA&Y$o^L4Qy+X zR7tu{tJP(6b2j{hoVPurcG=k$5z;~ctj)9$@vlUYYb%^r$O(szoVwe-*mEa|<+ z|Am(6+l8R9rD>a&+3gBMiDiuaqWe=1$szaftSCOiLAL0o-cL)HN3NeUY+Mp8UKr*0 zuES%kmU+bFrhN7bde+<)X1Ph64hx zKPN;~#@hRwwr0q<$gU;WRyAQ)aw;uVm0c_|INMIeAm6KQ-ZD)h)Z6e%A{Xz#VG+?# zb3=w`t`M$bY_H)Lk!_m>1fH=P5Mw=QB`+~($?jUo@0=a0j!bo9cLGU%nqMMw#f_IZ zisyx|$c$)IZXtgcA3IfDa4Jw%6LO}%_%*gG z73T|Qq%H(=$LP14k@Ew)+ON$8?vx^zbGdjn-x3k?OxeS_-a&UsirmiSmjCEvfb=X`Bv-o8hLpa|HX>Q)h*aNm{zWIvqj#f+F9jJ~ z*h5}gHsKcUR`X^Yn57K}k6cWBt{dmu#r7s3ByWzZ<;8{3df7{h$zltEQl&@E+gMx> z%H#eP5K+}w^ju4_3cpLVoRrzIS z3|ona%MACs5zk%RDsN=3XOQ1mjeYttc|?5ifKqu`OvtEU^xg~0AIOG6d!lugpP0OF z8%b_smM^#D&@BL8jcuM;B*ys~<5|>>$hj>FbG%HH2r3u^6e&*1IV?O1r?p z+gT+R3&GoK39(Gd1J+*~Nuk#|*m+{vln2g#-JvDy9O7+wIgxA3s%*W7o($1t_+8(_ zuysu#N6jr8$$+77(ZTo^sj+0y%uwAvVoTEJkAzsF^7l)s4T9{UDfte~sgY#SqoHxJ zbs>X!R#0Q=F1Q&Ie@vl0g7>KD6%{WoZg1YKZ2W0p@^L`g>kV6qNm(1rmYAw1gSGE$ zaakfs$A6};WaYiD{d{Y0^NAFuk}52HOHGoc(5#zV_vdDM*J^r?sBeY2Tk;(5XdB}_ zV!st0J7PkV_0pfmB)eO$!3jDV z4CcKq!1-N_r0vnA&%ga+KEwVXtx2Op4@~;izv5}*VpvA$q7BBnjS88+uv(@o`N=uS zc%8{%!)dK76*!eA9*7D%wcx*=Z*rmA>HKh6>zVnMx&9N{V_<*xl&XM2Z(h{Ul6U3C z=7i;v{Z;ZBTPGuTF8%O{nwVPlX|9`YIQ~zHVASZ$=n2w4=k_o4u!VgQCeD$r50#(N zX0a;wJCLkV`~CIIR8^As&D1R<^XOD%lKG9)%_Op#+#RfhnjK9^+4E95KX)ECX7(<*cf5zn_Lj)& zyXU$&1a*;YK9*rB^53{)eH`k#aNm7$%4vqjtv%^qcd3!eu>RU_yRg55**&bOLGd`HAs*!Q5f56)=n(wnY<@Cej31O0J!M&brue)-4gi_0Gt90}yQ~l|K zdJJY*cVen8jtFA>>ECK&zOy#fdLZZ@V2&?lSkQVB^IAKnha=V3x=LJsGRxm6sK;XF zI;QH*h#=O#VbE0)aGK$zHOukE0puAX!RmA;ZK|(j6_@^Gy1#T#&(0Y$OcgYegary_ zc!BpbOhy%28yQ|}=k^d%eQl~#^e1oo^9A*6pHaY6T^(`6`18GefcdVFD8EbipoDn_clol^c%O{_C^(%IAJy96!C$cb;HXre z_IR?w9BW7K%Ki(EZXELim5-YEg;#KYocHa%U7(pf1)rwFw*XCZL{hIuf+Barlx_I^ z{E(u@_`7#C#y!dpjM4FHu47sW?N$g}&`QrQ$-Zji`ledLAbfmU`yb+c)y>sYoEudJws zx<-nobDP7yLMI!XxSGmHr&~s5OQvp>hUXj~d0+X>$#KiNCQsQ>FjO;f|LlE7?TXw& zQO-#z0o!GPuig`*K+;fIQSQQt*@HQ{W1L}Tnkygd`BFAbnML*cbhVceMjLbm!n;+w za!zTV4D7ATylp!K1m1TFn2+Tf+T{9*?sC%Hv}T23(Yp&Y_n-1f$3yjWnZ^DAVM{k{% z5ebYX>$(^o4;9NvC(Fs+HDSt$xt)_5+2Rus zdGTUv9@j_YT^7qtYdj%S{P*KYvuL%<#&|22CfVXaZu`>_d0N}sr4q$Ze4n|Cyi74K zw>@)29^Ll#5V4a6(WR-4D0~x`{2`#Poc3CdDitDl7%HT1CNrdS*|&9D1bAZK11d7DBmT!D#sbz#c8RownWadtcg zlPHbBaKYEFKmUTTEx^_VF%b%9kN?=D7W`JU4o+PDp9J_fD43H05as0s5*FBzk1#=t zL|icAjmKEtO_VQme_3D`F5i}I0_!=sMvol8z9@~T*bJ-4VS%;s0B(yMzqG2ef@zFc zUgU!BZ?*q!UN0N)_!KYjW0C!T@xzP*84)dRUkj7+gj}VX#8PF$*A&{0a&+!%(Rp0-gB{@(@O#2ULh6C@o5XxHbO6)PM@i zSR$@Pj6%4v6N|c}iZ6`61G^+Z`?pIe5(truO2U9bSS;cYcn%AjQX)$M;Y&g~@B|jiLWvPrL+LQtfONo@g&Y5xDZ76k zLRKCbVj3O-G3M7@;u_Dg6%giT9MzZ)IC#uUiWHDr{XYZ_fF}+s4i@3C=sZ&5T&RNR zV56bx(4&QQ>{CNP8yG}PIOL}`(+$UiNcVTlY%~ClMPAAc*WWn<3a^7TozSB6g9Cr4 zchp9N;9DOS$nr4a@VOGfa18@b_9D1V~CG#EXuyK%6yfT+W(= z9I!x`bw9;TSYUBaD+FX=pz6%!gh8&o2x#>ajN*X7SQ`Y4{|Rct(Zdn#C?Joj)_<4> zP>`YvvPUW$uwqXKDllSM5F>wGxveqM%mJZOuHn#0LJaEMPeIX2N{N~M0hF~2vk--k z51;Sghn2OjnG%{qD0Mp%mHO|i+R_=NM#9uz)3eS61zV{g7)=RVxhsmUXQrBYiU&q7 z97Rwd>gd|}N0RLr7|o0(8;FFj^8}@kgOfkCAkKQZA)q?TZ)u8~a!0_xpCCIMJf4#$ zvJbF((SgrcsGQ43Rc4dvJ<6sacmJc+CnaE~?m^yibB9AO5kdl|UG7weR^OJ^D zWT`k5mE@u>oz>6ue@C2|-WY#yQRBS&vHfqY>(h{! z!5{U}8Cm_F|2H%C4uwhi!Vg~Krmlq5FZ_SA?d~Fa;cxz^-ha1%HXC8`@SwAXYzG%| z5o|wBa@FX?@*;dWEEH!P(aGn0Qi-Mx)hOP%G*Mu1HK|ya|A$c3gDv7 zux5Vm6r)19c<=%*RU48cTT76!AMsN2ZKD7@&(BN2DPC#;dPo7P%V8Fr9(>ekLqPos zFqrRm){{zv)d#Z>k5{h~;QuZ8<50NmA;`f`6?GGW2k5OrM7{W_qT&Zyg3Dn~uED|j zQ*`nXnD$e2ks{jjm?CAsgJK`mf=6rYq1Ajft(`LGvMmW@89nl c2`xa&91rLzf@NSmjX8};7sg<8+9+2156De4%K!iX diff --git a/project/graphql/linkml_common.graphql b/project/graphql/linkml_common.graphql index 9c1def8..dca826b 100644 --- a/project/graphql/linkml_common.graphql +++ b/project/graphql/linkml_common.graphql @@ -1,11 +1,5 @@ -type Agent +interface Agent { - type: String - classification: Concept - ontologyTypes: [Concept] - description: String - id: Uriorcurie! - name: String } type AggregatePrediction implements OutcomeStatistics @@ -28,7 +22,20 @@ type Any { } -type AutomatedAgent +type AstronomicalBody + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + address: PostalAddress + geolocation: GeoPointLocation + boundingCoordinates: GeoBoxLocation + } + +type AutomatedAgent implements Agent { type: String classification: Concept @@ -76,6 +83,24 @@ type BuiltSystem name: String } +type Climate + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + components: [PhysicalEntity] + events: [Entity] + } + +type ClimateModel + { + type: String + models: Climate + } + type ClinicalCohort { type: String @@ -110,6 +135,17 @@ type ClinicalCohortEnrollment cohort: ClinicalCohort } +type ClinicalHistory + { + type: String + events: [Event] + overInterval: TemporalInterval + observations: [Observation] + measurements: [Measurement] + interpretations: [Observation] + subject: Person + } + type CompositeFoodType { type: String @@ -117,6 +153,12 @@ type CompositeFoodType name: String } +type ComputationalModel implements Model + { + type: String + models: Entity + } + type ComputationalPlannedProcess { type: String @@ -149,9 +191,9 @@ interface CreationMetadata title: String abstract: String rights: String - creators: [Agent] - contributors: [Agent] - contacts: [Agent] + creators: [PhysicalEntity] + contributors: [PhysicalEntity] + contacts: [PhysicalEntity] keywords: [String] } @@ -166,9 +208,9 @@ type CreativeWork implements CreationMetadata title: String abstract: String rights: String - creators: [Agent] - contributors: [Agent] - contacts: [Agent] + creators: [PhysicalEntity] + contributors: [PhysicalEntity] + contacts: [PhysicalEntity] keywords: [String] } @@ -206,9 +248,9 @@ type Dataset implements CreationMetadata title: String abstract: String rights: String - creators: [Agent] - contributors: [Agent] - contacts: [Agent] + creators: [PhysicalEntity] + contributors: [PhysicalEntity] + contacts: [PhysicalEntity] keywords: [String] } @@ -217,12 +259,31 @@ type DataStructure type: String } +type DigitalTwin + { + type: String + models: Entity + } + type Duration { type: String hasQuantityKind: QuantityKind } +type EconomicSystem + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + components: [PhysicalEntity] + events: [Entity] + economyOfPlace: Place + } + type ElectricalGrid { type: String @@ -297,6 +358,18 @@ type EnvironmentalSite boundingCoordinates: GeoBoxLocation } +type EnvironmentalSystem + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + components: [PhysicalEntity] + events: [Entity] + } + type Equipment { type: String @@ -405,6 +478,7 @@ type FinancialOrganization id: Uriorcurie! name: String providesServices: [Service] + hasPersonRoles: [PersonInRole] } type FinancialProduct @@ -418,6 +492,22 @@ type FoodIngredient hasQuantityKind: QuantityKind } +type FoodPreparation + { + type: String + startsAt: TimePoint + endsAt: TimePoint + happensAt: TimePoint + hasInterval: TemporalInterval + hasDuration: Duration + isOngoingAsOf: TimePoint + id: Uriorcurie! + name: String + usesPhysicalDevice: PhysicalDevice + usesConfiguration: PlannedProcessConfiguration + followsProcedure: FoodRecipe + } + type FoodProcessing { type: String @@ -528,6 +618,7 @@ type HealthcareOrganization id: Uriorcurie! name: String providesServices: [Service] + hasPersonRoles: [PersonInRole] } type HealthcareProvider @@ -583,6 +674,16 @@ interface Identified name: String } +type IndividualOrganism + { + type: String + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + classification: Concept + } + type InformationEntity implements Identified { type: String @@ -609,6 +710,9 @@ type Investigation name: String objectives: String variables: [Variable] + hypothesis: StudyHypothesis + design: StudyDesign + results: [StudyResult] } type InvestigativeProcess @@ -641,7 +745,6 @@ type InvestigativeProtocol type Landform { type: String - classification: Concept ontologyTypes: [Concept] description: String id: Uriorcurie! @@ -649,6 +752,7 @@ type Landform address: PostalAddress boundingCoordinates: GeoBoxLocation geolocation: GeoPointLocation + classification: Concept } type LifeEvent @@ -738,6 +842,11 @@ type MiningFacility area: SimpleQuantity } +interface Model + { + models: Entity + } + type MoneyQuantity { type: String @@ -746,16 +855,6 @@ type MoneyQuantity unit: CurrencyConcept } -type NamedThing implements Identified - { - type: String - classification: Concept - ontologyTypes: [Concept] - description: String - id: Uriorcurie! - name: String - } - type NuclearPlant { type: String @@ -791,7 +890,15 @@ type Observation measuredUsing: PhysicalDevice } -type Organization +type OrganismalRelationship + { + type: String + subject: Entity + predicate: Concept + object: Entity + } + +type Organization implements Agent { type: String classification: Concept @@ -800,6 +907,30 @@ type Organization id: Uriorcurie! name: String providesServices: [Service] + hasPersonRoles: [PersonInRole] + } + +type OrganizationalRole + { + type: String + } + +type OrganizationPersonnelRelationship + { + type: String + subject: String + predicate: String + object: String + } + +type OrgChart + { + type: String + describes: Any + id: Uriorcurie! + name: String + forOrganization: Organization + relationships: OrganizationPersonnelRelationship } interface OutcomeStatistics @@ -820,20 +951,30 @@ type Patient isPerson: Person } -type Person +type Person implements Agent { type: String - classification: Concept ontologyTypes: [Concept] description: String id: Uriorcurie! name: String + classification: Concept primaryEmail: String birthDate: Date ageInYears: Integer vitalStatus: PersonStatus } +type PersonInRole + { + type: String + subject: Entity + predicate: Concept + object: Entity + subjectPerson: Person + personRole: OrganizationalRole + } + type PhysicalDevice { type: String @@ -844,6 +985,28 @@ type PhysicalDevice name: String } +type PhysicalEntity implements Identified + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + } + +type PhysicalSystem + { + type: String + classification: Concept + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + components: [PhysicalEntity] + events: [Entity] + } + type Place { type: String @@ -1033,6 +1196,9 @@ type RawMaterial interface Relationship { type: String + subject: Entity + predicate: Concept + object: Entity } type RenewablePlant @@ -1075,7 +1241,7 @@ type SampleCollectionProcess followsProcedure: InvestigativeProtocol partOf: Investigation materialCollected: SampleMaterial - collectedFrom: NamedThing + collectedFrom: PhysicalEntity } type SampleMaterial @@ -1109,6 +1275,13 @@ type Service type: String } +type SetOfObservations + { + type: String + observationSubject: Entity + observations: Observation + } + type SimplePrediction { type: String @@ -1126,6 +1299,12 @@ type SimpleQuantity unit: UnitConcept } +type Simulation + { + type: String + models: Entity + } + type SolarPlant { type: String @@ -1167,6 +1346,43 @@ type StudyDesign classification: Concept } +type StudyHypothesis + { + type: String + describes: Any + id: Uriorcurie! + name: String + } + +type StudyResult + { + type: String + describes: Any + id: Uriorcurie! + name: String + hypothesis: StudyHypothesis + result: String + } + +type SubjectHistory + { + type: String + subject: PhysicalEntity! + events: [Event] + overInterval: TemporalInterval + } + +type SubjectObservationHistory + { + type: String + subject: PhysicalEntity! + events: [Event] + overInterval: TemporalInterval + observations: [Observation] + measurements: [Measurement] + interpretations: [Observation] + } + type TemporalInterval { type: String @@ -1177,6 +1393,8 @@ type TemporalInterval type TemporalRelationship { type: String + subject: Entity + object: Entity predicate: RelativeTimeEnum relativeTo: Entity } @@ -1219,6 +1437,16 @@ type Variable allowedUnits: [UnitConcept] } +type VeterinaryAnimal + { + type: String + ontologyTypes: [Concept] + description: String + id: Uriorcurie! + name: String + classification: Concept + } + type WellFacility { type: String diff --git a/project/jsonld/linkml_common.context.jsonld b/project/jsonld/linkml_common.context.jsonld index 8914456..321fb9b 100644 --- a/project/jsonld/linkml_common.context.jsonld +++ b/project/jsonld/linkml_common.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-06-13T22:32:40", + "generation_date": "2024-06-20T18:35:53", "source": "linkml_common.yaml" }, "@context": { @@ -21,10 +21,14 @@ "@id": "http://purl.obolibrary.org/obo/OBI_", "@prefix": true }, + "OrganizationPersonnelRelationshipEnum": "http://example.org/UNKNOWN/OrganizationPersonnelRelationshipEnum/", "PATO": { "@id": "http://purl.obolibrary.org/obo/PATO_", "@prefix": true }, + "PersonInRole": { + "@id": "PersonInRole" + }, "UCUM": "http://unitsofmeasure.org/", "UO": { "@id": "http://purl.obolibrary.org/obo/UO_", @@ -84,6 +88,10 @@ "@type": "@id", "@id": "patient" }, + "subject": { + "@type": "@id", + "@id": "subject" + }, "immediate_preceding_steps": { "@type": "@id", "@id": "immediate_preceding_steps" @@ -143,6 +151,10 @@ "description": { "@id": "schema:description" }, + "economy_of_place": { + "@type": "@id", + "@id": "economy_of_place" + }, "plants": { "@type": "@id", "@id": "plants" @@ -306,9 +318,21 @@ "@id": "dam" }, "id": "@id", + "design": { + "@type": "@id", + "@id": "design" + }, + "hypothesis": { + "@type": "@id", + "@id": "hypothesis" + }, "objectives": { "@id": "objectives" }, + "results": { + "@type": "@id", + "@id": "results" + }, "variables": { "@type": "@id", "@id": "variables" @@ -350,6 +374,10 @@ }, "@id": "mining_method" }, + "models": { + "@type": "@id", + "@id": "models" + }, "unit": { "@type": "@id", "@id": "unit" @@ -363,7 +391,7 @@ }, "object": { "@type": "@id", - "@id": "rdf:object" + "@id": "object" }, "measured_using": { "@type": "@id", @@ -381,6 +409,27 @@ "@type": "@id", "@id": "ontology_types" }, + "has_person_roles": { + "@type": "@id", + "@id": "has_person_roles" + }, + "predicate": { + "@context": { + "@vocab": "@null", + "text": "skos:notation", + "description": "skos:prefLabel", + "meaning": "@id" + }, + "@id": "predicate" + }, + "for_organization": { + "@type": "@id", + "@id": "for_organization" + }, + "relationships": { + "@type": "@id", + "@id": "relationships" + }, "accuracy": { "@type": "xsd:float", "@id": "accuracy" @@ -413,6 +462,22 @@ "@type": "xsd:integer", "@id": "true_positive_count" }, + "person_role": { + "@type": "@id", + "@id": "person_role" + }, + "subject_person": { + "@type": "@id", + "@id": "subject_person" + }, + "components": { + "@type": "@id", + "@id": "components" + }, + "events": { + "@type": "@id", + "@id": "events" + }, "uses_configuration": { "@type": "@id", "@id": "uses_configuration" @@ -521,6 +586,10 @@ "@type": "@id", "@id": "material_collected" }, + "observations": { + "@type": "@id", + "@id": "observations" + }, "outcome": { "@context": { "@vocab": "@null", @@ -534,18 +603,20 @@ "@type": "@id", "@id": "starts_at" }, - "subject": { + "result": { + "@id": "result" + }, + "over_interval": { "@type": "@id", - "@id": "rdf:subject" + "@id": "over_interval" }, - "predicate": { - "@context": { - "@vocab": "@null", - "text": "skos:notation", - "description": "skos:prefLabel", - "meaning": "@id" - }, - "@id": "predicate" + "interpretations": { + "@type": "@id", + "@id": "interpretations" + }, + "measurements": { + "@type": "@id", + "@id": "measurements" }, "relative_to": { "@type": "@id", @@ -593,6 +664,9 @@ "Any": { "@id": "linkml:Any" }, + "AstronomicalBody": { + "@id": "AstronomicalBody" + }, "AutomatedAgent": { "@id": "AutomatedAgent" }, @@ -608,6 +682,12 @@ "BuiltSystem": { "@id": "BuiltSystem" }, + "Climate": { + "@id": "Climate" + }, + "ClimateModel": { + "@id": "ClimateModel" + }, "ClinicalCohort": { "@id": "ClinicalCohort" }, @@ -617,9 +697,15 @@ "ClinicalCohortEnrollment": { "@id": "ClinicalCohortEnrollment" }, + "ClinicalHistory": { + "@id": "ClinicalHistory" + }, "CompositeFoodType": { "@id": "CompositeFoodType" }, + "ComputationalModel": { + "@id": "ComputationalModel" + }, "ComputationalPlannedProcess": { "@id": "ComputationalPlannedProcess" }, @@ -644,9 +730,15 @@ "DataStructure": { "@id": "DataStructure" }, + "DigitalTwin": { + "@id": "DigitalTwin" + }, "Duration": { "@id": "Duration" }, + "EconomicSystem": { + "@id": "EconomicSystem" + }, "ElectricalGrid": { "@id": "ElectricalGrid" }, @@ -668,6 +760,9 @@ "EnvironmentalSite": { "@id": "EnvironmentalSite" }, + "EnvironmentalSystem": { + "@id": "EnvironmentalSystem" + }, "Equipment": { "@id": "Equipment" }, @@ -704,6 +799,9 @@ "FoodIngredient": { "@id": "FoodIngredient" }, + "FoodPreparation": { + "@id": "FoodPreparation" + }, "FoodProcessing": { "@id": "FoodProcessing" }, @@ -746,6 +844,9 @@ "Identified": { "@id": "Identified" }, + "IndividualOrganism": { + "@id": "organisms/IndividualOrganism" + }, "InformationEntity": { "@id": "InformationEntity" }, @@ -782,21 +883,33 @@ "MiningFacility": { "@id": "MiningFacility" }, + "Model": { + "@id": "Model" + }, "MoneyQuantity": { "@id": "fhir:MoneyQuantity" }, - "NamedThing": { - "@id": "NamedThing" - }, "NuclearPlant": { "@id": "NuclearPlant" }, "Observation": { "@id": "Observation" }, + "OrganismalRelationship": { + "@id": "organisms/OrganismalRelationship" + }, "Organization": { "@id": "Organization" }, + "OrganizationalRole": { + "@id": "OrganizationalRole" + }, + "OrganizationPersonnelRelationship": { + "@id": "OrganizationPersonnelRelationship" + }, + "OrgChart": { + "@id": "OrgChart" + }, "OutcomeStatistics": { "@id": "OutcomeStatistics" }, @@ -809,6 +922,12 @@ "PhysicalDevice": { "@id": "PhysicalDevice" }, + "PhysicalEntity": { + "@id": "PhysicalEntity" + }, + "PhysicalSystem": { + "@id": "PhysicalSystem" + }, "Place": { "@id": "schema:Place" }, @@ -884,12 +1003,18 @@ "Service": { "@id": "Service" }, + "SetOfObservations": { + "@id": "SetOfObservations" + }, "SimplePrediction": { "@id": "SimplePrediction" }, "SimpleQuantity": { "@id": "fhir:SimpleQuantity" }, + "Simulation": { + "@id": "Simulation" + }, "SolarPlant": { "@id": "SolarPlant" }, @@ -902,6 +1027,18 @@ "StudyDesign": { "@id": "StudyDesign" }, + "StudyHypothesis": { + "@id": "StudyHypothesis" + }, + "StudyResult": { + "@id": "StudyResult" + }, + "SubjectHistory": { + "@id": "SubjectHistory" + }, + "SubjectObservationHistory": { + "@id": "SubjectObservationHistory" + }, "TemporalInterval": { "@id": "TemporalInterval" }, @@ -923,6 +1060,9 @@ "Variable": { "@id": "Variable" }, + "VeterinaryAnimal": { + "@id": "VeterinaryAnimal" + }, "WellFacility": { "@id": "WellFacility" }, diff --git a/project/jsonld/linkml_common.jsonld b/project/jsonld/linkml_common.jsonld index 1674273..736e8c2 100644 --- a/project/jsonld/linkml_common.jsonld +++ b/project/jsonld/linkml_common.jsonld @@ -14,6 +14,7 @@ "civilengineering", "clinicalresearch", "computational", + "economy", "engineering", "energytechnology", "extractiveindustry", @@ -28,7 +29,8 @@ "social", "statistics", "time", - "plannedprocess" + "plannedprocess", + "organisms" ], "license": "MIT", "prefixes": [ @@ -516,6 +518,19 @@ ] } }, + { + "name": "LandformEnum", + "definition_uri": "https://w3id.org/linkml-common/LandformEnum", + "from_schema": "https://w3id.org/linkml-common/geography", + "reachable_from": { + "source_nodes": [ + "ENVO:01000813" + ], + "relationship_types": [ + "rdfs:subClassOf" + ] + } + }, { "name": "HealthcareEncounterClassification", "definition_uri": "https://w3id.org/linkml-common/HealthcareEncounterClassification", @@ -653,6 +668,12 @@ } ] }, + { + "name": "OrganizationPersonnelRelationshipEnum", + "definition_uri": "https://w3id.org/linkml-common/OrganizationPersonnelRelationshipEnum", + "description": "...", + "from_schema": "https://w3id.org/linkml-common/social" + }, { "name": "OutcomeType", "definition_uri": "https://w3id.org/linkml-common/OutcomeType", @@ -691,6 +712,19 @@ "text": "AT_SAME_TIME_AS" } ] + }, + { + "name": "OrganismTaxonEnum", + "definition_uri": "https://w3id.org/linkml-common/organisms/OrganismTaxonEnum", + "from_schema": "https://w3id.org/linkml-common/organisms", + "reachable_from": { + "source_nodes": [ + "NCBITaxon:1" + ], + "relationship_types": [ + "rdfs:subClassOf" + ] + } } ], "slots": [ @@ -720,6 +754,9 @@ "mappings": [ "http://schema.org/name" ], + "exact_mappings": [ + "http://www.w3.org/2000/01/rdf-schema#label" + ], "slot_uri": "http://schema.org/name", "owner": "Identified", "domain_of": [ @@ -739,7 +776,7 @@ "slot_uri": "http://schema.org/description", "owner": "TimePoint", "domain_of": [ - "NamedThing", + "PhysicalEntity", "TimePoint" ], "range": "string", @@ -765,9 +802,9 @@ "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "from_schema": "https://w3id.org/linkml-common/core", "slot_uri": "https://w3id.org/linkml-common/classification", - "owner": "NamedThing", + "owner": "PhysicalEntity", "domain_of": [ - "NamedThing" + "PhysicalEntity" ], "range": "Concept", "@type": "SlotDefinition" @@ -775,12 +812,13 @@ { "name": "ontology_types", "definition_uri": "https://w3id.org/linkml-common/ontology_types", + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "from_schema": "https://w3id.org/linkml-common/core", "slot_uri": "https://w3id.org/linkml-common/ontology_types", "multivalued": true, - "owner": "NamedThing", + "owner": "PhysicalEntity", "domain_of": [ - "NamedThing" + "PhysicalEntity" ], "range": "Concept", "@type": "SlotDefinition" @@ -1102,6 +1140,71 @@ "inlined": true, "@type": "SlotDefinition" }, + { + "name": "relationship__subject", + "from_schema": "https://w3id.org/linkml-common/core", + "slot_uri": "https://w3id.org/linkml-common/subject", + "alias": "subject", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "Entity", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "relationship__predicate", + "from_schema": "https://w3id.org/linkml-common/core", + "slot_uri": "https://w3id.org/linkml-common/predicate", + "alias": "predicate", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "Concept", + "@type": "SlotDefinition" + }, + { + "name": "relationship__object", + "from_schema": "https://w3id.org/linkml-common/core", + "slot_uri": "https://w3id.org/linkml-common/object", + "alias": "object", + "owner": "Relationship", + "domain_of": [ + "Relationship" + ], + "range": "Entity", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "physicalSystem__components", + "from_schema": "https://w3id.org/linkml-common/core", + "slot_uri": "https://w3id.org/linkml-common/components", + "multivalued": true, + "alias": "components", + "owner": "PhysicalSystem", + "domain_of": [ + "PhysicalSystem" + ], + "range": "PhysicalEntity", + "@type": "SlotDefinition" + }, + { + "name": "physicalSystem__events", + "from_schema": "https://w3id.org/linkml-common/core", + "slot_uri": "https://w3id.org/linkml-common/events", + "multivalued": true, + "alias": "events", + "owner": "PhysicalSystem", + "domain_of": [ + "PhysicalSystem" + ], + "range": "Entity", + "inlined": true, + "@type": "SlotDefinition" + }, { "name": "entitySet__members", "description": "The members of the collection", @@ -1168,6 +1271,18 @@ "range": "ClinicalCohort", "@type": "SlotDefinition" }, + { + "name": "economicSystem__economy_of_place", + "from_schema": "https://w3id.org/linkml-common/economy", + "slot_uri": "https://w3id.org/linkml-common/economy_of_place", + "alias": "economy_of_place", + "owner": "EconomicSystem", + "domain_of": [ + "EconomicSystem" + ], + "range": "Place", + "@type": "SlotDefinition" + }, { "name": "engineeringProcess__follows_procedure", "from_schema": "https://w3id.org/linkml-common/engineering", @@ -1870,6 +1985,18 @@ "range": "HealthcareEncounter", "@type": "SlotDefinition" }, + { + "name": "clinicalHistory__subject", + "from_schema": "https://w3id.org/linkml-common/healthcare", + "slot_uri": "https://w3id.org/linkml-common/subject", + "alias": "subject", + "owner": "ClinicalHistory", + "domain_of": [ + "ClinicalHistory" + ], + "range": "Person", + "@type": "SlotDefinition" + }, { "name": "investigation__objectives", "from_schema": "https://w3id.org/linkml-common/investigations", @@ -1896,6 +2023,43 @@ "inlined": true, "@type": "SlotDefinition" }, + { + "name": "investigation__hypothesis", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/hypothesis", + "alias": "hypothesis", + "owner": "Investigation", + "domain_of": [ + "Investigation" + ], + "range": "StudyHypothesis", + "@type": "SlotDefinition" + }, + { + "name": "investigation__design", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/design", + "alias": "design", + "owner": "Investigation", + "domain_of": [ + "Investigation" + ], + "range": "StudyDesign", + "@type": "SlotDefinition" + }, + { + "name": "investigation__results", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/results", + "multivalued": true, + "alias": "results", + "owner": "Investigation", + "domain_of": [ + "Investigation" + ], + "range": "StudyResult", + "@type": "SlotDefinition" + }, { "name": "investigativeProtocol__protocols_io_url", "from_schema": "https://w3id.org/linkml-common/investigations", @@ -1908,6 +2072,30 @@ "range": "uri", "@type": "SlotDefinition" }, + { + "name": "studyResult__hypothesis", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/hypothesis", + "alias": "hypothesis", + "owner": "StudyResult", + "domain_of": [ + "StudyResult" + ], + "range": "StudyHypothesis", + "@type": "SlotDefinition" + }, + { + "name": "studyResult__result", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/result", + "alias": "result", + "owner": "StudyResult", + "domain_of": [ + "StudyResult" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "investigativeProcess__follows_procedure", "from_schema": "https://w3id.org/linkml-common/investigations", @@ -1953,7 +2141,20 @@ "domain_of": [ "SampleCollectionProcess" ], - "range": "NamedThing", + "range": "PhysicalEntity", + "@type": "SlotDefinition" + }, + { + "name": "model__models", + "from_schema": "https://w3id.org/linkml-common/investigations", + "slot_uri": "https://w3id.org/linkml-common/models", + "alias": "models", + "owner": "Model", + "domain_of": [ + "Model" + ], + "range": "Entity", + "inlined": true, "@type": "SlotDefinition" }, { @@ -1995,6 +2196,78 @@ "range": "PhysicalDevice", "@type": "SlotDefinition" }, + { + "name": "setOfObservations__observation_subject", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "slot_uri": "https://w3id.org/linkml-common/observation_subject", + "alias": "observation_subject", + "owner": "SetOfObservations", + "domain_of": [ + "SetOfObservations" + ], + "range": "Entity", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "setOfObservations__observations", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "slot_uri": "https://w3id.org/linkml-common/observations", + "alias": "observations", + "owner": "SetOfObservations", + "domain_of": [ + "SetOfObservations" + ], + "range": "Observation", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "subjectObservationHistory__observations", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "slot_uri": "https://w3id.org/linkml-common/observations", + "multivalued": true, + "alias": "observations", + "owner": "SubjectObservationHistory", + "domain_of": [ + "SubjectObservationHistory" + ], + "range": "Observation", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "subjectObservationHistory__measurements", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "slot_uri": "https://w3id.org/linkml-common/measurements", + "multivalued": true, + "alias": "measurements", + "owner": "SubjectObservationHistory", + "domain_of": [ + "SubjectObservationHistory" + ], + "range": "Measurement", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "subjectObservationHistory__interpretations", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "slot_uri": "https://w3id.org/linkml-common/interpretations", + "multivalued": true, + "alias": "interpretations", + "owner": "SubjectObservationHistory", + "domain_of": [ + "SubjectObservationHistory" + ], + "range": "Observation", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, { "name": "measurement__quantity_measured", "description": "The quantity being measured", @@ -2121,6 +2394,116 @@ "inlined": true, "@type": "SlotDefinition" }, + { + "name": "organization__has_person_roles", + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/has_person_roles", + "multivalued": true, + "alias": "has_person_roles", + "owner": "Organization", + "domain_of": [ + "Organization" + ], + "range": "PersonInRole", + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "orgChart__for_organization", + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/for_organization", + "alias": "for_organization", + "owner": "OrgChart", + "domain_of": [ + "OrgChart" + ], + "range": "Organization", + "@type": "SlotDefinition" + }, + { + "name": "orgChart__relationships", + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/relationships", + "alias": "relationships", + "owner": "OrgChart", + "domain_of": [ + "OrgChart" + ], + "range": "OrganizationPersonnelRelationship", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "personInRole__subject_person", + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/subject_person", + "alias": "subject_person", + "owner": "PersonInRole", + "domain_of": [ + "PersonInRole" + ], + "range": "Person", + "@type": "SlotDefinition" + }, + { + "name": "personInRole__person_role", + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/person_role", + "alias": "person_role", + "owner": "PersonInRole", + "domain_of": [ + "PersonInRole" + ], + "range": "OrganizationalRole", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "organizationPersonnelRelationship__subject", + "id_prefixes": [ + "PersonInRole" + ], + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/subject", + "alias": "subject", + "owner": "OrganizationPersonnelRelationship", + "domain_of": [ + "OrganizationPersonnelRelationship" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "organizationPersonnelRelationship__predicate", + "id_prefixes": [ + "OrganizationPersonnelRelationshipEnum" + ], + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/predicate", + "alias": "predicate", + "owner": "OrganizationPersonnelRelationship", + "domain_of": [ + "OrganizationPersonnelRelationship" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "organizationPersonnelRelationship__object", + "id_prefixes": [ + "PersonInRole" + ], + "from_schema": "https://w3id.org/linkml-common/social", + "slot_uri": "https://w3id.org/linkml-common/object", + "alias": "object", + "owner": "OrganizationPersonnelRelationship", + "domain_of": [ + "OrganizationPersonnelRelationship" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "creationMetadata__title", "description": "The title of the item", @@ -2177,7 +2560,7 @@ "domain_of": [ "CreationMetadata" ], - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -2194,7 +2577,7 @@ "domain_of": [ "CreationMetadata" ], - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -2211,7 +2594,7 @@ "domain_of": [ "CreationMetadata" ], - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -2287,7 +2670,17 @@ "domain_of": [ "CreativeWork" ], - "range": "Agent", + "range": "PhysicalEntity", + "any_of": [ + { + "range": "Person", + "@type": "AnonymousSlotExpression" + }, + { + "range": "Organization", + "@type": "AnonymousSlotExpression" + } + ], "@type": "SlotDefinition" }, { @@ -2304,16 +2697,26 @@ "domain_of": [ "CreativeWork" ], - "range": "Agent", - "@type": "SlotDefinition" - }, - { - "name": "creativeWork__contacts", - "description": "A contact point for a person or organization", - "from_schema": "https://w3id.org/linkml-common/social", - "mappings": [ - "http://schema.org/contactPoint" - ], + "range": "PhysicalEntity", + "any_of": [ + { + "range": "Person", + "@type": "AnonymousSlotExpression" + }, + { + "range": "Organization", + "@type": "AnonymousSlotExpression" + } + ], + "@type": "SlotDefinition" + }, + { + "name": "creativeWork__contacts", + "description": "A contact point for a person or organization", + "from_schema": "https://w3id.org/linkml-common/social", + "mappings": [ + "http://schema.org/contactPoint" + ], "slot_uri": "http://schema.org/contactPoint", "multivalued": true, "alias": "contacts", @@ -2321,7 +2724,7 @@ "domain_of": [ "CreativeWork" ], - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -2593,6 +2996,45 @@ ], "@type": "SlotDefinition" }, + { + "name": "subjectHistory__subject", + "from_schema": "https://w3id.org/linkml-common/time", + "slot_uri": "https://w3id.org/linkml-common/subject", + "alias": "subject", + "owner": "SubjectHistory", + "domain_of": [ + "SubjectHistory" + ], + "range": "PhysicalEntity", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "subjectHistory__events", + "from_schema": "https://w3id.org/linkml-common/time", + "slot_uri": "https://w3id.org/linkml-common/events", + "multivalued": true, + "alias": "events", + "owner": "SubjectHistory", + "domain_of": [ + "SubjectHistory" + ], + "range": "Event", + "@type": "SlotDefinition" + }, + { + "name": "subjectHistory__over_interval", + "from_schema": "https://w3id.org/linkml-common/time", + "slot_uri": "https://w3id.org/linkml-common/over_interval", + "alias": "over_interval", + "owner": "SubjectHistory", + "domain_of": [ + "SubjectHistory" + ], + "range": "TemporalInterval", + "inlined": true, + "@type": "SlotDefinition" + }, { "name": "plannedProcess__follows_procedure", "from_schema": "https://w3id.org/linkml-common/plannedprocess", @@ -2688,6 +3130,45 @@ "range": "ComputationalPlannedProcess", "@type": "SlotDefinition" }, + { + "name": "models", + "from_schema": "https://w3id.org/linkml/linkml-common", + "slot_uri": "https://w3id.org/linkml-common/models", + "range": "Climate", + "@type": "SlotDefinition" + }, + { + "name": "ClimateModel_models", + "from_schema": "https://w3id.org/linkml/linkml-common", + "is_a": "model__models", + "domain": "ClimateModel", + "slot_uri": "https://w3id.org/linkml-common/models", + "alias": "models", + "owner": "ClimateModel", + "domain_of": [ + "ClimateModel" + ], + "is_usage_slot": true, + "usage_slot_name": "models", + "range": "Climate", + "@type": "SlotDefinition" + }, + { + "name": "FoodPreparation_follows_procedure", + "from_schema": "https://w3id.org/linkml/linkml-common", + "is_a": "plannedProcess__follows_procedure", + "domain": "FoodPreparation", + "slot_uri": "https://w3id.org/linkml-common/follows_procedure", + "alias": "follows_procedure", + "owner": "FoodPreparation", + "domain_of": [ + "FoodPreparation" + ], + "is_usage_slot": true, + "usage_slot_name": "follows_procedure", + "range": "FoodRecipe", + "@type": "SlotDefinition" + }, { "name": "Landform_geolocation", "definition_uri": "https://w3id.org/linkml-common/geolocation", @@ -2708,6 +3189,31 @@ "inlined": true, "@type": "SlotDefinition" }, + { + "name": "Landform_classification", + "definition_uri": "https://w3id.org/linkml-common/classification", + "annotations": [ + { + "tag": "recommended_value_set_bindings", + "value": "linkml_common:LandformEnum", + "@type": "Annotation" + } + ], + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "from_schema": "https://w3id.org/linkml-common/core", + "is_a": "classification", + "domain": "Landform", + "slot_uri": "https://w3id.org/linkml-common/classification", + "alias": "classification", + "owner": "Landform", + "domain_of": [ + "Landform" + ], + "is_usage_slot": true, + "usage_slot_name": "classification", + "range": "Concept", + "@type": "SlotDefinition" + }, { "name": "HealthcareEncounter_classification", "definition_uri": "https://w3id.org/linkml-common/classification", @@ -2797,6 +3303,31 @@ "range": "string", "pattern": "^\\S+@[\\S+\\.]+\\S+", "@type": "SlotDefinition" + }, + { + "name": "IndividualOrganism_classification", + "definition_uri": "https://w3id.org/linkml-common/classification", + "annotations": [ + { + "tag": "recommended_value_set_bindings", + "value": "linkml_common:OrganismTaxonEnum", + "@type": "Annotation" + } + ], + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "from_schema": "https://w3id.org/linkml-common/core", + "is_a": "classification", + "domain": "IndividualOrganism", + "slot_uri": "https://w3id.org/linkml-common/classification", + "alias": "classification", + "owner": "IndividualOrganism", + "domain_of": [ + "IndividualOrganism" + ], + "is_usage_slot": true, + "usage_slot_name": "classification", + "range": "Concept", + "@type": "SlotDefinition" } ], "classes": [ @@ -2861,8 +3392,8 @@ "@type": "ClassDefinition" }, { - "name": "NamedThing", - "definition_uri": "https://w3id.org/linkml-common/NamedThing", + "name": "PhysicalEntity", + "definition_uri": "https://w3id.org/linkml-common/PhysicalEntity", "from_schema": "https://w3id.org/linkml-common/core", "is_a": "Entity", "mixins": [ @@ -2877,7 +3408,7 @@ "name" ], "slot_usage": {}, - "class_uri": "https://w3id.org/linkml-common/NamedThing", + "class_uri": "https://w3id.org/linkml-common/PhysicalEntity", "@type": "ClassDefinition" }, { @@ -2924,7 +3455,7 @@ "name": "PhysicalDevice", "definition_uri": "https://w3id.org/linkml-common/PhysicalDevice", "from_schema": "https://w3id.org/linkml-common/core", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -2982,12 +3513,65 @@ "is_a": "Intangible", "abstract": true, "slots": [ - "type" + "type", + "relationship__subject", + "relationship__predicate", + "relationship__object" ], "slot_usage": {}, + "attributes": [ + { + "name": "subject", + "range": "Entity", + "@type": "SlotDefinition" + }, + { + "name": "predicate", + "range": "Concept", + "@type": "SlotDefinition" + }, + { + "name": "object", + "range": "Entity", + "@type": "SlotDefinition" + } + ], "class_uri": "https://w3id.org/linkml-common/Relationship", "@type": "ClassDefinition" }, + { + "name": "PhysicalSystem", + "definition_uri": "https://w3id.org/linkml-common/PhysicalSystem", + "from_schema": "https://w3id.org/linkml-common/core", + "is_a": "PhysicalEntity", + "slots": [ + "type", + "classification", + "ontology_types", + "description", + "id", + "name", + "physicalSystem__components", + "physicalSystem__events" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "components", + "multivalued": true, + "range": "PhysicalEntity", + "@type": "SlotDefinition" + }, + { + "name": "events", + "multivalued": true, + "range": "Entity", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/PhysicalSystem", + "@type": "ClassDefinition" + }, { "name": "Location", "definition_uri": "https://w3id.org/linkml-common/Location", @@ -3139,7 +3723,7 @@ "name": "BuiltEnvironmentFeature", "definition_uri": "https://w3id.org/linkml-common/BuiltEnvironmentFeature", "from_schema": "https://w3id.org/linkml-common/civilengineering", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -3210,7 +3794,7 @@ "definition_uri": "https://w3id.org/linkml-common/ClinicalCohort", "description": "A group of patients who share a common set of characteristics", "from_schema": "https://w3id.org/linkml-common/clinicalresearch", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -3300,6 +3884,33 @@ "class_uri": "https://w3id.org/linkml-common/DataStructure", "@type": "ClassDefinition" }, + { + "name": "EconomicSystem", + "definition_uri": "https://w3id.org/linkml-common/EconomicSystem", + "from_schema": "https://w3id.org/linkml-common/economy", + "is_a": "PhysicalSystem", + "slots": [ + "type", + "classification", + "ontology_types", + "description", + "id", + "name", + "physicalSystem__components", + "physicalSystem__events", + "economicSystem__economy_of_place" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "economy_of_place", + "range": "Place", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/EconomicSystem", + "@type": "ClassDefinition" + }, { "name": "EngineeringSpecification", "definition_uri": "https://w3id.org/linkml-common/EngineeringSpecification", @@ -3319,7 +3930,7 @@ "name": "RawMaterial", "definition_uri": "https://w3id.org/linkml-common/RawMaterial", "from_schema": "https://w3id.org/linkml-common/engineering", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -3393,7 +4004,7 @@ "name": "Equipment", "definition_uri": "https://w3id.org/linkml-common/Equipment", "from_schema": "https://w3id.org/linkml-common/engineering", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -3955,6 +4566,57 @@ "class_uri": "https://w3id.org/linkml-common/EnvironmentalSite", "@type": "ClassDefinition" }, + { + "name": "EnvironmentalSystem", + "definition_uri": "https://w3id.org/linkml-common/EnvironmentalSystem", + "from_schema": "https://w3id.org/linkml-common/environmental", + "is_a": "PhysicalSystem", + "slots": [ + "type", + "classification", + "ontology_types", + "description", + "id", + "name", + "physicalSystem__components", + "physicalSystem__events" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/EnvironmentalSystem", + "@type": "ClassDefinition" + }, + { + "name": "Climate", + "definition_uri": "https://w3id.org/linkml-common/Climate", + "from_schema": "https://w3id.org/linkml-common/environmental", + "is_a": "EnvironmentalSystem", + "slots": [ + "type", + "classification", + "ontology_types", + "description", + "id", + "name", + "physicalSystem__components", + "physicalSystem__events" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/Climate", + "@type": "ClassDefinition" + }, + { + "name": "ClimateModel", + "definition_uri": "https://w3id.org/linkml-common/ClimateModel", + "from_schema": "https://w3id.org/linkml-common/environmental", + "is_a": "Simulation", + "slots": [ + "type", + "ClimateModel_models" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/ClimateModel", + "@type": "ClassDefinition" + }, { "name": "MoneyQuantity", "definition_uri": "https://w3id.org/linkml-common/MoneyQuantity", @@ -4080,7 +4742,8 @@ "description", "id", "name", - "provides_services" + "provides_services", + "organization__has_person_roles" ], "slot_usage": {}, "class_uri": "https://w3id.org/linkml-common/FinancialOrganization", @@ -4153,6 +4816,29 @@ "class_uri": "https://w3id.org/linkml-common/FoodProcessing", "@type": "ClassDefinition" }, + { + "name": "FoodPreparation", + "definition_uri": "https://w3id.org/linkml-common/FoodPreparation", + "from_schema": "https://w3id.org/linkml-common/foods", + "is_a": "PlannedProcess", + "slots": [ + "type", + "starts_at", + "ends_at", + "happens_at", + "has_interval", + "has_duration", + "is_ongoing_as_of", + "id", + "name", + "plannedProcess__uses_physical_device", + "plannedProcess__uses_configuration", + "FoodPreparation_follows_procedure" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/FoodPreparation", + "@type": "ClassDefinition" + }, { "name": "FoodTypeConcept", "definition_uri": "https://w3id.org/linkml-common/FoodTypeConcept", @@ -4206,7 +4892,7 @@ "mappings": [ "schema:Place" ], - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -4228,25 +4914,48 @@ "description": "A natural feature of the solid surface of the Earth or other planetary body", "from_schema": "https://w3id.org/linkml-common/geography", "exact_mappings": [ - "ENVO:00000083", + "ENVO:01000813", "fhir:Location" ], "is_a": "Place", "slots": [ "type", - "classification", "ontology_types", "description", "id", "name", "address", "bounding_coordinates", - "Landform_geolocation" + "Landform_geolocation", + "Landform_classification" ], "slot_usage": {}, "class_uri": "https://w3id.org/linkml-common/Landform", "@type": "ClassDefinition" }, + { + "name": "AstronomicalBody", + "definition_uri": "https://w3id.org/linkml-common/AstronomicalBody", + "from_schema": "https://w3id.org/linkml-common/geography", + "exact_mappings": [ + "ENVO:01000799" + ], + "is_a": "Place", + "slots": [ + "type", + "classification", + "ontology_types", + "description", + "id", + "name", + "address", + "geolocation", + "bounding_coordinates" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/AstronomicalBody", + "@type": "ClassDefinition" + }, { "name": "PostalAddress", "definition_uri": "https://w3id.org/linkml-common/PostalAddress", @@ -4465,7 +5174,8 @@ "description", "id", "name", - "provides_services" + "provides_services", + "organization__has_person_roles" ], "slot_usage": {}, "class_uri": "https://w3id.org/linkml-common/HealthcareOrganization", @@ -4571,6 +5281,31 @@ "class_uri": "https://w3id.org/linkml-common/Patient", "@type": "ClassDefinition" }, + { + "name": "ClinicalHistory", + "definition_uri": "https://w3id.org/linkml-common/ClinicalHistory", + "from_schema": "https://w3id.org/linkml-common/healthcare", + "is_a": "SubjectObservationHistory", + "slots": [ + "type", + "subjectHistory__events", + "subjectHistory__over_interval", + "subjectObservationHistory__observations", + "subjectObservationHistory__measurements", + "subjectObservationHistory__interpretations", + "clinicalHistory__subject" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "subject", + "range": "Person", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/ClinicalHistory", + "@type": "ClassDefinition" + }, { "name": "Investigation", "definition_uri": "https://w3id.org/linkml-common/Investigation", @@ -4590,7 +5325,10 @@ "id", "name", "investigation__objectives", - "investigation__variables" + "investigation__variables", + "investigation__hypothesis", + "investigation__design", + "investigation__results" ], "slot_usage": {}, "attributes": [ @@ -4604,14 +5342,30 @@ "multivalued": true, "range": "Variable", "@type": "SlotDefinition" - } - ], - "class_uri": "https://w3id.org/linkml-common/Investigation", - "@type": "ClassDefinition" - }, - { - "name": "InvestigativeProtocol", - "definition_uri": "https://w3id.org/linkml-common/InvestigativeProtocol", + }, + { + "name": "hypothesis", + "range": "StudyHypothesis", + "@type": "SlotDefinition" + }, + { + "name": "design", + "range": "StudyDesign", + "@type": "SlotDefinition" + }, + { + "name": "results", + "multivalued": true, + "range": "StudyResult", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/Investigation", + "@type": "ClassDefinition" + }, + { + "name": "InvestigativeProtocol", + "definition_uri": "https://w3id.org/linkml-common/InvestigativeProtocol", "from_schema": "https://w3id.org/linkml-common/investigations", "is_a": "Procedure", "slots": [ @@ -4633,6 +5387,21 @@ "class_uri": "https://w3id.org/linkml-common/InvestigativeProtocol", "@type": "ClassDefinition" }, + { + "name": "StudyHypothesis", + "definition_uri": "https://w3id.org/linkml-common/StudyHypothesis", + "from_schema": "https://w3id.org/linkml-common/investigations", + "is_a": "InformationEntity", + "slots": [ + "type", + "describes", + "id", + "name" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/StudyHypothesis", + "@type": "ClassDefinition" + }, { "name": "StudyDesign", "definition_uri": "https://w3id.org/linkml-common/StudyDesign", @@ -4649,11 +5418,40 @@ "class_uri": "https://w3id.org/linkml-common/StudyDesign", "@type": "ClassDefinition" }, + { + "name": "StudyResult", + "definition_uri": "https://w3id.org/linkml-common/StudyResult", + "from_schema": "https://w3id.org/linkml-common/investigations", + "is_a": "InformationEntity", + "slots": [ + "type", + "describes", + "id", + "name", + "studyResult__hypothesis", + "studyResult__result" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "hypothesis", + "range": "StudyHypothesis", + "@type": "SlotDefinition" + }, + { + "name": "result", + "range": "string", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/StudyResult", + "@type": "ClassDefinition" + }, { "name": "SampleMaterial", "definition_uri": "https://w3id.org/linkml-common/SampleMaterial", "from_schema": "https://w3id.org/linkml-common/investigations", - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "slots": [ "type", "classification", @@ -4736,7 +5534,7 @@ }, { "name": "collected_from", - "range": "NamedThing", + "range": "PhysicalEntity", "@type": "SlotDefinition" } ], @@ -4790,6 +5588,67 @@ "class_uri": "https://w3id.org/linkml-common/DataGenerationFromSample", "@type": "ClassDefinition" }, + { + "name": "Model", + "definition_uri": "https://w3id.org/linkml-common/Model", + "from_schema": "https://w3id.org/linkml-common/investigations", + "mixin": true, + "slots": [ + "model__models" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "models", + "range": "Entity", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/Model", + "@type": "ClassDefinition" + }, + { + "name": "ComputationalModel", + "definition_uri": "https://w3id.org/linkml-common/ComputationalModel", + "from_schema": "https://w3id.org/linkml-common/investigations", + "is_a": "Intangible", + "mixins": [ + "Model" + ], + "slots": [ + "type", + "model__models" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/ComputationalModel", + "@type": "ClassDefinition" + }, + { + "name": "Simulation", + "definition_uri": "https://w3id.org/linkml-common/Simulation", + "from_schema": "https://w3id.org/linkml-common/investigations", + "is_a": "ComputationalModel", + "slots": [ + "type", + "model__models" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/Simulation", + "@type": "ClassDefinition" + }, + { + "name": "DigitalTwin", + "definition_uri": "https://w3id.org/linkml-common/DigitalTwin", + "from_schema": "https://w3id.org/linkml-common/investigations", + "is_a": "ComputationalModel", + "slots": [ + "type", + "model__models" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/DigitalTwin", + "@type": "ClassDefinition" + }, { "name": "Observation", "definition_uri": "https://w3id.org/linkml-common/Observation", @@ -4832,6 +5691,74 @@ "class_uri": "https://w3id.org/linkml-common/Observation", "@type": "ClassDefinition" }, + { + "name": "SetOfObservations", + "definition_uri": "https://w3id.org/linkml-common/SetOfObservations", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "is_a": "Intangible", + "slots": [ + "type", + "setOfObservations__observation_subject", + "setOfObservations__observations" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "observation_subject", + "range": "Entity", + "@type": "SlotDefinition" + }, + { + "name": "observations", + "range": "Observation", + "inlined_as_list": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/SetOfObservations", + "@type": "ClassDefinition" + }, + { + "name": "SubjectObservationHistory", + "definition_uri": "https://w3id.org/linkml-common/SubjectObservationHistory", + "from_schema": "https://w3id.org/linkml-common/meaurements", + "is_a": "SubjectHistory", + "slots": [ + "type", + "subjectHistory__subject", + "subjectHistory__events", + "subjectHistory__over_interval", + "subjectObservationHistory__observations", + "subjectObservationHistory__measurements", + "subjectObservationHistory__interpretations" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "observations", + "multivalued": true, + "range": "Observation", + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "measurements", + "multivalued": true, + "range": "Measurement", + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "interpretations", + "multivalued": true, + "range": "Observation", + "inlined_as_list": true, + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/SubjectObservationHistory", + "@type": "ClassDefinition" + }, { "name": "Measurement", "definition_uri": "https://w3id.org/linkml-common/Measurement", @@ -5091,15 +6018,7 @@ "prov:Agent", "fibo.commons.PartiesAndSituations:Agent" ], - "is_a": "NamedThing", - "slots": [ - "type", - "classification", - "ontology_types", - "description", - "id", - "name" - ], + "mixin": true, "slot_usage": {}, "class_uri": "https://w3id.org/linkml-common/Agent", "@type": "ClassDefinition" @@ -5112,14 +6031,17 @@ "exact_mappings": [ "schema:Person" ], - "is_a": "Agent", + "is_a": "IndividualOrganism", + "mixins": [ + "Agent" + ], "slots": [ "type", - "classification", "ontology_types", "description", "id", "name", + "IndividualOrganism_classification", "Person_primary_email", "birth_date", "age_in_years", @@ -5129,6 +6051,23 @@ "class_uri": "https://w3id.org/linkml-common/Person", "@type": "ClassDefinition" }, + { + "name": "VeterinaryAnimal", + "definition_uri": "https://w3id.org/linkml-common/VeterinaryAnimal", + "from_schema": "https://w3id.org/linkml-common/social", + "is_a": "IndividualOrganism", + "slots": [ + "type", + "ontology_types", + "description", + "id", + "name", + "IndividualOrganism_classification" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/VeterinaryAnimal", + "@type": "ClassDefinition" + }, { "name": "Organization", "definition_uri": "https://w3id.org/linkml-common/Organization", @@ -5137,7 +6076,10 @@ "exact_mappings": [ "schema:Organization" ], - "is_a": "Agent", + "is_a": "PhysicalEntity", + "mixins": [ + "Agent" + ], "slots": [ "type", "classification", @@ -5145,18 +6087,139 @@ "description", "id", "name", - "provides_services" + "provides_services", + "organization__has_person_roles" ], "slot_usage": {}, + "attributes": [ + { + "name": "has_person_roles", + "multivalued": true, + "range": "PersonInRole", + "inlined_as_list": true, + "@type": "SlotDefinition" + } + ], "class_uri": "https://w3id.org/linkml-common/Organization", "@type": "ClassDefinition" }, + { + "name": "OrganizationalRole", + "definition_uri": "https://w3id.org/linkml-common/OrganizationalRole", + "from_schema": "https://w3id.org/linkml-common/social", + "is_a": "Role", + "slots": [ + "type" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/OrganizationalRole", + "@type": "ClassDefinition" + }, + { + "name": "OrgChart", + "definition_uri": "https://w3id.org/linkml-common/OrgChart", + "from_schema": "https://w3id.org/linkml-common/social", + "is_a": "InformationEntity", + "slots": [ + "type", + "describes", + "id", + "name", + "orgChart__for_organization", + "orgChart__relationships" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "for_organization", + "range": "Organization", + "@type": "SlotDefinition" + }, + { + "name": "relationships", + "range": "OrganizationPersonnelRelationship", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/OrgChart", + "@type": "ClassDefinition" + }, + { + "name": "PersonInRole", + "definition_uri": "https://w3id.org/linkml-common/PersonInRole", + "from_schema": "https://w3id.org/linkml-common/social", + "is_a": "Relationship", + "slots": [ + "type", + "relationship__subject", + "relationship__predicate", + "relationship__object", + "personInRole__subject_person", + "personInRole__person_role" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "subject_person", + "range": "Person", + "@type": "SlotDefinition" + }, + { + "name": "person_role", + "range": "OrganizationalRole", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/PersonInRole", + "@type": "ClassDefinition" + }, + { + "name": "OrganizationPersonnelRelationship", + "definition_uri": "https://w3id.org/linkml-common/OrganizationPersonnelRelationship", + "from_schema": "https://w3id.org/linkml-common/social", + "is_a": "Relationship", + "slots": [ + "type", + "organizationPersonnelRelationship__subject", + "organizationPersonnelRelationship__predicate", + "organizationPersonnelRelationship__object" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "subject", + "id_prefixes": [ + "PersonInRole" + ], + "@type": "SlotDefinition" + }, + { + "name": "predicate", + "id_prefixes": [ + "OrganizationPersonnelRelationshipEnum" + ], + "@type": "SlotDefinition" + }, + { + "name": "object", + "id_prefixes": [ + "PersonInRole" + ], + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/OrganizationPersonnelRelationship", + "@type": "ClassDefinition" + }, { "name": "AutomatedAgent", "definition_uri": "https://w3id.org/linkml-common/AutomatedAgent", "description": "Represents an Automated Agent", "from_schema": "https://w3id.org/linkml-common/social", - "is_a": "Agent", + "is_a": "PhysicalEntity", + "mixins": [ + "Agent" + ], "slots": [ "type", "classification", @@ -5231,7 +6294,7 @@ "description": "The person or organization who created the work", "slot_uri": "dcterms:creator", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -5239,7 +6302,7 @@ "description": "A person or organization that contributed to the creation of the work", "slot_uri": "dcterms:contributor", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -5247,7 +6310,7 @@ "description": "A contact point for a person or organization", "slot_uri": "schema:contactPoint", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -5270,7 +6333,7 @@ "exact_mappings": [ "schema:CreativeWork" ], - "is_a": "NamedThing", + "is_a": "PhysicalEntity", "mixins": [ "CreationMetadata" ], @@ -5317,7 +6380,17 @@ "description": "The person or organization who created the work", "slot_uri": "dcterms:creator", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", + "any_of": [ + { + "range": "Person", + "@type": "AnonymousSlotExpression" + }, + { + "range": "Organization", + "@type": "AnonymousSlotExpression" + } + ], "@type": "SlotDefinition" }, { @@ -5325,7 +6398,17 @@ "description": "A person or organization that contributed to the creation of the work", "slot_uri": "dcterms:contributor", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", + "any_of": [ + { + "range": "Person", + "@type": "AnonymousSlotExpression" + }, + { + "range": "Organization", + "@type": "AnonymousSlotExpression" + } + ], "@type": "SlotDefinition" }, { @@ -5333,7 +6416,7 @@ "description": "A contact point for a person or organization", "slot_uri": "schema:contactPoint", "multivalued": true, - "range": "Agent", + "range": "PhysicalEntity", "@type": "SlotDefinition" }, { @@ -5394,6 +6477,10 @@ } ], "class_uri": "https://w3id.org/linkml-common/Prediction", + "union_of": [ + "SimplePrediction", + "AggregatePrediction" + ], "@type": "ClassDefinition" }, { @@ -5676,6 +6763,8 @@ "is_a": "Relationship", "slots": [ "type", + "relationship__subject", + "relationship__object", "temporalRelationship__predicate", "temporalRelationship__relative_to" ], @@ -5710,6 +6799,40 @@ "class_uri": "https://w3id.org/linkml-common/TemporalRelationship", "@type": "ClassDefinition" }, + { + "name": "SubjectHistory", + "definition_uri": "https://w3id.org/linkml-common/SubjectHistory", + "from_schema": "https://w3id.org/linkml-common/time", + "is_a": "Entity", + "slots": [ + "type", + "subjectHistory__subject", + "subjectHistory__events", + "subjectHistory__over_interval" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "subject", + "range": "PhysicalEntity", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "events", + "multivalued": true, + "range": "Event", + "@type": "SlotDefinition" + }, + { + "name": "over_interval", + "range": "TemporalInterval", + "@type": "SlotDefinition" + } + ], + "class_uri": "https://w3id.org/linkml-common/SubjectHistory", + "@type": "ClassDefinition" + }, { "name": "ExecutionOfProcedure", "definition_uri": "https://w3id.org/linkml-common/ExecutionOfProcedure", @@ -5889,13 +7012,45 @@ "slot_usage": {}, "class_uri": "https://w3id.org/linkml-common/MaterialProcessing", "@type": "ClassDefinition" + }, + { + "name": "IndividualOrganism", + "definition_uri": "https://w3id.org/linkml-common/organisms/IndividualOrganism", + "from_schema": "https://w3id.org/linkml-common/organisms", + "is_a": "PhysicalEntity", + "slots": [ + "type", + "ontology_types", + "description", + "id", + "name", + "IndividualOrganism_classification" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/organisms/IndividualOrganism", + "@type": "ClassDefinition" + }, + { + "name": "OrganismalRelationship", + "definition_uri": "https://w3id.org/linkml-common/organisms/OrganismalRelationship", + "from_schema": "https://w3id.org/linkml-common/organisms", + "is_a": "Relationship", + "slots": [ + "type", + "relationship__subject", + "relationship__predicate", + "relationship__object" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/linkml-common/organisms/OrganismalRelationship", + "@type": "ClassDefinition" } ], "metamodel_version": "1.7.0", "source_file": "linkml_common.yaml", - "source_file_date": "2024-06-13T21:47:13", - "source_file_size": 830, - "generation_date": "2024-06-13T22:32:40", + "source_file_date": "2024-06-13T22:58:32", + "source_file_size": 842, + "generation_date": "2024-06-20T18:35:53", "@type": "SchemaDefinition", "@context": [ "project/jsonld/linkml_common.context.jsonld", @@ -5906,6 +7061,7 @@ "civilengineering.context.jsonld", "clinicalresearch.context.jsonld", "computational.context.jsonld", + "economy.context.jsonld", "engineering.context.jsonld", "energytechnology.context.jsonld", "extractiveindustry.context.jsonld", @@ -5921,6 +7077,7 @@ "statistics.context.jsonld", "time.context.jsonld", "plannedprocess.context.jsonld", + "organisms.context.jsonld", { "@base": "https://w3id.org/linkml-common/" } diff --git a/project/jsonschema/linkml_common.schema.json b/project/jsonschema/linkml_common.schema.json index 757ced8..809301a 100644 --- a/project/jsonschema/linkml_common.schema.json +++ b/project/jsonschema/linkml_common.schema.json @@ -1,45 +1,5 @@ { "$defs": { - "Agent": { - "additionalProperties": false, - "description": "Represents an Agent", - "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Agent" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "Agent", - "type": "object" - }, "AggregatePrediction": { "additionalProperties": false, "description": "", @@ -112,6 +72,58 @@ "string" ] }, + "AstronomicalBody": { + "additionalProperties": false, + "description": "", + "properties": { + "address": { + "$ref": "#/$defs/PostalAddress" + }, + "bounding_coordinates": { + "$ref": "#/$defs/GeoBoxLocation", + "description": "The bounding coordinates of the place" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "geolocation": { + "$ref": "#/$defs/GeoPointLocation", + "description": "The geolocation of the place" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "AstronomicalBody" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "AstronomicalBody", + "type": "object" + }, "AutomatedAgent": { "additionalProperties": false, "description": "Represents an Automated Agent", @@ -133,6 +145,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -203,6 +216,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -243,6 +257,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -283,6 +298,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -311,239 +327,3724 @@ "title": "CaseOrControlEnum", "type": "string" }, - "ClinicalCohort": { + "Climate": { "additionalProperties": false, - "description": "A group of patients who share a common set of characteristics", + "description": "", "properties": { "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, - "definition": { - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { + "components": { "items": { "type": "string" }, "type": "array" }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ClinicalCohort" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ClinicalCohort", - "type": "object" - }, - "ClinicalCohortDefinition": { - "additionalProperties": false, - "description": "A definition of a clinical cohort", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ClinicalCohortDefinition" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ClinicalCohortDefinition", - "type": "object" - }, - "ClinicalCohortEnrollment": { - "additionalProperties": false, - "description": "An event relating a patient to a clinical cohort", - "properties": { - "cohort": { - "type": "string" - }, - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "patient": { - "$ref": "#/$defs/Patient" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ClinicalCohortEnrollment" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ClinicalCohortEnrollment", - "type": "object" - }, - "CompositeFoodType": { - "additionalProperties": false, - "description": "", - "properties": { - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "CompositeFoodType" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "CompositeFoodType", - "type": "object" - }, - "ComputationalPlannedProcess": { - "additionalProperties": false, - "description": "Application of a mathematical operation to one or more inputs to produce one or more outputs", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", + "description": { + "description": "A human-readable description for a thing", "type": "string" }, - "immediate_preceding_steps": { - "description": "The steps that immediately precede this step", - "items": { - "type": "string" - }, - "type": "array" - }, - "inputs": { - "description": "The inputs to the operation", + "events": { "items": { - "$ref": "#/$defs/Any" + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": "array" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Climate" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Climate", + "type": "object" + }, + "ClimateModel": { + "additionalProperties": false, + "description": "", + "properties": { + "models": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ClimateModel" + ], + "type": "string" + } + }, + "title": "ClimateModel", + "type": "object" + }, + "ClinicalCohort": { + "additionalProperties": false, + "description": "A group of patients who share a common set of characteristics", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "definition": { + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ClinicalCohort" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ClinicalCohort", + "type": "object" + }, + "ClinicalCohortDefinition": { + "additionalProperties": false, + "description": "A definition of a clinical cohort", + "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ClinicalCohortDefinition" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ClinicalCohortDefinition", + "type": "object" + }, + "ClinicalCohortEnrollment": { + "additionalProperties": false, + "description": "An event relating a patient to a clinical cohort", + "properties": { + "cohort": { + "type": "string" + }, + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "patient": { + "$ref": "#/$defs/Patient" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ClinicalCohortEnrollment" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ClinicalCohortEnrollment", + "type": "object" + }, + "ClinicalHistory": { + "additionalProperties": false, + "description": "", + "properties": { + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "interpretations": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + } + ] + }, + "type": "array" + }, + "measurements": { + "items": { + "$ref": "#/$defs/Measurement" + }, + "type": "array" + }, + "observations": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + } + ] + }, + "type": "array" + }, + "over_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "subject": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ClinicalHistory" + ], + "type": "string" + } + }, + "title": "ClinicalHistory", + "type": "object" + }, + "CompositeFoodType": { + "additionalProperties": false, + "description": "", + "properties": { + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "CompositeFoodType" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "CompositeFoodType", + "type": "object" + }, + "ComputationalModel": { + "additionalProperties": false, + "description": "", + "properties": { + "models": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ComputationalModel" + ], + "type": "string" + } + }, + "title": "ComputationalModel", + "type": "object" + }, + "ComputationalPlannedProcess": { + "additionalProperties": false, + "description": "Application of a mathematical operation to one or more inputs to produce one or more outputs", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "immediate_preceding_steps": { + "description": "The steps that immediately precede this step", + "items": { + "type": "string" + }, + "type": "array" + }, + "inputs": { + "description": "The inputs to the operation", + "items": { + "$ref": "#/$defs/Any" + }, + "type": "array" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "outputs": { + "description": "The outputs of the operation", + "items": { + "$ref": "#/$defs/Any" + }, + "type": "array" + }, + "parts": { + "description": "The parts of the process", + "items": { + "type": "string" + }, + "type": "array" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ComputationalPlannedProcess" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ComputationalPlannedProcess", + "type": "object" + }, + "Concept": { + "additionalProperties": false, + "description": "", + "properties": { + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Concept" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Concept", + "type": "object" + }, + "CreativeWork": { + "additionalProperties": false, + "description": "The most generic kind of creative work, including books, movies, photographs, software programs, etc.", + "properties": { + "abstract": { + "description": "A summary of the item", + "type": "string" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "contacts": { + "description": "A contact point for a person or organization", + "items": { + "type": "string" + }, + "type": "array" + }, + "contributors": { + "description": "A person or organization that contributed to the creation of the work", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "type": "string" + }, + "type": "array" + }, + "creators": { + "description": "The person or organization who created the work", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string" + } + ], + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "keywords": { + "description": "Keywords or tags used to describe this item", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "rights": { + "description": "Information about rights held in and over the item", + "type": "string" + }, + "title": { + "description": "The title of the item", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "CreativeWork" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "CreativeWork", + "type": "object" + }, + "CurrencyConcept": { + "additionalProperties": false, + "description": "A currency", + "properties": { + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "CurrencyConcept" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "CurrencyConcept", + "type": "object" + }, + "DataGenerationFromSample": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "part_of": { + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "DataGenerationFromSample" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "DataGenerationFromSample", + "type": "object" + }, + "DataStructure": { + "additionalProperties": false, + "description": "", + "properties": { + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "DataStructure" + ], + "type": "string" + } + }, + "title": "DataStructure", + "type": "object" + }, + "Dataset": { + "additionalProperties": false, + "description": "", + "properties": { + "abstract": { + "description": "A summary of the item", + "type": "string" + }, + "collected_as_part_of": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contacts": { + "description": "A contact point for a person or organization", + "items": { + "type": "string" + }, + "type": "array" + }, + "contributors": { + "description": "A person or organization that contributed to the creation of the work", + "items": { + "type": "string" + }, + "type": "array" + }, + "creators": { + "description": "The person or organization who created the work", + "items": { + "type": "string" + }, + "type": "array" + }, + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "keywords": { + "description": "Keywords or tags used to describe this item", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "rights": { + "description": "Information about rights held in and over the item", + "type": "string" + }, + "title": { + "description": "The title of the item", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Dataset" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Dataset", + "type": "object" + }, + "DigitalTwin": { + "additionalProperties": false, + "description": "", + "properties": { + "models": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "DigitalTwin" + ], + "type": "string" + } + }, + "title": "DigitalTwin", + "type": "object" + }, + "Duration": { + "additionalProperties": false, + "description": "A length of time", + "properties": { + "has_quantity_kind": { + "description": "The kind of quantity", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Duration" + ], + "type": "string" + } + }, + "title": "Duration", + "type": "object" + }, + "EconomicSystem": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "components": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "economy_of_place": { + "type": "string" + }, + "events": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": "array" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EconomicSystem" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EconomicSystem", + "type": "object" + }, + "ElectricalGrid": { + "additionalProperties": false, + "description": "A network of electrical transmission lines", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "plants": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ElectricalGrid" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ElectricalGrid", + "type": "object" + }, + "EngineeringMaterialProcessing": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EngineeringMaterialProcessing" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EngineeringMaterialProcessing", + "type": "object" + }, + "EngineeringProcess": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "part_of": { + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EngineeringProcess" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EngineeringProcess", + "type": "object" + }, + "EngineeringSpecification": { + "additionalProperties": false, + "description": "", + "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EngineeringSpecification" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EngineeringSpecification", + "type": "object" + }, + "EntitySet": { + "additionalProperties": false, + "description": "A group of things. The collection may be heterogeneous or homogeneous.", + "properties": { + "members": { + "description": "The members of the collection", + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EntitySet" + ], + "type": "string" + } + }, + "title": "EntitySet", + "type": "object" + }, + "EnvironmentalSite": { + "additionalProperties": false, + "description": "A location or site that is the subject of environmental monitoring", + "properties": { + "address": { + "$ref": "#/$defs/PostalAddress" + }, + "bounding_coordinates": { + "$ref": "#/$defs/GeoBoxLocation", + "description": "The bounding coordinates of the place" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "geolocation": { + "$ref": "#/$defs/GeoPointLocation", + "description": "The geolocation of the place" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EnvironmentalSite" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EnvironmentalSite", + "type": "object" + }, + "EnvironmentalSystem": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "components": { + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "events": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "type": "array" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "EnvironmentalSystem" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "EnvironmentalSystem", + "type": "object" + }, + "Equipment": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Equipment" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Equipment", + "type": "object" + }, + "Event": { + "additionalProperties": false, + "description": "A thing that happens", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Event" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Event", + "type": "object" + }, + "ExecutionOfProcedure": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ExecutionOfProcedure" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ExecutionOfProcedure", + "type": "object" + }, + "ExtractiveIndustryEquipment": { + "additionalProperties": false, + "description": "The equipment used in extractive industry operations", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ExtractiveIndustryEquipment" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ExtractiveIndustryEquipment", + "type": "object" + }, + "ExtractiveIndustryFacility": { + "additionalProperties": false, + "description": "A facility where natural resources are extracted from the earth", + "properties": { + "annual_production": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "facility_type": { + "$ref": "#/$defs/ExtractiveIndustryFacilityType" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "operator": { + "type": "string" + }, + "production_capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "products": { + "items": { + "$ref": "#/$defs/ExtractiveIndustryProduct" }, "type": "array" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" + "reserves": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "ExtractiveIndustryFacility" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "ExtractiveIndustryFacility", + "type": "object" + }, + "ExtractiveIndustryFacilityType": { + "description": "", + "enum": [ + "MINING_FACILITY", + "WELL_FACILITY", + "QUARRY_FACILITY" + ], + "title": "ExtractiveIndustryFacilityType", + "type": "string" + }, + "ExtractiveIndustryProduct": { + "additionalProperties": false, + "description": "A product extracted from an extractive industry facility", + "properties": { + "grade": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "outputs": { - "description": "The outputs of the operation", - "items": { - "$ref": "#/$defs/Any" - }, - "type": "array" - }, - "parts": { - "description": "The parts of the process", - "items": { - "type": "string" - }, - "type": "array" + "processing_method": { + "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" + "product_type": { + "$ref": "#/$defs/ExtractiveIndustryProductType" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "ComputationalPlannedProcess" + "ExtractiveIndustryProduct" ], "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" } }, "required": [ "id" ], - "title": "ComputationalPlannedProcess", + "title": "ExtractiveIndustryProduct", "type": "object" }, - "Concept": { - "additionalProperties": false, + "ExtractiveIndustryProductType": { "description": "", + "enum": [ + "MINERAL", + "METAL", + "COAL", + "OIL", + "GAS", + "STONE", + "SAND", + "GRAVEL" + ], + "title": "ExtractiveIndustryProductType", + "type": "string" + }, + "ExtractiveIndustryWaste": { + "additionalProperties": false, + "description": "Waste material generated from extractive industry operations", "properties": { "id": { "description": "A unique identifier for a thing", @@ -556,7 +4057,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Concept" + "ExtractiveIndustryWaste" ], "type": "string" } @@ -564,79 +4065,134 @@ "required": [ "id" ], - "title": "Concept", + "title": "ExtractiveIndustryWaste", "type": "object" }, - "CreativeWork": { + "Facility": { "additionalProperties": false, - "description": "The most generic kind of creative work, including books, movies, photographs, software programs, etc.", + "description": "", "properties": { - "abstract": { - "description": "A summary of the item", - "type": "string" - }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, - "contacts": { - "description": "A contact point for a person or organization", - "items": { - "type": "string" - }, - "type": "array" + "description": { + "description": "A human-readable description for a thing", + "type": "string" }, - "contributors": { - "description": "A person or organization that contributed to the creation of the work", - "items": { - "type": "string" - }, - "type": "array" + "id": { + "description": "A unique identifier for a thing", + "type": "string" }, - "creators": { - "description": "The person or organization who created the work", + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, - "description": { - "description": "A human-readable description for a thing", + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Facility" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Facility", + "type": "object" + }, + "FinancialAccount": { + "additionalProperties": false, + "description": "A bank account", + "properties": { + "account_holder": { + "description": "The person or organization that holds the account", "type": "string" }, - "id": { - "description": "A unique identifier for a thing", + "account_number": { + "description": "The account number", "type": "string" }, - "keywords": { - "description": "Keywords or tags used to describe this item", + "bank": { + "description": "The bank that holds the account", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "FinancialAccount" + ], + "type": "string" + } + }, + "title": "FinancialAccount", + "type": "object" + }, + "FinancialOrganization": { + "additionalProperties": false, + "description": "An organization that provides financial services", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "has_person_roles": { "items": { - "type": "string" + "$ref": "#/$defs/PersonInRole" }, "type": "array" }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, - "rights": { - "description": "Information about rights held in and over the item", - "type": "string" - }, - "title": { - "description": "The title of the item", - "type": "string" + "provides_services": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + } + ] + }, + "type": "array" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "CreativeWork" + "FinancialOrganization" ], "type": "string" } @@ -644,36 +4200,102 @@ "required": [ "id" ], - "title": "CreativeWork", + "title": "FinancialOrganization", "type": "object" }, - "CurrencyConcept": { + "FinancialProduct": { "additionalProperties": false, - "description": "A currency", + "description": "A product or service offered by a bank whereby one may deposit, withdraw or transfer money and in some cases be paid interest.", + "properties": { + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "FinancialProduct" + ], + "type": "string" + } + }, + "title": "FinancialProduct", + "type": "object" + }, + "FinanicialOrganizationEnum": { + "description": "", + "title": "FinanicialOrganizationEnum", + "type": "string" + }, + "FoodIngredient": { + "additionalProperties": false, + "description": "", + "properties": { + "has_quantity_kind": { + "description": "The kind of quantity", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "FoodIngredient" + ], + "type": "string" + } + }, + "title": "FoodIngredient", + "type": "object" + }, + "FoodPreparation": { + "additionalProperties": false, + "description": "", "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, "id": { "description": "A unique identifier for a thing", "type": "string" }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "CurrencyConcept" + "FoodPreparation" ], "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" } }, "required": [ "id" ], - "title": "CurrencyConcept", + "title": "FoodPreparation", "type": "object" }, - "DataGenerationFromSample": { + "FoodProcessing": { "additionalProperties": false, "description": "", "properties": { @@ -703,16 +4325,13 @@ "description": "A human-readable name for a thing", "type": "string" }, - "part_of": { - "type": "string" - }, "starts_at": { "$ref": "#/$defs/TimePoint" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "DataGenerationFromSample" + "FoodProcessing" ], "type": "string" }, @@ -726,59 +4345,13 @@ "required": [ "id" ], - "title": "DataGenerationFromSample", - "type": "object" - }, - "DataStructure": { - "additionalProperties": false, - "description": "", - "properties": { - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "DataStructure" - ], - "type": "string" - } - }, - "title": "DataStructure", + "title": "FoodProcessing", "type": "object" }, - "Dataset": { + "FoodRecipe": { "additionalProperties": false, "description": "", "properties": { - "abstract": { - "description": "A summary of the item", - "type": "string" - }, - "collected_as_part_of": { - "items": { - "type": "string" - }, - "type": "array" - }, - "contacts": { - "description": "A contact point for a person or organization", - "items": { - "type": "string" - }, - "type": "array" - }, - "contributors": { - "description": "A person or organization that contributed to the creation of the work", - "items": { - "type": "string" - }, - "type": "array" - }, - "creators": { - "description": "The person or organization who created the work", - "items": { - "type": "string" - }, - "type": "array" - }, "describes": { "$ref": "#/$defs/Any", "description": "The thing that is being described" @@ -787,10 +4360,9 @@ "description": "A unique identifier for a thing", "type": "string" }, - "keywords": { - "description": "Keywords or tags used to describe this item", + "ingredients": { "items": { - "type": "string" + "$ref": "#/$defs/FoodIngredient" }, "type": "array" }, @@ -798,18 +4370,16 @@ "description": "A human-readable name for a thing", "type": "string" }, - "rights": { - "description": "Information about rights held in and over the item", - "type": "string" - }, - "title": { - "description": "The title of the item", - "type": "string" + "steps": { + "items": { + "type": "string" + }, + "type": "array" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Dataset" + "FoodRecipe" ], "type": "string" } @@ -817,64 +4387,108 @@ "required": [ "id" ], - "title": "Dataset", + "title": "FoodRecipe", "type": "object" }, - "Duration": { + "FoodTypeConcept": { "additionalProperties": false, - "description": "A length of time", + "description": "", "properties": { - "has_quantity_kind": { - "description": "The kind of quantity", + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", "type": "string" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Duration" + "FoodTypeConcept" ], "type": "string" } }, - "title": "Duration", + "required": [ + "id" + ], + "title": "FoodTypeConcept", "type": "object" }, - "ElectricalGrid": { + "FossilFuelPlant": { "additionalProperties": false, - "description": "A network of electrical transmission lines", + "description": "A power plant that uses fossil fuels", "properties": { + "capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "capex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Capital expenditure for the plant" + }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, + "commissioning_date": { + "format": "date", + "type": "string" + }, + "decommissioning_date": { + "format": "date", + "type": "string" + }, "description": { "description": "A human-readable description for a thing", "type": "string" }, + "fuel": { + "$ref": "#/$defs/FossilFuelType" + }, "id": { "description": "A unique identifier for a thing", "type": "string" }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "location": { + "type": "string" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, - "plants": { - "items": { - "type": "string" - }, - "type": "array" + "operator": { + "type": "string" + }, + "opex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Operating expense for the plant" + }, + "plant_type": { + "type": "string" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "ElectricalGrid" + "FossilFuelPlant" ], "type": "string" } @@ -882,72 +4496,84 @@ "required": [ "id" ], - "title": "ElectricalGrid", + "title": "FossilFuelPlant", "type": "object" }, - "EngineeringMaterialProcessing": { + "FossilFuelType": { + "description": "", + "enum": [ + "COAL", + "NATURAL_GAS", + "PETROLEUM" + ], + "title": "FossilFuelType", + "type": "string" + }, + "GeoBoxLocation": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" + "east_bounding_coordinate": { + "description": "The easternmost coordinate of the location", + "type": "number" }, - "has_duration": { - "$ref": "#/$defs/Duration" + "north_bounding_coordinate": { + "description": "The northernmost coordinate of the location", + "type": "number" }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "south_bounding_coordinate": { + "description": "The southernmost coordinate of the location", + "type": "number" }, - "id": { - "description": "A unique identifier for a thing", + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "GeoBoxLocation" + ], "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" + "west_bounding_coordinate": { + "description": "The westernmost coordinate of the location", + "type": "number" + } + }, + "title": "GeoBoxLocation", + "type": "object" + }, + "GeoPointLocation": { + "additionalProperties": false, + "description": "", + "properties": { + "altitude": { + "description": "The altitude of the location", + "type": "number" }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" + "latitude": { + "description": "The latitude of the location", + "type": "number" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" + "longitude": { + "description": "The longitude of the location", + "type": "number" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "EngineeringMaterialProcessing" - ], - "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { + "GeoPointLocation" + ], "type": "string" } }, - "required": [ - "id" - ], - "title": "EngineeringMaterialProcessing", + "title": "GeoPointLocation", "type": "object" }, - "EngineeringProcess": { + "HealthcareConditionOccurrence": { "additionalProperties": false, "description": "", "properties": { "ends_at": { "$ref": "#/$defs/TimePoint" }, - "follows_procedure": { - "type": "string" - }, "happens_at": { "$ref": "#/$defs/TimePoint" }, @@ -968,381 +4594,141 @@ "description": "A human-readable name for a thing", "type": "string" }, - "part_of": { - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "EngineeringProcess" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "EngineeringProcess", - "type": "object" - }, - "EngineeringSpecification": { - "additionalProperties": false, - "description": "", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", + "observed_during": { "type": "string" }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" + "patient": { + "$ref": "#/$defs/Patient" }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "EngineeringSpecification" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "EngineeringSpecification", - "type": "object" - }, - "EntitySet": { - "additionalProperties": false, - "description": "A group of things. The collection may be heterogeneous or homogeneous.", - "properties": { - "members": { - "description": "The members of the collection", - "items": { - "anyOf": [ - { - "$ref": "#/$defs/Intangible" - }, - { - "$ref": "#/$defs/NamedThing" - }, - { - "$ref": "#/$defs/Event" - }, - { - "$ref": "#/$defs/HealthcareEncounter" - }, - { - "$ref": "#/$defs/HealthcareConditionOccurrence" - }, - { - "$ref": "#/$defs/Investigation" - }, - { - "$ref": "#/$defs/ClinicalCohortEnrollment" - }, - { - "$ref": "#/$defs/EngineeringProcess" - }, - { - "$ref": "#/$defs/LifeEvent" - }, - { - "$ref": "#/$defs/Observation" - }, - { - "$ref": "#/$defs/ExecutionOfProcedure" - }, - { - "$ref": "#/$defs/PlannedProcess" - }, - { - "$ref": "#/$defs/InvestigativeProcess" - }, - { - "$ref": "#/$defs/ComputationalPlannedProcess" - }, - { - "$ref": "#/$defs/MaterialCollection" - }, - { - "$ref": "#/$defs/MaterialProcessing" - }, - { - "$ref": "#/$defs/SampleProcessing" - }, - { - "$ref": "#/$defs/EngineeringMaterialProcessing" - }, - { - "$ref": "#/$defs/FoodProcessing" - }, - { - "$ref": "#/$defs/SampleCollectionProcess" - }, - { - "$ref": "#/$defs/DataGenerationFromSample" - }, - { - "$ref": "#/$defs/Measurement" - }, - { - "$ref": "#/$defs/QualitativeObservation" - }, - { - "$ref": "#/$defs/PhysicalDevice" - }, - { - "$ref": "#/$defs/BuiltEnvironmentFeature" - }, - { - "$ref": "#/$defs/SampleMaterial" - }, - { - "$ref": "#/$defs/ClinicalCohort" - }, - { - "$ref": "#/$defs/RawMaterial" - }, - { - "$ref": "#/$defs/Equipment" - }, - { - "$ref": "#/$defs/Place" - }, - { - "$ref": "#/$defs/Agent" - }, - { - "$ref": "#/$defs/CreativeWork" - }, - { - "$ref": "#/$defs/Person" - }, - { - "$ref": "#/$defs/Organization" - }, - { - "$ref": "#/$defs/AutomatedAgent" - }, - { - "$ref": "#/$defs/HealthcareOrganization" - }, - { - "$ref": "#/$defs/FinancialOrganization" - }, - { - "$ref": "#/$defs/HealthcareSite" - }, - { - "$ref": "#/$defs/Landform" - }, - { - "$ref": "#/$defs/EnvironmentalSite" - }, - { - "$ref": "#/$defs/ExtractiveIndustryEquipment" - }, - { - "$ref": "#/$defs/Facility" - }, - { - "$ref": "#/$defs/BuiltSystem" - }, - { - "$ref": "#/$defs/ElectricalGrid" - }, - { - "$ref": "#/$defs/Building" - }, - { - "$ref": "#/$defs/ExtractiveIndustryFacility" - }, - { - "$ref": "#/$defs/MiningFacility" - }, - { - "$ref": "#/$defs/WellFacility" - }, - { - "$ref": "#/$defs/QuarryFacility" - }, - { - "$ref": "#/$defs/PowerPlant" - }, - { - "$ref": "#/$defs/FossilFuelPlant" - }, - { - "$ref": "#/$defs/NuclearPlant" - }, - { - "$ref": "#/$defs/RenewablePlant" - }, - { - "$ref": "#/$defs/HydroelectricPlant" - }, - { - "$ref": "#/$defs/SolarPlant" - }, - { - "$ref": "#/$defs/WindFarm" - }, - { - "$ref": "#/$defs/Concept" - }, - { - "$ref": "#/$defs/InformationEntity" - }, - { - "$ref": "#/$defs/StructuredValue" - }, - { - "$ref": "#/$defs/EntitySet" - }, - { - "$ref": "#/$defs/DataStructure" - }, - { - "$ref": "#/$defs/Quantity" - }, - { - "$ref": "#/$defs/QuantityRange" - }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HealthcareConditionOccurrence" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "HealthcareConditionOccurrence", + "type": "object" + }, + "HealthcareEncounter": { + "additionalProperties": false, + "description": "An interaction between a patient and one or more healthcare providers", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "patient": { + "$ref": "#/$defs/Patient" + }, + "provider": { + "$ref": "#/$defs/HealthcareProvider" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HealthcareEncounter" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "HealthcareEncounter", + "type": "object" + }, + "HealthcareEncounterClassification": { + "description": "", + "enum": [ + "Inpatient Visit", + "Emergency Room Visit", + "Emergency Room and Inpatient Visit", + "Non-hospital institution Visit", + "Outpatient Visit", + "Home Visit", + "Telehealth Visit", + "Pharmacy Visit", + "Laboratory Visit", + "Ambulance Visit", + "Case Management Visit" + ], + "title": "HealthcareEncounterClassification", + "type": "string" + }, + "HealthcareOrganization": { + "additionalProperties": false, + "description": "An organization that provides healthcare services", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "has_person_roles": { + "items": { + "$ref": "#/$defs/PersonInRole" + }, + "type": "array" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "provides_services": { + "items": { + "anyOf": [ { "$ref": "#/$defs/Service" }, - { - "$ref": "#/$defs/Variable" - }, - { - "$ref": "#/$defs/TimePointOrTemporalInterval" - }, - { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - { - "$ref": "#/$defs/Prediction" - }, - { - "$ref": "#/$defs/PredictionSummaryStatistics" - }, - { - "$ref": "#/$defs/SimplePrediction" - }, - { - "$ref": "#/$defs/AggregatePrediction" - }, - { - "$ref": "#/$defs/TemporalInterval" - }, - { - "$ref": "#/$defs/TimePoint" - }, { "$ref": "#/$defs/FinancialProduct" }, { "$ref": "#/$defs/FinancialAccount" - }, - { - "$ref": "#/$defs/SimpleQuantity" - }, - { - "$ref": "#/$defs/Ratio" - }, - { - "$ref": "#/$defs/Duration" - }, - { - "$ref": "#/$defs/FoodIngredient" - }, - { - "$ref": "#/$defs/MoneyQuantity" - }, - { - "$ref": "#/$defs/TemporalRelationship" - }, - { - "$ref": "#/$defs/HealthcareRole" - }, - { - "$ref": "#/$defs/HealthcareProvider" - }, - { - "$ref": "#/$defs/Patient" - }, - { - "$ref": "#/$defs/PostalAddress" - }, - { - "$ref": "#/$defs/PointLocation" - }, - { - "$ref": "#/$defs/GeoBoxLocation" - }, - { - "$ref": "#/$defs/GeoPointLocation" - }, - { - "$ref": "#/$defs/Specification" - }, - { - "$ref": "#/$defs/Publication" - }, - { - "$ref": "#/$defs/Dataset" - }, - { - "$ref": "#/$defs/ClinicalCohortDefinition" - }, - { - "$ref": "#/$defs/Procedure" - }, - { - "$ref": "#/$defs/InvestigativeProtocol" - }, - { - "$ref": "#/$defs/StudyDesign" - }, - { - "$ref": "#/$defs/EngineeringSpecification" - }, - { - "$ref": "#/$defs/FoodRecipe" - }, - { - "$ref": "#/$defs/QuantityKind" - }, - { - "$ref": "#/$defs/UnitConcept" - }, - { - "$ref": "#/$defs/CurrencyConcept" - }, - { - "$ref": "#/$defs/PowerPlantType" - }, - { - "$ref": "#/$defs/ExtractiveIndustryProduct" - }, - { - "$ref": "#/$defs/ExtractiveIndustryWaste" - }, - { - "$ref": "#/$defs/FoodTypeConcept" - }, - { - "$ref": "#/$defs/BasicFoodType" - }, - { - "$ref": "#/$defs/CompositeFoodType" } ] }, @@ -1351,139 +4737,1807 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "EntitySet" + "HealthcareOrganization" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "HealthcareOrganization", + "type": "object" + }, + "HealthcareProvider": { + "additionalProperties": false, + "description": "", + "properties": { + "care_site": { + "type": "string" + }, + "is_person": { + "type": "string" + }, + "speciality": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HealthcareProvider" + ], + "type": "string" + } + }, + "title": "HealthcareProvider", + "type": "object" + }, + "HealthcareRole": { + "additionalProperties": false, + "description": "", + "properties": { + "is_person": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HealthcareRole" + ], + "type": "string" + } + }, + "title": "HealthcareRole", + "type": "object" + }, + "HealthcareSite": { + "additionalProperties": false, + "description": "", + "properties": { + "address": { + "$ref": "#/$defs/PostalAddress" + }, + "bounding_coordinates": { + "$ref": "#/$defs/GeoBoxLocation", + "description": "The bounding coordinates of the place" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "geolocation": { + "$ref": "#/$defs/GeoPointLocation", + "description": "The geolocation of the place" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HealthcareSite" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "HealthcareSite", + "type": "object" + }, + "HumanLanguageCodeEnum": { + "description": "An enumeration of languages", + "title": "HumanLanguageCodeEnum", + "type": "string" + }, + "HydroelectricPlant": { + "additionalProperties": false, + "description": "A hydroelectric power plant", + "properties": { + "capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "capex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Capital expenditure for the plant" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "commissioning_date": { + "format": "date", + "type": "string" + }, + "dam": { + "description": "The dam used by the hydroelectric plant", + "type": "string" + }, + "decommissioning_date": { + "format": "date", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "operator": { + "type": "string" + }, + "opex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Operating expense for the plant" + }, + "plant_type": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "HydroelectricPlant" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "HydroelectricPlant", + "type": "object" + }, + "IndividualOrganism": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "IndividualOrganism" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "IndividualOrganism", + "type": "object" + }, + "InformationEntity": { + "additionalProperties": false, + "description": "An entity that describes some information", + "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "InformationEntity" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "InformationEntity", + "type": "object" + }, + "Intangible": { + "additionalProperties": false, + "description": "An entity that is not a physical object, process, or information", + "properties": { + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Intangible" + ], + "type": "string" + } + }, + "title": "Intangible", + "type": "object" + }, + "Investigation": { + "additionalProperties": false, + "description": "", + "properties": { + "design": { + "type": "string" + }, + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "hypothesis": { + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "objectives": { + "type": "string" + }, + "results": { + "items": { + "type": "string" + }, + "type": "array" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Investigation" + ], + "type": "string" + }, + "variables": { + "items": { + "$ref": "#/$defs/Variable" + }, + "type": "array" + } + }, + "required": [ + "id" + ], + "title": "Investigation", + "type": "object" + }, + "InvestigativeProcess": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "part_of": { + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "InvestigativeProcess" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "InvestigativeProcess", + "type": "object" + }, + "InvestigativeProtocol": { + "additionalProperties": false, + "description": "", + "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "protocols_io_url": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "InvestigativeProtocol" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "InvestigativeProtocol", + "type": "object" + }, + "InvestigativeProtocolEnum": { + "description": "", + "title": "InvestigativeProtocolEnum", + "type": "string" + }, + "Landform": { + "additionalProperties": false, + "description": "A natural feature of the solid surface of the Earth or other planetary body", + "properties": { + "address": { + "$ref": "#/$defs/PostalAddress" + }, + "bounding_coordinates": { + "$ref": "#/$defs/GeoBoxLocation", + "description": "The bounding coordinates of the place" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "geolocation": { + "$ref": "#/$defs/GeoPointLocation", + "description": "The geolocation of the place" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Landform" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "Landform", + "type": "object" + }, + "LandformEnum": { + "description": "", + "title": "LandformEnum", + "type": "string" + }, + "LifeEvent": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "LifeEvent" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "LifeEvent", + "type": "object" + }, + "MaterialCollection": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "MaterialCollection" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "MaterialCollection", + "type": "object" + }, + "MaterialProcessing": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "MaterialProcessing" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "MaterialProcessing", + "type": "object" + }, + "Measurement": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "measured_using": { + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "observation_subject": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "quantity_measured": { + "anyOf": [ + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ], + "description": "The quantity being measured" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Measurement" + ], + "type": "string" + }, + "variable_measured": { + "$ref": "#/$defs/Variable", + "description": "The variable being measured" + } + }, + "required": [ + "id" + ], + "title": "Measurement", + "type": "object" + }, + "MiningFacility": { + "additionalProperties": false, + "description": "A facility where mineral resources are extracted from the earth", + "properties": { + "annual_production": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "area": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "depth": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "facility_type": { + "$ref": "#/$defs/ExtractiveIndustryFacilityType" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "mining_method": { + "$ref": "#/$defs/MiningMethod" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "operator": { + "type": "string" + }, + "production_capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "products": { + "items": { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + "type": "array" + }, + "reserves": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "MiningFacility" ], "type": "string" } }, - "title": "EntitySet", + "required": [ + "id" + ], + "title": "MiningFacility", "type": "object" }, - "EnvironmentalSite": { + "MiningMethod": { + "description": "", + "enum": [ + "UNDERGROUND", + "OPEN_PIT", + "PLACER", + "IN_SITU" + ], + "title": "MiningMethod", + "type": "string" + }, + "MoneyQuantity": { "additionalProperties": false, - "description": "A location or site that is the subject of environmental monitoring", + "description": "A quantity of money", "properties": { - "address": { - "$ref": "#/$defs/PostalAddress" + "has_quantity_kind": { + "description": "The kind of quantity", + "type": "string" }, - "bounding_coordinates": { - "$ref": "#/$defs/GeoBoxLocation", - "description": "The bounding coordinates of the place" + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "MoneyQuantity" + ], + "type": "string" + }, + "unit": { + "description": "The currency of the quantity", + "type": "string" + }, + "value": { + "description": "The value of the quantity", + "type": "number" + } + }, + "title": "MoneyQuantity", + "type": "object" + }, + "NuclearPlant": { + "additionalProperties": false, + "description": "A nuclear power plant", + "properties": { + "capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "capex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Capital expenditure for the plant" }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, + "commissioning_date": { + "format": "date", + "type": "string" + }, + "decommissioning_date": { + "format": "date", + "type": "string" + }, "description": { "description": "A human-readable description for a thing", "type": "string" }, - "geolocation": { - "$ref": "#/$defs/GeoPointLocation", - "description": "The geolocation of the place" + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "location": { + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "operator": { + "type": "string" + }, + "opex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Operating expense for the plant" + }, + "plant_type": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "NuclearPlant" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "NuclearPlant", + "type": "object" + }, + "Observation": { + "additionalProperties": false, + "description": "A statement about the state of something", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, + "measured_using": { + "type": "string" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" + "observation_subject": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "EnvironmentalSite" + "Observation" ], "type": "string" + }, + "variable_measured": { + "$ref": "#/$defs/Variable", + "description": "The variable being measured" } }, "required": [ "id" ], - "title": "EnvironmentalSite", + "title": "Observation", "type": "object" }, - "Equipment": { + "OrgChart": { "additionalProperties": false, "description": "", "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Equipment" - ], + "for_organization": { "type": "string" - } - }, - "required": [ - "id" - ], - "title": "Equipment", - "type": "object" - }, - "Event": { - "additionalProperties": false, - "description": "A thing that happens", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" + "relationships": { + "$ref": "#/$defs/OrganizationPersonnelRelationship" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Event" + "OrgChart" ], "type": "string" } @@ -1491,275 +6545,811 @@ "required": [ "id" ], - "title": "Event", + "title": "OrgChart", "type": "object" }, - "ExecutionOfProcedure": { - "additionalProperties": false, + "OrganismTaxonEnum": { "description": "", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ExecutionOfProcedure" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ExecutionOfProcedure", - "type": "object" + "title": "OrganismTaxonEnum", + "type": "string" }, - "ExtractiveIndustryEquipment": { - "additionalProperties": false, - "description": "The equipment used in extractive industry operations", - "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" + "OrganismalRelationship": { + "additionalProperties": false, + "description": "", + "properties": { + "object": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, - "name": { - "description": "A human-readable name for a thing", + "predicate": { "type": "string" }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ExtractiveIndustryEquipment" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ExtractiveIndustryEquipment", - "type": "object" - }, - "ExtractiveIndustryFacility": { - "additionalProperties": false, - "description": "A facility where natural resources are extracted from the earth", - "properties": { - "annual_production": { + "subject": { "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, { "$ref": "#/$defs/SimpleQuantity" }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, { "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "facility_type": { - "$ref": "#/$defs/ExtractiveIndustryFacilityType" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operator": { - "type": "string" - }, - "production_capacity": { - "anyOf": [ + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "products": { - "items": { - "$ref": "#/$defs/ExtractiveIndustryProduct" - }, - "type": "array" - }, - "reserves": { - "anyOf": [ + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/ExtractiveIndustryWaste" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ExtractiveIndustryFacility" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ExtractiveIndustryFacility", - "type": "object" - }, - "ExtractiveIndustryFacilityType": { - "description": "", - "enum": [ - "MINING_FACILITY", - "WELL_FACILITY", - "QUARRY_FACILITY" - ], - "title": "ExtractiveIndustryFacilityType", - "type": "string" - }, - "ExtractiveIndustryProduct": { - "additionalProperties": false, - "description": "A product extracted from an extractive industry facility", - "properties": { - "grade": { - "anyOf": [ + "$ref": "#/$defs/FoodTypeConcept" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/BasicFoodType" }, { - "$ref": "#/$defs/MoneyQuantity" + "$ref": "#/$defs/CompositeFoodType" } ] }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "processing_method": { - "type": "string" - }, - "product_type": { - "$ref": "#/$defs/ExtractiveIndustryProductType" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "ExtractiveIndustryProduct" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "ExtractiveIndustryProduct", - "type": "object" - }, - "ExtractiveIndustryProductType": { - "description": "", - "enum": [ - "MINERAL", - "METAL", - "COAL", - "OIL", - "GAS", - "STONE", - "SAND", - "GRAVEL" - ], - "title": "ExtractiveIndustryProductType", - "type": "string" - }, - "ExtractiveIndustryWaste": { - "additionalProperties": false, - "description": "Waste material generated from extractive industry operations", - "properties": { - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "ExtractiveIndustryWaste" + "OrganismalRelationship" ], "type": "string" } }, - "required": [ - "id" - ], - "title": "ExtractiveIndustryWaste", + "title": "OrganismalRelationship", "type": "object" }, - "Facility": { + "Organization": { "additionalProperties": false, - "description": "", + "description": "Represents an Organization", "properties": { "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", @@ -1769,28 +7359,47 @@ "description": "A human-readable description for a thing", "type": "string" }, + "has_person_roles": { + "items": { + "$ref": "#/$defs/PersonInRole" + }, + "type": "array" + }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, + "provides_services": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + } + ] + }, + "type": "array" + }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Facility" + "Organization" ], "type": "string" } @@ -1798,442 +7407,982 @@ "required": [ "id" ], - "title": "Facility", + "title": "Organization", "type": "object" }, - "FinancialAccount": { + "OrganizationPersonnelRelationship": { "additionalProperties": false, - "description": "A bank account", + "description": "", "properties": { - "account_holder": { - "description": "The person or organization that holds the account", + "object": { "type": "string" }, - "account_number": { - "description": "The account number", + "predicate": { "type": "string" }, - "bank": { - "description": "The bank that holds the account", + "subject": { "type": "string" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "FinancialAccount" + "OrganizationPersonnelRelationship" ], "type": "string" } }, - "title": "FinancialAccount", + "title": "OrganizationPersonnelRelationship", "type": "object" }, - "FinancialOrganization": { + "OrganizationPersonnelRelationshipEnum": { + "description": "...", + "title": "OrganizationPersonnelRelationshipEnum", + "type": "string" + }, + "OrganizationalRole": { "additionalProperties": false, - "description": "An organization that provides financial services", + "description": "", "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "provides_services": { - "items": { - "anyOf": [ - { - "$ref": "#/$defs/Service" - }, - { - "$ref": "#/$defs/FinancialProduct" - }, - { - "$ref": "#/$defs/FinancialAccount" - } - ] - }, - "type": "array" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "FinancialOrganization" + "OrganizationalRole" ], "type": "string" } }, - "required": [ - "id" - ], - "title": "FinancialOrganization", + "title": "OrganizationalRole", "type": "object" }, - "FinancialProduct": { + "OutcomeType": { + "description": "", + "enum": [ + "TP", + "FP", + "TN", + "FN" + ], + "title": "OutcomeType", + "type": "string" + }, + "Patient": { "additionalProperties": false, - "description": "A product or service offered by a bank whereby one may deposit, withdraw or transfer money and in some cases be paid interest.", + "description": "", "properties": { + "is_person": { + "type": "string" + }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "FinancialProduct" + "Patient" ], "type": "string" } }, - "title": "FinancialProduct", + "title": "Patient", "type": "object" }, - "FinanicialOrganizationEnum": { - "description": "", - "title": "FinanicialOrganizationEnum", - "type": "string" - }, - "FoodIngredient": { + "Person": { "additionalProperties": false, - "description": "", + "description": "Represents a Person", "properties": { - "has_quantity_kind": { - "description": "The kind of quantity", + "age_in_years": { + "description": "Number of years since birth", + "type": "integer" + }, + "birth_date": { + "description": "Date on which a person is born", + "format": "date", + "type": "string" + }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "primary_email": { + "description": "The main email address of a person", + "pattern": "^\\S+@[\\S+\\.]+\\S+", "type": "string" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "FoodIngredient" + "Person" ], "type": "string" + }, + "vital_status": { + "$ref": "#/$defs/PersonStatus", + "description": "living or dead status" } }, - "title": "FoodIngredient", + "required": [ + "id" + ], + "title": "Person", "type": "object" }, - "FoodProcessing": { + "PersonInRole": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" + "object": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "person_role": { + "$ref": "#/$defs/OrganizationalRole" }, - "id": { - "description": "A unique identifier for a thing", + "predicate": { "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" + "subject": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, - "name": { - "description": "A human-readable name for a thing", + "subject_person": { "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "FoodProcessing" + "PersonInRole" ], "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" } }, - "required": [ - "id" - ], - "title": "FoodProcessing", + "title": "PersonInRole", "type": "object" }, - "FoodRecipe": { - "additionalProperties": false, + "PersonStatus": { "description": "", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "ingredients": { - "items": { - "$ref": "#/$defs/FoodIngredient" - }, - "type": "array" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "steps": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "FoodRecipe" - ], - "type": "string" - } - }, - "required": [ - "id" + "enum": [ + "ALIVE", + "DEAD", + "UNKNOWN" ], - "title": "FoodRecipe", - "type": "object" + "title": "PersonStatus", + "type": "string" }, - "FoodTypeConcept": { + "PhysicalDevice": { "additionalProperties": false, "description": "", "properties": { - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "FoodTypeConcept" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "FoodTypeConcept", - "type": "object" - }, - "FossilFuelPlant": { - "additionalProperties": false, - "description": "A power plant that uses fossil fuels", - "properties": { - "capacity": { - "anyOf": [ - { - "$ref": "#/$defs/SimpleQuantity" - }, - { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "capex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Capital expenditure for the plant" - }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, - "commissioning_date": { - "format": "date", - "type": "string" - }, - "decommissioning_date": { - "format": "date", - "type": "string" - }, "description": { "description": "A human-readable description for a thing", "type": "string" }, - "fuel": { - "$ref": "#/$defs/FossilFuelType" - }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "location": { - "type": "string" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, - "operator": { - "type": "string" - }, - "opex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Operating expense for the plant" - }, - "plant_type": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "FossilFuelPlant" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "FossilFuelPlant", - "type": "object" - }, - "FossilFuelType": { - "description": "", - "enum": [ - "COAL", - "NATURAL_GAS", - "PETROLEUM" - ], - "title": "FossilFuelType", - "type": "string" - }, - "GeoBoxLocation": { - "additionalProperties": false, - "description": "", - "properties": { - "east_bounding_coordinate": { - "description": "The easternmost coordinate of the location", - "type": "number" - }, - "north_bounding_coordinate": { - "description": "The northernmost coordinate of the location", - "type": "number" - }, - "south_bounding_coordinate": { - "description": "The southernmost coordinate of the location", - "type": "number" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "GeoBoxLocation" - ], - "type": "string" - }, - "west_bounding_coordinate": { - "description": "The westernmost coordinate of the location", - "type": "number" - } - }, - "title": "GeoBoxLocation", - "type": "object" - }, - "GeoPointLocation": { - "additionalProperties": false, - "description": "", - "properties": { - "altitude": { - "description": "The altitude of the location", - "type": "number" - }, - "latitude": { - "description": "The latitude of the location", - "type": "number" - }, - "longitude": { - "description": "The longitude of the location", - "type": "number" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "GeoPointLocation" - ], - "type": "string" - } - }, - "title": "GeoPointLocation", - "type": "object" - }, - "HealthcareConditionOccurrence": { - "additionalProperties": false, - "description": "", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "observed_during": { - "type": "string" - }, - "patient": { - "$ref": "#/$defs/Patient" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "HealthcareConditionOccurrence" + "PhysicalDevice" ], "type": "string" } @@ -2241,49 +8390,40 @@ "required": [ "id" ], - "title": "HealthcareConditionOccurrence", + "title": "PhysicalDevice", "type": "object" }, - "HealthcareEncounter": { + "PhysicalEntity": { "additionalProperties": false, - "description": "An interaction between a patient and one or more healthcare providers", + "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "description": { + "description": "A human-readable description for a thing", + "type": "string" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "patient": { - "$ref": "#/$defs/Patient" - }, - "provider": { - "$ref": "#/$defs/HealthcareProvider" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "HealthcareEncounter" + "PhysicalEntity" ], "type": "string" } @@ -2291,147 +8431,417 @@ "required": [ "id" ], - "title": "HealthcareEncounter", + "title": "PhysicalEntity", "type": "object" }, - "HealthcareEncounterClassification": { - "description": "", - "enum": [ - "Inpatient Visit", - "Emergency Room Visit", - "Emergency Room and Inpatient Visit", - "Non-hospital institution Visit", - "Outpatient Visit", - "Home Visit", - "Telehealth Visit", - "Pharmacy Visit", - "Laboratory Visit", - "Ambulance Visit", - "Case Management Visit" - ], - "title": "HealthcareEncounterClassification", - "type": "string" - }, - "HealthcareOrganization": { + "PhysicalSystem": { "additionalProperties": false, - "description": "An organization that provides healthcare services", + "description": "", "properties": { "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { + "components": { "items": { "type": "string" }, "type": "array" }, - "provides_services": { + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "events": { "items": { "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, { "$ref": "#/$defs/Service" }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, { "$ref": "#/$defs/FinancialProduct" }, { "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" } ] - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "HealthcareOrganization" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "HealthcareOrganization", - "type": "object" - }, - "HealthcareProvider": { - "additionalProperties": false, - "description": "", - "properties": { - "care_site": { - "type": "string" - }, - "is_person": { - "type": "string" - }, - "speciality": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "HealthcareProvider" - ], - "type": "string" - } - }, - "title": "HealthcareProvider", - "type": "object" - }, - "HealthcareRole": { - "additionalProperties": false, - "description": "", - "properties": { - "is_person": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "HealthcareRole" - ], - "type": "string" - } - }, - "title": "HealthcareRole", - "type": "object" - }, - "HealthcareSite": { - "additionalProperties": false, - "description": "", - "properties": { - "address": { - "$ref": "#/$defs/PostalAddress" - }, - "bounding_coordinates": { - "$ref": "#/$defs/GeoBoxLocation", - "description": "The bounding coordinates of the place" - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "geolocation": { - "$ref": "#/$defs/GeoPointLocation", - "description": "The geolocation of the place" + }, + "type": "array" }, "id": { "description": "A unique identifier for a thing", @@ -2442,6 +8852,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -2450,7 +8861,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "HealthcareSite" + "PhysicalSystem" ], "type": "string" } @@ -2458,117 +8869,51 @@ "required": [ "id" ], - "title": "HealthcareSite", + "title": "PhysicalSystem", "type": "object" }, - "HumanLanguageCodeEnum": { - "description": "An enumeration of languages", - "title": "HumanLanguageCodeEnum", - "type": "string" - }, - "HydroelectricPlant": { + "Place": { "additionalProperties": false, - "description": "A hydroelectric power plant", + "description": "Entities that have a somewhat fixed, physical extension.", "properties": { - "capacity": { - "anyOf": [ - { - "$ref": "#/$defs/SimpleQuantity" - }, - { - "$ref": "#/$defs/MoneyQuantity" - } - ] + "address": { + "$ref": "#/$defs/PostalAddress" }, - "capex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Capital expenditure for the plant" + "bounding_coordinates": { + "$ref": "#/$defs/GeoBoxLocation", + "description": "The bounding coordinates of the place" }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, - "commissioning_date": { - "format": "date", - "type": "string" - }, - "dam": { - "description": "The dam used by the hydroelectric plant", - "type": "string" - }, - "decommissioning_date": { - "format": "date", - "type": "string" - }, "description": { "description": "A human-readable description for a thing", "type": "string" }, + "geolocation": { + "$ref": "#/$defs/GeoPointLocation", + "description": "The geolocation of the place" + }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "location": { - "type": "string" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, - "operator": { - "type": "string" - }, - "opex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Operating expense for the plant" - }, - "plant_type": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "HydroelectricPlant" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "HydroelectricPlant", - "type": "object" - }, - "InformationEntity": { - "additionalProperties": false, - "description": "An entity that describes some information", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "InformationEntity" + "Place" ], "type": "string" } @@ -2576,31 +8921,19 @@ "required": [ "id" ], - "title": "InformationEntity", - "type": "object" - }, - "Intangible": { - "additionalProperties": false, - "description": "An entity that is not a physical object, process, or information", - "properties": { - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Intangible" - ], - "type": "string" - } - }, - "title": "Intangible", + "title": "Place", "type": "object" }, - "Investigation": { + "PlannedProcess": { "additionalProperties": false, - "description": "", + "description": "A process that follows a defined procedure or plan", "properties": { "ends_at": { "$ref": "#/$defs/TimePoint" }, + "follows_procedure": { + "type": "string" + }, "happens_at": { "$ref": "#/$defs/TimePoint" }, @@ -2621,167 +8954,167 @@ "description": "A human-readable name for a thing", "type": "string" }, - "objectives": { - "type": "string" - }, "starts_at": { "$ref": "#/$defs/TimePoint" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Investigation" + "PlannedProcess" ], "type": "string" }, - "variables": { - "items": { - "$ref": "#/$defs/Variable" - }, - "type": "array" + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" } }, "required": [ "id" ], - "title": "Investigation", + "title": "PlannedProcess", "type": "object" }, - "InvestigativeProcess": { + "PlannedProcessConfiguration": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "part_of": { - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "InvestigativeProcess" + "PlannedProcessConfiguration" ], "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" } }, - "required": [ - "id" - ], - "title": "InvestigativeProcess", + "title": "PlannedProcessConfiguration", "type": "object" }, - "InvestigativeProtocol": { + "PointLocation": { "additionalProperties": false, "description": "", "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "PointLocation" + ], + "type": "string" + } + }, + "title": "PointLocation", + "type": "object" + }, + "PostalAddress": { + "additionalProperties": false, + "description": "Represents an Address", + "properties": { + "city": { + "description": "The city", + "type": "string" }, - "id": { - "description": "A unique identifier for a thing", + "country": { + "description": "The country", "type": "string" }, - "name": { - "description": "A human-readable name for a thing", + "postal_code": { + "description": "The postal code or zip code", "type": "string" }, - "protocols_io_url": { + "state": { + "description": "The state", + "type": "string" + }, + "street_address": { + "description": "The street address", + "type": "string" + }, + "street_address_additional": { "type": "string" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "InvestigativeProtocol" + "PostalAddress" ], "type": "string" } }, - "required": [ - "id" - ], - "title": "InvestigativeProtocol", + "title": "PostalAddress", "type": "object" }, - "InvestigativeProtocolEnum": { - "description": "", - "title": "InvestigativeProtocolEnum", - "type": "string" - }, - "Landform": { + "PowerPlant": { "additionalProperties": false, - "description": "A natural feature of the solid surface of the Earth or other planetary body", + "description": "A facility for generating electrical power", "properties": { - "address": { - "$ref": "#/$defs/PostalAddress" + "capacity": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] }, - "bounding_coordinates": { - "$ref": "#/$defs/GeoBoxLocation", - "description": "The bounding coordinates of the place" + "capex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Capital expenditure for the plant" }, "classification": { "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", "type": "string" }, + "commissioning_date": { + "format": "date", + "type": "string" + }, + "decommissioning_date": { + "format": "date", + "type": "string" + }, "description": { "description": "A human-readable description for a thing", "type": "string" }, - "geolocation": { - "$ref": "#/$defs/GeoPointLocation", - "description": "The geolocation of the place" - }, "id": { "description": "A unique identifier for a thing", "type": "string" }, + "located_at_place": { + "description": "The place where the entity is located", + "type": "string" + }, + "location": { + "type": "string" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, "type": "array" }, + "operator": { + "type": "string" + }, + "opex": { + "$ref": "#/$defs/MoneyQuantity", + "description": "Operating expense for the plant" + }, + "plant_type": { + "type": "string" + }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Landform" + "PowerPlant" ], "type": "string" } @@ -2789,43 +9122,25 @@ "required": [ "id" ], - "title": "Landform", + "title": "PowerPlant", "type": "object" }, - "LifeEvent": { + "PowerPlantType": { "additionalProperties": false, - "description": "", + "description": "The type of power plant", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "LifeEvent" + "PowerPlantType" ], "type": "string" } @@ -2833,116 +9148,164 @@ "required": [ "id" ], - "title": "LifeEvent", + "title": "PowerPlantType", "type": "object" }, - "MaterialCollection": { + "Prediction": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" + "expected_value": { + "$ref": "#/$defs/Any" }, - "follows_procedure": { + "predicted_value": { + "$ref": "#/$defs/Any" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Prediction" + ], "type": "string" }, - "happens_at": { - "$ref": "#/$defs/TimePoint" + "variable_predicted": { + "$ref": "#/$defs/Variable" + } + }, + "title": "Prediction", + "type": "object" + }, + "PredictionSummaryStatistics": { + "additionalProperties": false, + "description": "A class for collecting totals of various outcomes.", + "properties": { + "accuracy": { + "description": "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)", + "type": "number" }, - "has_duration": { - "$ref": "#/$defs/Duration" + "f1_score": { + "description": "F1 Score is the harmonic mean of precision and recall", + "type": "number" }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "false_negative_count": { + "description": "Total number of false negatives (FN)", + "minimum": 0, + "type": "integer" + }, + "false_positive_count": { + "description": "Total number of false positives (FP)", + "minimum": 0, + "type": "integer" + }, + "precision": { + "description": "Precision is calculated as TP / (TP + FP)", + "type": "number" + }, + "predictions": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + } + ] + }, + "type": "array" + }, + "recall": { + "description": "Recall is calculated as TP / (TP + FN)", + "type": "number" + }, + "true_negative_count": { + "description": "Total number of true negatives (TN)", + "minimum": 0, + "type": "integer" + }, + "true_positive_count": { + "description": "Total number of true positives (TP)", + "minimum": 0, + "type": "integer" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "PredictionSummaryStatistics" + ], + "type": "string" + }, + "uses_dataset": { + "type": "string" + } + }, + "title": "PredictionSummaryStatistics", + "type": "object" + }, + "Procedure": { + "additionalProperties": false, + "description": "A canonical series of actions conducted in a certain order or manner", + "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "MaterialCollection" + "Procedure" ], "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" } }, "required": [ "id" ], - "title": "MaterialCollection", + "title": "Procedure", "type": "object" }, - "MaterialProcessing": { + "Publication": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "MaterialProcessing" + "Publication" ], "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" } }, "required": [ "id" ], - "title": "MaterialProcessing", + "title": "Publication", "type": "object" }, - "Measurement": { + "QualitativeObservation": { "additionalProperties": false, "description": "", "properties": { @@ -2978,11 +9341,20 @@ "$ref": "#/$defs/Intangible" }, { - "$ref": "#/$defs/NamedThing" + "$ref": "#/$defs/PhysicalEntity" }, { "$ref": "#/$defs/Event" }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, { "$ref": "#/$defs/HealthcareEncounter" }, @@ -2996,16 +9368,16 @@ "$ref": "#/$defs/ClinicalCohortEnrollment" }, { - "$ref": "#/$defs/EngineeringProcess" + "$ref": "#/$defs/Observation" }, { - "$ref": "#/$defs/LifeEvent" + "$ref": "#/$defs/ExecutionOfProcedure" }, { - "$ref": "#/$defs/Observation" + "$ref": "#/$defs/EngineeringProcess" }, { - "$ref": "#/$defs/ExecutionOfProcedure" + "$ref": "#/$defs/LifeEvent" }, { "$ref": "#/$defs/PlannedProcess" @@ -3022,6 +9394,9 @@ { "$ref": "#/$defs/MaterialProcessing" }, + { + "$ref": "#/$defs/FoodPreparation" + }, { "$ref": "#/$defs/SampleProcessing" }, @@ -3046,6 +9421,9 @@ { "$ref": "#/$defs/PhysicalDevice" }, + { + "$ref": "#/$defs/PhysicalSystem" + }, { "$ref": "#/$defs/BuiltEnvironmentFeature" }, @@ -3055,6 +9433,9 @@ { "$ref": "#/$defs/ClinicalCohort" }, + { + "$ref": "#/$defs/Place" + }, { "$ref": "#/$defs/RawMaterial" }, @@ -3062,22 +9443,22 @@ "$ref": "#/$defs/Equipment" }, { - "$ref": "#/$defs/Place" + "$ref": "#/$defs/Organization" }, { - "$ref": "#/$defs/Agent" + "$ref": "#/$defs/AutomatedAgent" }, { "$ref": "#/$defs/CreativeWork" }, { - "$ref": "#/$defs/Person" + "$ref": "#/$defs/IndividualOrganism" }, { - "$ref": "#/$defs/Organization" + "$ref": "#/$defs/Person" }, { - "$ref": "#/$defs/AutomatedAgent" + "$ref": "#/$defs/VeterinaryAnimal" }, { "$ref": "#/$defs/HealthcareOrganization" @@ -3085,6 +9466,9 @@ { "$ref": "#/$defs/FinancialOrganization" }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, { "$ref": "#/$defs/HealthcareSite" }, @@ -3092,10 +9476,10 @@ "$ref": "#/$defs/Landform" }, { - "$ref": "#/$defs/EnvironmentalSite" + "$ref": "#/$defs/AstronomicalBody" }, { - "$ref": "#/$defs/ExtractiveIndustryEquipment" + "$ref": "#/$defs/EnvironmentalSite" }, { "$ref": "#/$defs/Facility" @@ -3142,6 +9526,15 @@ { "$ref": "#/$defs/WindFarm" }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, { "$ref": "#/$defs/Concept" }, @@ -3155,16 +9548,13 @@ "$ref": "#/$defs/EntitySet" }, { - "$ref": "#/$defs/DataStructure" - }, - { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/ComputationalModel" }, { - "$ref": "#/$defs/QuantityRange" + "$ref": "#/$defs/DataStructure" }, { - "$ref": "#/$defs/Service" + "$ref": "#/$defs/SetOfObservations" }, { "$ref": "#/$defs/Variable" @@ -3176,22 +9566,25 @@ "$ref": "#/$defs/PlannedProcessConfiguration" }, { - "$ref": "#/$defs/Prediction" + "$ref": "#/$defs/Quantity" }, { - "$ref": "#/$defs/PredictionSummaryStatistics" + "$ref": "#/$defs/QuantityRange" }, { - "$ref": "#/$defs/SimplePrediction" + "$ref": "#/$defs/Service" }, { - "$ref": "#/$defs/AggregatePrediction" + "$ref": "#/$defs/Prediction" }, { - "$ref": "#/$defs/TemporalInterval" + "$ref": "#/$defs/PredictionSummaryStatistics" }, { - "$ref": "#/$defs/TimePoint" + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" }, { "$ref": "#/$defs/FinancialProduct" @@ -3200,13 +9593,13 @@ "$ref": "#/$defs/FinancialAccount" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/Duration" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/SimpleQuantity" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/Ratio" }, { "$ref": "#/$defs/FoodIngredient" @@ -3214,12 +9607,39 @@ { "$ref": "#/$defs/MoneyQuantity" }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, { "$ref": "#/$defs/TemporalRelationship" }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, { "$ref": "#/$defs/HealthcareRole" }, + { + "$ref": "#/$defs/OrganizationalRole" + }, { "$ref": "#/$defs/HealthcareProvider" }, @@ -3247,9 +9667,18 @@ { "$ref": "#/$defs/Dataset" }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, { "$ref": "#/$defs/ClinicalCohortDefinition" }, + { + "$ref": "#/$defs/OrgChart" + }, { "$ref": "#/$defs/Procedure" }, @@ -3266,13 +9695,13 @@ "$ref": "#/$defs/FoodRecipe" }, { - "$ref": "#/$defs/QuantityKind" + "$ref": "#/$defs/CurrencyConcept" }, { - "$ref": "#/$defs/UnitConcept" + "$ref": "#/$defs/QuantityKind" }, { - "$ref": "#/$defs/CurrencyConcept" + "$ref": "#/$defs/UnitConcept" }, { "$ref": "#/$defs/PowerPlantType" @@ -3294,36 +9723,13 @@ } ] }, - "quantity_measured": { - "anyOf": [ - { - "$ref": "#/$defs/Quantity" - }, - { - "$ref": "#/$defs/SimpleQuantity" - }, - { - "$ref": "#/$defs/Ratio" - }, - { - "$ref": "#/$defs/Duration" - }, - { - "$ref": "#/$defs/FoodIngredient" - }, - { - "$ref": "#/$defs/MoneyQuantity" - } - ], - "description": "The quantity being measured" - }, "starts_at": { "$ref": "#/$defs/TimePoint" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Measurement" + "QualitativeObservation" ], "type": "string" }, @@ -3335,38 +9741,120 @@ "required": [ "id" ], - "title": "Measurement", + "title": "QualitativeObservation", "type": "object" }, - "MiningFacility": { + "Quantity": { "additionalProperties": false, - "description": "A facility where mineral resources are extracted from the earth", + "description": "", "properties": { - "annual_production": { + "has_quantity_kind": { + "description": "The kind of quantity", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Quantity" + ], + "type": "string" + } + }, + "title": "Quantity", + "type": "object" + }, + "QuantityKind": { + "additionalProperties": false, + "description": "", + "properties": { + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "QuantityKind" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "QuantityKind", + "type": "object" + }, + "QuantityRange": { + "additionalProperties": false, + "description": "A quantity range is a property that can be measured or counted", + "properties": { + "lower_bound": { "anyOf": [ + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/Duration" + }, { "$ref": "#/$defs/SimpleQuantity" }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, { "$ref": "#/$defs/MoneyQuantity" } - ] + ], + "description": "The lower bound of the range" }, - "area": { + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "QuantityRange" + ], + "type": "string" + }, + "upper_bound": { "anyOf": [ + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/Duration" + }, { "$ref": "#/$defs/SimpleQuantity" }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, { "$ref": "#/$defs/MoneyQuantity" } - ] - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "depth": { + ], + "description": "The upper bound of the range" + } + }, + "title": "QuantityRange", + "type": "object" + }, + "QuarryFacility": { + "additionalProperties": false, + "description": "A facility where stone, sand, or gravel are extracted from the earth", + "properties": { + "annual_production": { "anyOf": [ { "$ref": "#/$defs/SimpleQuantity" @@ -3376,6 +9864,10 @@ } ] }, + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, "description": { "description": "A human-readable description for a thing", "type": "string" @@ -3391,14 +9883,12 @@ "description": "The place where the entity is located", "type": "string" }, - "mining_method": { - "$ref": "#/$defs/MiningMethod" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -3410,82 +9900,109 @@ "production_capacity": { "anyOf": [ { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "products": { + "items": { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + "type": "array" + }, + "reserves": { + "anyOf": [ + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/MoneyQuantity" + } + ] + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "QuarryFacility" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "QuarryFacility", + "type": "object" + }, + "Ratio": { + "additionalProperties": false, + "description": "A tuple of two quantities", + "properties": { + "denominator": { + "anyOf": [ + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" }, { "$ref": "#/$defs/MoneyQuantity" } - ] + ], + "description": "The denominator of the ratio" }, - "products": { - "items": { - "$ref": "#/$defs/ExtractiveIndustryProduct" - }, - "type": "array" + "has_quantity_kind": { + "description": "The kind of quantity", + "type": "string" }, - "reserves": { + "numerator": { "anyOf": [ + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/Duration" + }, { "$ref": "#/$defs/SimpleQuantity" }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, { "$ref": "#/$defs/MoneyQuantity" } - ] - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "MiningFacility" ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "MiningFacility", - "type": "object" - }, - "MiningMethod": { - "description": "", - "enum": [ - "UNDERGROUND", - "OPEN_PIT", - "PLACER", - "IN_SITU" - ], - "title": "MiningMethod", - "type": "string" - }, - "MoneyQuantity": { - "additionalProperties": false, - "description": "A quantity of money", - "properties": { - "has_quantity_kind": { - "description": "The kind of quantity", - "type": "string" + "description": "The numerator of the ratio" }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "MoneyQuantity" + "Ratio" ], "type": "string" - }, - "unit": { - "description": "The currency of the quantity", - "type": "string" - }, - "value": { - "description": "The value of the quantity", - "type": "number" } }, - "title": "MoneyQuantity", + "title": "Ratio", "type": "object" }, - "NamedThing": { + "RawMaterial": { "additionalProperties": false, "description": "", "properties": { @@ -3506,6 +10023,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -3514,7 +10032,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "NamedThing" + "RawMaterial" ], "type": "string" } @@ -3522,12 +10040,22 @@ "required": [ "id" ], - "title": "NamedThing", + "title": "RawMaterial", "type": "object" }, - "NuclearPlant": { + "RelativeTimeEnum": { + "description": "", + "enum": [ + "BEFORE", + "AFTER", + "AT_SAME_TIME_AS" + ], + "title": "RelativeTimeEnum", + "type": "string" + }, + "RenewablePlant": { "additionalProperties": false, - "description": "A nuclear power plant", + "description": "A power plant that uses renewable energy sources", "properties": { "capacity": { "anyOf": [ @@ -3575,6 +10103,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -3593,7 +10122,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "NuclearPlant" + "RenewablePlant" ], "type": "string" } @@ -3601,16 +10130,22 @@ "required": [ "id" ], - "title": "NuclearPlant", + "title": "RenewablePlant", "type": "object" }, - "Observation": { + "SampleCollectionProcess": { "additionalProperties": false, - "description": "A statement about the state of something", + "description": "", "properties": { + "collected_from": { + "type": "string" + }, "ends_at": { "$ref": "#/$defs/TimePoint" }, + "follows_procedure": { + "type": "string" + }, "happens_at": { "$ref": "#/$defs/TimePoint" }, @@ -3627,23 +10162,176 @@ "is_ongoing_as_of": { "$ref": "#/$defs/TimePoint" }, - "measured_using": { + "material_collected": { + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "part_of": { + "type": "string" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SampleCollectionProcess" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "SampleCollectionProcess", + "type": "object" + }, + "SampleMaterial": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SampleMaterial" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "SampleMaterial", + "type": "object" + }, + "SampleProcessing": { + "additionalProperties": false, + "description": "", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "follows_procedure": { + "type": "string" + }, + "happens_at": { + "$ref": "#/$defs/TimePoint" + }, + "has_duration": { + "$ref": "#/$defs/Duration" + }, + "has_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "id": { + "description": "A unique identifier for a thing", "type": "string" }, + "is_ongoing_as_of": { + "$ref": "#/$defs/TimePoint" + }, "name": { "description": "A human-readable name for a thing", "type": "string" }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SampleProcessing" + ], + "type": "string" + }, + "uses_configuration": { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + "uses_physical_device": { + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "SampleProcessing", + "type": "object" + }, + "SampleProcessingEnum": { + "description": "", + "title": "SampleProcessingEnum", + "type": "string" + }, + "Service": { + "additionalProperties": false, + "description": "A service provided by an organization", + "properties": { + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "Service" + ], + "type": "string" + } + }, + "title": "Service", + "type": "object" + }, + "SetOfObservations": { + "additionalProperties": false, + "description": "", + "properties": { "observation_subject": { "anyOf": [ { - "$ref": "#/$defs/Intangible" + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" }, { - "$ref": "#/$defs/NamedThing" + "$ref": "#/$defs/SubjectObservationHistory" }, { - "$ref": "#/$defs/Event" + "$ref": "#/$defs/ClinicalHistory" }, { "$ref": "#/$defs/HealthcareEncounter" @@ -3658,16 +10346,16 @@ "$ref": "#/$defs/ClinicalCohortEnrollment" }, { - "$ref": "#/$defs/EngineeringProcess" + "$ref": "#/$defs/Observation" }, { - "$ref": "#/$defs/LifeEvent" + "$ref": "#/$defs/ExecutionOfProcedure" }, { - "$ref": "#/$defs/Observation" + "$ref": "#/$defs/EngineeringProcess" }, { - "$ref": "#/$defs/ExecutionOfProcedure" + "$ref": "#/$defs/LifeEvent" }, { "$ref": "#/$defs/PlannedProcess" @@ -3684,6 +10372,9 @@ { "$ref": "#/$defs/MaterialProcessing" }, + { + "$ref": "#/$defs/FoodPreparation" + }, { "$ref": "#/$defs/SampleProcessing" }, @@ -3708,6 +10399,9 @@ { "$ref": "#/$defs/PhysicalDevice" }, + { + "$ref": "#/$defs/PhysicalSystem" + }, { "$ref": "#/$defs/BuiltEnvironmentFeature" }, @@ -3717,6 +10411,9 @@ { "$ref": "#/$defs/ClinicalCohort" }, + { + "$ref": "#/$defs/Place" + }, { "$ref": "#/$defs/RawMaterial" }, @@ -3724,22 +10421,22 @@ "$ref": "#/$defs/Equipment" }, { - "$ref": "#/$defs/Place" + "$ref": "#/$defs/Organization" }, { - "$ref": "#/$defs/Agent" + "$ref": "#/$defs/AutomatedAgent" }, { "$ref": "#/$defs/CreativeWork" }, { - "$ref": "#/$defs/Person" + "$ref": "#/$defs/IndividualOrganism" }, { - "$ref": "#/$defs/Organization" + "$ref": "#/$defs/Person" }, { - "$ref": "#/$defs/AutomatedAgent" + "$ref": "#/$defs/VeterinaryAnimal" }, { "$ref": "#/$defs/HealthcareOrganization" @@ -3747,6 +10444,9 @@ { "$ref": "#/$defs/FinancialOrganization" }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, { "$ref": "#/$defs/HealthcareSite" }, @@ -3754,10 +10454,10 @@ "$ref": "#/$defs/Landform" }, { - "$ref": "#/$defs/EnvironmentalSite" + "$ref": "#/$defs/AstronomicalBody" }, { - "$ref": "#/$defs/ExtractiveIndustryEquipment" + "$ref": "#/$defs/EnvironmentalSite" }, { "$ref": "#/$defs/Facility" @@ -3804,6 +10504,15 @@ { "$ref": "#/$defs/WindFarm" }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, { "$ref": "#/$defs/Concept" }, @@ -3817,16 +10526,13 @@ "$ref": "#/$defs/EntitySet" }, { - "$ref": "#/$defs/DataStructure" - }, - { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/ComputationalModel" }, { - "$ref": "#/$defs/QuantityRange" + "$ref": "#/$defs/DataStructure" }, { - "$ref": "#/$defs/Service" + "$ref": "#/$defs/SetOfObservations" }, { "$ref": "#/$defs/Variable" @@ -3838,22 +10544,25 @@ "$ref": "#/$defs/PlannedProcessConfiguration" }, { - "$ref": "#/$defs/Prediction" + "$ref": "#/$defs/Quantity" }, { - "$ref": "#/$defs/PredictionSummaryStatistics" + "$ref": "#/$defs/QuantityRange" }, { - "$ref": "#/$defs/SimplePrediction" + "$ref": "#/$defs/Service" }, { - "$ref": "#/$defs/AggregatePrediction" + "$ref": "#/$defs/Prediction" }, { - "$ref": "#/$defs/TemporalInterval" + "$ref": "#/$defs/PredictionSummaryStatistics" }, { - "$ref": "#/$defs/TimePoint" + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" }, { "$ref": "#/$defs/FinancialProduct" @@ -3862,13 +10571,13 @@ "$ref": "#/$defs/FinancialAccount" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/Duration" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/SimpleQuantity" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/Ratio" }, { "$ref": "#/$defs/FoodIngredient" @@ -3877,474 +10586,615 @@ "$ref": "#/$defs/MoneyQuantity" }, { - "$ref": "#/$defs/TemporalRelationship" - }, - { - "$ref": "#/$defs/HealthcareRole" - }, - { - "$ref": "#/$defs/HealthcareProvider" - }, - { - "$ref": "#/$defs/Patient" - }, - { - "$ref": "#/$defs/PostalAddress" - }, - { - "$ref": "#/$defs/PointLocation" + "$ref": "#/$defs/TemporalInterval" }, { - "$ref": "#/$defs/GeoBoxLocation" + "$ref": "#/$defs/TimePoint" }, { - "$ref": "#/$defs/GeoPointLocation" + "$ref": "#/$defs/Simulation" }, { - "$ref": "#/$defs/Specification" + "$ref": "#/$defs/DigitalTwin" }, { - "$ref": "#/$defs/Publication" + "$ref": "#/$defs/ClimateModel" }, { - "$ref": "#/$defs/Dataset" + "$ref": "#/$defs/TemporalRelationship" }, { - "$ref": "#/$defs/ClinicalCohortDefinition" + "$ref": "#/$defs/PersonInRole" }, { - "$ref": "#/$defs/Procedure" + "$ref": "#/$defs/OrganizationPersonnelRelationship" }, { - "$ref": "#/$defs/InvestigativeProtocol" + "$ref": "#/$defs/OrganismalRelationship" }, { - "$ref": "#/$defs/StudyDesign" + "$ref": "#/$defs/HealthcareRole" }, { - "$ref": "#/$defs/EngineeringSpecification" + "$ref": "#/$defs/OrganizationalRole" }, { - "$ref": "#/$defs/FoodRecipe" + "$ref": "#/$defs/HealthcareProvider" }, { - "$ref": "#/$defs/QuantityKind" + "$ref": "#/$defs/Patient" }, { - "$ref": "#/$defs/UnitConcept" + "$ref": "#/$defs/PostalAddress" }, { - "$ref": "#/$defs/CurrencyConcept" + "$ref": "#/$defs/PointLocation" }, { - "$ref": "#/$defs/PowerPlantType" + "$ref": "#/$defs/GeoBoxLocation" }, { - "$ref": "#/$defs/ExtractiveIndustryProduct" + "$ref": "#/$defs/GeoPointLocation" }, { - "$ref": "#/$defs/ExtractiveIndustryWaste" + "$ref": "#/$defs/Specification" }, { - "$ref": "#/$defs/FoodTypeConcept" + "$ref": "#/$defs/Publication" }, { - "$ref": "#/$defs/BasicFoodType" + "$ref": "#/$defs/Dataset" }, { - "$ref": "#/$defs/CompositeFoodType" - } - ] - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Observation" - ], - "type": "string" - }, - "variable_measured": { - "$ref": "#/$defs/Variable", - "description": "The variable being measured" - } - }, - "required": [ - "id" - ], - "title": "Observation", - "type": "object" - }, - "Organization": { - "additionalProperties": false, - "description": "Represents an Organization", - "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "provides_services": { - "items": { - "anyOf": [ - { - "$ref": "#/$defs/Service" - }, - { - "$ref": "#/$defs/FinancialProduct" - }, - { - "$ref": "#/$defs/FinancialAccount" - } - ] - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Organization" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "Organization", - "type": "object" - }, - "OutcomeType": { - "description": "", - "enum": [ - "TP", - "FP", - "TN", - "FN" - ], - "title": "OutcomeType", - "type": "string" - }, - "Patient": { - "additionalProperties": false, - "description": "", - "properties": { - "is_person": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Patient" - ], - "type": "string" - } - }, - "title": "Patient", - "type": "object" - }, - "Person": { - "additionalProperties": false, - "description": "Represents a Person", - "properties": { - "age_in_years": { - "description": "Number of years since birth", - "type": "integer" - }, - "birth_date": { - "description": "Date on which a person is born", - "format": "date", - "type": "string" - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, - "primary_email": { - "description": "The main email address of a person", - "pattern": "^\\S+@[\\S+\\.]+\\S+", - "type": "string" + "observations": { + "anyOf": [ + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + } + ] }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Person" + "SetOfObservations" ], "type": "string" - }, - "vital_status": { - "$ref": "#/$defs/PersonStatus", - "description": "living or dead status" } }, - "required": [ - "id" - ], - "title": "Person", + "title": "SetOfObservations", "type": "object" }, - "PersonStatus": { - "description": "", - "enum": [ - "ALIVE", - "DEAD", - "UNKNOWN" - ], - "title": "PersonStatus", - "type": "string" - }, - "PhysicalDevice": { + "SimplePrediction": { "additionalProperties": false, "description": "", "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "PhysicalDevice" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "PhysicalDevice", - "type": "object" - }, - "Place": { - "additionalProperties": false, - "description": "Entities that have a somewhat fixed, physical extension.", - "properties": { - "address": { - "$ref": "#/$defs/PostalAddress" - }, - "bounding_coordinates": { - "$ref": "#/$defs/GeoBoxLocation", - "description": "The bounding coordinates of the place" - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "geolocation": { - "$ref": "#/$defs/GeoPointLocation", - "description": "The geolocation of the place" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Place" + "expected_value": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "string" + } ], "type": "string" - } - }, - "required": [ - "id" - ], - "title": "Place", - "type": "object" - }, - "PlannedProcess": { - "additionalProperties": false, - "description": "A process that follows a defined procedure or plan", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "PlannedProcess" - ], - "type": "string" + "outcome": { + "$ref": "#/$defs/OutcomeType" }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" + "predicted_value": { + "$ref": "#/$defs/Any" }, - "uses_physical_device": { - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "PlannedProcess", - "type": "object" - }, - "PlannedProcessConfiguration": { - "additionalProperties": false, - "description": "", - "properties": { - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "PlannedProcessConfiguration" - ], - "type": "string" - } - }, - "title": "PlannedProcessConfiguration", - "type": "object" - }, - "PointLocation": { - "additionalProperties": false, - "description": "", - "properties": { "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "PointLocation" + "SimplePrediction" ], "type": "string" + }, + "variable_predicted": { + "$ref": "#/$defs/Variable" } }, - "title": "PointLocation", + "title": "SimplePrediction", "type": "object" }, - "PostalAddress": { + "SimpleQuantity": { "additionalProperties": false, - "description": "Represents an Address", + "description": "A quantity is a property that can be measured or counted", "properties": { - "city": { - "description": "The city", - "type": "string" - }, - "country": { - "description": "The country", - "type": "string" - }, - "postal_code": { - "description": "The postal code or zip code", + "has_quantity_kind": { + "description": "The kind of quantity", "type": "string" }, - "state": { - "description": "The state", + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SimpleQuantity" + ], "type": "string" }, - "street_address": { - "description": "The street address", + "unit": { "type": "string" }, - "street_address_additional": { - "type": "string" + "value": { + "description": "The value of the quantity", + "type": "number" + } + }, + "title": "SimpleQuantity", + "type": "object" + }, + "Simulation": { + "additionalProperties": false, + "description": "", + "properties": { + "models": { + "anyOf": [ + { + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" + }, + { + "$ref": "#/$defs/FinancialOrganization" + }, + { + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "PostalAddress" + "Simulation" ], "type": "string" } }, - "title": "PostalAddress", + "title": "Simulation", "type": "object" }, - "PowerPlant": { + "SolarPlant": { "additionalProperties": false, - "description": "A facility for generating electrical power", + "description": "A solar power plant", "properties": { "capacity": { "anyOf": [ @@ -4392,6 +11242,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -4410,7 +11261,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "PowerPlant" + "SolarPlant" ], "type": "string" } @@ -4418,13 +11269,17 @@ "required": [ "id" ], - "title": "PowerPlant", + "title": "SolarPlant", "type": "object" }, - "PowerPlantType": { + "Specification": { "additionalProperties": false, - "description": "The type of power plant", + "description": "A specification of a thing", "properties": { + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" + }, "id": { "description": "A unique identifier for a thing", "type": "string" @@ -4436,7 +11291,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "PowerPlantType" + "Specification" ], "type": "string" } @@ -4444,106 +11299,27 @@ "required": [ "id" ], - "title": "PowerPlantType", - "type": "object" - }, - "Prediction": { - "additionalProperties": false, - "description": "", - "properties": { - "expected_value": { - "$ref": "#/$defs/Any" - }, - "predicted_value": { - "$ref": "#/$defs/Any" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Prediction" - ], - "type": "string" - }, - "variable_predicted": { - "$ref": "#/$defs/Variable" - } - }, - "title": "Prediction", - "type": "object" - }, - "PredictionSummaryStatistics": { - "additionalProperties": false, - "description": "A class for collecting totals of various outcomes.", - "properties": { - "accuracy": { - "description": "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)", - "type": "number" - }, - "f1_score": { - "description": "F1 Score is the harmonic mean of precision and recall", - "type": "number" - }, - "false_negative_count": { - "description": "Total number of false negatives (FN)", - "minimum": 0, - "type": "integer" - }, - "false_positive_count": { - "description": "Total number of false positives (FP)", - "minimum": 0, - "type": "integer" - }, - "precision": { - "description": "Precision is calculated as TP / (TP + FP)", - "type": "number" - }, - "predictions": { - "items": { - "anyOf": [ - { - "$ref": "#/$defs/Prediction" - }, - { - "$ref": "#/$defs/SimplePrediction" - }, - { - "$ref": "#/$defs/AggregatePrediction" - } - ] - }, - "type": "array" - }, - "recall": { - "description": "Recall is calculated as TP / (TP + FN)", - "type": "number" - }, - "true_negative_count": { - "description": "Total number of true negatives (TN)", - "minimum": 0, - "type": "integer" - }, - "true_positive_count": { - "description": "Total number of true positives (TP)", - "minimum": 0, - "type": "integer" - }, + "title": "Specification", + "type": "object" + }, + "StructuredValue": { + "additionalProperties": false, + "description": "A value that is a structured collection of other values", + "properties": { "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "PredictionSummaryStatistics" + "StructuredValue" ], "type": "string" - }, - "uses_dataset": { - "type": "string" } }, - "title": "PredictionSummaryStatistics", + "title": "StructuredValue", "type": "object" }, - "Procedure": { + "StudyDesign": { "additionalProperties": false, - "description": "A canonical series of actions conducted in a certain order or manner", + "description": "", "properties": { "describes": { "$ref": "#/$defs/Any", @@ -4560,7 +11336,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Procedure" + "StudyDesign" ], "type": "string" } @@ -4568,10 +11344,15 @@ "required": [ "id" ], - "title": "Procedure", + "title": "StudyDesign", "type": "object" }, - "Publication": { + "StudyDesignEnum": { + "description": "", + "title": "StudyDesignEnum", + "type": "string" + }, + "StudyHypothesis": { "additionalProperties": false, "description": "", "properties": { @@ -4590,7 +11371,7 @@ "type": { "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", "enum": [ - "Publication" + "StudyHypothesis" ], "type": "string" } @@ -4598,1205 +11379,958 @@ "required": [ "id" ], - "title": "Publication", + "title": "StudyHypothesis", "type": "object" }, - "QualitativeObservation": { + "StudyResult": { "additionalProperties": false, "description": "", "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" + "describes": { + "$ref": "#/$defs/Any", + "description": "The thing that is being described" }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" + "hypothesis": { + "type": "string" }, "id": { "description": "A unique identifier for a thing", "type": "string" }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "measured_using": { - "type": "string" - }, "name": { "description": "A human-readable name for a thing", "type": "string" }, - "observation_subject": { - "anyOf": [ - { - "$ref": "#/$defs/Intangible" - }, - { - "$ref": "#/$defs/NamedThing" - }, - { - "$ref": "#/$defs/Event" - }, - { - "$ref": "#/$defs/HealthcareEncounter" - }, - { - "$ref": "#/$defs/HealthcareConditionOccurrence" - }, - { - "$ref": "#/$defs/Investigation" - }, - { - "$ref": "#/$defs/ClinicalCohortEnrollment" - }, - { - "$ref": "#/$defs/EngineeringProcess" - }, - { - "$ref": "#/$defs/LifeEvent" - }, - { - "$ref": "#/$defs/Observation" - }, - { - "$ref": "#/$defs/ExecutionOfProcedure" - }, - { - "$ref": "#/$defs/PlannedProcess" - }, - { - "$ref": "#/$defs/InvestigativeProcess" - }, - { - "$ref": "#/$defs/ComputationalPlannedProcess" - }, - { - "$ref": "#/$defs/MaterialCollection" - }, - { - "$ref": "#/$defs/MaterialProcessing" - }, - { - "$ref": "#/$defs/SampleProcessing" - }, - { - "$ref": "#/$defs/EngineeringMaterialProcessing" - }, - { - "$ref": "#/$defs/FoodProcessing" - }, - { - "$ref": "#/$defs/SampleCollectionProcess" - }, - { - "$ref": "#/$defs/DataGenerationFromSample" - }, - { - "$ref": "#/$defs/Measurement" - }, - { - "$ref": "#/$defs/QualitativeObservation" - }, - { - "$ref": "#/$defs/PhysicalDevice" - }, - { - "$ref": "#/$defs/BuiltEnvironmentFeature" - }, - { - "$ref": "#/$defs/SampleMaterial" - }, - { - "$ref": "#/$defs/ClinicalCohort" - }, - { - "$ref": "#/$defs/RawMaterial" - }, - { - "$ref": "#/$defs/Equipment" - }, - { - "$ref": "#/$defs/Place" - }, - { - "$ref": "#/$defs/Agent" - }, - { - "$ref": "#/$defs/CreativeWork" - }, - { - "$ref": "#/$defs/Person" - }, - { - "$ref": "#/$defs/Organization" - }, - { - "$ref": "#/$defs/AutomatedAgent" - }, - { - "$ref": "#/$defs/HealthcareOrganization" - }, - { - "$ref": "#/$defs/FinancialOrganization" - }, - { - "$ref": "#/$defs/HealthcareSite" - }, - { - "$ref": "#/$defs/Landform" - }, - { - "$ref": "#/$defs/EnvironmentalSite" - }, - { - "$ref": "#/$defs/ExtractiveIndustryEquipment" - }, - { - "$ref": "#/$defs/Facility" - }, - { - "$ref": "#/$defs/BuiltSystem" - }, - { - "$ref": "#/$defs/ElectricalGrid" - }, - { - "$ref": "#/$defs/Building" - }, - { - "$ref": "#/$defs/ExtractiveIndustryFacility" - }, - { - "$ref": "#/$defs/MiningFacility" - }, - { - "$ref": "#/$defs/WellFacility" - }, - { - "$ref": "#/$defs/QuarryFacility" - }, - { - "$ref": "#/$defs/PowerPlant" - }, - { - "$ref": "#/$defs/FossilFuelPlant" - }, - { - "$ref": "#/$defs/NuclearPlant" - }, - { - "$ref": "#/$defs/RenewablePlant" - }, - { - "$ref": "#/$defs/HydroelectricPlant" - }, - { - "$ref": "#/$defs/SolarPlant" - }, - { - "$ref": "#/$defs/WindFarm" - }, - { - "$ref": "#/$defs/Concept" - }, - { - "$ref": "#/$defs/InformationEntity" - }, - { - "$ref": "#/$defs/StructuredValue" - }, - { - "$ref": "#/$defs/EntitySet" - }, - { - "$ref": "#/$defs/DataStructure" - }, - { - "$ref": "#/$defs/Quantity" - }, - { - "$ref": "#/$defs/QuantityRange" - }, + "result": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "StudyResult" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "StudyResult", + "type": "object" + }, + "SubjectHistory": { + "additionalProperties": false, + "description": "", + "properties": { + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "over_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "subject": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SubjectHistory" + ], + "type": "string" + } + }, + "required": [ + "subject" + ], + "title": "SubjectHistory", + "type": "object" + }, + "SubjectObservationHistory": { + "additionalProperties": false, + "description": "", + "properties": { + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "interpretations": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + } + ] + }, + "type": "array" + }, + "measurements": { + "items": { + "$ref": "#/$defs/Measurement" + }, + "type": "array" + }, + "observations": { + "items": { + "anyOf": [ + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + } + ] + }, + "type": "array" + }, + "over_interval": { + "$ref": "#/$defs/TemporalInterval" + }, + "subject": { + "type": "string" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "SubjectObservationHistory" + ], + "type": "string" + } + }, + "required": [ + "subject" + ], + "title": "SubjectObservationHistory", + "type": "object" + }, + "TemporalInterval": { + "additionalProperties": false, + "description": "A period of time", + "properties": { + "ends_at": { + "$ref": "#/$defs/TimePoint" + }, + "starts_at": { + "$ref": "#/$defs/TimePoint" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "TemporalInterval" + ], + "type": "string" + } + }, + "title": "TemporalInterval", + "type": "object" + }, + "TemporalRelationship": { + "additionalProperties": false, + "description": "A relationship to another time point", + "properties": { + "object": { + "anyOf": [ { - "$ref": "#/$defs/Service" + "$ref": "#/$defs/Intangible" }, { - "$ref": "#/$defs/Variable" + "$ref": "#/$defs/PhysicalEntity" }, { - "$ref": "#/$defs/TimePointOrTemporalInterval" + "$ref": "#/$defs/Event" }, { - "$ref": "#/$defs/PlannedProcessConfiguration" + "$ref": "#/$defs/SubjectHistory" }, { - "$ref": "#/$defs/Prediction" + "$ref": "#/$defs/SubjectObservationHistory" }, { - "$ref": "#/$defs/PredictionSummaryStatistics" + "$ref": "#/$defs/ClinicalHistory" }, { - "$ref": "#/$defs/SimplePrediction" + "$ref": "#/$defs/HealthcareEncounter" }, { - "$ref": "#/$defs/AggregatePrediction" + "$ref": "#/$defs/HealthcareConditionOccurrence" }, { - "$ref": "#/$defs/TemporalInterval" + "$ref": "#/$defs/Investigation" }, { - "$ref": "#/$defs/TimePoint" + "$ref": "#/$defs/ClinicalCohortEnrollment" }, { - "$ref": "#/$defs/FinancialProduct" + "$ref": "#/$defs/Observation" }, { - "$ref": "#/$defs/FinancialAccount" + "$ref": "#/$defs/ExecutionOfProcedure" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/EngineeringProcess" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/LifeEvent" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/PlannedProcess" }, { - "$ref": "#/$defs/FoodIngredient" + "$ref": "#/$defs/InvestigativeProcess" }, { - "$ref": "#/$defs/MoneyQuantity" + "$ref": "#/$defs/ComputationalPlannedProcess" }, { - "$ref": "#/$defs/TemporalRelationship" + "$ref": "#/$defs/MaterialCollection" }, { - "$ref": "#/$defs/HealthcareRole" + "$ref": "#/$defs/MaterialProcessing" }, { - "$ref": "#/$defs/HealthcareProvider" + "$ref": "#/$defs/FoodPreparation" }, { - "$ref": "#/$defs/Patient" + "$ref": "#/$defs/SampleProcessing" }, { - "$ref": "#/$defs/PostalAddress" + "$ref": "#/$defs/EngineeringMaterialProcessing" }, { - "$ref": "#/$defs/PointLocation" + "$ref": "#/$defs/FoodProcessing" }, { - "$ref": "#/$defs/GeoBoxLocation" + "$ref": "#/$defs/SampleCollectionProcess" }, { - "$ref": "#/$defs/GeoPointLocation" + "$ref": "#/$defs/DataGenerationFromSample" }, { - "$ref": "#/$defs/Specification" + "$ref": "#/$defs/Measurement" }, { - "$ref": "#/$defs/Publication" + "$ref": "#/$defs/QualitativeObservation" }, { - "$ref": "#/$defs/Dataset" + "$ref": "#/$defs/PhysicalDevice" }, { - "$ref": "#/$defs/ClinicalCohortDefinition" + "$ref": "#/$defs/PhysicalSystem" }, { - "$ref": "#/$defs/Procedure" + "$ref": "#/$defs/BuiltEnvironmentFeature" }, { - "$ref": "#/$defs/InvestigativeProtocol" + "$ref": "#/$defs/SampleMaterial" }, { - "$ref": "#/$defs/StudyDesign" + "$ref": "#/$defs/ClinicalCohort" }, { - "$ref": "#/$defs/EngineeringSpecification" + "$ref": "#/$defs/Place" }, { - "$ref": "#/$defs/FoodRecipe" + "$ref": "#/$defs/RawMaterial" }, { - "$ref": "#/$defs/QuantityKind" + "$ref": "#/$defs/Equipment" }, { - "$ref": "#/$defs/UnitConcept" + "$ref": "#/$defs/Organization" }, { - "$ref": "#/$defs/CurrencyConcept" + "$ref": "#/$defs/AutomatedAgent" }, { - "$ref": "#/$defs/PowerPlantType" + "$ref": "#/$defs/CreativeWork" }, { - "$ref": "#/$defs/ExtractiveIndustryProduct" + "$ref": "#/$defs/IndividualOrganism" }, { - "$ref": "#/$defs/ExtractiveIndustryWaste" + "$ref": "#/$defs/Person" }, { - "$ref": "#/$defs/FoodTypeConcept" + "$ref": "#/$defs/VeterinaryAnimal" }, { - "$ref": "#/$defs/BasicFoodType" + "$ref": "#/$defs/HealthcareOrganization" }, { - "$ref": "#/$defs/CompositeFoodType" - } - ] - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "QualitativeObservation" - ], - "type": "string" - }, - "variable_measured": { - "$ref": "#/$defs/Variable", - "description": "The variable being measured" - } - }, - "required": [ - "id" - ], - "title": "QualitativeObservation", - "type": "object" - }, - "Quantity": { - "additionalProperties": false, - "description": "", - "properties": { - "has_quantity_kind": { - "description": "The kind of quantity", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Quantity" - ], - "type": "string" - } - }, - "title": "Quantity", - "type": "object" - }, - "QuantityKind": { - "additionalProperties": false, - "description": "", - "properties": { - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "QuantityKind" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "QuantityKind", - "type": "object" - }, - "QuantityRange": { - "additionalProperties": false, - "description": "A quantity range is a property that can be measured or counted", - "properties": { - "lower_bound": { - "anyOf": [ - { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/FinancialOrganization" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/ExtractiveIndustryEquipment" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/HealthcareSite" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/Landform" }, { - "$ref": "#/$defs/FoodIngredient" + "$ref": "#/$defs/AstronomicalBody" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ], - "description": "The lower bound of the range" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "QuantityRange" - ], - "type": "string" - }, - "upper_bound": { - "anyOf": [ + "$ref": "#/$defs/EnvironmentalSite" + }, { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/Facility" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/BuiltSystem" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/ElectricalGrid" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/Building" }, { - "$ref": "#/$defs/FoodIngredient" + "$ref": "#/$defs/ExtractiveIndustryFacility" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ], - "description": "The upper bound of the range" - } - }, - "title": "QuantityRange", - "type": "object" - }, - "QuarryFacility": { - "additionalProperties": false, - "description": "A facility where stone, sand, or gravel are extracted from the earth", - "properties": { - "annual_production": { - "anyOf": [ + "$ref": "#/$defs/MiningFacility" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/WellFacility" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "facility_type": { - "$ref": "#/$defs/ExtractiveIndustryFacilityType" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operator": { - "type": "string" - }, - "production_capacity": { - "anyOf": [ + "$ref": "#/$defs/QuarryFacility" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/PowerPlant" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "products": { - "items": { - "$ref": "#/$defs/ExtractiveIndustryProduct" - }, - "type": "array" - }, - "reserves": { - "anyOf": [ + "$ref": "#/$defs/FossilFuelPlant" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/NuclearPlant" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "QuarryFacility" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "QuarryFacility", - "type": "object" - }, - "Ratio": { - "additionalProperties": false, - "description": "A tuple of two quantities", - "properties": { - "denominator": { - "anyOf": [ + "$ref": "#/$defs/RenewablePlant" + }, { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/HydroelectricPlant" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/SolarPlant" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/WindFarm" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/EconomicSystem" }, { - "$ref": "#/$defs/FoodIngredient" + "$ref": "#/$defs/EnvironmentalSystem" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ], - "description": "The denominator of the ratio" - }, - "has_quantity_kind": { - "description": "The kind of quantity", - "type": "string" - }, - "numerator": { - "anyOf": [ + "$ref": "#/$defs/Climate" + }, { - "$ref": "#/$defs/Quantity" + "$ref": "#/$defs/Concept" }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/InformationEntity" }, { - "$ref": "#/$defs/Ratio" + "$ref": "#/$defs/StructuredValue" }, { - "$ref": "#/$defs/Duration" + "$ref": "#/$defs/EntitySet" }, { - "$ref": "#/$defs/FoodIngredient" + "$ref": "#/$defs/ComputationalModel" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ], - "description": "The numerator of the ratio" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Ratio" - ], - "type": "string" - } - }, - "title": "Ratio", - "type": "object" - }, - "RawMaterial": { - "additionalProperties": false, - "description": "", - "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "RawMaterial" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "RawMaterial", - "type": "object" - }, - "RelativeTimeEnum": { - "description": "", - "enum": [ - "BEFORE", - "AFTER", - "AT_SAME_TIME_AS" - ], - "title": "RelativeTimeEnum", - "type": "string" - }, - "RenewablePlant": { - "additionalProperties": false, - "description": "A power plant that uses renewable energy sources", - "properties": { - "capacity": { - "anyOf": [ + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, { "$ref": "#/$defs/SimpleQuantity" }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, { "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "capex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Capital expenditure for the plant" - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "commissioning_date": { - "format": "date", - "type": "string" - }, - "decommissioning_date": { - "format": "date", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "location": { - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operator": { - "type": "string" - }, - "opex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Operating expense for the plant" - }, - "plant_type": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "RenewablePlant" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "RenewablePlant", - "type": "object" - }, - "SampleCollectionProcess": { - "additionalProperties": false, - "description": "", - "properties": { - "collected_from": { - "type": "string" - }, - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "material_collected": { - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "part_of": { - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SampleCollectionProcess" - ], - "type": "string" - }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" - }, - "uses_physical_device": { - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "SampleCollectionProcess", - "type": "object" - }, - "SampleMaterial": { - "additionalProperties": false, - "description": "", - "properties": { - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SampleMaterial" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "SampleMaterial", - "type": "object" - }, - "SampleProcessing": { - "additionalProperties": false, - "description": "", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "follows_procedure": { - "type": "string" - }, - "happens_at": { - "$ref": "#/$defs/TimePoint" - }, - "has_duration": { - "$ref": "#/$defs/Duration" - }, - "has_interval": { - "$ref": "#/$defs/TemporalInterval" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "is_ongoing_as_of": { - "$ref": "#/$defs/TimePoint" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, + { + "$ref": "#/$defs/OrgChart" + }, + { + "$ref": "#/$defs/Procedure" + }, + { + "$ref": "#/$defs/InvestigativeProtocol" + }, + { + "$ref": "#/$defs/StudyDesign" + }, + { + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" + } + ] }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SampleProcessing" - ], - "type": "string" + "predicate": { + "$ref": "#/$defs/RelativeTimeEnum", + "description": "The relationship between the two time points" }, - "uses_configuration": { - "$ref": "#/$defs/PlannedProcessConfiguration" + "relative_to": { + "anyOf": [ + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "type": "string" + } + ] }, - "uses_physical_device": { - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "SampleProcessing", - "type": "object" - }, - "SampleProcessingEnum": { - "description": "", - "title": "SampleProcessingEnum", - "type": "string" - }, - "Service": { - "additionalProperties": false, - "description": "A service provided by an organization", - "properties": { - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Service" - ], - "type": "string" - } - }, - "title": "Service", - "type": "object" - }, - "SimplePrediction": { - "additionalProperties": false, - "description": "", - "properties": { - "expected_value": { + "subject": { "anyOf": [ { - "type": "integer" + "$ref": "#/$defs/Intangible" + }, + { + "$ref": "#/$defs/PhysicalEntity" + }, + { + "$ref": "#/$defs/Event" + }, + { + "$ref": "#/$defs/SubjectHistory" + }, + { + "$ref": "#/$defs/SubjectObservationHistory" + }, + { + "$ref": "#/$defs/ClinicalHistory" + }, + { + "$ref": "#/$defs/HealthcareEncounter" + }, + { + "$ref": "#/$defs/HealthcareConditionOccurrence" + }, + { + "$ref": "#/$defs/Investigation" + }, + { + "$ref": "#/$defs/ClinicalCohortEnrollment" + }, + { + "$ref": "#/$defs/Observation" + }, + { + "$ref": "#/$defs/ExecutionOfProcedure" + }, + { + "$ref": "#/$defs/EngineeringProcess" + }, + { + "$ref": "#/$defs/LifeEvent" + }, + { + "$ref": "#/$defs/PlannedProcess" + }, + { + "$ref": "#/$defs/InvestigativeProcess" + }, + { + "$ref": "#/$defs/ComputationalPlannedProcess" + }, + { + "$ref": "#/$defs/MaterialCollection" + }, + { + "$ref": "#/$defs/MaterialProcessing" + }, + { + "$ref": "#/$defs/FoodPreparation" + }, + { + "$ref": "#/$defs/SampleProcessing" + }, + { + "$ref": "#/$defs/EngineeringMaterialProcessing" + }, + { + "$ref": "#/$defs/FoodProcessing" + }, + { + "$ref": "#/$defs/SampleCollectionProcess" + }, + { + "$ref": "#/$defs/DataGenerationFromSample" + }, + { + "$ref": "#/$defs/Measurement" + }, + { + "$ref": "#/$defs/QualitativeObservation" + }, + { + "$ref": "#/$defs/PhysicalDevice" + }, + { + "$ref": "#/$defs/PhysicalSystem" + }, + { + "$ref": "#/$defs/BuiltEnvironmentFeature" + }, + { + "$ref": "#/$defs/SampleMaterial" + }, + { + "$ref": "#/$defs/ClinicalCohort" + }, + { + "$ref": "#/$defs/Place" + }, + { + "$ref": "#/$defs/RawMaterial" + }, + { + "$ref": "#/$defs/Equipment" + }, + { + "$ref": "#/$defs/Organization" + }, + { + "$ref": "#/$defs/AutomatedAgent" + }, + { + "$ref": "#/$defs/CreativeWork" + }, + { + "$ref": "#/$defs/IndividualOrganism" + }, + { + "$ref": "#/$defs/Person" + }, + { + "$ref": "#/$defs/VeterinaryAnimal" + }, + { + "$ref": "#/$defs/HealthcareOrganization" }, { - "type": "number" + "$ref": "#/$defs/FinancialOrganization" }, { - "type": "string" - } - ], - "type": "string" - }, - "outcome": { - "$ref": "#/$defs/OutcomeType" - }, - "predicted_value": { - "$ref": "#/$defs/Any" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SimplePrediction" - ], - "type": "string" - }, - "variable_predicted": { - "$ref": "#/$defs/Variable" - } - }, - "title": "SimplePrediction", - "type": "object" - }, - "SimpleQuantity": { - "additionalProperties": false, - "description": "A quantity is a property that can be measured or counted", - "properties": { - "has_quantity_kind": { - "description": "The kind of quantity", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SimpleQuantity" - ], - "type": "string" - }, - "unit": { - "type": "string" - }, - "value": { - "description": "The value of the quantity", - "type": "number" - } - }, - "title": "SimpleQuantity", - "type": "object" - }, - "SolarPlant": { - "additionalProperties": false, - "description": "A solar power plant", - "properties": { - "capacity": { - "anyOf": [ + "$ref": "#/$defs/ExtractiveIndustryEquipment" + }, + { + "$ref": "#/$defs/HealthcareSite" + }, + { + "$ref": "#/$defs/Landform" + }, + { + "$ref": "#/$defs/AstronomicalBody" + }, + { + "$ref": "#/$defs/EnvironmentalSite" + }, + { + "$ref": "#/$defs/Facility" + }, + { + "$ref": "#/$defs/BuiltSystem" + }, + { + "$ref": "#/$defs/ElectricalGrid" + }, + { + "$ref": "#/$defs/Building" + }, + { + "$ref": "#/$defs/ExtractiveIndustryFacility" + }, + { + "$ref": "#/$defs/MiningFacility" + }, + { + "$ref": "#/$defs/WellFacility" + }, + { + "$ref": "#/$defs/QuarryFacility" + }, + { + "$ref": "#/$defs/PowerPlant" + }, + { + "$ref": "#/$defs/FossilFuelPlant" + }, + { + "$ref": "#/$defs/NuclearPlant" + }, + { + "$ref": "#/$defs/RenewablePlant" + }, + { + "$ref": "#/$defs/HydroelectricPlant" + }, + { + "$ref": "#/$defs/SolarPlant" + }, + { + "$ref": "#/$defs/WindFarm" + }, + { + "$ref": "#/$defs/EconomicSystem" + }, + { + "$ref": "#/$defs/EnvironmentalSystem" + }, + { + "$ref": "#/$defs/Climate" + }, + { + "$ref": "#/$defs/Concept" + }, + { + "$ref": "#/$defs/InformationEntity" + }, + { + "$ref": "#/$defs/StructuredValue" + }, + { + "$ref": "#/$defs/EntitySet" + }, + { + "$ref": "#/$defs/ComputationalModel" + }, + { + "$ref": "#/$defs/DataStructure" + }, + { + "$ref": "#/$defs/SetOfObservations" + }, + { + "$ref": "#/$defs/Variable" + }, + { + "$ref": "#/$defs/TimePointOrTemporalInterval" + }, + { + "$ref": "#/$defs/PlannedProcessConfiguration" + }, + { + "$ref": "#/$defs/Quantity" + }, + { + "$ref": "#/$defs/QuantityRange" + }, + { + "$ref": "#/$defs/Service" + }, + { + "$ref": "#/$defs/Prediction" + }, + { + "$ref": "#/$defs/PredictionSummaryStatistics" + }, + { + "$ref": "#/$defs/SimplePrediction" + }, + { + "$ref": "#/$defs/AggregatePrediction" + }, + { + "$ref": "#/$defs/FinancialProduct" + }, + { + "$ref": "#/$defs/FinancialAccount" + }, + { + "$ref": "#/$defs/Duration" + }, + { + "$ref": "#/$defs/SimpleQuantity" + }, + { + "$ref": "#/$defs/Ratio" + }, + { + "$ref": "#/$defs/FoodIngredient" + }, + { + "$ref": "#/$defs/MoneyQuantity" + }, + { + "$ref": "#/$defs/TemporalInterval" + }, + { + "$ref": "#/$defs/TimePoint" + }, + { + "$ref": "#/$defs/Simulation" + }, + { + "$ref": "#/$defs/DigitalTwin" + }, + { + "$ref": "#/$defs/ClimateModel" + }, + { + "$ref": "#/$defs/TemporalRelationship" + }, + { + "$ref": "#/$defs/PersonInRole" + }, + { + "$ref": "#/$defs/OrganizationPersonnelRelationship" + }, + { + "$ref": "#/$defs/OrganismalRelationship" + }, + { + "$ref": "#/$defs/HealthcareRole" + }, + { + "$ref": "#/$defs/OrganizationalRole" + }, + { + "$ref": "#/$defs/HealthcareProvider" + }, + { + "$ref": "#/$defs/Patient" + }, + { + "$ref": "#/$defs/PostalAddress" + }, + { + "$ref": "#/$defs/PointLocation" + }, + { + "$ref": "#/$defs/GeoBoxLocation" + }, + { + "$ref": "#/$defs/GeoPointLocation" + }, + { + "$ref": "#/$defs/Specification" + }, + { + "$ref": "#/$defs/Publication" + }, + { + "$ref": "#/$defs/Dataset" + }, + { + "$ref": "#/$defs/StudyHypothesis" + }, + { + "$ref": "#/$defs/StudyResult" + }, + { + "$ref": "#/$defs/ClinicalCohortDefinition" + }, { - "$ref": "#/$defs/SimpleQuantity" + "$ref": "#/$defs/OrgChart" }, { - "$ref": "#/$defs/MoneyQuantity" - } - ] - }, - "capex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Capital expenditure for the plant" - }, - "classification": { - "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", - "type": "string" - }, - "commissioning_date": { - "format": "date", - "type": "string" - }, - "decommissioning_date": { - "format": "date", - "type": "string" - }, - "description": { - "description": "A human-readable description for a thing", - "type": "string" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "located_at_place": { - "description": "The place where the entity is located", - "type": "string" - }, - "location": { - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "ontology_types": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operator": { - "type": "string" - }, - "opex": { - "$ref": "#/$defs/MoneyQuantity", - "description": "Operating expense for the plant" - }, - "plant_type": { - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "SolarPlant" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "SolarPlant", - "type": "object" - }, - "Specification": { - "additionalProperties": false, - "description": "A specification of a thing", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "Specification" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "Specification", - "type": "object" - }, - "StructuredValue": { - "additionalProperties": false, - "description": "A value that is a structured collection of other values", - "properties": { - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "StructuredValue" - ], - "type": "string" - } - }, - "title": "StructuredValue", - "type": "object" - }, - "StudyDesign": { - "additionalProperties": false, - "description": "", - "properties": { - "describes": { - "$ref": "#/$defs/Any", - "description": "The thing that is being described" - }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" - }, - "name": { - "description": "A human-readable name for a thing", - "type": "string" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "StudyDesign" - ], - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "StudyDesign", - "type": "object" - }, - "StudyDesignEnum": { - "description": "", - "title": "StudyDesignEnum", - "type": "string" - }, - "TemporalInterval": { - "additionalProperties": false, - "description": "A period of time", - "properties": { - "ends_at": { - "$ref": "#/$defs/TimePoint" - }, - "starts_at": { - "$ref": "#/$defs/TimePoint" - }, - "type": { - "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", - "enum": [ - "TemporalInterval" - ], - "type": "string" - } - }, - "title": "TemporalInterval", - "type": "object" - }, - "TemporalRelationship": { - "additionalProperties": false, - "description": "A relationship to another time point", - "properties": { - "predicate": { - "$ref": "#/$defs/RelativeTimeEnum", - "description": "The relationship between the two time points" - }, - "relative_to": { - "anyOf": [ + "$ref": "#/$defs/Procedure" + }, { - "$ref": "#/$defs/TimePoint" + "$ref": "#/$defs/InvestigativeProtocol" }, { - "$ref": "#/$defs/TemporalInterval" + "$ref": "#/$defs/StudyDesign" }, { - "type": "string" + "$ref": "#/$defs/EngineeringSpecification" + }, + { + "$ref": "#/$defs/FoodRecipe" + }, + { + "$ref": "#/$defs/CurrencyConcept" + }, + { + "$ref": "#/$defs/QuantityKind" + }, + { + "$ref": "#/$defs/UnitConcept" + }, + { + "$ref": "#/$defs/PowerPlantType" + }, + { + "$ref": "#/$defs/ExtractiveIndustryProduct" + }, + { + "$ref": "#/$defs/ExtractiveIndustryWaste" + }, + { + "$ref": "#/$defs/FoodTypeConcept" + }, + { + "$ref": "#/$defs/BasicFoodType" + }, + { + "$ref": "#/$defs/CompositeFoodType" } ] }, @@ -5923,6 +12457,47 @@ "title": "Variable", "type": "object" }, + "VeterinaryAnimal": { + "additionalProperties": false, + "description": "", + "properties": { + "classification": { + "description": "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.", + "type": "string" + }, + "description": { + "description": "A human-readable description for a thing", + "type": "string" + }, + "id": { + "description": "A unique identifier for a thing", + "type": "string" + }, + "name": { + "description": "A human-readable name for a thing", + "type": "string" + }, + "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.", + "enum": [ + "VeterinaryAnimal" + ], + "type": "string" + } + }, + "required": [ + "id" + ], + "title": "VeterinaryAnimal", + "type": "object" + }, "WellFacility": { "additionalProperties": false, "description": "A facility where fluid resources (e.g., oil, gas, water) are extracted from the earth", @@ -5971,6 +12546,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, @@ -6083,6 +12659,7 @@ "type": "string" }, "ontology_types": { + "description": "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.", "items": { "type": "string" }, diff --git a/project/owl/linkml_common.owl.ttl b/project/owl/linkml_common.owl.ttl index 53f11f9..9dc4ac1 100644 --- a/project/owl/linkml_common.owl.ttl +++ b/project/owl/linkml_common.owl.ttl @@ -21,23 +21,20 @@ linkml_common:HumanLanguageCodeEnum a owl:Class ; linkml_common:InvestigativeProtocolEnum a owl:Class ; rdfs:subClassOf linkml:EnumDefinition . -linkml_common:SampleProcessingEnum a owl:Class ; +linkml_common:LandformEnum a owl:Class ; rdfs:subClassOf linkml:EnumDefinition . -linkml_common:StudyDesignEnum a owl:Class ; +linkml_common:OrganismTaxonEnum a owl:Class ; rdfs:subClassOf linkml:EnumDefinition . -linkml_common:object a owl:ObjectProperty ; - rdfs:label "object" ; - rdfs:range linkml_common:Any ; - skos:definition "The object of a relationship" ; - skos:inScheme linkml_common:core . +linkml_common:OrganizationPersonnelRelationshipEnum a owl:Class ; + rdfs:subClassOf linkml:EnumDefinition . -linkml_common:subject a owl:ObjectProperty ; - rdfs:label "subject" ; - rdfs:range linkml_common:Any ; - skos:definition "The subject of a relationship" ; - skos:inScheme linkml_common:core . +linkml_common:SampleProcessingEnum a owl:Class ; + rdfs:subClassOf linkml:EnumDefinition . + +linkml_common:StudyDesignEnum a owl:Class ; + rdfs:subClassOf linkml:EnumDefinition . linkml:linkml-common a owl:Ontology ; rdfs:label "linkml-common" ; @@ -74,9 +71,18 @@ linkml_common:AggregatePrediction a owl:Class ; linkml_common:Prediction ; skos:inScheme linkml_common:statistics . +linkml_common:AstronomicalBody a owl:Class ; + rdfs:label "AstronomicalBody" ; + rdfs:subClassOf linkml_common:Place ; + skos:exactMatch ; + skos:inScheme linkml_common:geography . + linkml_common:AutomatedAgent a owl:Class ; rdfs:label "AutomatedAgent" ; - rdfs:subClassOf linkml_common:Agent ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Agent ], + linkml_common:PhysicalEntity ; skos:definition "Represents an Automated Agent" ; skos:inScheme linkml_common:social . @@ -91,14 +97,25 @@ linkml_common:CaseOrControlEnum a owl:Class ; linkml:permissible_values , . +linkml_common:ClimateModel a owl:Class ; + rdfs:label "ClimateModel" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Climate ; + owl:onProperty linkml_common:models ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:models ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:models ], + linkml_common:Simulation ; + skos:inScheme linkml_common:environmental . + linkml_common:ClinicalCohortEnrollment a owl:Class ; rdfs:label "ClinicalCohortEnrollment" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:cohort ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:ClinicalCohort ; - owl:onProperty linkml_common:cohort ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Patient ; owl:onProperty linkml_common:patient ], @@ -111,11 +128,28 @@ linkml_common:ClinicalCohortEnrollment a owl:Class ; [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:cohort ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:ClinicalCohort ; + owl:onProperty linkml_common:cohort ], linkml_common:Event ; skos:definition "An event relating a patient to a clinical cohort" ; skos:exactMatch ; skos:inScheme linkml_common:clinicalresearch . +linkml_common:ClinicalHistory a owl:Class ; + rdfs:label "ClinicalHistory" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Person ; + owl:onProperty linkml_common:subject ], + linkml_common:SubjectObservationHistory ; + skos:inScheme linkml_common:healthcare . + linkml_common:CompositeFoodType a owl:Class ; rdfs:label "CompositeFoodType" ; rdfs:subClassOf linkml_common:FoodTypeConcept ; @@ -124,60 +158,60 @@ linkml_common:CompositeFoodType a owl:Class ; linkml_common:CreativeWork a owl:Class ; rdfs:label "CreativeWork" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom xsd:string ; owl:onProperty linkml_common:rights ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; + owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( linkml_common:Person linkml_common:Organization ) ] linkml_common:PhysicalEntity ) ] ; owl:onProperty linkml_common:creators ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:keywords ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:abstract ], + owl:onProperty linkml_common:rights ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:creators ], + owl:onProperty linkml_common:contributors ], [ a owl:Restriction ; owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:title ], + owl:onProperty linkml_common:keywords ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; - owl:onProperty linkml_common:contributors ], + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:CreationMetadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:rights ], + owl:onProperty linkml_common:abstract ], [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:keywords ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:title ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:title ], + owl:onProperty linkml_common:contacts ], [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; + owl:minCardinality 0 ; owl:onProperty linkml_common:rights ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( linkml_common:Person linkml_common:Organization ) ] linkml_common:PhysicalEntity ) ] ; owl:onProperty linkml_common:contributors ], [ a owl:Restriction ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:CreationMetadata ], + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:abstract ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:title ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:abstract ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:contacts ], + owl:onProperty linkml_common:title ], [ a owl:Restriction ; owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:abstract ], + owl:onProperty linkml_common:title ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:keywords ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; + owl:allValuesFrom linkml_common:PhysicalEntity ; owl:onProperty linkml_common:contacts ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:abstract ], - linkml_common:NamedThing ; + owl:onProperty linkml_common:creators ], + linkml_common:PhysicalEntity ; skos:definition "The most generic kind of creative work, including books, movies, photographs, software programs, etc." ; skos:exactMatch schema1:CreativeWork ; skos:inScheme linkml_common:social . @@ -192,13 +226,32 @@ linkml_common:DataStructure a owl:Class ; rdfs:subClassOf linkml_common:Intangible ; skos:inScheme linkml_common:computational . +linkml_common:DigitalTwin a owl:Class ; + rdfs:label "DigitalTwin" ; + rdfs:subClassOf linkml_common:ComputationalModel ; + skos:inScheme linkml_common:investigations . + +linkml_common:EconomicSystem a owl:Class ; + rdfs:label "EconomicSystem" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Place ; + owl:onProperty linkml_common:economy_of_place ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:economy_of_place ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:economy_of_place ], + linkml_common:PhysicalSystem ; + skos:inScheme linkml_common:economy . + linkml_common:ElectricalGrid a owl:Class ; rdfs:label "ElectricalGrid" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:PowerPlant ; owl:onProperty linkml_common:plants ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PowerPlant ; + owl:minCardinality 0 ; owl:onProperty linkml_common:plants ], linkml_common:BuiltSystem ; skos:definition "A network of electrical transmission lines" ; @@ -299,30 +352,30 @@ linkml_common:FinancialAccount a owl:Class ; rdfs:label "FinancialAccount" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:bank ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Person ; owl:onProperty linkml_common:account_holder ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:account_number ], + owl:onProperty linkml_common:bank ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:account_number ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:Person ; owl:onProperty linkml_common:account_holder ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:Organization ; owl:onProperty linkml_common:bank ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:account_holder ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Organization ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:account_number ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:bank ], [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:account_number ], linkml_common:FinancialProduct ; skos:definition "A bank account" ; @@ -338,34 +391,31 @@ linkml_common:FinancialOrganization a owl:Class ; skos:inScheme linkml_common:financial ; linkml_common:recommended_value_set_bindings "linkml_common:FinanicialOrganizationEnum" . -linkml_common:FoodRecipe a owl:Class ; - rdfs:label "FoodRecipe" ; +linkml_common:FoodPreparation a owl:Class ; + rdfs:label "FoodPreparation" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:steps ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:FoodIngredient ; - owl:onProperty linkml_common:ingredients ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:FoodProcessing ; - owl:onProperty linkml_common:steps ], + owl:allValuesFrom linkml_common:FoodRecipe ; + owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:ingredients ], - linkml_common:Procedure ; + owl:onProperty linkml_common:follows_procedure ], + linkml_common:PlannedProcess ; skos:inScheme linkml_common:foods . linkml_common:FossilFuelPlant a owl:Class ; rdfs:label "FossilFuelPlant" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:FossilFuelType ; - owl:onProperty linkml_common:fuel ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:fuel ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:fuel ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:FossilFuelType ; + owl:onProperty linkml_common:fuel ], linkml_common:PowerPlant ; skos:definition "A power plant that uses fossil fuels" ; skos:inScheme linkml_common:energytechnology . @@ -389,22 +439,22 @@ linkml_common:HealthcareConditionOccurrence a owl:Class ; rdfs:label "HealthcareConditionOccurrence" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml_common:patient ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:observed_during ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:HealthcareEncounter ; owl:onProperty linkml_common:observed_during ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml_common:observed_during ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:patient ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Patient ; owl:onProperty linkml_common:patient ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:patient ], linkml_common:Event ; skos:exactMatch ; skos:inScheme linkml_common:healthcare . @@ -473,14 +523,14 @@ linkml_common:HealthcareOrganization a owl:Class ; linkml_common:HydroelectricPlant a owl:Class ; rdfs:label "HydroelectricPlant" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:dam ], - [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:dam ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Landform ; owl:onProperty linkml_common:dam ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:dam ], linkml_common:RenewablePlant ; skos:definition "A hydroelectric power plant" ; skos:inScheme linkml_common:energytechnology . @@ -495,37 +545,23 @@ linkml_common:MaterialCollection a owl:Class ; rdfs:subClassOf linkml_common:PlannedProcess ; skos:inScheme linkml_common:plannedprocess . -linkml_common:Measurement a owl:Class ; - rdfs:label "Measurement" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Quantity ; - owl:onProperty linkml_common:quantity_measured ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:quantity_measured ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:quantity_measured ], - linkml_common:Observation ; - skos:inScheme linkml_common:meaurements . - linkml_common:MiningFacility a owl:Class ; rdfs:label "MiningFacility" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml_common:area ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:MiningMethod ; - owl:onProperty linkml_common:mining_method ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:depth ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:area ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:depth ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:MiningMethod ; + owl:onProperty linkml_common:mining_method ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:area ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:SimpleQuantity ; owl:onProperty linkml_common:depth ], @@ -562,12 +598,40 @@ linkml_common:MiningFacility a owl:Class ; rdfs:subClassOf linkml_common:MiningMethod, linkml:PermissibleValue . +linkml_common:Model a owl:Class ; + rdfs:label "Model" ; + rdfs:subClassOf ; + skos:inScheme linkml_common:investigations . + linkml_common:NuclearPlant a owl:Class ; rdfs:label "NuclearPlant" ; rdfs:subClassOf linkml_common:PowerPlant ; skos:definition "A nuclear power plant" ; skos:inScheme linkml_common:energytechnology . +linkml_common:OrgChart a owl:Class ; + rdfs:label "OrgChart" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Organization ; + owl:onProperty linkml_common:for_organization ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:OrganizationPersonnelRelationship ; + owl:onProperty linkml_common:relationships ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:for_organization ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:relationships ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:relationships ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:for_organization ], + linkml_common:InformationEntity ; + skos:inScheme linkml_common:social . + a owl:Class ; rdfs:label "FN" ; rdfs:subClassOf linkml_common:OutcomeType, @@ -596,23 +660,23 @@ linkml_common:NuclearPlant a owl:Class ; linkml_common:PredictionSummaryStatistics a owl:Class ; rdfs:label "PredictionSummaryStatistics" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:uses_dataset ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:uses_dataset ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Dataset ; owl:onProperty linkml_common:uses_dataset ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:Prediction ; owl:onProperty linkml_common:predictions ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Prediction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:predictions ], [ a owl:Restriction ; owl:onProperty linkml:mixins ; owl:someValuesFrom linkml_common:OutcomeStatistics ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:uses_dataset ], linkml_common:Intangible ; skos:definition "A class for collecting totals of various outcomes." ; skos:inScheme linkml_common:statistics . @@ -630,16 +694,16 @@ linkml_common:QualitativeObservation a owl:Class ; linkml_common:QuantityRange a owl:Class ; rdfs:label "QuantityRange" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:lower_bound ], + [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:lower_bound ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:upper_bound ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:lower_bound ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml_common:upper_bound ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Quantity ; @@ -661,23 +725,23 @@ linkml_common:QuarryFacility a owl:Class ; linkml_common:Ratio a owl:Class ; rdfs:label "Ratio" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:denominator ], + [ a owl:Restriction ; owl:allValuesFrom linkml_common:Quantity ; - owl:onProperty linkml_common:numerator ], + owl:onProperty linkml_common:denominator ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:numerator ], + owl:onProperty linkml_common:denominator ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:numerator ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Quantity ; - owl:onProperty linkml_common:denominator ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:denominator ], + owl:onProperty linkml_common:numerator ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:denominator ], + owl:onProperty linkml_common:numerator ], linkml_common:Quantity ; skos:definition "A tuple of two quantities" ; skos:exactMatch ; @@ -685,7 +749,7 @@ linkml_common:Ratio a owl:Class ; linkml_common:RawMaterial a owl:Class ; rdfs:label "RawMaterial" ; - rdfs:subClassOf linkml_common:NamedThing ; + rdfs:subClassOf linkml_common:PhysicalEntity ; skos:inScheme linkml_common:engineering . a owl:Class ; @@ -706,22 +770,22 @@ linkml_common:RawMaterial a owl:Class ; linkml_common:SampleCollectionProcess a owl:Class ; rdfs:label "SampleCollectionProcess" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:SampleMaterial ; - owl:onProperty linkml_common:material_collected ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:material_collected ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml_common:collected_from ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:SampleMaterial ; owl:onProperty linkml_common:material_collected ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:NamedThing ; - owl:onProperty linkml_common:collected_from ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:material_collected ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:collected_from ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:PhysicalEntity ; owl:onProperty linkml_common:collected_from ], linkml_common:InvestigativeProcess ; skos:exactMatch ; @@ -732,26 +796,49 @@ linkml_common:SampleProcessing a owl:Class ; rdfs:subClassOf linkml_common:MaterialProcessing ; skos:inScheme linkml_common:investigations . -linkml_common:SimplePrediction a owl:Class ; - rdfs:label "SimplePrediction" ; +linkml_common:SetOfObservations a owl:Class ; + rdfs:label "SetOfObservations" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:expected_value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:OutcomeType ; - owl:onProperty linkml_common:outcome ], - [ a owl:Restriction ; - owl:allValuesFrom [ a rdfs:Datatype ; - owl:unionOf ( xsd:integer xsd:float xsd:string ) ] ; - owl:onProperty linkml_common:expected_value ], + owl:onProperty linkml_common:observations ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:outcome ], + owl:allValuesFrom linkml_common:Entity ; + owl:onProperty linkml_common:observation_subject ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:expected_value ], + owl:onProperty linkml_common:observation_subject ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml_common:observation_subject ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:observations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Observation ; + owl:onProperty linkml_common:observations ], + linkml_common:Intangible ; + skos:inScheme linkml_common:meaurements . + +linkml_common:SimplePrediction a owl:Class ; + rdfs:label "SimplePrediction" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:expected_value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:outcome ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:OutcomeType ; + owl:onProperty linkml_common:outcome ], + [ a owl:Restriction ; + owl:allValuesFrom [ a rdfs:Datatype ; + owl:unionOf ( xsd:integer xsd:float xsd:string ) ] ; + owl:onProperty linkml_common:expected_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:expected_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:outcome ], linkml_common:Prediction ; skos:inScheme linkml_common:statistics . @@ -762,36 +849,22 @@ linkml_common:SolarPlant a owl:Class ; skos:definition "A solar power plant" ; skos:inScheme linkml_common:energytechnology . -linkml_common:StudyDesign a owl:Class ; - rdfs:label "StudyDesign" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:classification ], - [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty linkml_common:classification ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:classification ], - linkml_common:Procedure ; - skos:inScheme linkml_common:investigations . - linkml_common:TemporalRelationship a owl:Class ; rdfs:label "TemporalRelationship" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:RelativeTimeEnum ; - owl:onProperty linkml_common:predicate ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:predicate ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:relative_to ], [ a owl:Restriction ; owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( linkml_common:TimePoint linkml_common:TemporalInterval linkml_common:Event ) ] linkml_common:Entity ) ] ; owl:onProperty linkml_common:relative_to ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:RelativeTimeEnum ; + owl:onProperty linkml_common:predicate ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:relative_to ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -805,12 +878,14 @@ linkml_common:Typed a owl:Class ; rdfs:subClassOf ; skos:inScheme linkml_common:core . +linkml_common:VeterinaryAnimal a owl:Class ; + rdfs:label "VeterinaryAnimal" ; + rdfs:subClassOf ; + skos:inScheme linkml_common:social . + linkml_common:WellFacility a owl:Class ; rdfs:label "WellFacility" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:well_type ], - [ a owl:Restriction ; owl:allValuesFrom linkml_common:SimpleQuantity ; owl:onProperty linkml_common:depth ], [ a owl:Restriction ; @@ -818,13 +893,16 @@ linkml_common:WellFacility a owl:Class ; owl:onProperty linkml_common:well_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:depth ], + owl:onProperty linkml_common:well_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:well_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:depth ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:depth ], linkml_common:ExtractiveIndustryFacility ; skos:definition "A facility where fluid resources (e.g., oil, gas, water) are extracted from the earth" ; skos:inScheme linkml_common:extractiveindustry . @@ -864,6 +942,14 @@ linkml_common:collected_as_part_of a owl:ObjectProperty ; rdfs:label "collected_as_part_of" ; skos:inScheme linkml_common:datasets . +linkml_common:components a owl:ObjectProperty ; + rdfs:label "components" ; + skos:inScheme linkml_common:core . + +linkml_common:has_person_roles a owl:ObjectProperty ; + rdfs:label "has_person_roles" ; + skos:inScheme linkml_common:social . + linkml_common:immediate_preceding_steps a owl:ObjectProperty ; rdfs:label "immediate_preceding_steps" ; skos:definition "The steps that immediately precede this step" ; @@ -878,6 +964,14 @@ linkml_common:inputs a owl:ObjectProperty ; skos:definition "The inputs to the operation" ; skos:inScheme linkml_common:plannedprocess . +linkml_common:interpretations a owl:ObjectProperty ; + rdfs:label "interpretations" ; + skos:inScheme linkml_common:meaurements . + +linkml_common:measurements a owl:ObjectProperty ; + rdfs:label "measurements" ; + skos:inScheme linkml_common:meaurements . + linkml_common:members a owl:ObjectProperty ; rdfs:label "members" ; skos:definition "The members of the collection" ; @@ -886,8 +980,14 @@ linkml_common:members a owl:ObjectProperty ; linkml_common:ontology_types a owl:ObjectProperty ; rdfs:label "ontology_types" ; rdfs:range linkml_common:Concept ; + skos:definition "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; skos:inScheme linkml_common:core . + a owl:Class ; + rdfs:label "OrganismalRelationship" ; + rdfs:subClassOf linkml_common:Relationship ; + skos:inScheme linkml_common:organisms . + linkml_common:outputs a owl:ObjectProperty ; rdfs:label "outputs" ; skos:definition "The outputs of the operation" ; @@ -915,6 +1015,10 @@ linkml_common:provides_services a owl:ObjectProperty ; rdfs:range linkml_common:Service ; skos:inScheme linkml_common:social . +linkml_common:results a owl:ObjectProperty ; + rdfs:label "results" ; + skos:inScheme linkml_common:investigations . + linkml_common:steps a owl:ObjectProperty ; rdfs:label "steps" ; skos:inScheme linkml_common:foods . @@ -926,13 +1030,13 @@ linkml_common:variables a owl:ObjectProperty ; linkml_common:Building a owl:Class ; rdfs:label "Building" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:Place ; owl:onProperty linkml_common:located_at_place ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:located_at_place ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Place ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:located_at_place ], linkml_common:Facility ; skos:inScheme linkml_common:civilengineering . @@ -942,18 +1046,23 @@ linkml_common:BuiltSystem a owl:Class ; rdfs:subClassOf linkml_common:BuiltEnvironmentFeature ; skos:inScheme linkml_common:civilengineering . +linkml_common:Climate a owl:Class ; + rdfs:label "Climate" ; + rdfs:subClassOf linkml_common:EnvironmentalSystem ; + skos:inScheme linkml_common:environmental . + linkml_common:ClinicalCohort a owl:Class ; rdfs:label "ClinicalCohort" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:definition ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:ClinicalCohortDefinition ; owl:onProperty linkml_common:definition ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:ClinicalCohortDefinition ; + owl:minCardinality 0 ; owl:onProperty linkml_common:definition ], - linkml_common:NamedThing ; + linkml_common:PhysicalEntity ; skos:definition "A group of patients who share a common set of characteristics" ; skos:inScheme linkml_common:clinicalresearch . @@ -978,14 +1087,14 @@ linkml_common:CurrencyConcept a owl:Class ; linkml_common:Dataset a owl:Class ; rdfs:label "Dataset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:CreationMetadata ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:collected_as_part_of ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Investigation ; owl:onProperty linkml_common:collected_as_part_of ], + [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:CreationMetadata ], linkml_common:InformationEntity ; skos:inScheme linkml_common:datasets . @@ -995,7 +1104,10 @@ linkml_common:EngineeringProcess a owl:Class ; owl:allValuesFrom linkml_common:EngineeringProcess ; owl:onProperty linkml_common:part_of ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:EngineeringSpecification ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:part_of ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -1004,17 +1116,19 @@ linkml_common:EngineeringProcess a owl:Class ; owl:minCardinality 0 ; owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:part_of ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:EngineeringSpecification ; owl:onProperty linkml_common:follows_procedure ], linkml_common:Event ; skos:inScheme linkml_common:engineering . +linkml_common:EnvironmentalSystem a owl:Class ; + rdfs:label "EnvironmentalSystem" ; + rdfs:subClassOf linkml_common:PhysicalSystem ; + skos:inScheme linkml_common:environmental . + linkml_common:Equipment a owl:Class ; rdfs:label "Equipment" ; - rdfs:subClassOf linkml_common:NamedThing ; + rdfs:subClassOf linkml_common:PhysicalEntity ; skos:inScheme linkml_common:engineering . linkml_common:ExecutionOfProcedure a owl:Class ; @@ -1025,11 +1139,14 @@ linkml_common:ExecutionOfProcedure a owl:Class ; linkml_common:ExtractiveIndustryProduct a owl:Class ; rdfs:label "ExtractiveIndustryProduct" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:grade ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:product_type ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:EngineeringSpecification ; - owl:onProperty linkml_common:processing_method ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:grade ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:processing_method ], @@ -1037,20 +1154,17 @@ linkml_common:ExtractiveIndustryProduct a owl:Class ; owl:maxCardinality 1 ; owl:onProperty linkml_common:processing_method ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:SimpleQuantity ; owl:onProperty linkml_common:grade ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:ExtractiveIndustryProductType ; owl:onProperty linkml_common:product_type ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:SimpleQuantity ; - owl:onProperty linkml_common:grade ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:product_type ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:grade ], + owl:allValuesFrom linkml_common:EngineeringSpecification ; + owl:onProperty linkml_common:processing_method ], linkml_common:Concept ; skos:definition "A product extracted from an extractive industry facility" ; skos:inScheme linkml_common:extractiveindustry . @@ -1071,17 +1185,28 @@ linkml_common:FoodProcessing a owl:Class ; rdfs:subClassOf linkml_common:MaterialProcessing ; skos:inScheme linkml_common:foods . -linkml_common:HealthcareEncounter a owl:Class ; - rdfs:label "HealthcareEncounter" ; +linkml_common:FoodRecipe a owl:Class ; + rdfs:label "FoodRecipe" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:FoodIngredient ; + owl:onProperty linkml_common:ingredients ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:patient ], + owl:onProperty linkml_common:steps ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:HealthcareEncounterClassification ; - owl:onProperty linkml_common:classification ], + owl:allValuesFrom linkml_common:FoodProcessing ; + owl:onProperty linkml_common:steps ], [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:ingredients ], + linkml_common:Procedure ; + skos:inScheme linkml_common:foods . + +linkml_common:HealthcareEncounter a owl:Class ; + rdfs:label "HealthcareEncounter" ; + rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:patient ], + owl:onProperty linkml_common:provider ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:provider ], @@ -1090,16 +1215,22 @@ linkml_common:HealthcareEncounter a owl:Class ; owl:onProperty linkml_common:classification ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:classification ], + owl:onProperty linkml_common:patient ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Patient ; owl:onProperty linkml_common:patient ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:HealthcareEncounterClassification ; + owl:onProperty linkml_common:classification ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:provider ], + owl:onProperty linkml_common:patient ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:HealthcareProvider ; owl:onProperty linkml_common:provider ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:classification ], linkml_common:Event ; skos:definition "An interaction between a patient and one or more healthcare providers" ; skos:exactMatch ; @@ -1108,11 +1239,11 @@ linkml_common:HealthcareEncounter a owl:Class ; linkml_common:HealthcareProvider a owl:Class ; rdfs:label "HealthcareProvider" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:speciality ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:HealthcareSite ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:care_site ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Concept ; + owl:onProperty linkml_common:speciality ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:speciality ], @@ -1120,10 +1251,10 @@ linkml_common:HealthcareProvider a owl:Class ; owl:minCardinality 0 ; owl:onProperty linkml_common:care_site ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:HealthcareSite ; owl:onProperty linkml_common:care_site ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Concept ; + owl:minCardinality 0 ; owl:onProperty linkml_common:speciality ], linkml_common:HealthcareRole ; skos:inScheme linkml_common:healthcare . @@ -1137,29 +1268,35 @@ linkml_common:HealthcareSite a owl:Class ; linkml_common:InvestigativeProtocol a owl:Class ; rdfs:label "InvestigativeProtocol" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom xsd:anyURI ; + owl:onProperty linkml_common:protocols_io_url ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:classification ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:protocols_io_url ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:classification ], [ a owl:Restriction ; - owl:allValuesFrom xsd:anyURI ; - owl:onProperty linkml_common:protocols_io_url ], + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml_common:classification ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:protocols_io_url ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:classification ], linkml_common:Procedure ; skos:inScheme linkml_common:investigations . linkml_common:Landform a owl:Class ; rdfs:label "Landform" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml_common:geolocation ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:geolocation ], [ a owl:Restriction ; @@ -1167,19 +1304,96 @@ linkml_common:Landform a owl:Class ; owl:onProperty linkml_common:geolocation ], [ a owl:Restriction ; owl:allValuesFrom owl:Thing ; - owl:onProperty linkml_common:geolocation ], + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:classification ], linkml_common:Place ; skos:definition "A natural feature of the solid surface of the Earth or other planetary body" ; skos:exactMatch , - ; + ; skos:inScheme linkml_common:geography . +linkml_common:Measurement a owl:Class ; + rdfs:label "Measurement" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:quantity_measured ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Quantity ; + owl:onProperty linkml_common:quantity_measured ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:quantity_measured ], + linkml_common:Observation ; + skos:inScheme linkml_common:meaurements . + +linkml_common:OrganizationPersonnelRelationship a owl:Class ; + rdfs:label "OrganizationPersonnelRelationship" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:object ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:object ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:object ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:predicate ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:predicate ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:predicate ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:subject ], + linkml_common:Relationship ; + skos:inScheme linkml_common:social . + +linkml_common:OrganizationalRole a owl:Class ; + rdfs:label "OrganizationalRole" ; + rdfs:subClassOf linkml_common:Role ; + skos:inScheme linkml_common:social . + linkml_common:OutcomeStatistics a owl:Class ; rdfs:label "OutcomeStatistics" ; rdfs:subClassOf ; skos:definition "A class for collecting totals of various outcomes." ; skos:inScheme linkml_common:statistics . +linkml_common:PersonInRole a owl:Class ; + rdfs:label "PersonInRole" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:person_role ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:subject_person ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:OrganizationalRole ; + owl:onProperty linkml_common:person_role ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Person ; + owl:onProperty linkml_common:subject_person ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:subject_person ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:person_role ], + linkml_common:Relationship ; + skos:inScheme linkml_common:social . + linkml_common:PlannedProcessConfiguration a owl:Class ; rdfs:label "PlannedProcessConfiguration" ; rdfs:subClassOf linkml_common:Intangible ; @@ -1203,22 +1417,14 @@ linkml_common:QuantityKind a owl:Class ; ; skos:inScheme linkml_common:quantities . -linkml_common:Relationship a owl:Class ; - rdfs:label "Relationship" ; - rdfs:subClassOf linkml_common:Intangible ; - skos:closeMatch rdfs:Statement ; - skos:inScheme linkml_common:core . - -linkml_common:Role a owl:Class ; - rdfs:label "Role" ; - rdfs:subClassOf linkml_common:Intangible ; - skos:closeMatch ; - skos:exactMatch schema1:Role ; - skos:inScheme linkml_common:core . - linkml_common:SampleMaterial a owl:Class ; rdfs:label "SampleMaterial" ; - rdfs:subClassOf linkml_common:NamedThing ; + rdfs:subClassOf linkml_common:PhysicalEntity ; + skos:inScheme linkml_common:investigations . + +linkml_common:Simulation a owl:Class ; + rdfs:label "Simulation" ; + rdfs:subClassOf linkml_common:ComputationalModel ; skos:inScheme linkml_common:investigations . linkml_common:Specification a owl:Class ; @@ -1228,7 +1434,96 @@ linkml_common:Specification a owl:Class ; skos:exactMatch IAO:0000104 ; skos:inScheme linkml_common:core . -linkml_common:account_holder a owl:ObjectProperty ; +linkml_common:StudyDesign a owl:Class ; + rdfs:label "StudyDesign" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:classification ], + linkml_common:Procedure ; + skos:inScheme linkml_common:investigations . + +linkml_common:StudyResult a owl:Class ; + rdfs:label "StudyResult" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:StudyHypothesis ; + owl:onProperty linkml_common:hypothesis ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:hypothesis ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:hypothesis ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:result ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:result ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:result ], + linkml_common:InformationEntity ; + skos:inScheme linkml_common:investigations . + +linkml_common:SubjectHistory a owl:Class ; + rdfs:label "SubjectHistory" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:events ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:over_interval ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalEntity ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Event ; + owl:onProperty linkml_common:events ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:over_interval ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:TemporalInterval ; + owl:onProperty linkml_common:over_interval ], + linkml_common:Entity ; + skos:inScheme linkml_common:time . + +linkml_common:SubjectObservationHistory a owl:Class ; + rdfs:label "SubjectObservationHistory" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Observation ; + owl:onProperty linkml_common:interpretations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Measurement ; + owl:onProperty linkml_common:measurements ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:interpretations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:measurements ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:observations ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Observation ; + owl:onProperty linkml_common:observations ], + linkml_common:SubjectHistory ; + skos:inScheme linkml_common:meaurements . + +linkml_common:account_holder a owl:ObjectProperty ; rdfs:label "account_holder" ; skos:definition "The person or organization that holds the account" ; skos:inScheme linkml_common:financial . @@ -1353,11 +1648,19 @@ linkml_common:describes a owl:ObjectProperty ; skos:definition "The thing that is being described" ; skos:inScheme linkml_common:core . +linkml_common:design a owl:ObjectProperty ; + rdfs:label "design" ; + skos:inScheme linkml_common:investigations . + linkml_common:east_bounding_coordinate a owl:DatatypeProperty ; rdfs:label "east_bounding_coordinate" ; skos:definition "The easternmost coordinate of the location" ; skos:inScheme linkml_common:geography . +linkml_common:economy_of_place a owl:ObjectProperty ; + rdfs:label "economy_of_place" ; + skos:inScheme linkml_common:economy . + linkml_common:f1_score a owl:DatatypeProperty ; rdfs:label "f1_score" ; skos:definition "F1 Score is the harmonic mean of precision and recall" ; @@ -1377,6 +1680,10 @@ linkml_common:false_positive_count a owl:DatatypeProperty ; skos:definition "Total number of false positives (FP)" ; skos:inScheme linkml_common:statistics . +linkml_common:for_organization a owl:ObjectProperty ; + rdfs:label "for_organization" ; + skos:inScheme linkml_common:social . + linkml_common:fuel a owl:ObjectProperty ; rdfs:label "fuel" ; skos:inScheme linkml_common:energytechnology . @@ -1459,6 +1766,7 @@ linkml_common:mining_method a owl:ObjectProperty ; linkml_common:name a owl:DatatypeProperty ; rdfs:label "name" ; skos:definition "A human-readable name for a thing" ; + skos:exactMatch rdfs:label ; skos:inScheme linkml_common:core . linkml_common:north_bounding_coordinate a owl:DatatypeProperty ; @@ -1475,10 +1783,6 @@ linkml_common:objectives a owl:DatatypeProperty ; rdfs:label "objectives" ; skos:inScheme linkml_common:investigations . -linkml_common:observation_subject a owl:ObjectProperty ; - rdfs:label "observation_subject" ; - skos:inScheme linkml_common:meaurements . - linkml_common:observed_during a owl:ObjectProperty ; rdfs:label "observed_during" ; skos:exactMatch ; @@ -1493,6 +1797,14 @@ linkml_common:outcome a owl:ObjectProperty ; rdfs:label "outcome" ; skos:inScheme linkml_common:statistics . +linkml_common:over_interval a owl:ObjectProperty ; + rdfs:label "over_interval" ; + skos:inScheme linkml_common:time . + +linkml_common:person_role a owl:ObjectProperty ; + rdfs:label "person_role" ; + skos:inScheme linkml_common:social . + linkml_common:plant_type a owl:ObjectProperty ; rdfs:label "plant_type" ; skos:inScheme linkml_common:energytechnology . @@ -1507,11 +1819,6 @@ linkml_common:precision a owl:DatatypeProperty ; skos:definition "Precision is calculated as TP / (TP + FP)" ; skos:inScheme linkml_common:statistics . -linkml_common:predicate a owl:ObjectProperty ; - rdfs:label "predicate" ; - skos:definition "The relationship between the two time points" ; - skos:inScheme linkml_common:time . - linkml_common:predicted_value a owl:ObjectProperty ; rdfs:label "predicted_value" ; skos:inScheme linkml_common:statistics . @@ -1551,6 +1858,10 @@ linkml_common:recall a owl:DatatypeProperty ; skos:definition "Recall is calculated as TP / (TP + FN)" ; skos:inScheme linkml_common:statistics . +linkml_common:relationships a owl:ObjectProperty ; + rdfs:label "relationships" ; + skos:inScheme linkml_common:social . + linkml_common:relative_to a owl:ObjectProperty ; rdfs:label "relative_to" ; skos:inScheme linkml_common:time . @@ -1559,6 +1870,10 @@ linkml_common:reserves a owl:ObjectProperty ; rdfs:label "reserves" ; skos:inScheme linkml_common:extractiveindustry . +linkml_common:result a owl:DatatypeProperty ; + rdfs:label "result" ; + skos:inScheme linkml_common:investigations . + linkml_common:south_bounding_coordinate a owl:DatatypeProperty ; rdfs:label "south_bounding_coordinate" ; skos:definition "The southernmost coordinate of the location" ; @@ -1584,6 +1899,10 @@ linkml_common:street_address_additional a owl:DatatypeProperty ; skos:exactMatch ; skos:inScheme linkml_common:geography . +linkml_common:subject_person a owl:ObjectProperty ; + rdfs:label "subject_person" ; + skos:inScheme linkml_common:social . + linkml_common:time_value a owl:DatatypeProperty ; rdfs:label "time_value" ; rdfs:range xsd:time ; @@ -1645,19 +1964,32 @@ linkml_common:year_value a owl:DatatypeProperty ; rdfs:range xsd:integer ; skos:inScheme linkml_common:time . +linkml_common:Agent a owl:Class ; + rdfs:label "Agent" ; + rdfs:subClassOf ; + skos:definition "Represents an Agent" ; + skos:exactMatch prov:Agent, + ; + skos:inScheme linkml_common:social . + linkml_common:BuiltEnvironmentFeature a owl:Class ; rdfs:label "BuiltEnvironmentFeature" ; - rdfs:subClassOf linkml_common:NamedThing ; + rdfs:subClassOf linkml_common:PhysicalEntity ; skos:inScheme linkml_common:civilengineering . +linkml_common:ComputationalModel a owl:Class ; + rdfs:label "ComputationalModel" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Model ], + linkml_common:Intangible ; + skos:inScheme linkml_common:investigations . + linkml_common:ComputationalPlannedProcess a owl:Class ; rdfs:label "ComputationalPlannedProcess" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Any ; - owl:onProperty linkml_common:outputs ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:inputs ], + owl:onProperty linkml_common:immediate_preceding_steps ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:ComputationalPlannedProcess ; owl:onProperty linkml_common:immediate_preceding_steps ], @@ -1665,14 +1997,17 @@ linkml_common:ComputationalPlannedProcess a owl:Class ; owl:minCardinality 0 ; owl:onProperty linkml_common:parts ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Any ; - owl:onProperty linkml_common:inputs ], + owl:allValuesFrom linkml_common:ComputationalPlannedProcess ; + owl:onProperty linkml_common:parts ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:immediate_preceding_steps ], + owl:onProperty linkml_common:inputs ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:ComputationalPlannedProcess ; - owl:onProperty linkml_common:parts ], + owl:allValuesFrom linkml_common:Any ; + owl:onProperty linkml_common:outputs ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Any ; + owl:onProperty linkml_common:inputs ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:outputs ], @@ -1707,13 +2042,13 @@ linkml_common:ExtractiveIndustryFacilityType a owl:Class ; linkml_common:Facility a owl:Class ; rdfs:label "Facility" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Place ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:located_at_place ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:located_at_place ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:Place ; owl:onProperty linkml_common:located_at_place ], linkml_common:BuiltEnvironmentFeature ; skos:inScheme linkml_common:civilengineering . @@ -1733,40 +2068,40 @@ linkml_common:FossilFuelType a owl:Class ; linkml_common:GeoBoxLocation a owl:Class ; rdfs:label "GeoBoxLocation" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom xsd:decimal ; - owl:onProperty linkml_common:north_bounding_coordinate ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:east_bounding_coordinate ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:west_bounding_coordinate ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml_common:south_bounding_coordinate ], [ a owl:Restriction ; owl:allValuesFrom xsd:decimal ; owl:onProperty linkml_common:west_bounding_coordinate ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:north_bounding_coordinate ], [ a owl:Restriction ; owl:allValuesFrom xsd:decimal ; owl:onProperty linkml_common:east_bounding_coordinate ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:east_bounding_coordinate ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:south_bounding_coordinate ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:west_bounding_coordinate ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty linkml_common:north_bounding_coordinate ], [ a owl:Restriction ; owl:allValuesFrom xsd:decimal ; owl:onProperty linkml_common:south_bounding_coordinate ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:west_bounding_coordinate ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:north_bounding_coordinate ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:north_bounding_coordinate ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:east_bounding_coordinate ], linkml_common:Location ; skos:inScheme linkml_common:geography . @@ -1776,40 +2111,40 @@ linkml_common:GeoPointLocation a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:altitude ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:latitude ], [ a owl:Restriction ; owl:allValuesFrom xsd:decimal ; - owl:onProperty linkml_common:altitude ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml_common:longitude ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml_common:latitude ], [ a owl:Restriction ; owl:allValuesFrom xsd:decimal ; owl:onProperty linkml_common:latitude ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:decimal ; - owl:onProperty linkml_common:longitude ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:altitude ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:decimal ; + owl:onProperty linkml_common:altitude ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:latitude ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:longitude ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:longitude ], linkml_common:PointLocation ; skos:inScheme linkml_common:geography . linkml_common:HealthcareRole a owl:Class ; rdfs:label "HealthcareRole" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:Person ; owl:onProperty linkml_common:is_person ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Person ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:is_person ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -1820,40 +2155,64 @@ linkml_common:HealthcareRole a owl:Class ; linkml_common:Investigation a owl:Class ; rdfs:label "Investigation" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:objectives ], + owl:allValuesFrom linkml_common:StudyHypothesis ; + owl:onProperty linkml_common:hypothesis ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml_common:objectives ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Variable ; owl:onProperty linkml_common:variables ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:objectives ], + owl:onProperty linkml_common:variables ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:StudyDesign ; + owl:onProperty linkml_common:design ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:objectives ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Variable ; - owl:onProperty linkml_common:variables ], + owl:allValuesFrom linkml_common:StudyResult ; + owl:onProperty linkml_common:results ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:objectives ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:hypothesis ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:results ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:hypothesis ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:design ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:design ], linkml_common:Event ; skos:inScheme linkml_common:investigations . linkml_common:InvestigativeProcess a owl:Class ; rdfs:label "InvestigativeProcess" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:follows_procedure ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:InvestigativeProtocol ; - owl:onProperty linkml_common:follows_procedure ], - [ a owl:Restriction ; owl:allValuesFrom linkml_common:Investigation ; owl:onProperty linkml_common:part_of ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:part_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:InvestigativeProtocol ; + owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:follows_procedure ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:follows_procedure ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:part_of ], @@ -1868,19 +2227,19 @@ linkml_common:Location a owl:Class ; linkml_common:MoneyQuantity a owl:Class ; rdfs:label "MoneyQuantity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom xsd:float ; - owl:onProperty linkml_common:value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:CurrencyConcept ; + owl:minCardinality 0 ; owl:onProperty linkml_common:unit ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty linkml_common:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:CurrencyConcept ; owl:onProperty linkml_common:unit ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:value ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom xsd:float ; owl:onProperty linkml_common:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -1890,145 +2249,84 @@ linkml_common:MoneyQuantity a owl:Class ; skos:exactMatch ; skos:inScheme linkml_common:financial . -linkml_common:Observation a owl:Class ; - rdfs:label "Observation" ; +linkml_common:PhysicalDevice a owl:Class ; + rdfs:label "PhysicalDevice" ; + rdfs:subClassOf linkml_common:PhysicalEntity ; + skos:inScheme linkml_common:core . + +linkml_common:PhysicalSystem a owl:Class ; + rdfs:label "PhysicalSystem" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalEntity ; + owl:onProperty linkml_common:components ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:variable_measured ], + owl:onProperty linkml_common:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:measured_using ], + owl:onProperty linkml_common:events ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Entity ; - owl:onProperty linkml_common:observation_subject ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:observation_subject ], + owl:onProperty linkml_common:events ], + linkml_common:PhysicalEntity ; + skos:inScheme linkml_common:core . + +linkml_common:PostalAddress a owl:Class ; + rdfs:label "PostalAddress" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:postal_code ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:measured_using ], + owl:onProperty linkml_common:street_address ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:observation_subject ], + owl:onProperty linkml_common:state ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Variable ; - owl:onProperty linkml_common:variable_measured ], + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:street_address ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PhysicalDevice ; - owl:onProperty linkml_common:measured_using ], + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:country ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:state ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:variable_measured ], - linkml_common:Event ; - skos:definition "A statement about the state of something" ; - skos:inScheme linkml_common:meaurements . - -linkml_common:Person a owl:Class ; - rdfs:label "Person" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:vital_status ], + owl:onProperty linkml_common:country ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:city ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:primary_email ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:date ; - owl:onProperty linkml_common:birth_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:primary_email ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PersonStatus ; - owl:onProperty linkml_common:vital_status ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:age_in_years ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:integer ; - owl:onProperty linkml_common:age_in_years ], - [ a owl:Restriction ; - owl:allValuesFrom [ a rdfs:Datatype ; - owl:onDatatype xsd:string ; - owl:withRestrictions ( [ xsd:pattern "^\\S+@[\\S+\\.]+\\S+" ] ) ] ; - owl:onProperty linkml_common:primary_email ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:vital_status ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:birth_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:birth_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:age_in_years ], - linkml_common:Agent ; - skos:definition "Represents a Person" ; - skos:exactMatch schema1:Person ; - skos:inScheme linkml_common:social . - -linkml_common:PhysicalDevice a owl:Class ; - rdfs:label "PhysicalDevice" ; - rdfs:subClassOf linkml_common:NamedThing ; - skos:inScheme linkml_common:core . - -linkml_common:PostalAddress a owl:Class ; - rdfs:label "PostalAddress" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:state ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:street_address_additional ], + owl:onProperty linkml_common:street_address ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:country ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:country ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:street_address_additional ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; owl:onProperty linkml_common:postal_code ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:postal_code ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:state ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty linkml_common:country ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:postal_code ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:state ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; + owl:minCardinality 0 ; owl:onProperty linkml_common:city ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:street_address ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml_common:city ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml_common:street_address_additional ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:street_address ], + owl:onProperty linkml_common:state ], [ a owl:Restriction ; owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:street_address ], + owl:onProperty linkml_common:street_address_additional ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:city ], + owl:onProperty linkml_common:street_address_additional ], linkml_common:StructuredValue ; skos:definition "Represents an Address" ; skos:exactMatch , @@ -2042,6 +2340,13 @@ linkml_common:RelativeTimeEnum a owl:Class ; , . +linkml_common:Role a owl:Class ; + rdfs:label "Role" ; + rdfs:subClassOf linkml_common:Intangible ; + skos:closeMatch ; + skos:exactMatch schema1:Role ; + skos:inScheme linkml_common:core . + linkml_common:StructuredValue a owl:Class ; rdfs:label "StructuredValue" ; rdfs:subClassOf linkml_common:Intangible ; @@ -2049,25 +2354,30 @@ linkml_common:StructuredValue a owl:Class ; skos:exactMatch schema1:StructuredValue ; skos:inScheme linkml_common:core . +linkml_common:StudyHypothesis a owl:Class ; + rdfs:label "StudyHypothesis" ; + rdfs:subClassOf linkml_common:InformationEntity ; + skos:inScheme linkml_common:investigations . + linkml_common:TimePointOrTemporalInterval a owl:Class ; rdfs:label "TimePointOrTemporalInterval" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:ends_at ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:ends_at ], + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty linkml_common:starts_at ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:TimePoint ; owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:starts_at ], + owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:starts_at ], + owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TimePoint ; + owl:minCardinality 0 ; owl:onProperty linkml_common:starts_at ], linkml_common:Intangible ; skos:inScheme linkml_common:time . @@ -2092,26 +2402,30 @@ linkml_common:creators a owl:ObjectProperty ; skos:definition "The person or organization who created the work" ; skos:inScheme linkml_common:social . +linkml_common:events a owl:ObjectProperty . + linkml_common:keywords a owl:DatatypeProperty ; rdfs:label "keywords" ; skos:definition "Keywords or tags used to describe this item" ; skos:inScheme linkml_common:social . -linkml_common:ExtractiveIndustryFacility a owl:Class ; - rdfs:label "ExtractiveIndustryFacility" ; + a owl:Class ; + rdfs:label "IndividualOrganism" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:operator ], + owl:onProperty linkml_common:classification ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:reserves ], + owl:allValuesFrom owl:Thing ; + owl:onProperty linkml_common:classification ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:products ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Organization ; - owl:onProperty linkml_common:operator ], - [ a owl:Restriction ; + owl:onProperty linkml_common:classification ], + linkml_common:PhysicalEntity ; + skos:inScheme linkml_common:organisms . + +linkml_common:ExtractiveIndustryFacility a owl:Class ; + rdfs:label "ExtractiveIndustryFacility" ; + rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:production_capacity ], [ a owl:Restriction ; @@ -2122,34 +2436,46 @@ linkml_common:ExtractiveIndustryFacility a owl:Class ; owl:onProperty linkml_common:facility_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:annual_production ], + owl:onProperty linkml_common:operator ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:ExtractiveIndustryProduct ; + owl:onProperty linkml_common:products ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:SimpleQuantity ; + owl:onProperty linkml_common:production_capacity ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Organization ; + owl:onProperty linkml_common:operator ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:ExtractiveIndustryFacilityType ; owl:onProperty linkml_common:facility_type ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:reserves ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:production_capacity ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:SimpleQuantity ; + owl:onProperty linkml_common:annual_production ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:reserves ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:SimpleQuantity ; - owl:onProperty linkml_common:annual_production ], + owl:onProperty linkml_common:reserves ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:operator ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:reserves ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:ExtractiveIndustryProduct ; + owl:minCardinality 0 ; owl:onProperty linkml_common:products ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:facility_type ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:production_capacity ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:annual_production ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:SimpleQuantity ; - owl:onProperty linkml_common:production_capacity ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:operator ], linkml_common:Facility ; skos:definition "A facility where natural resources are extracted from the earth" ; skos:inScheme linkml_common:extractiveindustry . @@ -2195,32 +2521,32 @@ linkml_common:PersonStatus a owl:Class ; linkml_common:Prediction a owl:Class ; rdfs:label "Prediction" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Any ; + owl:onProperty linkml_common:predicted_value ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:variable_predicted ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:expected_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty linkml_common:predicted_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:variable_predicted ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Variable ; - owl:onProperty linkml_common:variable_predicted ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Any ; owl:onProperty linkml_common:predicted_value ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Any ; - owl:onProperty linkml_common:expected_value ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:variable_predicted ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:expected_value ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:Any ; owl:onProperty linkml_common:expected_value ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:predicted_value ], + owl:allValuesFrom linkml_common:Variable ; + owl:onProperty linkml_common:variable_predicted ], linkml_common:Intangible ; skos:inScheme linkml_common:statistics . @@ -2237,30 +2563,6 @@ linkml_common:Service a owl:Class ; skos:exactMatch schema1:Service ; skos:inScheme linkml_common:social . -linkml_common:TemporalInterval a owl:Class ; - rdfs:label "TemporalInterval" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:ends_at ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:ends_at ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:ends_at ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:starts_at ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:starts_at ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:starts_at ], - linkml_common:TimePointOrTemporalInterval ; - skos:definition "A period of time" ; - skos:inScheme linkml_common:time . - linkml_common:Variable a owl:Class ; rdfs:label "Variable" ; rdfs:subClassOf [ a owl:Restriction ; @@ -2280,135 +2582,142 @@ linkml_common:WellType a owl:Class ; , . -linkml_common:InformationEntity a owl:Class ; - rdfs:label "InformationEntity" ; +linkml_common:observations a owl:ObjectProperty . + +linkml_common:PowerPlant a owl:Class ; + rdfs:label "PowerPlant" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom xsd:date ; + owl:onProperty linkml_common:commissioning_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Place ; + owl:onProperty linkml_common:location ], + [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:describes ], + owl:onProperty linkml_common:operator ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:commissioning_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:describes ], + owl:onProperty linkml_common:opex ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Any ; - owl:onProperty linkml_common:describes ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:operator ], [ a owl:Restriction ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:Identified ], - linkml_common:Intangible ; - skos:definition "An entity that describes some information" ; - skos:inScheme linkml_common:core . - -linkml_common:PlannedProcess a owl:Class ; - rdfs:label "PlannedProcess" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Procedure ; - owl:onProperty linkml_common:follows_procedure ], + owl:allValuesFrom xsd:date ; + owl:onProperty linkml_common:decommissioning_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PhysicalDevice ; - owl:onProperty linkml_common:uses_physical_device ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:plant_type ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PlannedProcessConfiguration ; - owl:onProperty linkml_common:uses_configuration ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:opex ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:uses_physical_device ], + owl:onProperty linkml_common:commissioning_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:follows_procedure ], + owl:onProperty linkml_common:capex ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:follows_procedure ], + owl:onProperty linkml_common:capacity ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:uses_configuration ], + owl:onProperty linkml_common:location ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:uses_configuration ], + owl:allValuesFrom linkml_common:MoneyQuantity ; + owl:onProperty linkml_common:capex ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:uses_physical_device ], - linkml_common:ExecutionOfProcedure ; - skos:definition "A process that follows a defined procedure or plan" ; - skos:exactMatch ; - skos:inScheme linkml_common:plannedprocess . - -linkml_common:PowerPlant a owl:Class ; - rdfs:label "PowerPlant" ; - rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty linkml_common:location ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:capacity ], [ a owl:Restriction ; - owl:allValuesFrom xsd:date ; - owl:onProperty linkml_common:decommissioning_date ], + owl:allValuesFrom linkml_common:MoneyQuantity ; + owl:onProperty linkml_common:opex ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:SimpleQuantity ; owl:onProperty linkml_common:capacity ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:operator ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Place ; - owl:onProperty linkml_common:location ], + owl:allValuesFrom linkml_common:PowerPlantType ; + owl:onProperty linkml_common:plant_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:decommissioning_date ], + owl:onProperty linkml_common:capex ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:commissioning_date ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:SimpleQuantity ; - owl:onProperty linkml_common:capacity ], + owl:onProperty linkml_common:plant_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:plant_type ], + owl:onProperty linkml_common:decommissioning_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:capex ], + owl:onProperty linkml_common:decommissioning_date ], [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Organization ; + owl:onProperty linkml_common:operator ], + linkml_common:Building ; + skos:definition "A facility for generating electrical power" ; + skos:inScheme linkml_common:energytechnology . + +linkml_common:Relationship a owl:Class ; + rdfs:label "Relationship" ; + rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:opex ], + owl:onProperty linkml_common:predicate ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:operator ], + owl:onProperty linkml_common:subject ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Entity ; + owl:onProperty linkml_common:subject ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:commissioning_date ], + owl:onProperty linkml_common:object ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:plant_type ], + owl:onProperty linkml_common:subject ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Organization ; - owl:onProperty linkml_common:operator ], + owl:allValuesFrom linkml_common:Concept ; + owl:onProperty linkml_common:predicate ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:capex ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:MoneyQuantity ; - owl:onProperty linkml_common:opex ], + owl:onProperty linkml_common:object ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:opex ], + owl:onProperty linkml_common:predicate ], [ a owl:Restriction ; - owl:allValuesFrom xsd:date ; - owl:onProperty linkml_common:commissioning_date ], + owl:allValuesFrom linkml_common:Entity ; + owl:onProperty linkml_common:object ], + linkml_common:Intangible ; + skos:closeMatch rdfs:Statement ; + skos:inScheme linkml_common:core . + +linkml_common:TemporalInterval a owl:Class ; + rdfs:label "TemporalInterval" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:MoneyQuantity ; - owl:onProperty linkml_common:capex ], + owl:allValuesFrom linkml_common:TimePoint ; + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:location ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PowerPlantType ; - owl:onProperty linkml_common:plant_type ], + owl:allValuesFrom linkml_common:TimePoint ; + owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:location ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:decommissioning_date ], - linkml_common:Building ; - skos:definition "A facility for generating electrical power" ; - skos:inScheme linkml_common:energytechnology . + owl:onProperty linkml_common:ends_at ], + linkml_common:TimePointOrTemporalInterval ; + skos:definition "A period of time" ; + skos:inScheme linkml_common:time . linkml_common:abstract a owl:DatatypeProperty . @@ -2428,12 +2737,27 @@ linkml_common:geolocation a owl:ObjectProperty ; skos:definition "The geolocation of the place" ; skos:inScheme linkml_common:geography . +linkml_common:hypothesis a owl:ObjectProperty . + linkml_common:located_at_place a owl:ObjectProperty ; rdfs:label "located_at_place" ; rdfs:range linkml_common:Place ; skos:definition "The place where the entity is located" ; skos:inScheme linkml_common:geography . +linkml_common:models a owl:ObjectProperty ; + rdfs:label "models" ; + skos:inScheme linkml_common:investigations . + +linkml_common:object a owl:DatatypeProperty, + owl:ObjectProperty ; + rdfs:label "object" ; + rdfs:range linkml_common:Any ; + skos:definition "The object of a relationship" ; + skos:inScheme linkml_common:core . + +linkml_common:observation_subject a owl:ObjectProperty . + linkml_common:operator a owl:ObjectProperty . linkml_common:part_of a owl:ObjectProperty . @@ -2446,18 +2770,72 @@ linkml_common:unit a owl:ObjectProperty . linkml_common:value a owl:DatatypeProperty . -linkml_common:Organization a owl:Class ; - rdfs:label "Organization" ; +linkml_common:Observation a owl:Class ; + rdfs:label "Observation" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:measured_using ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:observation_subject ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:provides_services ], + owl:onProperty linkml_common:observation_subject ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Service ; - owl:onProperty linkml_common:provides_services ], - linkml_common:Agent ; - skos:definition "Represents an Organization" ; - skos:exactMatch schema1:Organization ; - skos:inScheme linkml_common:social . + owl:allValuesFrom linkml_common:Variable ; + owl:onProperty linkml_common:variable_measured ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalDevice ; + owl:onProperty linkml_common:measured_using ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:variable_measured ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:variable_measured ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:measured_using ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Entity ; + owl:onProperty linkml_common:observation_subject ], + linkml_common:Event ; + skos:definition "A statement about the state of something" ; + skos:inScheme linkml_common:meaurements . + +linkml_common:PlannedProcess a owl:Class ; + rdfs:label "PlannedProcess" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:uses_physical_device ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Procedure ; + owl:onProperty linkml_common:follows_procedure ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:follows_procedure ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalDevice ; + owl:onProperty linkml_common:uses_physical_device ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:follows_procedure ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PlannedProcessConfiguration ; + owl:onProperty linkml_common:uses_configuration ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:uses_physical_device ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:uses_configuration ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:uses_configuration ], + linkml_common:ExecutionOfProcedure ; + skos:definition "A process that follows a defined procedure or plan" ; + skos:exactMatch ; + skos:inScheme linkml_common:plannedprocess . linkml_common:Procedure a owl:Class ; rdfs:label "Procedure" ; @@ -2471,15 +2849,53 @@ linkml_common:Any a owl:Class ; skos:exactMatch linkml:Any ; skos:inScheme linkml_common:core . -linkml_common:Entity a owl:Class ; - rdfs:label "Entity" ; +linkml_common:Person a owl:Class ; + rdfs:label "Person" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:primary_email ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:age_in_years ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:integer ; + owl:onProperty linkml_common:age_in_years ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:vital_status ], + [ a owl:Restriction ; + owl:allValuesFrom [ a rdfs:Datatype ; + owl:onDatatype xsd:string ; + owl:withRestrictions ( [ xsd:pattern "^\\S+@[\\S+\\.]+\\S+" ] ) ] ; + owl:onProperty linkml_common:primary_email ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:vital_status ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:primary_email ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PersonStatus ; + owl:onProperty linkml_common:vital_status ], + [ a owl:Restriction ; owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:Typed ], - linkml:ClassDefinition ; - skos:definition "A physical, digital, conceptual, or other kind of thing with some common characteristics" ; - skos:exactMatch schema1:Thing ; - skos:inScheme linkml_common:core . + owl:someValuesFrom linkml_common:Agent ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:birth_date ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:age_in_years ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:date ; + owl:onProperty linkml_common:birth_date ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:birth_date ], + ; + skos:definition "Represents a Person" ; + skos:exactMatch schema1:Person ; + skos:inScheme linkml_common:social . linkml_common:ExtractiveIndustryProductType a owl:Class ; rdfs:subClassOf linkml:EnumDefinition ; @@ -2493,72 +2909,105 @@ linkml_common:ExtractiveIndustryProductType a owl:Class ; , . -linkml_common:Place a owl:Class ; - rdfs:label "Place" ; +linkml_common:InformationEntity a owl:Class ; + rdfs:label "InformationEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:bounding_coordinates ], + owl:minCardinality 0 ; + owl:onProperty linkml_common:describes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:geolocation ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:GeoBoxLocation ; - owl:onProperty linkml_common:bounding_coordinates ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:PostalAddress ; - owl:onProperty linkml_common:address ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:geolocation ], + owl:onProperty linkml_common:describes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:bounding_coordinates ], + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Identified ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:GeoPointLocation ; - owl:onProperty linkml_common:geolocation ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:address ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:address ], - linkml_common:NamedThing ; - skos:definition "Entities that have a somewhat fixed, physical extension." ; - skos:exactMatch schema1:Place ; - skos:inScheme linkml_common:geography . + owl:allValuesFrom linkml_common:Any ; + owl:onProperty linkml_common:describes ], + linkml_common:Intangible ; + skos:definition "An entity that describes some information" ; + skos:inScheme linkml_common:core . linkml_common:ends_at a owl:ObjectProperty ; rdfs:label "ends_at" ; rdfs:range linkml_common:TimePoint ; skos:inScheme linkml_common:time . -linkml_common:follows_procedure a owl:ObjectProperty . - linkml_common:patient a owl:ObjectProperty . +linkml_common:predicate a owl:DatatypeProperty, + owl:ObjectProperty . + linkml_common:starts_at a owl:ObjectProperty ; rdfs:label "starts_at" ; rdfs:range linkml_common:TimePoint ; skos:inScheme linkml_common:time . -linkml_common:Agent a owl:Class ; - rdfs:label "Agent" ; - rdfs:subClassOf linkml_common:NamedThing ; - skos:definition "Represents an Agent" ; - skos:exactMatch prov:Agent, - ; +linkml_common:Organization a owl:Class ; + rdfs:label "Organization" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:provides_services ], + [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Agent ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PersonInRole ; + owl:onProperty linkml_common:has_person_roles ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:has_person_roles ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Service ; + owl:onProperty linkml_common:provides_services ], + linkml_common:PhysicalEntity ; + skos:definition "Represents an Organization" ; + skos:exactMatch schema1:Organization ; skos:inScheme linkml_common:social . +linkml_common:Place a owl:Class ; + rdfs:label "Place" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:bounding_coordinates ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:address ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:geolocation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:geolocation ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:GeoBoxLocation ; + owl:onProperty linkml_common:bounding_coordinates ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PostalAddress ; + owl:onProperty linkml_common:address ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:GeoPointLocation ; + owl:onProperty linkml_common:geolocation ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:address ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:bounding_coordinates ], + linkml_common:PhysicalEntity ; + skos:definition "Entities that have a somewhat fixed, physical extension." ; + skos:exactMatch schema1:Place ; + skos:inScheme linkml_common:geography . + linkml_common:Quantity a owl:Class ; rdfs:label "Quantity" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:has_quantity_kind ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:QuantityKind ; + owl:minCardinality 0 ; owl:onProperty linkml_common:has_quantity_kind ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml_common:QuantityKind ; owl:onProperty linkml_common:has_quantity_kind ], linkml_common:Intangible ; skos:exactMatch , @@ -2568,20 +3017,20 @@ linkml_common:Quantity a owl:Class ; linkml_common:SimpleQuantity a owl:Class ; rdfs:label "SimpleQuantity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:value ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:value ], + owl:onProperty linkml_common:unit ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:unit ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:UnitConcept ; owl:onProperty linkml_common:unit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:unit ], + owl:onProperty linkml_common:value ], [ a owl:Restriction ; owl:allValuesFrom xsd:float ; owl:onProperty linkml_common:value ], @@ -2606,42 +3055,23 @@ linkml_common:HealthcareEncounterClassification a owl:Class ; , . -linkml_common:NamedThing a owl:Class ; - rdfs:label "NamedThing" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Concept ; - owl:onProperty linkml_common:ontology_types ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:classification ], - [ a owl:Restriction ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:Identified ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Concept ; - owl:onProperty linkml_common:classification ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:classification ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:description ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:description ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:ontology_types ], - linkml_common:Entity ; +linkml_common:follows_procedure a owl:ObjectProperty . + +linkml_common:subject a owl:DatatypeProperty, + owl:ObjectProperty ; + rdfs:label "subject" ; + rdfs:range linkml_common:Any ; + skos:definition "The subject of a relationship" ; skos:inScheme linkml_common:core . -linkml_common:classification a owl:ObjectProperty ; - rdfs:label "classification" ; - rdfs:range linkml_common:Concept ; - skos:definition "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; +linkml_common:Entity a owl:Class ; + rdfs:label "Entity" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Typed ], + linkml:ClassDefinition ; + skos:definition "A physical, digital, conceptual, or other kind of thing with some common characteristics" ; + skos:exactMatch schema1:Thing ; skos:inScheme linkml_common:core . linkml_common:Event a owl:Class ; @@ -2649,60 +3079,60 @@ linkml_common:Event a owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:ends_at ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:happens_at ], + owl:onProperty linkml_common:ends_at ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml_common:TemporalInterval ; owl:onProperty linkml_common:has_interval ], - [ a owl:Restriction ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:Identified ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:is_ongoing_as_of ], + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:ends_at ], + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TemporalInterval ; - owl:onProperty linkml_common:has_interval ], + owl:allValuesFrom linkml_common:TimePoint ; + owl:onProperty linkml_common:is_ongoing_as_of ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:has_interval ], + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Identified ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Duration ; + owl:maxCardinality 1 ; owl:onProperty linkml_common:has_duration ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:happens_at ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:is_ongoing_as_of ], + owl:onProperty linkml_common:starts_at ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:ends_at ], + owl:onProperty linkml_common:happens_at ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:has_duration ], + owl:onProperty linkml_common:has_interval ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:TimePoint ; - owl:onProperty linkml_common:happens_at ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:has_interval ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:is_ongoing_as_of ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:starts_at ], + owl:allValuesFrom linkml_common:Duration ; + owl:onProperty linkml_common:has_duration ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty linkml_common:has_duration ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:happens_at ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:starts_at ], + owl:onProperty linkml_common:is_ongoing_as_of ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:TimePoint ; + owl:onProperty linkml_common:ends_at ], linkml_common:Entity ; skos:definition "A thing that happens" ; skos:inScheme linkml_common:time . @@ -2720,64 +3150,70 @@ linkml_common:Concept a owl:Class ; linkml_common:TimePoint a owl:Class ; rdfs:label "TimePoint" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom xsd:date ; - owl:onProperty linkml_common:date_value ], + owl:allValuesFrom xsd:time ; + owl:onProperty linkml_common:time_value ], [ a owl:Restriction ; owl:allValuesFrom linkml_common:Event ; owl:onProperty linkml_common:marker_event ], [ a owl:Restriction ; - owl:allValuesFrom xsd:integer ; - owl:onProperty linkml_common:year_value ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:date_value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:date_value ], + owl:onProperty linkml_common:description ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:description ], + owl:onProperty linkml_common:time_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:marker_event ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:dateTime ; - owl:onProperty linkml_common:datetime_value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty linkml_common:time_value ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:datetime_value ], + owl:onProperty linkml_common:marker_event ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:description ], + owl:onProperty linkml_common:marker_event ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:year_value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:time_value ], + owl:allValuesFrom xsd:date ; + owl:onProperty linkml_common:date_value ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:integer ; + owl:onProperty linkml_common:year_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:year_value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty linkml_common:datetime_value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:marker_event ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:time ; - owl:onProperty linkml_common:time_value ], [ a owl:Restriction ; owl:allValuesFrom xsd:string ; owl:onProperty linkml_common:description ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:dateTime ; + owl:onProperty linkml_common:datetime_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:datetime_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:date_value ], linkml_common:TimePointOrTemporalInterval ; skos:definition "A point in time. Can be fully specified, or specified in relative terms." ; skos:exactMatch ; skos:inScheme linkml_common:time . +linkml_common:classification a owl:ObjectProperty ; + rdfs:label "classification" ; + rdfs:range linkml_common:Concept ; + skos:definition "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + skos:inScheme linkml_common:core . + linkml_common:Intangible a owl:Class ; rdfs:label "Intangible" ; rdfs:subClassOf linkml_common:Entity ; @@ -2785,6 +3221,38 @@ linkml_common:Intangible a owl:Class ; skos:exactMatch schema1:Intangible ; skos:inScheme linkml_common:core . +linkml_common:PhysicalEntity a owl:Class ; + rdfs:label "PhysicalEntity" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Identified ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Concept ; + owl:onProperty linkml_common:ontology_types ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:ontology_types ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:classification ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:Concept ; + owl:onProperty linkml_common:classification ], + linkml_common:Entity ; + skos:inScheme linkml_common:core . + linkml_common:type a owl:DatatypeProperty ; rdfs:label "type" ; rdfs:range xsd:string ; @@ -2792,150 +3260,159 @@ linkml_common:type a owl:DatatypeProperty ; skos:inScheme linkml_common:core . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PointLocation ; + rdfs:subClassOf linkml_common:EnvironmentalSystem ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PointLocation . + owl:someValuesFrom linkml_common:EnvironmentalSystem . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:GeoBoxLocation ; + rdfs:subClassOf linkml_common:HealthcareOrganization ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:GeoBoxLocation . + owl:someValuesFrom linkml_common:HealthcareOrganization . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FoodIngredient ; + rdfs:subClassOf linkml_common:OrganizationPersonnelRelationship ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FoodIngredient . + owl:someValuesFrom linkml_common:OrganizationPersonnelRelationship . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:NamedThing ; + rdfs:subClassOf linkml_common:RenewablePlant ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:NamedThing . + owl:someValuesFrom linkml_common:RenewablePlant . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Investigation ; + rdfs:subClassOf linkml_common:StructuredValue ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Investigation . + owl:someValuesFrom linkml_common:StructuredValue . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FinancialOrganization ; + rdfs:subClassOf linkml_common:DataGenerationFromSample ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FinancialOrganization . + owl:someValuesFrom linkml_common:DataGenerationFromSample . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Quantity ; + rdfs:subClassOf ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Quantity . + owl:someValuesFrom . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FoodRecipe ; + rdfs:subClassOf linkml_common:EngineeringSpecification ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FoodRecipe . + owl:someValuesFrom linkml_common:EngineeringSpecification . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Patient ; + rdfs:subClassOf linkml_common:Role ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Patient . + owl:someValuesFrom linkml_common:Role . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ExtractiveIndustryFacility ; + rdfs:subClassOf linkml_common:Measurement ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ExtractiveIndustryFacility . + owl:someValuesFrom linkml_common:Measurement . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:SampleProcessing ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:SampleProcessing . [] a owl:Restriction ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:true_negative_count ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:float ; - owl:onProperty linkml_common:precision ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:true_negative_count ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:CountScalar ; - owl:onProperty linkml_common:false_positive_count ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:precision ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:recall ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:accuracy ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:CountScalar ; - owl:onProperty linkml_common:false_negative_count ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:false_positive_count ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:CountScalar ; - owl:onProperty linkml_common:true_negative_count ], + owl:onProperty linkml_common:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:false_positive_count ], + owl:allValuesFrom xsd:anyURI ; + owl:onProperty linkml_common:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:true_positive_count ], + owl:onProperty linkml_common:id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:recall ], + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:precision ], + owl:minCardinality 1 ; + owl:onProperty linkml_common:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:f1_score ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:float ; - owl:onProperty linkml_common:recall ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:float ; - owl:onProperty linkml_common:f1_score ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:accuracy ], - [ a owl:Restriction ; + owl:onProperty linkml_common:name ] ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Identified . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:PowerPlant ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:PowerPlant . + +[] a owl:Restriction ; + rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:false_negative_count ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:float ; - owl:onProperty linkml_common:accuracy ], + owl:onProperty linkml_common:models ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:f1_score ], + owl:onProperty linkml_common:models ], [ a owl:Restriction ; - owl:allValuesFrom linkml_common:CountScalar ; - owl:onProperty linkml_common:true_positive_count ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:false_negative_count ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:true_positive_count ] ; + owl:allValuesFrom linkml_common:Entity ; + owl:onProperty linkml_common:models ] ; owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:OutcomeStatistics . + owl:someValuesFrom linkml_common:Model . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:MaterialCollection ; + rdfs:subClassOf linkml_common:Observation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:MaterialCollection . + owl:someValuesFrom linkml_common:Observation . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareProvider ; + rdfs:subClassOf linkml_common:Procedure ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareProvider . + owl:someValuesFrom linkml_common:Procedure . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Ratio ; + rdfs:subClassOf linkml_common:Landform ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Ratio . + owl:someValuesFrom linkml_common:Landform . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:InformationEntity ; + rdfs:subClassOf linkml_common:QuarryFacility ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:InformationEntity . + owl:someValuesFrom linkml_common:QuarryFacility . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:FinancialOrganization ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:FinancialOrganization . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:ClinicalHistory ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:ClinicalHistory . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:ComputationalPlannedProcess ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:ComputationalPlannedProcess . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:QuantityKind ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:QuantityKind . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:FoodRecipe ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:FoodRecipe . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:SubjectObservationHistory ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:SubjectObservationHistory . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:EconomicSystem ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:EconomicSystem . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Climate ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Climate . [] a owl:Restriction ; rdfs:subClassOf linkml_common:PhysicalDevice ; @@ -2943,174 +3420,269 @@ linkml_common:type a owl:DatatypeProperty ; owl:someValuesFrom linkml_common:PhysicalDevice . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Place ; + rdfs:subClassOf linkml_common:PointLocation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Place . + owl:someValuesFrom linkml_common:PointLocation . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Measurement ; + rdfs:subClassOf linkml_common:SampleCollectionProcess ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Measurement . + owl:someValuesFrom linkml_common:SampleCollectionProcess . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:LifeEvent ; + rdfs:subClassOf linkml_common:MiningFacility ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:LifeEvent . + owl:someValuesFrom linkml_common:MiningFacility . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FossilFuelPlant ; + rdfs:subClassOf linkml_common:StudyResult ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FossilFuelPlant . + owl:someValuesFrom linkml_common:StudyResult . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Landform ; + rdfs:subClassOf linkml_common:Publication ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Landform . + owl:someValuesFrom linkml_common:Publication . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PostalAddress ; + rdfs:subClassOf linkml_common:SimplePrediction ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PostalAddress . + owl:someValuesFrom linkml_common:SimplePrediction . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareSite ; + rdfs:subClassOf linkml_common:UnitConcept ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareSite . + owl:someValuesFrom linkml_common:UnitConcept . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Service ; + rdfs:subClassOf linkml_common:Event ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Service . + owl:someValuesFrom linkml_common:Event . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:MoneyQuantity ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:MoneyQuantity . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:ExtractiveIndustryEquipment ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:ExtractiveIndustryEquipment . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:FinancialAccount ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:FinancialAccount . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:HealthcareProvider ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:HealthcareProvider . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:InformationEntity ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:InformationEntity . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Prediction ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Prediction . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Ratio ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Ratio . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Place ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Place . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:ClinicalCohortDefinition ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:ClinicalCohortDefinition . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:DataGenerationFromSample ; + rdfs:subClassOf linkml_common:StudyDesign ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:DataGenerationFromSample . + owl:someValuesFrom linkml_common:StudyDesign . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:GeoPointLocation ; + rdfs:subClassOf linkml_common:AggregatePrediction ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:GeoPointLocation . + owl:someValuesFrom linkml_common:AggregatePrediction . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FinancialProduct ; + rdfs:subClassOf linkml_common:HealthcareEncounter ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FinancialProduct . + owl:someValuesFrom linkml_common:HealthcareEncounter . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PlannedProcessConfiguration ; + rdfs:subClassOf linkml_common:TimePoint ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PlannedProcessConfiguration . + owl:someValuesFrom linkml_common:TimePoint . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:InvestigativeProtocol ; + rdfs:subClassOf linkml_common:SolarPlant ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:InvestigativeProtocol . + owl:someValuesFrom linkml_common:SolarPlant . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:AutomatedAgent ; + rdfs:subClassOf linkml_common:InvestigativeProtocol ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:AutomatedAgent . + owl:someValuesFrom linkml_common:InvestigativeProtocol . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:RenewablePlant ; + rdfs:subClassOf linkml_common:FinancialProduct ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:RenewablePlant . + owl:someValuesFrom linkml_common:FinancialProduct . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PlannedProcess ; + rdfs:subClassOf linkml_common:Variable ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PlannedProcess . + owl:someValuesFrom linkml_common:Variable . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:QuarryFacility ; + rdfs:subClassOf linkml_common:PlannedProcessConfiguration ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:QuarryFacility . + owl:someValuesFrom linkml_common:PlannedProcessConfiguration . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Concept ; + rdfs:subClassOf linkml_common:Patient ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Concept . + owl:someValuesFrom linkml_common:Patient . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:MaterialProcessing ; + rdfs:subClassOf linkml_common:BuiltSystem ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:MaterialProcessing . + owl:someValuesFrom linkml_common:BuiltSystem . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:WellFacility ; + rdfs:subClassOf linkml_common:FoodProcessing ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:WellFacility . + owl:someValuesFrom linkml_common:FoodProcessing . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Relationship ; + rdfs:subClassOf linkml_common:ClinicalCohort ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Relationship . + owl:someValuesFrom linkml_common:ClinicalCohort . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:NuclearPlant ; + rdfs:subClassOf linkml_common:Building ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:NuclearPlant . + owl:someValuesFrom linkml_common:Building . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:CompositeFoodType ; + rdfs:subClassOf linkml_common:VeterinaryAnimal ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:CompositeFoodType . + owl:someValuesFrom linkml_common:VeterinaryAnimal . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Variable ; + rdfs:subClassOf linkml_common:Entity ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Variable . + owl:someValuesFrom linkml_common:Entity . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:CurrencyConcept ; + rdfs:subClassOf linkml_common:ExtractiveIndustryFacility ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:CurrencyConcept . + owl:someValuesFrom linkml_common:ExtractiveIndustryFacility . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareEncounter ; + rdfs:subClassOf linkml_common:Duration ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareEncounter . + owl:someValuesFrom linkml_common:Duration . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PowerPlantType ; - owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PowerPlantType . + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:keywords ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:abstract ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalEntity ; + owl:onProperty linkml_common:contacts ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:title ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:creators ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:abstract ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:keywords ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:rights ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalEntity ; + owl:onProperty linkml_common:creators ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:title ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:title ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:string ; + owl:onProperty linkml_common:rights ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:abstract ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:PhysicalEntity ; + owl:onProperty linkml_common:contributors ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:contacts ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:contributors ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:rights ] ; + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:CreationMetadata . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:WindFarm ; + rdfs:subClassOf linkml_common:SimpleQuantity ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:WindFarm . + owl:someValuesFrom linkml_common:SimpleQuantity . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ExtractiveIndustryProduct ; + rdfs:subClassOf linkml_common:SetOfObservations ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ExtractiveIndustryProduct . + owl:someValuesFrom linkml_common:SetOfObservations . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:StructuredValue ; + rdfs:subClassOf linkml_common:Organization ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:StructuredValue . + owl:someValuesFrom linkml_common:Organization . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ExtractiveIndustryEquipment ; + rdfs:subClassOf linkml_common:TemporalInterval ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ExtractiveIndustryEquipment . + owl:someValuesFrom linkml_common:TemporalInterval . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Dataset ; + rdfs:subClassOf linkml_common:HealthcareConditionOccurrence ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Dataset . + owl:someValuesFrom linkml_common:HealthcareConditionOccurrence . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:QualitativeObservation ; + rdfs:subClassOf linkml_common:AutomatedAgent ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:QualitativeObservation . + owl:someValuesFrom linkml_common:AutomatedAgent . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Agent ; + rdfs:subClassOf linkml_common:DigitalTwin ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Agent . + owl:someValuesFrom linkml_common:DigitalTwin . [] a owl:Restriction ; rdfs:subClassOf linkml_common:Specification ; @@ -3118,54 +3690,53 @@ linkml_common:type a owl:DatatypeProperty ; owl:someValuesFrom linkml_common:Specification . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareOrganization ; + rdfs:subClassOf linkml_common:FoodTypeConcept ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareOrganization . + owl:someValuesFrom linkml_common:FoodTypeConcept . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ClinicalCohort ; + rdfs:subClassOf linkml_common:QualitativeObservation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ClinicalCohort . + owl:someValuesFrom linkml_common:QualitativeObservation . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:RawMaterial ; + rdfs:subClassOf linkml_common:FossilFuelPlant ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:RawMaterial . + owl:someValuesFrom linkml_common:FossilFuelPlant . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Role ; + rdfs:subClassOf linkml_common:CreativeWork ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Role . + owl:someValuesFrom linkml_common:CreativeWork . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:UnitConcept ; + rdfs:subClassOf linkml_common:SampleMaterial ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:UnitConcept . + owl:someValuesFrom linkml_common:SampleMaterial . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SolarPlant ; + rdfs:subClassOf ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SolarPlant . + owl:someValuesFrom . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Organization ; + rdfs:subClassOf linkml_common:PersonInRole ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Organization . + owl:someValuesFrom linkml_common:PersonInRole . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Location ; + rdfs:subClassOf linkml_common:PhysicalEntity ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Location . + owl:someValuesFrom linkml_common:PhysicalEntity . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ElectricalGrid ; - owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ElectricalGrid . + owl:onProperty linkml:mixins ; + owl:someValuesFrom linkml_common:Agent . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:BuiltEnvironmentFeature ; + rdfs:subClassOf linkml_common:HealthcareRole ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:BuiltEnvironmentFeature . + owl:someValuesFrom linkml_common:HealthcareRole . [] a owl:Restriction ; rdfs:subClassOf linkml_common:EngineeringMaterialProcessing ; @@ -3173,159 +3744,119 @@ linkml_common:type a owl:DatatypeProperty ; owl:someValuesFrom linkml_common:EngineeringMaterialProcessing . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ComputationalPlannedProcess ; - owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ComputationalPlannedProcess . - -[] a owl:Restriction ; - rdfs:subClassOf linkml_common:QuantityKind ; - owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:QuantityKind . - -[] a owl:Restriction ; - rdfs:subClassOf linkml_common:Entity ; + rdfs:subClassOf linkml_common:HydroelectricPlant ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Entity . + owl:someValuesFrom linkml_common:HydroelectricPlant . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:TemporalRelationship ; + rdfs:subClassOf linkml_common:Service ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:TemporalRelationship . + owl:someValuesFrom linkml_common:Service . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ExtractiveIndustryWaste ; + rdfs:subClassOf linkml_common:MaterialProcessing ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ExtractiveIndustryWaste . + owl:someValuesFrom linkml_common:MaterialProcessing . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareConditionOccurrence ; + rdfs:subClassOf linkml_common:Investigation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareConditionOccurrence . + owl:someValuesFrom linkml_common:Investigation . -[] a owl:Restriction ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:contributors ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:abstract ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:keywords ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:title ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:keywords ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; - owl:onProperty linkml_common:contributors ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:title ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:contacts ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:rights ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; - owl:onProperty linkml_common:contacts ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:creators ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:rights ], - [ a owl:Restriction ; - owl:allValuesFrom linkml_common:Agent ; - owl:onProperty linkml_common:creators ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:rights ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty linkml_common:abstract ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:title ], - [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:abstract ] ; - owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:CreationMetadata . +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Concept ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Concept . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SimplePrediction ; + rdfs:subClassOf linkml_common:TemporalRelationship ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SimplePrediction . + owl:someValuesFrom linkml_common:TemporalRelationship . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:MoneyQuantity ; + rdfs:subClassOf linkml_common:Intangible ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:MoneyQuantity . + owl:someValuesFrom linkml_common:Intangible . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:EntitySet ; + rdfs:subClassOf linkml_common:EnvironmentalSite ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:EntitySet . + owl:someValuesFrom linkml_common:EnvironmentalSite . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HealthcareRole ; + rdfs:subClassOf linkml_common:TimePointOrTemporalInterval ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HealthcareRole . + owl:someValuesFrom linkml_common:TimePointOrTemporalInterval . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FinancialAccount ; + rdfs:subClassOf linkml_common:CompositeFoodType ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FinancialAccount . + owl:someValuesFrom linkml_common:CompositeFoodType . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Building ; + rdfs:subClassOf linkml_common:OrganizationalRole ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Building . + owl:someValuesFrom linkml_common:OrganizationalRole . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Duration ; + rdfs:subClassOf linkml_common:ExtractiveIndustryProduct ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Duration . + owl:someValuesFrom linkml_common:ExtractiveIndustryProduct . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SampleProcessing ; + rdfs:subClassOf linkml_common:ComputationalModel ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SampleProcessing . + owl:someValuesFrom linkml_common:ComputationalModel . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PredictionSummaryStatistics ; + rdfs:subClassOf linkml_common:ExecutionOfProcedure ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PredictionSummaryStatistics . + owl:someValuesFrom linkml_common:ExecutionOfProcedure . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Equipment ; + rdfs:subClassOf linkml_common:GeoBoxLocation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Equipment . + owl:someValuesFrom linkml_common:GeoBoxLocation . [] a owl:Restriction ; - rdfs:subClassOf _:Nf6f72bdb36b5433485c2de55c57784be ; + rdfs:subClassOf linkml_common:LifeEvent ; owl:onProperty linkml_common:type ; - owl:someValuesFrom _:Nf6f72bdb36b5433485c2de55c57784be . + owl:someValuesFrom linkml_common:LifeEvent . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Event ; + rdfs:subClassOf linkml_common:FoodPreparation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Event . + owl:someValuesFrom linkml_common:FoodPreparation . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:AggregatePrediction ; + rdfs:subClassOf linkml_common:SubjectHistory ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:AggregatePrediction . + owl:someValuesFrom linkml_common:SubjectHistory . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Prediction ; + rdfs:subClassOf linkml_common:ElectricalGrid ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Prediction . + owl:someValuesFrom linkml_common:ElectricalGrid . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:RawMaterial ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:RawMaterial . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:EngineeringProcess ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:EngineeringProcess . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:Relationship ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:Relationship . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:EntitySet ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:EntitySet . [] a owl:Restriction ; rdfs:subClassOf linkml_common:DataStructure ; @@ -3338,183 +3869,247 @@ linkml_common:type a owl:DatatypeProperty ; owl:someValuesFrom linkml_common:Person . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:QuantityRange ; + rdfs:subClassOf linkml_common:WindFarm ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:QuantityRange . + owl:someValuesFrom linkml_common:WindFarm . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ClinicalCohortEnrollment ; + rdfs:subClassOf linkml_common:PlannedProcess ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ClinicalCohortEnrollment . + owl:someValuesFrom linkml_common:PlannedProcess . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FoodProcessing ; + rdfs:subClassOf linkml_common:CurrencyConcept ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FoodProcessing . + owl:someValuesFrom linkml_common:CurrencyConcept . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:PowerPlant ; + rdfs:subClassOf linkml_common:ClimateModel ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:PowerPlant . + owl:someValuesFrom linkml_common:ClimateModel . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Publication ; + rdfs:subClassOf linkml_common:Facility ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Publication . + owl:someValuesFrom linkml_common:Facility . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:TemporalInterval ; + rdfs:subClassOf linkml_common:ClinicalCohortEnrollment ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:TemporalInterval . + owl:someValuesFrom linkml_common:ClinicalCohortEnrollment . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:TimePointOrTemporalInterval ; + rdfs:subClassOf linkml_common:Quantity ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:TimePointOrTemporalInterval . + owl:someValuesFrom linkml_common:Quantity . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:BuiltSystem ; + rdfs:subClassOf linkml_common:FoodIngredient ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:BuiltSystem . + owl:someValuesFrom linkml_common:FoodIngredient . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SampleMaterial ; + rdfs:subClassOf linkml_common:NuclearPlant ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SampleMaterial . + owl:someValuesFrom linkml_common:NuclearPlant . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:BasicFoodType ; + rdfs:subClassOf linkml_common:StudyHypothesis ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:BasicFoodType . + owl:someValuesFrom linkml_common:StudyHypothesis . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ExecutionOfProcedure ; + rdfs:subClassOf linkml_common:WellFacility ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ExecutionOfProcedure . + owl:someValuesFrom linkml_common:WellFacility . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SimpleQuantity ; + rdfs:subClassOf linkml_common:Equipment ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SimpleQuantity . + owl:someValuesFrom linkml_common:Equipment . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:HydroelectricPlant ; + rdfs:subClassOf linkml_common:OrgChart ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:HydroelectricPlant . + owl:someValuesFrom linkml_common:OrgChart . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Facility ; + rdfs:subClassOf linkml_common:HealthcareSite ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Facility . + owl:someValuesFrom linkml_common:HealthcareSite . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:GeoPointLocation ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:GeoPointLocation . + +[] a owl:Restriction ; + rdfs:subClassOf linkml_common:PredictionSummaryStatistics ; + owl:onProperty linkml_common:type ; + owl:someValuesFrom linkml_common:PredictionSummaryStatistics . [] a owl:Restriction ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty linkml_common:name ], + owl:onProperty linkml_common:precision ], [ a owl:Restriction ; - owl:allValuesFrom xsd:anyURI ; - owl:onProperty linkml_common:id ], + owl:maxCardinality 1 ; + owl:onProperty linkml_common:recall ], [ a owl:Restriction ; - owl:allValuesFrom xsd:string ; - owl:onProperty linkml_common:name ], + owl:allValuesFrom linkml_common:CountScalar ; + owl:onProperty linkml_common:false_positive_count ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:true_positive_count ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:false_negative_count ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:name ], + owl:onProperty linkml_common:false_positive_count ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:float ; + owl:onProperty linkml_common:accuracy ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty linkml_common:id ], + owl:onProperty linkml_common:false_negative_count ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty linkml_common:id ] ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:f1_score ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:false_positive_count ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:accuracy ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:true_negative_count ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:float ; + owl:onProperty linkml_common:precision ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:accuracy ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:CountScalar ; + owl:onProperty linkml_common:false_negative_count ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:true_positive_count ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:true_negative_count ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:float ; + owl:onProperty linkml_common:recall ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:recall ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:CountScalar ; + owl:onProperty linkml_common:true_positive_count ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty linkml_common:f1_score ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:precision ], + [ a owl:Restriction ; + owl:allValuesFrom linkml_common:CountScalar ; + owl:onProperty linkml_common:true_negative_count ], + [ a owl:Restriction ; + owl:allValuesFrom xsd:float ; + owl:onProperty linkml_common:f1_score ] ; owl:onProperty linkml:mixins ; - owl:someValuesFrom linkml_common:Identified . + owl:someValuesFrom linkml_common:OutcomeStatistics . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:InvestigativeProcess ; + rdfs:subClassOf linkml_common:BuiltEnvironmentFeature ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:InvestigativeProcess . + owl:someValuesFrom linkml_common:BuiltEnvironmentFeature . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:ClinicalCohortDefinition ; + rdfs:subClassOf linkml_common:InvestigativeProcess ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:ClinicalCohortDefinition . + owl:someValuesFrom linkml_common:InvestigativeProcess . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Observation ; + rdfs:subClassOf linkml_common:PostalAddress ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Observation . + owl:someValuesFrom linkml_common:PostalAddress . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:TimePoint ; + rdfs:subClassOf linkml_common:PowerPlantType ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:TimePoint . + owl:someValuesFrom linkml_common:PowerPlantType . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:EnvironmentalSite ; + rdfs:subClassOf linkml_common:PhysicalSystem ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:EnvironmentalSite . + owl:someValuesFrom linkml_common:PhysicalSystem . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:SampleCollectionProcess ; + rdfs:subClassOf linkml_common:MaterialCollection ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:SampleCollectionProcess . + owl:someValuesFrom linkml_common:MaterialCollection . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:MiningFacility ; + rdfs:subClassOf linkml_common:Location ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:MiningFacility . + owl:someValuesFrom linkml_common:Location . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:FoodTypeConcept ; + rdfs:subClassOf linkml_common:Dataset ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:FoodTypeConcept . + owl:someValuesFrom linkml_common:Dataset . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:CreativeWork ; + rdfs:subClassOf linkml_common:Simulation ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:CreativeWork . + owl:someValuesFrom linkml_common:Simulation . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:StudyDesign ; + rdfs:subClassOf linkml_common:QuantityRange ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:StudyDesign . + owl:someValuesFrom linkml_common:QuantityRange . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Intangible ; + rdfs:subClassOf linkml_common:BasicFoodType ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Intangible . + owl:someValuesFrom linkml_common:BasicFoodType . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:Procedure ; + rdfs:subClassOf linkml_common:AstronomicalBody ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:Procedure . + owl:someValuesFrom linkml_common:AstronomicalBody . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:EngineeringProcess ; + rdfs:subClassOf _:N9630263b165a4195afef1b66f3cff218 ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:EngineeringProcess . + owl:someValuesFrom _:N9630263b165a4195afef1b66f3cff218 . [] a owl:Restriction ; - rdfs:subClassOf linkml_common:EngineeringSpecification ; + rdfs:subClassOf linkml_common:ExtractiveIndustryWaste ; owl:onProperty linkml_common:type ; - owl:someValuesFrom linkml_common:EngineeringSpecification . - -_:N0d8c3a2d75e44f1aaeaa68154ce7b309 a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty linkml_common:type . + owl:someValuesFrom linkml_common:ExtractiveIndustryWaste . -_:Nef1d94a911b94078a3f7f10786ae36fc a owl:Restriction ; +_:N030380a49f664e91bfbeac94c18d2975 a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty linkml_common:type . -_:Nfdf5c720df8d4552b1283fa4f6e04404 a owl:Restriction ; +_:N5335f86e67f348ecb884fcbb4ca02055 a owl:Restriction ; owl:allValuesFrom xsd:string ; owl:onProperty linkml_common:type . -_:Nf6f72bdb36b5433485c2de55c57784be a owl:Restriction ; - rdfs:subClassOf _:N0d8c3a2d75e44f1aaeaa68154ce7b309, - _:Nef1d94a911b94078a3f7f10786ae36fc, - _:Nfdf5c720df8d4552b1283fa4f6e04404 ; +_:N7655e0877e684d47b804363a8fac35c4 a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty linkml_common:type . + +_:N9630263b165a4195afef1b66f3cff218 a owl:Restriction ; + rdfs:subClassOf _:N030380a49f664e91bfbeac94c18d2975, + _:N5335f86e67f348ecb884fcbb4ca02055, + _:N7655e0877e684d47b804363a8fac35c4 ; owl:onProperty linkml:mixins ; owl:someValuesFrom linkml_common:Typed . diff --git a/project/prefixmap/linkml_common.yaml b/project/prefixmap/linkml_common.yaml index 5270a8c..611f7f4 100644 --- a/project/prefixmap/linkml_common.yaml +++ b/project/prefixmap/linkml_common.yaml @@ -3,7 +3,9 @@ "ENVO": "http://purl.obolibrary.org/obo/ENVO_", "IAO": "http://purl.obolibrary.org/obo/IAO_", "OBI": "http://purl.obolibrary.org/obo/OBI_", + "OrganizationPersonnelRelationshipEnum": "http://example.org/UNKNOWN/OrganizationPersonnelRelationshipEnum/", "PATO": "http://purl.obolibrary.org/obo/PATO_", + "PersonInRole": "http://example.org/UNKNOWN/PersonInRole/", "UCUM": "http://unitsofmeasure.org/", "UO": "http://purl.obolibrary.org/obo/UO_", "biolink": "https://w3id.org/biolink/", diff --git a/project/protobuf/linkml_common.proto b/project/protobuf/linkml_common.proto index 922958f..464ffa8 100644 --- a/project/protobuf/linkml_common.proto +++ b/project/protobuf/linkml_common.proto @@ -1,13 +1,3 @@ -// Represents an Agent -message Agent - { - string type = 0 - concept classification = 0 - repeated concept ontologyTypes = 0 - string description = 0 - uriorcurie id = 0 - string name = 0 - } message AggregatePrediction { string type = 0 @@ -23,6 +13,18 @@ message AggregatePrediction float f1Score = 0 float accuracy = 0 } +message AstronomicalBody + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + postalAddress address = 0 + geoPointLocation geolocation = 0 + geoBoxLocation boundingCoordinates = 0 + } // Represents an Automated Agent message AutomatedAgent { @@ -67,6 +69,22 @@ message BuiltSystem uriorcurie id = 0 string name = 0 } +message Climate + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + repeated physicalEntity components = 0 + repeated entity events = 0 + } +message ClimateModel + { + string type = 0 + climate models = 0 + } // A group of patients who share a common set of characteristics message ClinicalCohort { @@ -101,12 +119,27 @@ message ClinicalCohortEnrollment patient patient = 0 clinicalCohort cohort = 0 } +message ClinicalHistory + { + string type = 0 + repeated event events = 0 + temporalInterval overInterval = 0 + repeated observation observations = 0 + repeated measurement measurements = 0 + repeated observation interpretations = 0 + person subject = 0 + } message CompositeFoodType { string type = 0 uriorcurie id = 0 string name = 0 } +message ComputationalModel + { + string type = 0 + entity models = 0 + } // Application of a mathematical operation to one or more inputs to produce one or more outputs message ComputationalPlannedProcess { @@ -145,9 +178,9 @@ message CreativeWork string title = 0 string abstract = 0 string rights = 0 - repeated agent creators = 0 - repeated agent contributors = 0 - repeated agent contacts = 0 + repeated physicalEntity creators = 0 + repeated physicalEntity contributors = 0 + repeated physicalEntity contacts = 0 repeated string keywords = 0 } // A currency @@ -183,21 +216,38 @@ message Dataset string title = 0 string abstract = 0 string rights = 0 - repeated agent creators = 0 - repeated agent contributors = 0 - repeated agent contacts = 0 + repeated physicalEntity creators = 0 + repeated physicalEntity contributors = 0 + repeated physicalEntity contacts = 0 repeated string keywords = 0 } message DataStructure { string type = 0 } +message DigitalTwin + { + string type = 0 + entity models = 0 + } // A length of time message Duration { string type = 0 quantityKind hasQuantityKind = 0 } +message EconomicSystem + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + repeated physicalEntity components = 0 + repeated entity events = 0 + place economyOfPlace = 0 + } // A network of electrical transmission lines message ElectricalGrid { @@ -264,6 +314,17 @@ message EnvironmentalSite geoPointLocation geolocation = 0 geoBoxLocation boundingCoordinates = 0 } +message EnvironmentalSystem + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + repeated physicalEntity components = 0 + repeated entity events = 0 + } message Equipment { string type = 0 @@ -370,6 +431,7 @@ message FinancialOrganization uriorcurie id = 0 string name = 0 repeated service providesServices = 0 + repeated personInRole hasPersonRoles = 0 } // A product or service offered by a bank whereby one may deposit, withdraw or transfer money and in some cases be paid interest. message FinancialProduct @@ -381,6 +443,21 @@ message FoodIngredient string type = 0 quantityKind hasQuantityKind = 0 } +message FoodPreparation + { + string type = 0 + timePoint startsAt = 0 + timePoint endsAt = 0 + timePoint happensAt = 0 + temporalInterval hasInterval = 0 + duration hasDuration = 0 + timePoint isOngoingAsOf = 0 + uriorcurie id = 0 + string name = 0 + physicalDevice usesPhysicalDevice = 0 + plannedProcessConfiguration usesConfiguration = 0 + foodRecipe followsProcedure = 0 + } message FoodProcessing { string type = 0 @@ -486,6 +563,7 @@ message HealthcareOrganization uriorcurie id = 0 string name = 0 repeated service providesServices = 0 + repeated personInRole hasPersonRoles = 0 } message HealthcareProvider { @@ -531,6 +609,15 @@ message HydroelectricPlant moneyQuantity opex = 0 landform dam = 0 } +message IndividualOrganism + { + string type = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + concept classification = 0 + } // An entity that describes some information message InformationEntity { @@ -557,6 +644,9 @@ message Investigation string name = 0 string objectives = 0 repeated variable variables = 0 + studyHypothesis hypothesis = 0 + studyDesign design = 0 + repeated studyResult results = 0 } message InvestigativeProcess { @@ -587,7 +677,6 @@ message InvestigativeProtocol message Landform { string type = 0 - concept classification = 0 repeated concept ontologyTypes = 0 string description = 0 uriorcurie id = 0 @@ -595,6 +684,7 @@ message Landform postalAddress address = 0 geoBoxLocation boundingCoordinates = 0 geoPointLocation geolocation = 0 + concept classification = 0 } message LifeEvent { @@ -682,15 +772,6 @@ message MoneyQuantity float value = 0 currencyConcept unit = 0 } -message NamedThing - { - string type = 0 - concept classification = 0 - repeated concept ontologyTypes = 0 - string description = 0 - uriorcurie id = 0 - string name = 0 - } // A nuclear power plant message NuclearPlant { @@ -726,6 +807,13 @@ message Observation variable variableMeasured = 0 physicalDevice measuredUsing = 0 } +message OrganismalRelationship + { + string type = 0 + entity subject = 0 + concept predicate = 0 + entity object = 0 + } // Represents an Organization message Organization { @@ -736,6 +824,27 @@ message Organization uriorcurie id = 0 string name = 0 repeated service providesServices = 0 + repeated personInRole hasPersonRoles = 0 + } +message OrganizationalRole + { + string type = 0 + } +message OrganizationPersonnelRelationship + { + string type = 0 + string subject = 0 + string predicate = 0 + string object = 0 + } +message OrgChart + { + string type = 0 + any describes = 0 + uriorcurie id = 0 + string name = 0 + organization forOrganization = 0 + organizationPersonnelRelationship relationships = 0 } message Patient { @@ -746,16 +855,25 @@ message Patient message Person { string type = 0 - concept classification = 0 repeated concept ontologyTypes = 0 string description = 0 uriorcurie id = 0 string name = 0 + concept classification = 0 string primaryEmail = 0 date birthDate = 0 integer ageInYears = 0 personStatus vitalStatus = 0 } +message PersonInRole + { + string type = 0 + entity subject = 0 + concept predicate = 0 + entity object = 0 + person subjectPerson = 0 + organizationalRole personRole = 0 + } message PhysicalDevice { string type = 0 @@ -765,6 +883,26 @@ message PhysicalDevice uriorcurie id = 0 string name = 0 } +message PhysicalEntity + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + } +message PhysicalSystem + { + string type = 0 + concept classification = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + repeated physicalEntity components = 0 + repeated entity events = 0 + } // Entities that have a somewhat fixed, physical extension. message Place { @@ -978,7 +1116,7 @@ message SampleCollectionProcess investigativeProtocol followsProcedure = 0 investigation partOf = 0 sampleMaterial materialCollected = 0 - namedThing collectedFrom = 0 + physicalEntity collectedFrom = 0 } message SampleMaterial { @@ -1009,6 +1147,12 @@ message Service { string type = 0 } +message SetOfObservations + { + string type = 0 + entity observationSubject = 0 + observation observations = 0 + } message SimplePrediction { string type = 0 @@ -1025,6 +1169,11 @@ message SimpleQuantity float value = 0 unitConcept unit = 0 } +message Simulation + { + string type = 0 + entity models = 0 + } // A solar power plant message SolarPlant { @@ -1065,6 +1214,39 @@ message StudyDesign string name = 0 concept classification = 0 } +message StudyHypothesis + { + string type = 0 + any describes = 0 + uriorcurie id = 0 + string name = 0 + } +message StudyResult + { + string type = 0 + any describes = 0 + uriorcurie id = 0 + string name = 0 + studyHypothesis hypothesis = 0 + string result = 0 + } +message SubjectHistory + { + string type = 0 + physicalEntity subject = 0 + repeated event events = 0 + temporalInterval overInterval = 0 + } +message SubjectObservationHistory + { + string type = 0 + physicalEntity subject = 0 + repeated event events = 0 + temporalInterval overInterval = 0 + repeated observation observations = 0 + repeated measurement measurements = 0 + repeated observation interpretations = 0 + } // A period of time message TemporalInterval { @@ -1076,6 +1258,8 @@ message TemporalInterval message TemporalRelationship { string type = 0 + entity subject = 0 + entity object = 0 relativeTimeEnum predicate = 0 entity relativeTo = 0 } @@ -1109,6 +1293,15 @@ message Variable string type = 0 repeated unitConcept allowedUnits = 0 } +message VeterinaryAnimal + { + string type = 0 + repeated concept ontologyTypes = 0 + string description = 0 + uriorcurie id = 0 + string name = 0 + concept classification = 0 + } // A facility where fluid resources (e.g., oil, gas, water) are extracted from the earth message WellFacility { diff --git a/project/shacl/linkml_common.shacl.ttl b/project/shacl/linkml_common.shacl.ttl index 3c12182..7543e6f 100644 --- a/project/shacl/linkml_common.shacl.ttl +++ b/project/shacl/linkml_common.shacl.ttl @@ -11,17 +11,17 @@ sh:closed true ; sh:description "A quantity range is a property that can be measured or counted" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:type ], - [ sh:class ; + sh:property [ sh:class ; sh:description "The lower bound of the range" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml_common:lower_bound ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml_common:type ], [ sh:class ; sh:description "The upper bound of the range" ; sh:maxCount 1 ; @@ -35,28 +35,28 @@ sh:description "A tuple of two quantities" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class ; - sh:description "The numerator of the ratio" ; + sh:description "The denominator of the ratio" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:numerator ], + sh:order 1 ; + sh:path linkml_common:denominator ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:type ], + [ sh:class ; + sh:description "The numerator of the ratio" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:numerator ], [ sh:class linkml_common:QuantityKind ; sh:description "The kind of quantity" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path linkml_common:has_quantity_kind ], - [ sh:class ; - sh:description "The denominator of the ratio" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:denominator ] ; + sh:path linkml_common:has_quantity_kind ] ; sh:targetClass . schema1:Intangible a sh:NodeShape ; @@ -91,87 +91,141 @@ schema1:StructuredValue a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass schema1:StructuredValue . +linkml_common:Agent a sh:NodeShape ; + sh:closed false ; + sh:description "Represents an Agent" ; + sh:ignoredProperties ( rdf:type ) ; + sh:targetClass linkml_common:Agent . + linkml_common:AggregatePrediction a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:description "Precision is calculated as TP / (TP + FP)" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:precision ], - [ sh:class linkml_common:Variable ; + sh:order 11 ; + sh:path linkml_common:type ], + [ sh:description "Total number of false positives (FP)" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:variable_predicted ], - [ sh:description "Total number of false negatives (FN)" ; + sh:order 1 ; + sh:path linkml_common:false_positive_count ], + [ sh:datatype xsd:float ; + sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:false_negative_count ], + sh:order 7 ; + sh:path linkml_common:accuracy ], [ sh:datatype xsd:float ; - sh:description "Recall is calculated as TP / (TP + FN)" ; + sh:description "F1 Score is the harmonic mean of precision and recall" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:recall ], + sh:order 6 ; + sh:path linkml_common:f1_score ], [ sh:description "Total number of true negatives (TN)" ; sh:maxCount 1 ; sh:order 2 ; sh:path linkml_common:true_negative_count ], - [ sh:datatype xsd:float ; - sh:description "F1 Score is the harmonic mean of precision and recall" ; + [ sh:description "Total number of false negatives (FN)" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:f1_score ], + sh:order 3 ; + sh:path linkml_common:false_negative_count ], [ sh:class linkml:Any ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml_common:predicted_value ], - [ sh:class linkml:Any ; + [ sh:datatype xsd:float ; + sh:description "Precision is calculated as TP / (TP + FP)" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:precision ], + [ sh:class linkml_common:Variable ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml_common:expected_value ], + sh:order 8 ; + sh:path linkml_common:variable_predicted ], [ sh:description "Total number of true positives (TP)" ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:true_positive_count ], [ sh:datatype xsd:float ; - sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path linkml_common:accuracy ], - [ sh:description "Total number of false positives (FP)" ; + sh:description "Recall is calculated as TP / (TP + FN)" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:false_positive_count ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:order 4 ; + sh:path linkml_common:recall ], + [ sh:class linkml:Any ; sh:maxCount 1 ; - sh:order 11 ; - sh:path linkml_common:type ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path linkml_common:expected_value ] ; sh:targetClass linkml_common:AggregatePrediction . -linkml_common:AutomatedAgent a sh:NodeShape ; +linkml_common:AstronomicalBody a sh:NodeShape ; sh:closed true ; - sh:description "Represents an Automated Agent" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:property [ sh:class linkml_common:GeoBoxLocation ; + sh:description "The bounding coordinates of the place" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:bounding_coordinates ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:GeoPointLocation ; + sh:description "The geolocation of the place" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:geolocation ], + [ sh:class schema1:PostalAddress ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:address ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:description ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; + sh:order 3 ; sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:ontology_types ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 3 ; + sh:order 6 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path schema1:name ] ; + sh:targetClass linkml_common:AstronomicalBody . + +linkml_common:AutomatedAgent a sh:NodeShape ; + sh:closed true ; + sh:description "Represents an Automated Agent" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; @@ -182,21 +236,22 @@ linkml_common:AutomatedAgent a sh:NodeShape ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ] ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:AutomatedAgent . linkml_common:BasicFoodType a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 0 ; @@ -205,34 +260,39 @@ linkml_common:BasicFoodType a sh:NodeShape ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 2 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:BasicFoodType . linkml_common:Building a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:type ], - [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:description ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:classification ], + sh:order 6 ; + sh:path linkml_common:type ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:located_at_place ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:classification ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -244,6 +304,7 @@ linkml_common:Building a sh:NodeShape ; sh:order 5 ; sh:path schema1:name ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:ontology_types ] ; @@ -252,20 +313,11 @@ linkml_common:Building a sh:NodeShape ; linkml_common:BuiltEnvironmentFeature a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 2 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:type ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; @@ -277,6 +329,16 @@ linkml_common:BuiltEnvironmentFeature a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -292,11 +354,11 @@ linkml_common:BuiltSystem a sh:NodeShape ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; @@ -313,26 +375,57 @@ linkml_common:BuiltSystem a sh:NodeShape ; sh:minCount 1 ; sh:order 3 ; sh:path schema1:identifier ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ] ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:BuiltSystem . +linkml_common:ClimateModel a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Climate ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:models ] ; + sh:targetClass linkml_common:ClimateModel . + linkml_common:ClinicalCohortEnrollment a sh:NodeShape ; sh:closed true ; sh:description "An event relating a patient to a clinical cohort" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 8 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:name ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:Patient ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:patient ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_duration ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:is_ongoing_as_of ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -343,42 +436,63 @@ linkml_common:ClinicalCohortEnrollment a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path linkml_common:happens_at ], - [ sh:class linkml_common:Duration ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_duration ], + sh:order 9 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 8 ; + sh:path schema1:identifier ], [ sh:class linkml_common:ClinicalCohort ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:cohort ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:Patient ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:patient ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 10 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TemporalInterval ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:ClinicalCohortEnrollment . + +linkml_common:ClinicalHistory a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path linkml_common:has_interval ] ; - sh:targetClass linkml_common:ClinicalCohortEnrollment . + sh:path linkml_common:over_interval ], + [ sh:class linkml_common:Observation ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:interpretations ], + [ sh:class linkml_common:Event ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:events ], + [ sh:class linkml_common:Person ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:subject ], + [ sh:class linkml_common:Measurement ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:measurements ], + [ sh:class linkml_common:Observation ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:observations ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:ClinicalHistory . linkml_common:CompositeFoodType a sh:NodeShape ; sh:closed true ; @@ -388,47 +502,52 @@ linkml_common:CompositeFoodType a sh:NodeShape ; sh:maxCount 1 ; sh:order 2 ; sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + 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 thing" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:path schema1:name ] ; + sh:targetClass linkml_common:CompositeFoodType . + +linkml_common:ComputationalModel a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:minCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path schema1:identifier ] ; - sh:targetClass linkml_common:CompositeFoodType . + sh:path linkml_common:models ] ; + sh:targetClass linkml_common:ComputationalModel . linkml_common:CreationMetadata a sh:NodeShape ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Agent ; + sh:property [ sh:class linkml_common:PhysicalEntity ; sh:description "A person or organization that contributed to the creation of the work" ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path dcterms:contributor ], - [ sh:datatype xsd:string ; - sh:description "A summary of the item" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:abstract ], - [ sh:class linkml_common:Agent ; - sh:description "A contact point for a person or organization" ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path schema1:contactPoint ], [ sh:datatype xsd:string ; sh:description "The title of the item" ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:title ], [ sh:datatype xsd:string ; - sh:description "Information about rights held in and over the item" ; + sh:description "A summary of the item" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:rights ], - [ sh:class linkml_common:Agent ; + sh:order 1 ; + sh:path linkml_common:abstract ], + [ sh:class linkml_common:PhysicalEntity ; sh:description "The person or organization who created the work" ; sh:nodeKind sh:IRI ; sh:order 3 ; @@ -436,29 +555,48 @@ linkml_common:CreationMetadata a sh:NodeShape ; [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe this item" ; sh:order 6 ; - sh:path schema1:keywords ] ; + sh:path schema1:keywords ], + [ sh:datatype xsd:string ; + sh:description "Information about rights held in and over the item" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml_common:rights ], + [ sh:class linkml_common:PhysicalEntity ; + sh:description "A contact point for a person or organization" ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path schema1:contactPoint ] ; sh:targetClass linkml_common:CreationMetadata . linkml_common:CreativeWork a sh:NodeShape ; sh:closed true ; sh:description "The most generic kind of creative work, including books, movies, photographs, software programs, etc." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Agent ; - sh:description "The person or organization who created the work" ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path dcterms:creator ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 11 ; sh:path schema1:name ], + [ sh:description "The person or organization who created the work" ; + sh:or ( [ sh:class linkml_common:Person ] [ sh:class linkml_common:Organization ] ) ; + sh:order 3 ; + sh:path dcterms:creator ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 10 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; - sh:description "A summary of the item" ; + sh:description "Information about rights held in and over the item" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:abstract ], - [ sh:class linkml_common:Agent ; + sh:order 2 ; + sh:path linkml_common:rights ], + [ sh:class linkml_common:PhysicalEntity ; sh:description "A contact point for a person or organization" ; sh:nodeKind sh:IRI ; sh:order 5 ; @@ -468,61 +606,41 @@ linkml_common:CreativeWork a sh:NodeShape ; sh:maxCount 1 ; sh:order 12 ; sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "Keywords or tags used to describe this item" ; - sh:order 6 ; - sh:path schema1:keywords ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 7 ; sh:path linkml_common:classification ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 10 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A summary of the item" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:description ], + sh:order 1 ; + sh:path linkml_common:abstract ], [ sh:datatype xsd:string ; - sh:description "Information about rights held in and over the item" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:rights ], + sh:description "Keywords or tags used to describe this item" ; + sh:order 6 ; + sh:path schema1:keywords ], + [ sh:description "A person or organization that contributed to the creation of the work" ; + sh:or ( [ sh:class linkml_common:Person ] [ sh:class linkml_common:Organization ] ) ; + sh:order 4 ; + sh:path dcterms:contributor ], [ sh:datatype xsd:string ; sh:description "The title of the item" ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:title ], - [ sh:class linkml_common:Agent ; - sh:description "A person or organization that contributed to the creation of the work" ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path dcterms:contributor ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:ontology_types ] ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path schema1:description ] ; sh:targetClass linkml_common:CreativeWork . linkml_common:DataGenerationFromSample a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:ends_at ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 10 ; @@ -530,48 +648,58 @@ linkml_common:DataGenerationFromSample a sh:NodeShape ; [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:PhysicalDevice ; + sh:order 9 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:name ], + [ sh:class linkml_common:Investigation ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:uses_physical_device ], + sh:order 1 ; + sh:path linkml_common:part_of ], [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 8 ; sh:path linkml_common:has_duration ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; - sh:order 12 ; - sh:path linkml_common:type ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:PhysicalDevice ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:uses_physical_device ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:starts_at ], + sh:order 6 ; + sh:path linkml_common:happens_at ], [ sh:class linkml_common:InvestigativeProtocol ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:follows_procedure ], - [ sh:class linkml_common:Investigation ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:part_of ], + sh:order 12 ; + sh:path linkml_common:type ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TemporalInterval ; + sh:order 5 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_interval ], + sh:order 4 ; + sh:path linkml_common:starts_at ], [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -589,21 +717,75 @@ linkml_common:DataStructure a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass linkml_common:DataStructure . -linkml_common:ElectricalGrid a sh:NodeShape ; +linkml_common:DigitalTwin a sh:NodeShape ; sh:closed true ; - sh:description "A network of electrical transmission lines" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:property [ sh:class schema1:Thing ; sh:maxCount 1 ; - sh:order 5 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:models ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:DigitalTwin . + +linkml_common:EconomicSystem a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class schema1:Place ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:economy_of_place ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:classification ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 6 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:PhysicalEntity ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:components ], + [ sh:class schema1:Thing ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:events ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 3 ; + sh:order 5 ; sh:path schema1:description ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:ontology_types ] ; + sh:targetClass linkml_common:EconomicSystem . + +linkml_common:ElectricalGrid a sh:NodeShape ; + sh:closed true ; + sh:description "A network of electrical transmission lines" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; @@ -614,19 +796,30 @@ linkml_common:ElectricalGrid a sh:NodeShape ; sh:maxCount 1 ; sh:order 6 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:ontology_types ], [ sh:description "A unique identifier for a thing" ; 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 thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:ontology_types ], [ sh:class linkml_common:PowerPlant ; sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path linkml_common:plants ] ; + sh:path linkml_common:plants ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path schema1:description ] ; sh:targetClass linkml_common:ElectricalGrid . linkml_common:EngineeringMaterialProcessing a sh:NodeShape ; @@ -635,33 +828,43 @@ linkml_common:EngineeringMaterialProcessing a sh:NodeShape ; sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:PhysicalDevice ; + sh:order 5 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:has_duration ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Procedure ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:uses_physical_device ], + sh:order 0 ; + sh:path linkml_common:follows_procedure ], [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml_common:has_interval ], - [ sh:class linkml_common:Procedure ; + [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:uses_configuration ], + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:order 11 ; - sh:path linkml_common:type ], + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], + sh:order 3 ; + sh:path linkml_common:starts_at ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -680,45 +883,57 @@ linkml_common:EngineeringMaterialProcessing a sh:NodeShape ; [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:PlannedProcessConfiguration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:uses_configuration ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ] ; + sh:order 4 ; + sh:path linkml_common:ends_at ] ; sh:targetClass linkml_common:EngineeringMaterialProcessing . linkml_common:EntitySet a sh:NodeShape ; sh:closed true ; sh:description "A group of things. The collection may be heterogeneous or homogeneous." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:type ], - [ sh:class schema1:Thing ; + sh:property [ sh:class schema1:Thing ; sh:description "The members of the collection" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:members ] ; + sh:path linkml_common:members ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:EntitySet . linkml_common:EnvironmentalSite a sh:NodeShape ; sh:closed true ; sh:description "A location or site that is the subject of environmental monitoring" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class schema1:PostalAddress ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path schema1:name ], + [ sh:class schema1:PostalAddress ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml_common:address ], + [ sh:class linkml_common:GeoBoxLocation ; + sh:description "The bounding coordinates of the place" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:bounding_coordinates ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; @@ -730,61 +945,85 @@ linkml_common:EnvironmentalSite a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path linkml_common:geolocation ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:ontology_types ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 6 ; - sh:path schema1:identifier ], + sh:path schema1:identifier ] ; + sh:targetClass linkml_common:EnvironmentalSite . + +linkml_common:EnvironmentalSystem a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:PhysicalEntity ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:components ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:name ], + [ sh:class schema1:Thing ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:events ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; + sh:order 2 ; sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 7 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml_common:ontology_types ], - [ sh:class linkml_common:GeoBoxLocation ; - sh:description "The bounding coordinates of the place" ; + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:bounding_coordinates ] ; - sh:targetClass linkml_common:EnvironmentalSite . + sh:minCount 1 ; + sh:order 5 ; + sh:path schema1:identifier ] ; + sh:targetClass linkml_common:EnvironmentalSystem . linkml_common:Equipment a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], + sh:order 4 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:ontology_types ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; @@ -792,50 +1031,40 @@ linkml_common:Equipment a sh:NodeShape ; sh:order 0 ; sh:path linkml_common:classification ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ] ; + sh:order 2 ; + sh:path schema1:description ] ; sh:targetClass linkml_common:Equipment . linkml_common:ExecutionOfProcedure a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:TimePoint ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:order 1 ; + sh:path linkml_common:ends_at ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path schema1:name ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:ends_at ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 6 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:happens_at ], + sh:order 5 ; + sh:path linkml_common:is_ongoing_as_of ], [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -845,33 +1074,33 @@ linkml_common:ExecutionOfProcedure a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; - sh:path linkml_common:has_interval ] ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:happens_at ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:ExecutionOfProcedure . linkml_common:ExtractiveIndustryEquipment a sh:NodeShape ; sh:closed true ; sh:description "The equipment used in extractive industry operations" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:type ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ], + sh:order 4 ; + sh:path schema1:name ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; @@ -879,95 +1108,107 @@ linkml_common:ExtractiveIndustryEquipment a sh:NodeShape ; sh:order 0 ; sh:path linkml_common:classification ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path linkml_common:ontology_types ] ; + sh:path linkml_common:ontology_types ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:description ] ; sh:targetClass linkml_common:ExtractiveIndustryEquipment . linkml_common:ExtractiveIndustryFacility a sh:NodeShape ; sh:closed true ; sh:description "A facility where natural resources are extracted from the earth" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:facility_type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:description ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:ontology_types ], + sh:order 11 ; + sh:path schema1:name ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; sh:path linkml_common:reserves ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 10 ; + sh:path schema1:identifier ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:annual_production ], + [ sh:class linkml_common:ExtractiveIndustryProduct ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:products ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path schema1:description ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:production_capacity ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path linkml_common:ontology_types ], [ sh:class linkml_common:Organization ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:operator ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 10 ; - sh:path schema1:identifier ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml_common:located_at_place ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 7 ; sh:path linkml_common:classification ], - [ sh:class linkml_common:ExtractiveIndustryProduct ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:products ], - [ sh:class ; + [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:annual_production ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path linkml_common:located_at_place ], + [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; sh:maxCount 1 ; - sh:order 12 ; - sh:path linkml_common:type ] ; + sh:order 0 ; + sh:path linkml_common:facility_type ] ; sh:targetClass linkml_common:ExtractiveIndustryFacility . linkml_common:ExtractiveIndustryWaste a sh:NodeShape ; sh:closed true ; sh:description "Waste material generated from extractive industry operations" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:description "A unique identifier for a thing" ; 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 thing" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; @@ -979,16 +1220,6 @@ linkml_common:Facility a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 6 ; @@ -998,50 +1229,61 @@ linkml_common:Facility a sh:NodeShape ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path schema1:description ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:located_at_place ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:ontology_types ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path linkml_common:classification ] ; + sh:path linkml_common:classification ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:Facility . linkml_common:FinancialAccount a sh:NodeShape ; sh:closed true ; sh:description "A bank account" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "The account number" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:account_number ], - [ sh:class linkml_common:Person ; + sh:property [ sh:class linkml_common:Person ; sh:description "The person or organization that holds the account" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:account_holder ], + [ sh:class linkml_common:Organization ; + sh:description "The bank that holds the account" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:bank ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Organization ; - sh:description "The bank that holds the account" ; + [ sh:datatype xsd:string ; + sh:description "The account number" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:bank ] ; + sh:order 0 ; + sh:path linkml_common:account_number ] ; sh:targetClass linkml_common:FinancialAccount . linkml_common:FinancialOrganization a sh:NodeShape ; @@ -1049,19 +1291,15 @@ linkml_common:FinancialOrganization a sh:NodeShape ; sh:description "An organization that provides financial services" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:ontology_types ], - [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; + sh:order 2 ; sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 6 ; + sh:order 7 ; sh:path linkml_common:type ], [ sh:class linkml_common:Service ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -1070,17 +1308,26 @@ linkml_common:FinancialOrganization a sh:NodeShape ; [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 3 ; + sh:order 4 ; sh:path schema1:description ], + [ sh:class linkml_common:PersonInRole ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:has_person_roles ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 4 ; + sh:order 5 ; sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 6 ; sh:path schema1:name ] ; sh:targetClass linkml_common:FinancialOrganization . @@ -1095,91 +1342,115 @@ linkml_common:FinancialProduct a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass linkml_common:FinancialProduct . -linkml_common:FoodRecipe a sh:NodeShape ; +linkml_common:FoodPreparation a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 11 ; sh:path linkml_common:type ], - [ sh:class linkml_common:FoodProcessing ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:steps ], - [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path schema1:describes ], - [ sh:description "A unique identifier for a thing" ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:FoodIngredient ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:ingredients ] ; - sh:targetClass linkml_common:FoodRecipe . - -linkml_common:FoodTypeConcept a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:order 7 ; + sh:path linkml_common:has_duration ], + [ sh:class linkml_common:FoodRecipe ; sh:maxCount 1 ; - sh:minCount 1 ; + sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:path linkml_common:follows_procedure ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ] ; - sh:targetClass linkml_common:FoodTypeConcept . + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:PlannedProcessConfiguration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:uses_configuration ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:PhysicalDevice ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ] ; + sh:targetClass linkml_common:FoodPreparation . -linkml_common:FossilFuelPlant a sh:NodeShape ; +linkml_common:FoodTypeConcept a sh:NodeShape ; sh:closed true ; - sh:description "A power plant that uses fossil fuels" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:capacity ], - [ sh:in ( "COAL" "NATURAL_GAS" "PETROLEUM" ) ; + sh:order 1 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:fuel ], + sh:order 2 ; + sh:path linkml_common:type ], [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ] ; + sh:targetClass linkml_common:FoodTypeConcept . + +linkml_common:FossilFuelPlant a sh:NodeShape ; + sh:closed true ; + sh:description "A power plant that uses fossil fuels" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 13 ; sh:path schema1:identifier ], + [ sh:class linkml_common:Organization ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:operator ], [ sh:class schema1:Place ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:location ], - [ sh:datatype xsd:date ; + [ sh:class ; sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:decommissioning_date ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path linkml_common:ontology_types ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:capacity ], [ sh:class ; sh:description "Operating expense for the plant" ; sh:maxCount 1 ; @@ -1187,62 +1458,90 @@ linkml_common:FossilFuelPlant a sh:NodeShape ; sh:order 8 ; sh:path linkml_common:opex ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path schema1:description ], - [ sh:class linkml_common:PowerPlantType ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:plant_type ], + sh:order 14 ; + sh:path schema1:name ], [ sh:class ; sh:description "Capital expenditure for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path linkml_common:capex ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml_common:classification ], + sh:order 12 ; + sh:path schema1:description ], + [ sh:in ( "COAL" "NATURAL_GAS" "PETROLEUM" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:fuel ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 15 ; sh:path linkml_common:type ], + [ sh:datatype xsd:date ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:commissioning_date ], + [ sh:class linkml_common:PowerPlantType ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:plant_type ], + [ sh:datatype xsd:date ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path linkml_common:decommissioning_date ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 9 ; sh:path linkml_common:located_at_place ], - [ sh:class linkml_common:Organization ; + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:operator ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], - [ sh:datatype xsd:date ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:commissioning_date ] ; + sh:order 10 ; + sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 11 ; + sh:path linkml_common:ontology_types ] ; sh:targetClass linkml_common:FossilFuelPlant . linkml_common:HealthcareConditionOccurrence a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:HealthcareEncounter ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:observed_during ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:Patient ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:patient ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_duration ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 8 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; @@ -1258,41 +1557,21 @@ linkml_common:HealthcareConditionOccurrence a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:HealthcareEncounter ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:observed_during ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:ends_at ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_duration ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Patient ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:patient ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:happens_at ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 8 ; - sh:path schema1:identifier ] ; + sh:order 7 ; + sh:path linkml_common:is_ongoing_as_of ] ; sh:targetClass linkml_common:HealthcareConditionOccurrence . linkml_common:HealthcareOrganization a sh:NodeShape ; @@ -1300,84 +1579,86 @@ linkml_common:HealthcareOrganization a sh:NodeShape ; sh:description "An organization that provides healthcare services" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:PersonInRole ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:has_person_roles ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 3 ; + sh:order 4 ; sh:path schema1:description ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:classification ], - [ sh:class linkml_common:Concept ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path linkml_common:ontology_types ], + sh:path linkml_common:classification ], + [ sh:class linkml_common:Service ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:provides_services ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 6 ; sh:path schema1:name ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 4 ; + sh:order 5 ; sh:path schema1:identifier ], - [ sh:class linkml_common:Service ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:provides_services ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:type ] ; + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:ontology_types ] ; sh:targetClass linkml_common:HealthcareOrganization . linkml_common:HealthcareRole a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Person ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:is_person ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 1 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Person ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:is_person ] ; sh:targetClass linkml_common:HealthcareRole . linkml_common:HydroelectricPlant a sh:NodeShape ; sh:closed true ; sh:description "A hydroelectric power plant" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; + sh:property [ sh:datatype xsd:date ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:capacity ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 13 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:PowerPlantType ; + sh:order 5 ; + sh:path linkml_common:commissioning_date ], + [ sh:class linkml_common:Landform ; + sh:description "The dam used by the hydroelectric plant" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:plant_type ], + sh:order 0 ; + sh:path linkml_common:dam ], [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path linkml_common:ontology_types ], + sh:order 10 ; + sh:path linkml_common:classification ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 13 ; + sh:path schema1:identifier ], [ sh:class ; sh:description "Operating expense for the plant" ; sh:maxCount 1 ; @@ -1386,81 +1667,85 @@ linkml_common:HydroelectricPlant a sh:NodeShape ; sh:path linkml_common:opex ], [ sh:datatype xsd:date ; sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:commissioning_date ], - [ sh:class linkml_common:Organization ; + sh:order 6 ; + sh:path linkml_common:decommissioning_date ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:capacity ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path schema1:description ], + [ sh:class linkml_common:PowerPlantType ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:operator ], - [ sh:datatype xsd:date ; + sh:order 1 ; + sh:path linkml_common:plant_type ], + [ sh:class schema1:Place ; sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:decommissioning_date ], + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:location ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 9 ; sh:path linkml_common:located_at_place ], - [ sh:class linkml_common:Landform ; - sh:description "The dam used by the hydroelectric plant" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:dam ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], + sh:order 15 ; + sh:path linkml_common:type ], [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; - sh:maxCount 1 ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml_common:classification ], + sh:order 11 ; + sh:path linkml_common:ontology_types ], [ sh:class ; sh:description "Capital expenditure for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path linkml_common:capex ], - [ sh:class schema1:Place ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:location ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 12 ; - sh:path schema1:description ] ; + sh:order 14 ; + sh:path schema1:name ], + [ sh:class linkml_common:Organization ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:operator ] ; sh:targetClass linkml_common:HydroelectricPlant . linkml_common:Identified a sh:NodeShape ; sh:closed false ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ] ; + sh:path schema1:name ] ; sh:targetClass linkml_common:Identified . linkml_common:InformationEntity a sh:NodeShape ; sh:closed true ; sh:description "An entity that describes some information" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path schema1:identifier ], + sh:order 2 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; @@ -1472,91 +1757,106 @@ linkml_common:InformationEntity a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path schema1:describes ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ] ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:InformationEntity . linkml_common:InvestigativeProcess a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Investigation ; + sh:property [ sh:class linkml_common:Duration ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:part_of ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml_common:has_duration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml_common:happens_at ], - [ sh:class linkml_common:PlannedProcessConfiguration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:uses_configuration ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:name ], - [ sh:class linkml_common:InvestigativeProtocol ; + [ sh:class linkml_common:Investigation ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:ends_at ], + sh:order 1 ; + sh:path linkml_common:part_of ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:Duration ; + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:has_duration ], + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:uses_physical_device ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 10 ; sh:path schema1:identifier ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:PlannedProcessConfiguration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:uses_configuration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:PhysicalDevice ; + [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:uses_physical_device ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:has_interval ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 12 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:class linkml_common:InvestigativeProtocol ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ] ; sh:targetClass linkml_common:InvestigativeProcess . linkml_common:LifeEvent a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; + sh:property [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:order 4 ; + sh:path linkml_common:has_duration ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:has_interval ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -1567,36 +1867,21 @@ linkml_common:LifeEvent a sh:NodeShape ; sh:maxCount 1 ; sh:order 7 ; sh:path schema1:name ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:is_ongoing_as_of ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 6 ; sh:path schema1:identifier ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:has_duration ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml_common:type ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:starts_at ] ; + sh:path linkml_common:happens_at ] ; sh:targetClass linkml_common:LifeEvent . linkml_common:Location a sh:NodeShape ; @@ -1612,37 +1897,32 @@ linkml_common:Location a sh:NodeShape ; linkml_common:MaterialCollection a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Procedure ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:uses_configuration ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:Procedure ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ], + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 9 ; sh:path schema1:identifier ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:Duration ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; @@ -1652,46 +1932,46 @@ linkml_common:MaterialCollection a sh:NodeShape ; sh:maxCount 1 ; sh:order 10 ; sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:TemporalInterval ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 11 ; sh:path linkml_common:type ], - [ sh:class linkml_common:PhysicalDevice ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:uses_physical_device ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:ends_at ] ; sh:targetClass linkml_common:MaterialCollection . linkml_common:MaterialProcessing a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; + sh:property [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TemporalInterval ; + sh:order 2 ; + sh:path linkml_common:uses_configuration ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:PhysicalDevice ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:uses_physical_device ], + sh:order 3 ; + sh:path linkml_common:starts_at ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; @@ -1700,116 +1980,49 @@ linkml_common:MaterialProcessing a sh:NodeShape ; [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], + sh:order 5 ; + sh:path linkml_common:happens_at ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 10 ; sh:path schema1:name ], - [ sh:class linkml_common:PlannedProcessConfiguration ; + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:uses_configuration ], + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ sh:class linkml_common:Procedure ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:follows_procedure ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ] ; - sh:targetClass linkml_common:MaterialProcessing . - -linkml_common:Measurement a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 10 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:TimePoint ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; - sh:path linkml_common:happens_at ], - [ sh:class schema1:Thing ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:observation_subject ], - [ sh:class ; - sh:description "The quantity being measured" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:quantity_measured ], + sh:path linkml_common:has_interval ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:has_duration ], - [ sh:class linkml_common:Variable ; - sh:description "The variable being measured" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:variable_measured ], + sh:order 4 ; + sh:path linkml_common:ends_at ], [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:measured_using ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:TemporalInterval ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:starts_at ] ; - sh:targetClass linkml_common:Measurement . + sh:path linkml_common:has_duration ] ; + sh:targetClass linkml_common:MaterialProcessing . linkml_common:MiningFacility a sh:NodeShape ; sh:closed true ; @@ -1818,102 +2031,114 @@ linkml_common:MiningFacility a sh:NodeShape ; sh:property [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:depth ], - [ sh:class ; + sh:order 8 ; + sh:path linkml_common:reserves ], + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:production_capacity ], + sh:minCount 1 ; + sh:order 13 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 11 ; + sh:path linkml_common:ontology_types ], [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:facility_type ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + [ sh:class ; sh:maxCount 1 ; - sh:order 12 ; - sh:path schema1:description ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:production_capacity ], [ sh:class linkml_common:Organization ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path linkml_common:operator ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; - sh:maxCount 1 ; + [ sh:class linkml_common:ExtractiveIndustryProduct ; sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml_common:classification ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; + sh:order 5 ; + sh:path linkml_common:products ], + [ sh:class ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:located_at_place ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:area ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 14 ; sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 13 ; - sh:path schema1:identifier ], - [ sh:class ; + [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:area ], + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path linkml_common:located_at_place ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:annual_production ], - [ sh:class ; + sh:order 1 ; + sh:path linkml_common:depth ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:reserves ], - [ sh:class linkml_common:ExtractiveIndustryProduct ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml_common:products ], + sh:order 12 ; + sh:path schema1:description ], [ sh:in ( "UNDERGROUND" "OPEN_PIT" "PLACER" "IN_SITU" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:mining_method ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path linkml_common:type ], [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 11 ; - sh:path linkml_common:ontology_types ] ; + sh:order 10 ; + sh:path linkml_common:classification ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:annual_production ] ; sh:targetClass linkml_common:MiningFacility . +linkml_common:Model a sh:NodeShape ; + sh:closed false ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:models ] ; + sh:targetClass linkml_common:Model . + linkml_common:NuclearPlant a sh:NodeShape ; sh:closed true ; sh:description "A nuclear power plant" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], - [ sh:class linkml_common:PowerPlantType ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:plant_type ], - [ sh:class ; + sh:property [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:capacity ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], + [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path linkml_common:located_at_place ], [ sh:class ; sh:description "Operating expense for the plant" ; sh:maxCount 1 ; @@ -1921,24 +2146,31 @@ linkml_common:NuclearPlant a sh:NodeShape ; sh:order 7 ; sh:path linkml_common:opex ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 10 ; sh:path linkml_common:ontology_types ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + [ sh:class schema1:Place ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:classification ], - [ sh:datatype xsd:date ; + sh:order 1 ; + sh:path linkml_common:location ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:decommissioning_date ], + sh:order 13 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:description ], + [ sh:class ; + sh:description "Capital expenditure for the plant" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:capex ], [ sh:class linkml_common:Organization ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; @@ -1948,101 +2180,63 @@ linkml_common:NuclearPlant a sh:NodeShape ; sh:maxCount 1 ; sh:order 4 ; sh:path linkml_common:commissioning_date ], - [ sh:class schema1:Place ; + [ sh:class linkml_common:PowerPlantType ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:location ], + sh:order 0 ; + sh:path linkml_common:plant_type ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 14 ; sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:located_at_place ], - [ sh:class ; - sh:description "Capital expenditure for the plant" ; + sh:order 9 ; + sh:path linkml_common:classification ], + [ sh:datatype xsd:date ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:capex ] ; + sh:order 5 ; + sh:path linkml_common:decommissioning_date ] ; sh:targetClass linkml_common:NuclearPlant . -linkml_common:Observation a sh:NodeShape ; +linkml_common:OrgChart a sh:NodeShape ; sh:closed true ; - sh:description "A statement about the state of something" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:TimePoint ; + sh:property [ sh:class linkml_common:OrganizationPersonnelRelationship ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:PhysicalDevice ; + sh:order 1 ; + sh:path linkml_common:relationships ], + [ sh:class linkml_common:Organization ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:measured_using ], - [ sh:class schema1:Thing ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:observation_subject ], - [ sh:class linkml_common:Variable ; - sh:description "The variable being measured" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:variable_measured ], + sh:path linkml_common:for_organization ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 10 ; + sh:order 4 ; sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 11 ; + sh:order 5 ; sh:path linkml_common:type ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:Duration ; + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ], - [ sh:class linkml_common:TimePoint ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ] ; - sh:targetClass linkml_common:Observation . + sh:order 2 ; + sh:path schema1:describes ] ; + sh:targetClass linkml_common:OrgChart . linkml_common:OutcomeStatistics a sh:NodeShape ; sh:closed false ; @@ -2052,20 +2246,20 @@ linkml_common:OutcomeStatistics a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:true_positive_count ], - [ sh:description "Total number of false positives (FP)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:false_positive_count ], [ sh:datatype xsd:float ; sh:description "Recall is calculated as TP / (TP + FN)" ; sh:maxCount 1 ; sh:order 4 ; sh:path linkml_common:recall ], [ sh:datatype xsd:float ; - sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; + sh:description "F1 Score is the harmonic mean of precision and recall" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path linkml_common:accuracy ], + sh:order 6 ; + sh:path linkml_common:f1_score ], + [ sh:description "Total number of false positives (FP)" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:false_positive_count ], [ sh:description "Total number of false negatives (FN)" ; sh:maxCount 1 ; sh:order 3 ; @@ -2075,10 +2269,10 @@ linkml_common:OutcomeStatistics a sh:NodeShape ; sh:order 2 ; sh:path linkml_common:true_negative_count ], [ sh:datatype xsd:float ; - sh:description "F1 Score is the harmonic mean of precision and recall" ; + sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path linkml_common:f1_score ], + sh:order 7 ; + sh:path linkml_common:accuracy ], [ sh:datatype xsd:float ; sh:description "Precision is calculated as TP / (TP + FP)" ; sh:maxCount 1 ; @@ -2086,60 +2280,89 @@ linkml_common:OutcomeStatistics a sh:NodeShape ; sh:path linkml_common:precision ] ; sh:targetClass linkml_common:OutcomeStatistics . -linkml_common:PlannedProcess a sh:NodeShape ; +linkml_common:PhysicalSystem a sh:NodeShape ; sh:closed true ; - sh:description "A process that follows a defined procedure or plan" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; + sh:property [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], + [ sh:class schema1:Thing ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:Procedure ; + sh:order 1 ; + sh:path linkml_common:events ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:name ], + [ sh:class linkml_common:PhysicalEntity ; sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path linkml_common:follows_procedure ], + sh:path linkml_common:components ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 5 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:class linkml_common:Duration ; + sh:order 7 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:PhysicalSystem . + +linkml_common:PlannedProcess a sh:NodeShape ; + sh:closed true ; + sh:description "A process that follows a defined procedure or plan" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ], - [ sh:class linkml_common:TemporalInterval ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], + sh:order 2 ; + sh:path linkml_common:uses_configuration ], [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:uses_physical_device ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:PlannedProcessConfiguration ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:uses_configuration ], + sh:order 7 ; + sh:path linkml_common:has_duration ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 11 ; sh:path linkml_common:type ], + [ sh:class linkml_common:Procedure ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], + sh:order 3 ; + sh:path linkml_common:starts_at ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -2149,7 +2372,22 @@ linkml_common:PlannedProcess a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path linkml_common:happens_at ] ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:ends_at ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:PlannedProcess . linkml_common:PointLocation a sh:NodeShape ; @@ -2166,62 +2404,72 @@ linkml_common:PredictionSummaryStatistics a sh:NodeShape ; sh:closed true ; sh:description "A class for collecting totals of various outcomes." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Total number of true positives (TP)" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:true_positive_count ], - [ sh:class linkml_common:Prediction ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:predictions ], - [ sh:datatype xsd:float ; - sh:description "Precision is calculated as TP / (TP + FP)" ; + sh:property [ sh:datatype xsd:float ; + sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path linkml_common:precision ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path linkml_common:type ], + sh:order 9 ; + sh:path linkml_common:accuracy ], [ sh:description "Total number of false negatives (FN)" ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:false_negative_count ], - [ sh:description "Total number of false positives (FP)" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:false_positive_count ], - [ sh:description "Total number of true negatives (TN)" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:true_negative_count ], [ sh:datatype xsd:float ; sh:description "Recall is calculated as TP / (TP + FN)" ; sh:maxCount 1 ; sh:order 6 ; sh:path linkml_common:recall ], [ sh:datatype xsd:float ; - sh:description "F1 Score is the harmonic mean of precision and recall" ; + sh:description "Precision is calculated as TP / (TP + FP)" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml_common:f1_score ], + sh:order 7 ; + sh:path linkml_common:precision ], + [ sh:class linkml_common:Prediction ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:predictions ], [ sh:class linkml_common:Dataset ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:uses_dataset ], + [ sh:description "Total number of true positives (TP)" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml_common:true_positive_count ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path linkml_common:type ], [ sh:datatype xsd:float ; - sh:description "Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN)" ; + sh:description "F1 Score is the harmonic mean of precision and recall" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path linkml_common:accuracy ] ; + sh:order 8 ; + sh:path linkml_common:f1_score ], + [ sh:description "Total number of true negatives (TN)" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:true_negative_count ], + [ sh:description "Total number of false positives (FP)" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:false_positive_count ] ; sh:targetClass linkml_common:PredictionSummaryStatistics . linkml_common:Publication a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; @@ -2231,188 +2479,180 @@ linkml_common:Publication a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path schema1:describes ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ] ; + sh:path schema1:describes ] ; sh:targetClass linkml_common:Publication . linkml_common:QualitativeObservation a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:PhysicalDevice ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:measured_using ], - [ sh:class linkml_common:TimePoint ; + [ sh:class schema1:Thing ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], + sh:order 0 ; + sh:path linkml_common:observation_subject ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:ends_at ], + sh:order 5 ; + sh:path linkml_common:happens_at ], [ sh:class linkml_common:Variable ; sh:description "The variable being measured" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path linkml_common:variable_measured ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TimePoint ; + sh:order 7 ; + sh:path linkml_common:has_duration ], + [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], + sh:order 6 ; + sh:path linkml_common:has_interval ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 11 ; sh:path linkml_common:type ], - [ sh:class schema1:Thing ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:observation_subject ], - [ sh:class linkml_common:Duration ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ], + sh:order 3 ; + sh:path linkml_common:starts_at ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 10 ; sh:path schema1:name ], - [ sh:class linkml_common:TemporalInterval ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ] ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:ends_at ] ; sh:targetClass linkml_common:QualitativeObservation . linkml_common:QuarryFacility a sh:NodeShape ; sh:closed true ; sh:description "A facility where stone, sand, or gravel are extracted from the earth" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:ontology_types ], + sh:property [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:reserves ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 9 ; sh:path schema1:description ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 6 ; - sh:path linkml_common:located_at_place ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:name ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 10 ; sh:path schema1:identifier ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:annual_production ], + [ sh:class linkml_common:Organization ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:operator ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 7 ; sh:path linkml_common:classification ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path linkml_common:type ], [ sh:class linkml_common:ExtractiveIndustryProduct ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:products ], - [ sh:class linkml_common:Organization ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:operator ], + sh:order 11 ; + sh:path schema1:name ], [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:facility_type ], - [ sh:class ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:annual_production ], - [ sh:class ; + sh:order 12 ; + sh:path linkml_common:type ], + [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:production_capacity ], + sh:nodeKind sh:IRI ; + sh:order 6 ; + sh:path linkml_common:located_at_place ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path linkml_common:ontology_types ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:reserves ] ; + sh:order 3 ; + sh:path linkml_common:production_capacity ] ; sh:targetClass linkml_common:QuarryFacility . linkml_common:RawMaterial a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 2 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 3 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:classification ] ; + sh:order 4 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:RawMaterial . linkml_common:Relationship a sh:NodeShape ; @@ -2421,40 +2661,52 @@ linkml_common:Relationship a sh:NodeShape ; sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:type ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:object ], + [ sh:class linkml_common:Concept ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:predicate ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:subject ] ; sh:targetClass linkml_common:Relationship . linkml_common:RenewablePlant a sh:NodeShape ; sh:closed true ; sh:description "A power plant that uses renewable energy sources" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], - [ sh:class ; + sh:property [ sh:class ; + sh:description "Capital expenditure for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:capacity ], - [ sh:class ; - sh:description "Operating expense for the plant" ; + sh:order 6 ; + sh:path linkml_common:capex ], + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:opex ], - [ sh:datatype xsd:date ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], + [ sh:class schema1:Place ; sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:commissioning_date ], + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:location ], + [ sh:class linkml_common:Organization ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:operator ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 10 ; sh:path linkml_common:ontology_types ], @@ -2469,102 +2721,96 @@ linkml_common:RenewablePlant a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 8 ; sh:path linkml_common:located_at_place ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + [ sh:datatype xsd:date ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:classification ], + sh:order 5 ; + sh:path linkml_common:decommissioning_date ], + [ sh:datatype xsd:date ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:commissioning_date ], [ sh:class ; - sh:description "Capital expenditure for the plant" ; + sh:description "Operating expense for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:capex ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ sh:class schema1:Place ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:location ], - [ sh:class linkml_common:Organization ; + sh:order 7 ; + sh:path linkml_common:opex ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:operator ], - [ sh:datatype xsd:date ; + sh:order 13 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:decommissioning_date ], + sh:order 11 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 14 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path linkml_common:classification ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:capacity ] ; sh:targetClass linkml_common:RenewablePlant . linkml_common:SampleCollectionProcess a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:PhysicalDevice ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml_common:uses_physical_device ], - [ sh:class linkml_common:NamedThing ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:collected_from ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:ends_at ], [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; sh:path linkml_common:uses_configuration ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Duration ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path linkml_common:has_duration ], + sh:order 6 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:PhysicalEntity ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:collected_from ], [ sh:class linkml_common:InvestigativeProtocol ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:follows_procedure ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path linkml_common:type ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 12 ; sh:path schema1:identifier ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:Investigation ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:part_of ], [ sh:class linkml_common:SampleMaterial ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; @@ -2575,83 +2821,113 @@ linkml_common:SampleCollectionProcess a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:TimePoint ; + sh:order 13 ; + sh:path schema1:name ], + [ sh:class linkml_common:PhysicalDevice ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:Investigation ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:part_of ], + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:happens_at ] ; + sh:order 10 ; + sh:path linkml_common:has_duration ] ; sh:targetClass linkml_common:SampleCollectionProcess . linkml_common:SampleProcessing a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:PlannedProcessConfiguration ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:uses_configuration ], - [ sh:class linkml_common:PhysicalDevice ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:Procedure ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:uses_physical_device ], - [ sh:class linkml_common:TimePoint ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ], + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 11 ; sh:path linkml_common:type ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; sh:path linkml_common:happens_at ], - [ sh:class linkml_common:Procedure ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path linkml_common:has_duration ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path schema1:name ], + [ sh:class linkml_common:PlannedProcessConfiguration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:uses_configuration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path linkml_common:ends_at ], - [ sh:class linkml_common:TemporalInterval ; + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], - [ sh:description "A unique identifier for a thing" ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:starts_at ] ; sh:targetClass linkml_common:SampleProcessing . +linkml_common:SetOfObservations a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:Observation ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:observations ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:observation_subject ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:SetOfObservations . + linkml_common:SimplePrediction a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; @@ -2659,38 +2935,47 @@ linkml_common:SimplePrediction a sh:NodeShape ; sh:or ( [ sh:datatype xsd:integer ] [ sh:datatype xsd:float ] [ sh:datatype xsd:string ] ) ; sh:order 1 ; sh:path linkml_common:expected_value ], + [ sh:in ( "TP" "FP" "TN" "FN" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:outcome ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:type ], [ sh:class linkml:Any ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:predicted_value ], - [ sh:in ( "TP" "FP" "TN" "FN" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:outcome ], [ sh:class linkml_common:Variable ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path linkml_common:variable_predicted ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:variable_predicted ] ; sh:targetClass linkml_common:SimplePrediction . -linkml_common:SolarPlant a sh:NodeShape ; +linkml_common:Simulation a sh:NodeShape ; sh:closed true ; - sh:description "A solar power plant" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:property [ sh:class schema1:Thing ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:classification ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:models ], [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:Simulation . + +linkml_common:SolarPlant a sh:NodeShape ; + sh:closed true ; + sh:description "A solar power plant" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 14 ; @@ -2705,61 +2990,68 @@ linkml_common:SolarPlant a sh:NodeShape ; sh:order 12 ; sh:path schema1:identifier ], [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path linkml_common:classification ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 10 ; sh:path linkml_common:ontology_types ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], - [ sh:class linkml_common:Organization ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:operator ], - [ sh:class ; - sh:description "Capital expenditure for the plant" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:capex ], [ sh:class linkml_common:PowerPlantType ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:plant_type ], + [ sh:datatype xsd:date ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:commissioning_date ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:capacity ], + [ sh:class ; + sh:description "Operating expense for the plant" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:opex ], [ sh:class schema1:Place ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path linkml_common:location ], - [ sh:datatype xsd:date ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:commissioning_date ], + sh:order 11 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 13 ; sh:path schema1:name ], - [ sh:class ; + [ sh:class ; + sh:description "Capital expenditure for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:capacity ], + sh:order 6 ; + sh:path linkml_common:capex ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 8 ; sh:path linkml_common:located_at_place ], - [ sh:class ; - sh:description "Operating expense for the plant" ; + [ sh:class linkml_common:Organization ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:opex ] ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:operator ] ; sh:targetClass linkml_common:SolarPlant . linkml_common:Specification a sh:NodeShape ; @@ -2777,49 +3069,90 @@ linkml_common:Specification a sh:NodeShape ; sh:minCount 1 ; sh:order 1 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:Specification . -linkml_common:StudyDesign a sh:NodeShape ; +linkml_common:SubjectHistory a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:class linkml_common:Event ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:events ], + [ sh:class linkml_common:PhysicalEntity ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:subject ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ], - [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; + [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path schema1:describes ], - [ sh:description "A unique identifier for a thing" ; + sh:order 2 ; + sh:path linkml_common:over_interval ] ; + sh:targetClass linkml_common:SubjectHistory . + +linkml_common:SubjectObservationHistory a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:PhysicalEntity ; sh:maxCount 1 ; sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:subject ], + [ sh:class linkml_common:Measurement ; + sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path schema1:identifier ] ; - sh:targetClass linkml_common:StudyDesign . + sh:path linkml_common:measurements ], + [ sh:class linkml_common:Event ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:events ], + [ sh:class linkml_common:Observation ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:interpretations ], + [ sh:class linkml_common:Observation ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:observations ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:over_interval ] ; + sh:targetClass linkml_common:SubjectObservationHistory . linkml_common:TemporalRelationship a sh:NodeShape ; sh:closed true ; sh:description "A relationship to another time point" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "The relationship between the two time points" ; + sh:property [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:subject ], + [ sh:description "The relationship between the two time points" ; sh:in ( "BEFORE" "AFTER" "AT_SAME_TIME_AS" ) ; sh:maxCount 1 ; sh:order 0 ; @@ -2827,12 +3160,17 @@ linkml_common:TemporalRelationship a sh:NodeShape ; [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 2 ; + sh:order 4 ; sh:path linkml_common:type ], [ sh:maxCount 1 ; sh:or ( [ sh:class linkml_common:TimePoint ] [ sh:class linkml_common:TemporalInterval ] [ sh:class linkml_common:Event ] ) ; sh:order 1 ; - sh:path linkml_common:relative_to ] ; + sh:path linkml_common:relative_to ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:object ] ; sh:targetClass linkml_common:TemporalRelationship . linkml_common:TimePointOrTemporalInterval a sh:NodeShape ; @@ -2865,53 +3203,50 @@ linkml_common:Typed a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass linkml_common:Typed . -linkml_common:WellFacility a sh:NodeShape ; +linkml_common:VeterinaryAnimal a sh:NodeShape ; sh:closed true ; - sh:description "A facility where fluid resources (e.g., oil, gas, water) are extracted from the earth" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:ExtractiveIndustryProduct ; - sh:nodeKind sh:IRI ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; sh:order 4 ; - sh:path linkml_common:products ], + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 11 ; + sh:order 2 ; sh:path schema1:description ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:located_at_place ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 14 ; + sh:order 5 ; sh:path linkml_common:type ], - [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:facility_type ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; - sh:order 10 ; + sh:order 1 ; sh:path linkml_common:ontology_types ], - [ sh:class ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:production_capacity ], - [ sh:class linkml_common:Organization ; + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:operator ], - [ sh:class ; + sh:order 0 ; + sh:path linkml_common:classification ] ; + sh:targetClass linkml_common:VeterinaryAnimal . + +linkml_common:WellFacility a sh:NodeShape ; + sh:closed true ; + sh:description "A facility where fluid resources (e.g., oil, gas, water) are extracted from the earth" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:in ( "MINING_FACILITY" "WELL_FACILITY" "QUARRY_FACILITY" ) ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:annual_production ], + sh:order 2 ; + sh:path linkml_common:facility_type ], [ sh:in ( "OIL" "GAS" "WATER" "INJECTION" ) ; sh:maxCount 1 ; sh:order 0 ; @@ -2919,8 +3254,12 @@ linkml_common:WellFacility a sh:NodeShape ; [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:reserves ], + sh:order 1 ; + sh:path linkml_common:depth ], + [ sh:class linkml_common:ExtractiveIndustryProduct ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:products ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; @@ -2932,31 +3271,25 @@ linkml_common:WellFacility a sh:NodeShape ; sh:order 12 ; sh:path schema1:identifier ], [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; - sh:maxCount 1 ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:classification ], + sh:order 10 ; + sh:path linkml_common:ontology_types ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:depth ] ; - sh:targetClass linkml_common:WellFacility . - -linkml_common:WindFarm a sh:NodeShape ; - sh:closed true ; - sh:description "A wind farm" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:order 7 ; + sh:path linkml_common:reserves ], + [ sh:class ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml_common:ontology_types ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:production_capacity ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:annual_production ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; @@ -2964,35 +3297,33 @@ linkml_common:WindFarm a sh:NodeShape ; sh:order 9 ; sh:path linkml_common:classification ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:datatype xsd:date ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:commissioning_date ], + sh:order 11 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 14 ; sh:path linkml_common:type ], - [ sh:class linkml_common:PowerPlantType ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:plant_type ], [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:location ], - [ sh:class ; + sh:order 8 ; + sh:path linkml_common:located_at_place ], + [ sh:class linkml_common:Organization ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; + sh:nodeKind sh:IRI ; sh:order 3 ; - sh:path linkml_common:capacity ], - [ sh:class ; + sh:path linkml_common:operator ] ; + sh:targetClass linkml_common:WellFacility . + +linkml_common:WindFarm a sh:NodeShape ; + sh:closed true ; + sh:description "A wind farm" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class ; sh:description "Operating expense for the plant" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3004,28 +3335,178 @@ linkml_common:WindFarm a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml_common:capex ], + [ sh:class linkml_common:Organization ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:operator ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 11 ; sh:path schema1:description ], + [ sh:datatype xsd:date ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:commissioning_date ], [ sh:class schema1:Place ; sh:description "The place where the entity is located" ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 8 ; sh:path linkml_common:located_at_place ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:PowerPlantType ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:plant_type ], [ sh:datatype xsd:date ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:decommissioning_date ], - [ sh:class linkml_common:Organization ; + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:operator ] ; + sh:order 9 ; + sh:path linkml_common:classification ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path schema1:name ], + [ sh:class schema1:Place ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:location ], + [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:capacity ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 10 ; + sh:path linkml_common:ontology_types ] ; sh:targetClass linkml_common:WindFarm . + a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:description ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:classification ] ; + sh:targetClass . + + a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:type ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:subject ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:object ], + [ sh:class linkml_common:Concept ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:predicate ] ; + sh:targetClass . + +linkml_common:Climate a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:ontology_types ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 5 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:classification ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path linkml_common:type ], + [ sh:class schema1:Thing ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:events ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], + [ sh:class linkml_common:PhysicalEntity ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:components ] ; + sh:targetClass linkml_common:Climate . + linkml_common:ClinicalCohort a sh:NodeShape ; sh:closed true ; sh:description "A group of patients who share a common set of characteristics" ; @@ -3035,12 +3516,8 @@ linkml_common:ClinicalCohort a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:definition ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:ontology_types ], @@ -3054,44 +3531,49 @@ linkml_common:ClinicalCohort a sh:NodeShape ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:description ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:classification ], + sh:order 5 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 6 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:classification ] ; sh:targetClass linkml_common:ClinicalCohort . linkml_common:ClinicalCohortDefinition a sh:NodeShape ; sh:closed true ; sh:description "A definition of a clinical cohort" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path schema1:describes ], + sh:order 2 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:type ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path schema1:describes ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ] ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:ClinicalCohortDefinition . linkml_common:CurrencyConcept a sh:NodeShape ; @@ -3119,109 +3601,99 @@ linkml_common:Dataset a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The title of the item" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:title ], - [ sh:class linkml_common:Investigation ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:collected_as_part_of ], - [ sh:datatype xsd:string ; sh:description "Information about rights held in and over the item" ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:rights ], - [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path schema1:describes ], [ sh:datatype xsd:string ; - sh:description "A summary of the item" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:abstract ], - [ sh:class linkml_common:Agent ; - sh:description "The person or organization who created the work" ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path dcterms:creator ], + sh:order 10 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "Keywords or tags used to describe this item" ; sh:order 7 ; sh:path schema1:keywords ], - [ sh:class linkml_common:Agent ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:PhysicalEntity ; sh:description "A person or organization that contributed to the creation of the work" ; sh:nodeKind sh:IRI ; sh:order 5 ; sh:path dcterms:contributor ], - [ sh:class linkml_common:Agent ; + [ sh:class linkml_common:Investigation ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:collected_as_part_of ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path schema1:describes ], + [ sh:class linkml_common:PhysicalEntity ; sh:description "A contact point for a person or organization" ; sh:nodeKind sh:IRI ; sh:order 6 ; sh:path schema1:contactPoint ], - [ sh:description "A unique identifier for a thing" ; + [ sh:datatype xsd:string ; + sh:description "A summary of the item" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], + sh:order 2 ; + sh:path linkml_common:abstract ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "The title of the item" ; sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path linkml_common:type ] ; + sh:order 1 ; + sh:path linkml_common:title ], + [ sh:class linkml_common:PhysicalEntity ; + sh:description "The person or organization who created the work" ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path dcterms:creator ] ; sh:targetClass linkml_common:Dataset . linkml_common:EngineeringProcess a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:class linkml_common:EngineeringProcess ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:part_of ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 10 ; sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 8 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:Duration ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_duration ], + sh:order 2 ; + sh:path linkml_common:starts_at ], [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; sh:path linkml_common:has_interval ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:ends_at ], - [ sh:class linkml_common:EngineeringSpecification ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], + sh:order 6 ; + sh:path linkml_common:has_duration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3230,13 +3702,23 @@ linkml_common:EngineeringProcess a sh:NodeShape ; [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:starts_at ], - [ sh:class linkml_common:EngineeringProcess ; + sh:order 4 ; + sh:path linkml_common:happens_at ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 8 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:EngineeringSpecification ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:part_of ] ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ] ; sh:targetClass linkml_common:EngineeringProcess . linkml_common:FoodIngredient a sh:NodeShape ; @@ -3258,41 +3740,31 @@ linkml_common:FoodIngredient a sh:NodeShape ; linkml_common:FoodProcessing a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Duration ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Procedure ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:follows_procedure ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:has_duration ], + sh:order 5 ; + sh:path linkml_common:happens_at ], [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:uses_configuration ], - [ sh:class linkml_common:PhysicalDevice ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:uses_physical_device ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 10 ; sh:path schema1:name ], - [ sh:class linkml_common:TimePoint ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_interval ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3303,67 +3775,96 @@ linkml_common:FoodProcessing a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:Procedure ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:follows_procedure ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:has_duration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:happens_at ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:order 8 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:order 11 ; - sh:path linkml_common:type ] ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:FoodProcessing . -linkml_common:HealthcareEncounter a sh:NodeShape ; +linkml_common:FoodRecipe a sh:NodeShape ; sh:closed true ; - sh:description "An interaction between a patient and one or more healthcare providers" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:HealthcareProvider ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; + sh:property [ sh:class linkml_common:FoodProcessing ; + sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path linkml_common:provider ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; + sh:path linkml_common:steps ], + [ sh:class linkml_common:FoodIngredient ; sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:ingredients ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; sh:order 5 ; - sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; + sh:path linkml_common:type ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path schema1:describes ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; sh:order 3 ; - sh:path linkml_common:ends_at ], + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ] ; + sh:targetClass linkml_common:FoodRecipe . + +linkml_common:HealthcareEncounter a sh:NodeShape ; + sh:closed true ; + sh:description "An interaction between a patient and one or more healthcare providers" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 8 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:Patient ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:patient ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:Duration ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_duration ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 9 ; sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 8 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:order 6 ; + sh:path linkml_common:has_duration ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3374,22 +3875,32 @@ linkml_common:HealthcareEncounter a sh:NodeShape ; sh:maxCount 1 ; sh:order 10 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Patient ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:patient ] ; + sh:order 3 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:HealthcareProvider ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:provider ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:has_interval ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:is_ongoing_as_of ] ; sh:targetClass linkml_common:HealthcareEncounter . linkml_common:HealthcareProvider a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; + sh:property [ sh:class linkml_common:Concept ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; @@ -3403,71 +3914,87 @@ linkml_common:HealthcareProvider a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path linkml_common:care_site ] ; + sh:path linkml_common:care_site ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:HealthcareProvider . linkml_common:HealthcareSite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path linkml_common:ontology_types ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path schema1:name ], - [ sh:class schema1:PostalAddress ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:address ], - [ sh:class linkml_common:GeoPointLocation ; - sh:description "The geolocation of the place" ; + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:geolocation ], + sh:minCount 1 ; + sh:order 6 ; + sh:path schema1:identifier ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path linkml_common:classification ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + [ sh:class schema1:PostalAddress ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], - [ sh:class linkml_common:GeoBoxLocation ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:address ], + [ sh:class linkml_common:GeoBoxLocation ; sh:description "The bounding coordinates of the place" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:bounding_coordinates ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 8 ; sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; + [ sh:class linkml_common:GeoPointLocation ; + sh:description "The geolocation of the place" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 6 ; - sh:path schema1:identifier ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:geolocation ] ; sh:targetClass linkml_common:HealthcareSite . linkml_common:Landform a sh:NodeShape ; sh:closed true ; sh:description "A natural feature of the solid surface of the Earth or other planetary body" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:property [ sh:class linkml_common:GeoBoxLocation ; + sh:description "The bounding coordinates of the place" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:bounding_coordinates ], + [ sh:class schema1:PostalAddress ; sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:address ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path linkml_common:classification ], + sh:order 4 ; + sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; @@ -3478,27 +4005,18 @@ linkml_common:Landform a sh:NodeShape ; sh:maxCount 1 ; sh:order 7 ; sh:path schema1:name ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml_common:ontology_types ], - [ sh:class linkml_common:GeoBoxLocation ; - sh:description "The bounding coordinates of the place" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:bounding_coordinates ], - [ sh:class schema1:PostalAddress ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:address ], [ sh:class linkml_common:GeoPointLocation ; sh:description "The geolocation of the place" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path linkml_common:geolocation ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; @@ -3511,55 +4029,58 @@ linkml_common:Landform a sh:NodeShape ; sh:path schema1:identifier ] ; sh:targetClass linkml_common:Landform . -linkml_common:NamedThing a sh:NodeShape ; +linkml_common:OrganizationPersonnelRelationship a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], + sh:order 0 ; + sh:path linkml_common:subject ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 3 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 2 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a thing" ; + sh:path linkml_common:object ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:order 1 ; + sh:path linkml_common:predicate ] ; + sh:targetClass linkml_common:OrganizationPersonnelRelationship . + +linkml_common:OrganizationalRole a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path linkml_common:classification ] ; - sh:targetClass linkml_common:NamedThing . + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:OrganizationalRole . linkml_common:PowerPlant a sh:NodeShape ; sh:closed true ; sh:description "A facility for generating electrical power" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 10 ; - sh:path linkml_common:ontology_types ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:property [ sh:class ; + sh:description "Operating expense for the plant" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:opex ], + [ sh:class linkml_common:PowerPlantType ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 9 ; - sh:path linkml_common:classification ], + sh:order 0 ; + sh:path linkml_common:plant_type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ sh:datatype xsd:date ; sh:maxCount 1 ; sh:order 5 ; @@ -3569,73 +4090,68 @@ linkml_common:PowerPlant a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path linkml_common:operator ], - [ sh:class schema1:Place ; - sh:description "The place where the entity is located" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 8 ; - sh:path linkml_common:located_at_place ], - [ sh:class schema1:Place ; + [ sh:class ; + sh:description "Capital expenditure for the plant" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:location ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:capex ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 14 ; sh:path linkml_common:type ], - [ sh:class ; - sh:description "Operating expense for the plant" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:opex ], [ sh:class ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path linkml_common:capacity ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 13 ; sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 10 ; + sh:path linkml_common:ontology_types ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 9 ; + sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 11 ; sh:path schema1:description ], - [ sh:class ; - sh:description "Capital expenditure for the plant" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:capex ], - [ sh:class linkml_common:PowerPlantType ; + [ sh:class schema1:Place ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:plant_type ], + sh:order 1 ; + sh:path linkml_common:location ], [ sh:datatype xsd:date ; sh:maxCount 1 ; sh:order 4 ; - sh:path linkml_common:commissioning_date ] ; + sh:path linkml_common:commissioning_date ], + [ sh:class schema1:Place ; + sh:description "The place where the entity is located" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 8 ; + sh:path linkml_common:located_at_place ] ; sh:targetClass linkml_common:PowerPlant . linkml_common:Prediction a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml:Any ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:predicted_value ], + sh:order 3 ; + sh:path linkml_common:type ], [ sh:class linkml_common:Variable ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3646,102 +4162,174 @@ linkml_common:Prediction a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path linkml_common:expected_value ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + [ sh:class linkml:Any ; sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:type ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:predicted_value ] ; sh:targetClass linkml_common:Prediction . linkml_common:SampleMaterial a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], + sh:order 0 ; + sh:path linkml_common:classification ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; sh:order 2 ; sh:path schema1:description ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 5 ; sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 4 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ] ; sh:targetClass linkml_common:SampleMaterial . -linkml_common:ComputationalPlannedProcess a sh:NodeShape ; +linkml_common:StudyDesign a sh:NodeShape ; sh:closed true ; - sh:description "Application of a mathematical operation to one or more inputs to produce one or more outputs" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 15 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:ComputationalPlannedProcess ; - sh:description "The parts of the process" ; - sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path linkml_common:parts ], - [ sh:class linkml_common:ComputationalPlannedProcess ; - sh:description "The steps that immediately precede this step" ; - sh:nodeKind sh:IRI ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; sh:order 3 ; - sh:path linkml_common:immediate_preceding_steps ], - [ sh:class linkml_common:Duration ; + sh:path linkml_common:type ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path linkml_common:has_duration ], - [ sh:class linkml_common:TimePoint ; + sh:order 0 ; + sh:path schema1:describes ] ; + sh:targetClass linkml_common:StudyDesign . + +linkml_common:StudyResult a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:PhysicalDevice ; + sh:order 1 ; + sh:path linkml_common:result ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path linkml_common:uses_physical_device ], - [ sh:class linkml_common:TimePoint ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:StudyHypothesis ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:hypothesis ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path linkml_common:is_ongoing_as_of ], + sh:order 2 ; + sh:path schema1:describes ] ; + sh:targetClass linkml_common:StudyResult . + +linkml_common:ComputationalPlannedProcess a sh:NodeShape ; + sh:closed true ; + sh:description "Application of a mathematical operation to one or more inputs to produce one or more outputs" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:Procedure ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:follows_procedure ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path linkml_common:ends_at ], + sh:order 7 ; + sh:path linkml_common:starts_at ], [ sh:class linkml:Any ; sh:description "The inputs to the operation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path linkml_common:inputs ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 13 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:ComputationalPlannedProcess ; + sh:description "The steps that immediately precede this step" ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:immediate_preceding_steps ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml_common:happens_at ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path linkml_common:is_ongoing_as_of ], [ sh:class linkml:Any ; sh:description "The outputs of the operation" ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path linkml_common:outputs ], + [ sh:class linkml_common:PhysicalDevice ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path linkml_common:uses_physical_device ], + [ sh:class linkml_common:ComputationalPlannedProcess ; + sh:description "The parts of the process" ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:parts ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path linkml_common:has_duration ], [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -3750,28 +4338,18 @@ linkml_common:ComputationalPlannedProcess a sh:NodeShape ; [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:starts_at ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 13 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], + sh:order 8 ; + sh:path linkml_common:ends_at ], [ sh:class linkml_common:PlannedProcessConfiguration ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml_common:uses_configuration ], - [ sh:class linkml_common:Procedure ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml_common:follows_procedure ] ; + sh:order 14 ; + sh:path schema1:name ] ; sh:targetClass linkml_common:ComputationalPlannedProcess . linkml_common:EngineeringSpecification a sh:NodeShape ; @@ -3782,12 +4360,6 @@ linkml_common:EngineeringSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:type ], - [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path schema1:describes ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -3797,69 +4369,117 @@ linkml_common:EngineeringSpecification a sh:NodeShape ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 2 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path schema1:describes ] ; sh:targetClass linkml_common:EngineeringSpecification . -linkml_common:Event a sh:NodeShape ; +linkml_common:Measurement a sh:NodeShape ; sh:closed true ; - sh:description "A thing that happens" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; + sh:path linkml_common:ends_at ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 10 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:PhysicalDevice ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:measured_using ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml_common:has_duration ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:name ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; + sh:order 6 ; sh:path linkml_common:happens_at ], - [ sh:class linkml_common:Duration ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; - sh:path linkml_common:has_duration ], + sh:path linkml_common:starts_at ], [ sh:class linkml_common:TemporalInterval ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; + sh:order 7 ; sh:path linkml_common:has_interval ], - [ sh:class linkml_common:TimePoint ; + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:observation_subject ], + [ sh:class linkml_common:Variable ; + sh:description "The variable being measured" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:variable_measured ], + [ sh:class ; + sh:description "The quantity being measured" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:starts_at ], + sh:path linkml_common:quantity_measured ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 7 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; + sh:order 12 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:Measurement . + +linkml_common:StudyHypothesis a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 3 ; sh:path linkml_common:type ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 6 ; + sh:order 1 ; sh:path schema1:identifier ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path linkml_common:ends_at ] ; - sh:targetClass linkml_common:Event . + sh:order 0 ; + sh:path schema1:describes ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:name ] ; + sh:targetClass linkml_common:StudyHypothesis . linkml_common:UnitConcept a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 1 ; @@ -3868,37 +4488,42 @@ linkml_common:UnitConcept a sh:NodeShape ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 2 ; - sh:path linkml_common:type ] ; + sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:UnitConcept . linkml_common:InvestigativeProtocol a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], - [ sh:class linkml:Any ; - sh:description "The thing that is being described" ; + sh:property [ sh:datatype xsd:anyURI ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path schema1:describes ], + sh:order 0 ; + sh:path linkml_common:protocols_io_url ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 4 ; sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:name ], - [ sh:datatype xsd:anyURI ; + [ sh:class linkml:Any ; + sh:description "The thing that is being described" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:protocols_io_url ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path schema1:describes ] ; sh:targetClass linkml_common:InvestigativeProtocol . linkml_common:Patient a sh:NodeShape ; @@ -3916,6 +4541,41 @@ linkml_common:Patient a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass linkml_common:Patient . +linkml_common:PersonInRole a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:Concept ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path linkml_common:predicate ], + [ sh:class linkml_common:Person ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:subject_person ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:subject ], + [ sh:class linkml_common:OrganizationalRole ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:person_role ], + [ sh:class schema1:Thing ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:object ] ; + sh:targetClass linkml_common:PersonInRole . + linkml_common:Service a sh:NodeShape ; sh:closed true ; sh:description "A service provided by an organization" ; @@ -3927,30 +4587,134 @@ linkml_common:Service a sh:NodeShape ; sh:path linkml_common:type ] ; sh:targetClass linkml_common:Service . -schema1:PostalAddress a sh:NodeShape ; +linkml_common:ExtractiveIndustryProduct a sh:NodeShape ; sh:closed true ; - sh:description "Represents an Address" ; + sh:description "A product extracted from an extractive industry facility" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "The postal code or zip code" ; + sh:property [ sh:class ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:grade ], + [ sh:class linkml_common:EngineeringSpecification ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:processing_method ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 4 ; - sh:path linkml_common:postal_code ], + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:in ( "MINERAL" "METAL" "COAL" "OIL" "GAS" "STONE" "SAND" "GRAVEL" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:product_type ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 6 ; + sh:order 5 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:ExtractiveIndustryProduct . + +linkml_common:Investigation a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:StudyResult ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path linkml_common:results ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 11 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 13 ; sh:path linkml_common:type ], [ sh:datatype xsd:string ; - sh:description "The state" ; sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:objectives ], + [ sh:class linkml_common:StudyDesign ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 3 ; - sh:path linkml_common:state ], + sh:path linkml_common:design ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:StudyHypothesis ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:hypothesis ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; + sh:order 12 ; + sh:path schema1:name ], + [ sh:class linkml_common:Variable ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path linkml_common:street_address_additional ], + sh:path linkml_common:variables ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:starts_at ], + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 10 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path linkml_common:has_duration ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path linkml_common:has_interval ] ; + sh:targetClass linkml_common:Investigation . + + a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class linkml_common:QuantityKind ; + sh:description "The kind of quantity" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path linkml_common:has_quantity_kind ], [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ] ; + sh:targetClass . + +schema1:PostalAddress a sh:NodeShape ; + sh:closed true ; + sh:description "Represents an Address" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "The country" ; sh:maxCount 1 ; sh:order 5 ; @@ -3960,98 +4724,117 @@ schema1:PostalAddress a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path linkml_common:street_address ], + [ sh:datatype xsd:string ; + sh:description "The state" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:state ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:street_address_additional ], [ sh:datatype xsd:string ; sh:description "The city" ; sh:maxCount 1 ; sh:order 2 ; - sh:path linkml_common:city ] ; - sh:targetClass schema1:PostalAddress . - -schema1:Thing a sh:NodeShape ; - sh:closed false ; - sh:description "A physical, digital, conceptual, or other kind of thing with some common characteristics" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:path linkml_common:city ], + [ sh:datatype xsd:string ; + sh:description "The postal code or zip code" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:postal_code ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 0 ; + sh:order 6 ; sh:path linkml_common:type ] ; - sh:targetClass schema1:Thing . + sh:targetClass schema1:PostalAddress . -linkml_common:ExtractiveIndustryProduct a sh:NodeShape ; +linkml_common:Event a sh:NodeShape ; sh:closed true ; - sh:description "A product extracted from an extractive industry facility" ; + sh:description "A thing that happens" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:class linkml_common:Duration ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path linkml_common:has_duration ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 5 ; + sh:order 8 ; sh:path linkml_common:type ], - [ sh:class ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path linkml_common:grade ], - [ sh:class linkml_common:EngineeringSpecification ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:processing_method ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:starts_at ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path schema1:name ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 3 ; + sh:order 6 ; sh:path schema1:identifier ], - [ sh:in ( "MINERAL" "METAL" "COAL" "OIL" "GAS" "STONE" "SAND" "GRAVEL" ) ; + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:product_type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:happens_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ] ; - sh:targetClass linkml_common:ExtractiveIndustryProduct . + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path linkml_common:has_interval ] ; + sh:targetClass linkml_common:Event . linkml_common:GeoBoxLocation a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:decimal ; - sh:description "The northernmost coordinate of the location" ; + sh:description "The easternmost coordinate of the location" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:north_bounding_coordinate ], + sh:order 1 ; + sh:path linkml_common:east_bounding_coordinate ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path linkml_common:type ], [ sh:datatype xsd:decimal ; sh:description "The southernmost coordinate of the location" ; sh:maxCount 1 ; sh:order 3 ; sh:path linkml_common:south_bounding_coordinate ], [ sh:datatype xsd:decimal ; - sh:description "The westernmost coordinate of the location" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:west_bounding_coordinate ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:description "The northernmost coordinate of the location" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path linkml_common:type ], + sh:order 2 ; + sh:path linkml_common:north_bounding_coordinate ], [ sh:datatype xsd:decimal ; - sh:description "The easternmost coordinate of the location" ; + sh:description "The westernmost coordinate of the location" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:east_bounding_coordinate ] ; + sh:order 0 ; + sh:path linkml_common:west_bounding_coordinate ] ; sh:targetClass linkml_common:GeoBoxLocation . linkml_common:GeoPointLocation a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:type ], - [ sh:datatype xsd:decimal ; + sh:property [ sh:datatype xsd:decimal ; sh:description "The longitude of the location" ; sh:maxCount 1 ; sh:order 1 ; @@ -4065,153 +4848,94 @@ linkml_common:GeoPointLocation a sh:NodeShape ; sh:description "The latitude of the location" ; sh:maxCount 1 ; sh:order 0 ; - sh:path linkml_common:latitude ] ; + sh:path linkml_common:latitude ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:GeoPointLocation . -linkml_common:Investigation a sh:NodeShape ; +linkml_common:Observation a sh:NodeShape ; sh:closed true ; + sh:description "A statement about the state of something" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:property [ sh:class linkml_common:Variable ; + sh:description "The variable being measured" ; sh:maxCount 1 ; - sh:order 10 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Variable ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path linkml_common:variables ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:objectives ], - [ sh:class linkml_common:TemporalInterval ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 5 ; - sh:path linkml_common:has_interval ], + sh:path linkml_common:variable_measured ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; + sh:order 3 ; sh:path linkml_common:starts_at ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:PhysicalDevice ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path linkml_common:ends_at ], + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:measured_using ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 9 ; + sh:order 10 ; sh:path schema1:name ], + [ sh:class linkml_common:TemporalInterval ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path linkml_common:has_interval ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; - sh:path linkml_common:happens_at ], - [ sh:class linkml_common:Duration ; + sh:path linkml_common:ends_at ], + [ sh:class schema1:Thing ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path linkml_common:has_duration ], + sh:order 0 ; + sh:path linkml_common:observation_subject ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:is_ongoing_as_of ], - [ sh:description "A unique identifier for a thing" ; - sh:maxCount 1 ; - sh:minCount 1 ; sh:order 8 ; - sh:path schema1:identifier ] ; - sh:targetClass linkml_common:Investigation . - -linkml_common:Person a sh:NodeShape ; - sh:closed true ; - sh:description "Represents a Person" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "The main email address of a person" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path schema1:email ; - sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], - [ sh:description "living or dead status" ; - sh:in ( PATO:0001421 PATO:0001422 "UNKNOWN" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:vital_status ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a thing" ; + sh:path linkml_common:is_ongoing_as_of ], + [ sh:class linkml_common:Duration ; sh:maxCount 1 ; - sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:integer ; - sh:description "Number of years since birth" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:age_in_years ], - [ sh:class linkml_common:Concept ; - sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path linkml_common:classification ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path schema1:name ], - [ sh:datatype xsd:date ; - sh:description "Date on which a person is born" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:birthDate ], + sh:path linkml_common:has_duration ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 9 ; + sh:order 11 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; + [ sh:class linkml_common:TimePoint ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path linkml_common:ontology_types ] ; - sh:targetClass linkml_common:Person . + sh:path linkml_common:happens_at ] ; + sh:targetClass linkml_common:Observation . - a sh:NodeShape ; +linkml_common:QuantityKind a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:QuantityKind ; - sh:description "The kind of quantity" ; + sh:property [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; + sh:minCount 1 ; sh:order 0 ; - sh:path linkml_common:has_quantity_kind ], + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:type ] ; - sh:targetClass . - -linkml_common:QuantityKind a sh:NodeShape ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 2 ; sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; - 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 thing" ; sh:maxCount 1 ; @@ -4223,21 +4947,21 @@ linkml_common:PowerPlantType a sh:NodeShape ; sh:closed true ; sh:description "The type of power plant" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:property [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:type ], + sh:minCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 1 ; sh:path schema1:name ], - [ sh:description "A unique identifier for a thing" ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ] ; + sh:order 2 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:PowerPlantType . linkml_common:Procedure a sh:NodeShape ; @@ -4245,15 +4969,10 @@ linkml_common:Procedure a sh:NodeShape ; sh:description "A canonical series of actions conducted in a certain order or manner" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:type ], - [ sh:description "A unique identifier for a thing" ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path schema1:identifier ], + sh:order 2 ; + sh:path schema1:name ], [ sh:class linkml:Any ; sh:description "The thing that is being described" ; sh:maxCount 1 ; @@ -4261,117 +4980,178 @@ linkml_common:Procedure a sh:NodeShape ; sh:order 0 ; sh:path schema1:describes ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ] ; + sh:order 3 ; + sh:path linkml_common:type ], + [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:Procedure . linkml_common:Variable a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:UnitConcept ; + sh:property [ sh:class linkml_common:UnitConcept ; sh:description "The units that are allowed for this variable" ; sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path linkml_common:allowed_units ] ; + sh:path linkml_common:allowed_units ], + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path linkml_common:type ] ; sh:targetClass linkml_common:Variable . -linkml_common:Agent a sh:NodeShape ; +linkml_common:Person a sh:NodeShape ; sh:closed true ; - sh:description "Represents an Agent" ; + sh:description "Represents a Person" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:date ; + sh:description "Date on which a person is born" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:birthDate ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:integer ; + sh:description "Number of years since birth" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path linkml_common:age_in_years ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 4 ; + sh:order 8 ; sh:path schema1:name ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 3 ; + sh:order 7 ; sh:path schema1:identifier ], + [ sh:description "living or dead status" ; + sh:in ( PATO:0001421 PATO:0001422 "UNKNOWN" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path linkml_common:vital_status ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "The main email address of a person" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path schema1:email ; + sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; + sh:order 4 ; sh:path linkml_common:classification ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:Person . + +linkml_common:PlannedProcessConfiguration a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:type ] ; + sh:targetClass linkml_common:PlannedProcessConfiguration . + + a sh:NodeShape ; + sh:closed true ; + sh:description "A quantity of money" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:float ; + sh:description "The value of the quantity" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path linkml_common:value ], + [ sh:class linkml_common:QuantityKind ; + sh:description "The kind of quantity" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path schema1:description ], + sh:path linkml_common:has_quantity_kind ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:type ] ; - sh:targetClass linkml_common:Agent . + sh:order 3 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:CurrencyConcept ; + sh:description "The currency of the quantity" ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:unit ] ; + sh:targetClass . -linkml_common:PlannedProcessConfiguration a sh:NodeShape ; +linkml_common:PhysicalDevice a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:type ] ; - sh:targetClass linkml_common:PlannedProcessConfiguration . - -linkml_common:Organization a sh:NodeShape ; - sh:closed true ; - sh:description "Represents an Organization" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a thing" ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 4 ; + sh:order 3 ; sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 6 ; + sh:order 5 ; sh:path linkml_common:type ], - [ sh:class linkml_common:Service ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path linkml_common:provides_services ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path linkml_common:ontology_types ], + sh:path schema1:description ], [ sh:class linkml_common:Concept ; sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; + sh:order 0 ; sh:path linkml_common:classification ] ; - sh:targetClass linkml_common:Organization . + sh:targetClass linkml_common:PhysicalDevice . -linkml_common:PhysicalDevice a sh:NodeShape ; +linkml_common:PhysicalEntity a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; sh:order 4 ; @@ -4382,10 +5162,6 @@ linkml_common:PhysicalDevice a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path linkml_common:classification ], - [ sh:class linkml_common:Concept ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:ontology_types ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; @@ -4395,41 +5171,53 @@ linkml_common:PhysicalDevice a sh:NodeShape ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 3 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path linkml_common:type ] ; - sh:targetClass linkml_common:PhysicalDevice . + sh:path schema1:identifier ] ; + sh:targetClass linkml_common:PhysicalEntity . - a sh:NodeShape ; +linkml_common:Organization a sh:NodeShape ; sh:closed true ; - sh:description "A quantity of money" ; + sh:description "Represents an Organization" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:CurrencyConcept ; - sh:description "The currency of the quantity" ; + sh:property [ sh:description "A unique identifier for a thing" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 5 ; + sh:path schema1:identifier ], + [ sh:class linkml_common:Concept ; + sh:description "A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path linkml_common:unit ], + sh:order 2 ; + sh:path linkml_common:classification ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 3 ; + sh:order 7 ; sh:path linkml_common:type ], - [ sh:class linkml_common:QuantityKind ; - sh:description "The kind of quantity" ; + [ sh:class linkml_common:Service ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path linkml_common:provides_services ], + [ sh:class linkml_common:PersonInRole ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path linkml_common:has_person_roles ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:name ], + [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:has_quantity_kind ], - [ sh:datatype xsd:float ; - sh:description "The value of the quantity" ; + sh:order 3 ; + sh:path linkml_common:ontology_types ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:value ] ; - sh:targetClass . + sh:order 4 ; + sh:path schema1:description ] ; + sh:targetClass linkml_common:Organization . linkml:Any a sh:NodeShape ; sh:closed true ; @@ -4446,6 +5234,12 @@ schema1:Place a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path linkml_common:classification ], + [ sh:class linkml_common:GeoBoxLocation ; + sh:description "The bounding coordinates of the place" ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path linkml_common:bounding_coordinates ], [ sh:class linkml_common:GeoPointLocation ; sh:description "The geolocation of the place" ; sh:maxCount 1 ; @@ -4453,22 +5247,22 @@ schema1:Place a sh:NodeShape ; sh:order 1 ; sh:path linkml_common:geolocation ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], - [ sh:class linkml_common:GeoBoxLocation ; - sh:description "The bounding coordinates of the place" ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path linkml_common:bounding_coordinates ], + sh:order 8 ; + sh:path linkml_common:type ], [ sh:description "A unique identifier for a thing" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 6 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:description ], [ sh:class linkml_common:Concept ; + sh:description "A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy." ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path linkml_common:ontology_types ], @@ -4481,13 +5275,19 @@ schema1:Place a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:address ], - [ sh:datatype xsd:string ; + sh:path linkml_common:address ] ; + sh:targetClass schema1:Place . + +schema1:Thing a sh:NodeShape ; + sh:closed false ; + sh:description "A physical, digital, conceptual, or other kind of thing with some common characteristics" ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 0 ; sh:path linkml_common:type ] ; - sh:targetClass schema1:Place . + sh:targetClass schema1:Thing . linkml_common:Duration a sh:NodeShape ; sh:closed true ; @@ -4506,58 +5306,63 @@ linkml_common:Duration a sh:NodeShape ; sh:path linkml_common:has_quantity_kind ] ; sh:targetClass linkml_common:Duration . -linkml_common:TemporalInterval a sh:NodeShape ; + a sh:NodeShape ; sh:closed true ; - sh:description "A period of time" ; + sh:description "A quantity is a property that can be measured or counted" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:TimePoint ; + sh:property [ sh:datatype xsd:float ; + sh:description "The value of the quantity" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:starts_at ], + sh:path linkml_common:value ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 2 ; + sh:order 3 ; sh:path linkml_common:type ], - [ sh:class linkml_common:TimePoint ; + [ sh:class linkml_common:QuantityKind ; + sh:description "The kind of quantity" ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path linkml_common:has_quantity_kind ], + [ sh:class linkml_common:UnitConcept ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path linkml_common:ends_at ] ; - sh:targetClass linkml_common:TemporalInterval . + sh:path linkml_common:unit ] ; + sh:targetClass . - a sh:NodeShape ; +linkml_common:TemporalInterval a sh:NodeShape ; sh:closed true ; - sh:description "A quantity is a property that can be measured or counted" ; + sh:description "A period of time" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class linkml_common:UnitConcept ; + sh:property [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path linkml_common:unit ], - [ sh:class linkml_common:QuantityKind ; - sh:description "The kind of quantity" ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path linkml_common:has_quantity_kind ], - [ sh:datatype xsd:float ; - sh:description "The value of the quantity" ; + sh:path linkml_common:ends_at ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path linkml_common:value ], + sh:path linkml_common:starts_at ], [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 3 ; + sh:order 2 ; sh:path linkml_common:type ] ; - sh:targetClass . + sh:targetClass linkml_common:TemporalInterval . linkml_common:Concept a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a thing" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; sh:order 2 ; @@ -4566,58 +5371,53 @@ linkml_common:Concept a sh:NodeShape ; 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 thing" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ] ; + sh:path schema1:identifier ] ; sh:targetClass linkml_common:Concept . linkml_common:TimePoint a sh:NodeShape ; sh:closed true ; sh:description "A point in time. Can be fully specified, or specified in relative terms." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path linkml_common:type ], - [ sh:class linkml_common:Event ; + sh:property [ sh:class linkml_common:Event ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 4 ; sh:path linkml_common:marker_event ], - [ sh:class linkml_common:TimePoint ; + [ sh:datatype xsd:dateTime ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path linkml_common:ends_at ], + sh:order 3 ; + sh:path linkml_common:datetime_value ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a thing" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:description ], [ sh:datatype xsd:date ; sh:maxCount 1 ; sh:order 1 ; sh:path linkml_common:date_value ], - [ sh:datatype xsd:integer ; + [ sh:datatype xsd:string ; + sh:description "A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`." ; sh:maxCount 1 ; - sh:order 0 ; - sh:path linkml_common:year_value ], - [ sh:datatype xsd:time ; + sh:order 8 ; + sh:path linkml_common:type ], + [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; - sh:order 2 ; - sh:path linkml_common:time_value ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path linkml_common:ends_at ], [ sh:class linkml_common:TimePoint ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path linkml_common:starts_at ], - [ sh:datatype xsd:dateTime ; + [ sh:datatype xsd:integer ; sh:maxCount 1 ; - sh:order 3 ; - sh:path linkml_common:datetime_value ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:order 0 ; + sh:path linkml_common:year_value ], + [ sh:datatype xsd:time ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ] ; + sh:order 2 ; + sh:path linkml_common:time_value ] ; sh:targetClass linkml_common:TimePoint . diff --git a/project/shex/linkml_common.shex b/project/shex/linkml_common.shex index bbf6a9c..ee9903d 100644 --- a/project/shex/linkml_common.shex +++ b/project/shex/linkml_common.shex @@ -47,15 +47,11 @@ linkml:Sparqlpath xsd:string xsd:integer - ( - CLOSED { - ( $ ( & ; - rdf:type [ ] ? - ) ; - rdf:type [ ] - ) - } OR @ OR @ OR @ -) + { + ( $ rdf:type . * ; + rdf:type [ ] ? + ) +} CLOSED { ( $ ( & ; @@ -81,8 +77,18 @@ linkml:Sparqlpath xsd:string ) } + CLOSED { + ( $ ( & ; + rdf:type [ schema1:Place ] ? + ) ; + rdf:type [ ] + ) +} + CLOSED { - ( $ ( & ; + ( $ ( & ; + rdf:type [ ] ? ; + & ; rdf:type [ ] ? ) ; rdf:type [ ] @@ -109,8 +115,8 @@ linkml:Sparqlpath xsd:string ( CLOSED { - ( $ ( & ; - rdf:type [ ] ? + ( $ ( & ; + rdf:type [ ] ? ) ; rdf:type [ ] ) @@ -127,9 +133,26 @@ linkml:Sparqlpath xsd:string } OR @ ) + CLOSED { + ( $ ( & ; + rdf:type [ ] ? + ) ; + rdf:type [ ] + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + @ ? + ) ; + rdf:type [ ] ? + ) +} + CLOSED { - ( $ ( & ; - rdf:type [ ] ? ; + ( $ ( & ; + rdf:type [ ] ? ; @ ? ) ; rdf:type [ ] @@ -154,6 +177,15 @@ linkml:Sparqlpath xsd:string ) } + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + @ ? + ) ; + rdf:type [ ] ? + ) +} + CLOSED { ( $ ( & ; rdf:type [ ] ? @@ -162,6 +194,19 @@ linkml:Sparqlpath xsd:string ) } + ( + CLOSED { + ( $ ( & ; + rdf:type [ schema1:Intangible ] ? ; + & ; + rdf:type [ ] ? ; + @ ? + ) ; + rdf:type [ ] ? + ) + } OR @ OR @ +) + CLOSED { ( $ ( & ; rdf:type [ ] ? ; @@ -192,9 +237,9 @@ linkml:Sparqlpath xsd:string ( $ ( @linkml:String ? ; <abstract> @linkml:String ? ; <rights> @linkml:String ? ; - dcterms:creator @<Agent> * ; - dcterms:contributor @<Agent> * ; - schema1:contactPoint @<Agent> * ; + dcterms:creator @<PhysicalEntity> * ; + dcterms:contributor @<PhysicalEntity> * ; + schema1:contactPoint @<PhysicalEntity> * ; schema1:keywords @linkml:String * ) ; rdf:type [ <CreationMetadata> ] ? @@ -202,16 +247,16 @@ linkml:Sparqlpath xsd:string } <CreativeWork> CLOSED { - ( $<CreativeWork_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? ; + ( $<CreativeWork_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ; &<CreationMetadata_tes> ; rdf:type [ <CreationMetadata> ] ? ; <title> @linkml:String ? ; <abstract> @linkml:String ? ; <rights> @linkml:String ? ; - dcterms:creator @<Agent> * ; - dcterms:contributor @<Agent> * ; - schema1:contactPoint @<Agent> * ; + dcterms:creator @<PhysicalEntity> * ; + dcterms:contributor @<PhysicalEntity> * ; + schema1:contactPoint @<PhysicalEntity> * ; schema1:keywords @linkml:String * ) ; rdf:type [ <CreativeWork> ] @@ -243,9 +288,9 @@ linkml:Sparqlpath xsd:string <title> @linkml:String ? ; <abstract> @linkml:String ? ; <rights> @linkml:String ? ; - dcterms:creator @<Agent> * ; - dcterms:contributor @<Agent> * ; - schema1:contactPoint @<Agent> * ; + dcterms:creator @<PhysicalEntity> * ; + dcterms:contributor @<PhysicalEntity> * ; + schema1:contactPoint @<PhysicalEntity> * ; schema1:keywords @linkml:String * ) ; rdf:type [ <Dataset> ] @@ -260,6 +305,14 @@ linkml:Sparqlpath xsd:string ) } +<DigitalTwin> CLOSED { + ( $<DigitalTwin_tes> ( &<ComputationalModel_tes> ; + rdf:type [ <ComputationalModel> ] ? + ) ; + rdf:type [ <DigitalTwin> ] ? + ) +} + <Duration> CLOSED { ( $<Duration_tes> ( &<Quantity_tes> ; rdf:type [ fhir:Quantity ] ? @@ -268,6 +321,15 @@ linkml:Sparqlpath xsd:string ) } +<EconomicSystem> CLOSED { + ( $<EconomicSystem_tes> ( &<PhysicalSystem_tes> ; + rdf:type [ <PhysicalSystem> ] ? ; + <economy_of_place> @<Place> ? + ) ; + rdf:type [ <EconomicSystem> ] + ) +} + <ElectricalGrid> CLOSED { ( $<ElectricalGrid_tes> ( &<BuiltSystem_tes> ; rdf:type [ <BuiltSystem> ] ? ; @@ -304,7 +366,7 @@ linkml:Sparqlpath xsd:string } <Entity> ( - @<Event> OR @<Intangible> OR @<NamedThing> + @<Event> OR @<Intangible> OR @<PhysicalEntity> OR @<SubjectHistory> ) <Entity_struct> { @@ -333,10 +395,20 @@ linkml:Sparqlpath xsd:string ) } +<EnvironmentalSystem> ( + CLOSED { + ( $<EnvironmentalSystem_tes> ( &<PhysicalSystem_tes> ; + rdf:type [ <PhysicalSystem> ] ? + ) ; + rdf:type [ <EnvironmentalSystem> ] + ) + } OR @<Climate> +) + <Equipment> ( CLOSED { - ( $<Equipment_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? + ( $<Equipment_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ) ; rdf:type [ <Equipment> ] ) @@ -473,6 +545,15 @@ linkml:Sparqlpath xsd:string ) } +<FoodPreparation> CLOSED { + ( $<FoodPreparation_tes> ( &<PlannedProcess_tes> ; + rdf:type [ <PlannedProcess> ] ? ; + <follows_procedure> @<FoodRecipe> ? + ) ; + rdf:type [ <FoodPreparation> ] + ) +} + <FoodProcessing> CLOSED { ( $<FoodProcessing_tes> ( &<MaterialProcessing_tes> ; rdf:type [ <MaterialProcessing> ] ? @@ -617,6 +698,17 @@ linkml:Sparqlpath xsd:string ) } +<https://w3id.org/linkml-common/organisms/IndividualOrganism> ( + CLOSED { + ( $<https://w3id.org/linkml-common/organisms/IndividualOrganism_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ; + <classification> @<Concept> ? + ) ; + rdf:type [ <https://w3id.org/linkml-common/organisms/IndividualOrganism> ] + ) + } OR @<Person> OR @<VeterinaryAnimal> +) + <InformationEntity> ( CLOSED { ( $<InformationEntity_tes> ( &<Intangible_tes> ; @@ -628,7 +720,8 @@ linkml:Sparqlpath xsd:string ) ; rdf:type [ <InformationEntity> ] ) - } OR @<ClinicalCohortDefinition> OR @<Dataset> OR @<Publication> OR @<Specification> + } OR @<ClinicalCohortDefinition> OR @<Dataset> OR @<OrgChart> OR @<Publication> OR @<Specification> OR @<StudyHypothesis> OR + @<StudyResult> ) <Intangible> ( @@ -638,16 +731,20 @@ linkml:Sparqlpath xsd:string ) ; rdf:type [ schema1:Intangible ] ? ) - } OR @<Concept> OR @<DataStructure> OR @<EntitySet> OR @<InformationEntity> OR @<PlannedProcessConfiguration> OR @<Prediction> - OR @<PredictionSummaryStatistics> OR @<Quantity> OR @<QuantityRange> OR @<Relationship> OR @<Role> OR @<Service> OR - @<StructuredValue> OR @<TimePointOrTemporalInterval> OR @<Variable> + } OR @<ComputationalModel> OR @<Concept> OR @<DataStructure> OR @<EntitySet> OR @<InformationEntity> OR + @<PlannedProcessConfiguration> OR @<Prediction> OR @<PredictionSummaryStatistics> OR @<Quantity> OR @<QuantityRange> OR + @<Relationship> OR @<Role> OR @<Service> OR @<SetOfObservations> OR @<StructuredValue> OR @<TimePointOrTemporalInterval> OR + @<Variable> ) <Investigation> CLOSED { ( $<Investigation_tes> ( &<Event_tes> ; rdf:type [ <Event> ] ? ; <objectives> @linkml:String ? ; - <variables> @<Variable> * + <variables> @<Variable> * ; + <hypothesis> @<StudyHypothesis> ? ; + <design> @<StudyDesign> ? ; + <results> @<StudyResult> * ) ; rdf:type [ <Investigation> ] ) @@ -678,7 +775,8 @@ linkml:Sparqlpath xsd:string <Landform> CLOSED { ( $<Landform_tes> ( &<Place_tes> ; rdf:type [ schema1:Place ] ? ; - <geolocation> @<GeoPointLocation> ? + <geolocation> @<GeoPointLocation> ? ; + <classification> @<Concept> ? ) ; rdf:type [ <Landform> ] ) @@ -744,6 +842,12 @@ linkml:Sparqlpath xsd:string ) } +<Model> { + ( $<Model_tes> <models> @<Entity> ? ; + rdf:type [ <Model> ] ? + ) +} + <MoneyQuantity> CLOSED { ( $<MoneyQuantity_tes> ( &<SimpleQuantity_tes> ; rdf:type [ fhir:SimpleQuantity ] ? ; @@ -754,23 +858,6 @@ linkml:Sparqlpath xsd:string ) } -<NamedThing> ( - CLOSED { - ( $<NamedThing_tes> ( &<Entity_tes> ; - rdf:type [ schema1:Thing ] ? ; - &<Identified_tes> ; - rdf:type [ <Identified> ] ? ; - <classification> @<Concept> ? ; - <ontology_types> @<Concept> * ; - schema1:description @linkml:String ? ; - schema1:name @linkml:String ? - ) ; - rdf:type [ <NamedThing> ] - ) - } OR @<Agent> OR @<BuiltEnvironmentFeature> OR @<ClinicalCohort> OR @<CreativeWork> OR @<Equipment> OR @<PhysicalDevice> OR - @<Place> OR @<RawMaterial> OR @<SampleMaterial> -) - <NuclearPlant> CLOSED { ( $<NuclearPlant_tes> ( &<PowerPlant_tes> ; rdf:type [ <PowerPlant> ] ? @@ -792,17 +879,57 @@ linkml:Sparqlpath xsd:string } OR @<Measurement> OR @<QualitativeObservation> ) +<https://w3id.org/linkml-common/organisms/OrganismalRelationship> CLOSED { + ( $<https://w3id.org/linkml-common/organisms/OrganismalRelationship_tes> ( &<Relationship_tes> ; + rdf:type [ <Relationship> ] ? + ) ; + rdf:type [ <https://w3id.org/linkml-common/organisms/OrganismalRelationship> ] ? + ) +} + <Organization> ( CLOSED { - ( $<Organization_tes> ( &<Agent_tes> ; + ( $<Organization_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ; + &<Agent_tes> ; rdf:type [ <Agent> ] ? ; - <provides_services> @<Service> * + <provides_services> @<Service> * ; + <has_person_roles> @<PersonInRole> * ) ; rdf:type [ <Organization> ] ) } OR @<FinancialOrganization> OR @<HealthcareOrganization> ) +<OrganizationalRole> CLOSED { + ( $<OrganizationalRole_tes> ( &<Role_tes> ; + rdf:type [ schema1:Role ] ? + ) ; + rdf:type [ <OrganizationalRole> ] ? + ) +} + +<OrganizationPersonnelRelationship> CLOSED { + ( $<OrganizationPersonnelRelationship_tes> ( &<Relationship_tes> ; + rdf:type [ <Relationship> ] ? ; + <subject> @linkml:String ? ; + <predicate> @linkml:String ? ; + <object> @linkml:String ? + ) ; + rdf:type [ <OrganizationPersonnelRelationship> ] ? + ) +} + +<OrgChart> CLOSED { + ( $<OrgChart_tes> ( &<InformationEntity_tes> ; + rdf:type [ <InformationEntity> ] ? ; + <for_organization> @<Organization> ? ; + <relationships> @<OrganizationPersonnelRelationship> ? + ) ; + rdf:type [ <OrgChart> ] + ) +} + <OutcomeStatistics> { ( $<OutcomeStatistics_tes> ( <true_positive_count> @<CountScalar> ? ; <false_positive_count> @<CountScalar> ? ; @@ -826,7 +953,9 @@ linkml:Sparqlpath xsd:string } <Person> CLOSED { - ( $<Person_tes> ( &<Agent_tes> ; + ( $<Person_tes> ( &<https://w3id.org/linkml-common/organisms/IndividualOrganism_tes> ; + rdf:type [ <https://w3id.org/linkml-common/organisms/IndividualOrganism> ] ? ; + &<Agent_tes> ; rdf:type [ <Agent> ] ? ; schema1:email @linkml:String ? ; schema1:birthDate @linkml:Date ? ; @@ -838,25 +967,65 @@ linkml:Sparqlpath xsd:string ) } +<PersonInRole> CLOSED { + ( $<PersonInRole_tes> ( &<Relationship_tes> ; + rdf:type [ <Relationship> ] ? ; + <subject_person> @<Person> ? ; + <person_role> @<OrganizationalRole> ? + ) ; + rdf:type [ <PersonInRole> ] ? + ) +} + <PhysicalDevice> CLOSED { - ( $<PhysicalDevice_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? + ( $<PhysicalDevice_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ) ; rdf:type [ <PhysicalDevice> ] ) } +<PhysicalEntity> ( + CLOSED { + ( $<PhysicalEntity_tes> ( &<Entity_tes> ; + rdf:type [ schema1:Thing ] ? ; + &<Identified_tes> ; + rdf:type [ <Identified> ] ? ; + <classification> @<Concept> ? ; + <ontology_types> @<Concept> * ; + schema1:description @linkml:String ? ; + schema1:name @linkml:String ? + ) ; + rdf:type [ <PhysicalEntity> ] + ) + } OR @<AutomatedAgent> OR @<BuiltEnvironmentFeature> OR @<ClinicalCohort> OR @<CreativeWork> OR @<Equipment> OR + @<https://w3id.org/linkml-common/organisms/IndividualOrganism> OR @<Organization> OR @<PhysicalDevice> OR @<PhysicalSystem> OR + @<Place> OR @<RawMaterial> OR @<SampleMaterial> +) + +<PhysicalSystem> ( + CLOSED { + ( $<PhysicalSystem_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ; + <components> @<PhysicalEntity> * ; + <events> @<Entity> * + ) ; + rdf:type [ <PhysicalSystem> ] + ) + } OR @<EconomicSystem> OR @<EnvironmentalSystem> +) + <Place> ( CLOSED { - ( $<Place_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? ; + ( $<Place_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ; <address> @<PostalAddress> ? ; <geolocation> @<GeoPointLocation> ? ; <bounding_coordinates> @<GeoBoxLocation> ? ) ; rdf:type [ schema1:Place ] ) - } OR @<EnvironmentalSite> OR @<HealthcareSite> OR @<Landform> + } OR @<AstronomicalBody> OR @<EnvironmentalSite> OR @<HealthcareSite> OR @<Landform> ) <PlannedProcess> ( @@ -869,7 +1038,8 @@ linkml:Sparqlpath xsd:string ) ; rdf:type [ <PlannedProcess> ] ) - } OR @<ComputationalPlannedProcess> OR @<InvestigativeProcess> OR @<MaterialCollection> OR @<MaterialProcessing> + } OR @<ComputationalPlannedProcess> OR @<FoodPreparation> OR @<InvestigativeProcess> OR @<MaterialCollection> OR + @<MaterialProcessing> ) <PlannedProcessConfiguration> CLOSED { @@ -1037,23 +1207,29 @@ linkml:Sparqlpath xsd:string } <RawMaterial> CLOSED { - ( $<RawMaterial_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? + ( $<RawMaterial_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ) ; rdf:type [ <RawMaterial> ] ) } <Relationship> ( - { - ( $<Relationship_tes> ( &<Intangible_tes> ; - rdf:type [ schema1:Intangible ] ? - ) ; - rdf:type [ <Relationship> ] ? - ) - } OR @<TemporalRelationship> + @<https://w3id.org/linkml-common/organisms/OrganismalRelationship> OR @<OrganizationPersonnelRelationship> OR @<PersonInRole> + OR @<TemporalRelationship> ) +<Relationship_struct> { + ( $<Relationship_tes> ( &<Intangible_tes> ; + rdf:type [ schema1:Intangible ] ? ; + <subject> @<Entity> ? ; + <predicate> @<Concept> ? ; + <object> @<Entity> ? + ) ; + rdf:type [ <Relationship> ] ? + ) +} + <RenewablePlant> ( CLOSED { ( $<RenewablePlant_tes> ( &<PowerPlant_tes> ; @@ -1065,28 +1241,30 @@ linkml:Sparqlpath xsd:string ) <Role> ( - { - ( $<Role_tes> ( &<Intangible_tes> ; - rdf:type [ schema1:Intangible ] ? - ) ; - rdf:type [ schema1:Role ] ? - ) - } OR @<HealthcareRole> + @<HealthcareRole> OR @<OrganizationalRole> ) +<Role_struct> { + ( $<Role_tes> ( &<Intangible_tes> ; + rdf:type [ schema1:Intangible ] ? + ) ; + rdf:type [ schema1:Role ] ? + ) +} + <SampleCollectionProcess> CLOSED { ( $<SampleCollectionProcess_tes> ( &<InvestigativeProcess_tes> ; rdf:type [ <InvestigativeProcess> ] ? ; <material_collected> @<SampleMaterial> ? ; - <collected_from> @<NamedThing> ? + <collected_from> @<PhysicalEntity> ? ) ; rdf:type [ <SampleCollectionProcess> ] ) } <SampleMaterial> CLOSED { - ( $<SampleMaterial_tes> ( &<NamedThing_tes> ; - rdf:type [ <NamedThing> ] ? + ( $<SampleMaterial_tes> ( &<PhysicalEntity_tes> ; + rdf:type [ <PhysicalEntity> ] ? ) ; rdf:type [ <SampleMaterial> ] ) @@ -1110,6 +1288,16 @@ linkml:Sparqlpath xsd:string } OR @<FinancialProduct> ) +<SetOfObservations> CLOSED { + ( $<SetOfObservations_tes> ( &<Intangible_tes> ; + rdf:type [ schema1:Intangible ] ? ; + <observation_subject> @<Entity> ? ; + <observations> @<Observation> ? + ) ; + rdf:type [ <SetOfObservations> ] ? + ) +} + <SimplePrediction> CLOSED { ( $<SimplePrediction_tes> ( &<Prediction_tes> ; rdf:type [ <Prediction> ] ? ; @@ -1133,6 +1321,16 @@ linkml:Sparqlpath xsd:string } OR @<MoneyQuantity> ) +<Simulation> ( + CLOSED { + ( $<Simulation_tes> ( &<ComputationalModel_tes> ; + rdf:type [ <ComputationalModel> ] ? + ) ; + rdf:type [ <Simulation> ] ? + ) + } OR @<ClimateModel> +) + <SolarPlant> CLOSED { ( $<SolarPlant_tes> ( &<RenewablePlant_tes> ; rdf:type [ <RenewablePlant> ] ? @@ -1170,6 +1368,50 @@ linkml:Sparqlpath xsd:string ) } +<StudyHypothesis> CLOSED { + ( $<StudyHypothesis_tes> ( &<InformationEntity_tes> ; + rdf:type [ <InformationEntity> ] ? + ) ; + rdf:type [ <StudyHypothesis> ] + ) +} + +<StudyResult> CLOSED { + ( $<StudyResult_tes> ( &<InformationEntity_tes> ; + rdf:type [ <InformationEntity> ] ? ; + <hypothesis> @<StudyHypothesis> ? ; + <result> @linkml:String ? + ) ; + rdf:type [ <StudyResult> ] + ) +} + +<SubjectHistory> ( + CLOSED { + ( $<SubjectHistory_tes> ( &<Entity_tes> ; + rdf:type [ schema1:Thing ] ? ; + <subject> @<PhysicalEntity> ; + <events> @<Event> * ; + <over_interval> @<TemporalInterval> ? + ) ; + rdf:type [ <SubjectHistory> ] ? + ) + } OR @<SubjectObservationHistory> +) + +<SubjectObservationHistory> ( + CLOSED { + ( $<SubjectObservationHistory_tes> ( &<SubjectHistory_tes> ; + rdf:type [ <SubjectHistory> ] ? ; + <observations> @<Observation> * ; + <measurements> @<Measurement> * ; + <interpretations> @<Observation> * + ) ; + rdf:type [ <SubjectObservationHistory> ] ? + ) + } OR @<ClinicalHistory> +) + <TemporalInterval> CLOSED { ( $<TemporalInterval_tes> ( &<TimePointOrTemporalInterval_tes> ; rdf:type [ <TimePointOrTemporalInterval> ] ? @@ -1239,6 +1481,14 @@ linkml:Sparqlpath xsd:string ) } +<VeterinaryAnimal> CLOSED { + ( $<VeterinaryAnimal_tes> ( &<https://w3id.org/linkml-common/organisms/IndividualOrganism_tes> ; + rdf:type [ <https://w3id.org/linkml-common/organisms/IndividualOrganism> ] ? + ) ; + rdf:type [ <VeterinaryAnimal> ] + ) +} + <WellFacility> CLOSED { ( $<WellFacility_tes> ( &<ExtractiveIndustryFacility_tes> ; rdf:type [ <ExtractiveIndustryFacility> ] ? ; diff --git a/project/sqlschema/linkml_common.sql b/project/sqlschema/linkml_common.sql index 2091ed0..de1901b 100644 --- a/project/sqlschema/linkml_common.sql +++ b/project/sqlschema/linkml_common.sql @@ -11,7 +11,7 @@ -- # Class: "Intangible" Description: "An entity that is not a physical object, process, or information" -- * Slot: id Description: -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "NamedThing" Description: "" +-- # Class: "PhysicalEntity" Description: "" -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. -- * Slot: description Description: A human-readable description for a thing -- * Slot: id Description: A unique identifier for a thing @@ -40,6 +40,15 @@ -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. -- # Class: "Relationship" Description: "" -- * Slot: id Description: +-- * Slot: predicate Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: subject_id Description: +-- * Slot: object_id Description: +-- # Class: "PhysicalSystem" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. -- # Class: "Location" Description: "" -- * Slot: id Description: @@ -154,8 +163,15 @@ -- * Slot: id Description: -- * Slot: is_person Description: -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "ClinicalHistory" Description: "" +-- * Slot: id Description: +-- * Slot: subject Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: over_interval_id Description: -- # Class: "Investigation" Description: "" -- * Slot: objectives Description: +-- * Slot: hypothesis Description: +-- * Slot: design Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. @@ -171,11 +187,23 @@ -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. -- * Slot: describes_id Description: The thing that is being described +-- # Class: "StudyHypothesis" Description: "" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: describes_id Description: The thing that is being described -- # Class: "StudyDesign" Description: "" -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. -- * Slot: describes_id Description: The thing that is being described +-- # Class: "StudyResult" Description: "" +-- * Slot: hypothesis Description: +-- * Slot: result Description: +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: describes_id Description: The thing that is being described -- # Class: "SampleMaterial" Description: "" -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. -- * Slot: description Description: A human-readable description for a thing @@ -239,6 +267,21 @@ -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: +-- # Class: "Model" Description: "" +-- * Slot: id Description: +-- * Slot: models_id Description: +-- # Class: "ComputationalModel" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: models_id Description: +-- # Class: "Simulation" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: models_id Description: +-- # Class: "DigitalTwin" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: models_id Description: -- # Class: "ClinicalCohort" Description: "A group of patients who share a common set of characteristics" -- * Slot: definition Description: -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. @@ -266,49 +309,120 @@ -- # Class: "DataStructure" Description: "" -- * Slot: id Description: -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "EngineeringSpecification" Description: "" +-- # Class: "Observation" Description: "A statement about the state of something" +-- * Slot: measured_using Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: describes_id Description: The thing that is being described --- # Class: "RawMaterial" Description: "" --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing +-- * Slot: ClinicalHistory_id Description: Autocreated FK slot +-- * Slot: SubjectObservationHistory_id Description: Autocreated FK slot +-- * Slot: observation_subject_id Description: +-- * Slot: variable_measured_id Description: The variable being measured +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "SetOfObservations" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: observation_subject_id Description: +-- * Slot: observations_id Description: +-- # Class: "SubjectObservationHistory" Description: "" +-- * Slot: id Description: +-- * Slot: subject Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: over_interval_id Description: +-- # Class: "Measurement" Description: "" +-- * Slot: measured_using Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "EngineeringProcess" Description: "" --- * Slot: follows_procedure Description: --- * Slot: part_of Description: +-- * Slot: ClinicalHistory_id Description: Autocreated FK slot +-- * Slot: SubjectObservationHistory_id Description: Autocreated FK slot +-- * Slot: quantity_measured_id Description: The quantity being measured +-- * Slot: observation_subject_id Description: +-- * Slot: variable_measured_id Description: The variable being measured +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "QualitativeObservation" Description: "" +-- * Slot: measured_using Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: observation_subject_id Description: +-- * Slot: variable_measured_id Description: The variable being measured -- * Slot: starts_at_id Description: -- * Slot: ends_at_id Description: -- * Slot: happens_at_id Description: -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: --- # Class: "EngineeringMaterialProcessing" Description: "" --- * Slot: follows_procedure Description: --- * Slot: uses_physical_device Description: +-- # Class: "Variable" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Event" Description: "A thing that happens" -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: uses_configuration_id Description: -- * Slot: starts_at_id Description: -- * Slot: ends_at_id Description: -- * Slot: happens_at_id Description: -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: --- # Class: "Equipment" Description: "" +-- # Class: "TimePointOrTemporalInterval" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- # Class: "TemporalInterval" Description: "A period of time" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- # Class: "TimePoint" Description: "A point in time. Can be fully specified, or specified in relative terms." +-- * Slot: id Description: +-- * Slot: year_value Description: +-- * Slot: date_value Description: +-- * Slot: time_value Description: +-- * Slot: datetime_value Description: +-- * Slot: marker_event Description: +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- # Class: "Duration" Description: "A length of time" +-- * Slot: id Description: +-- * Slot: has_quantity_kind Description: The kind of quantity +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "TemporalRelationship" Description: "A relationship to another time point" +-- * Slot: id Description: +-- * Slot: predicate Description: The relationship between the two time points +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: relative_to_id Description: +-- * Slot: subject_id Description: +-- * Slot: object_id Description: +-- # Class: "SubjectHistory" Description: "" +-- * Slot: id Description: +-- * Slot: subject Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: over_interval_id Description: +-- # Class: "Place" Description: "Entities that have a somewhat fixed, physical extension." -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. -- * Slot: description Description: A human-readable description for a thing -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Place" Description: "Entities that have a somewhat fixed, physical extension." +-- * Slot: address_id Description: +-- * Slot: geolocation_id Description: The geolocation of the place +-- * Slot: bounding_coordinates_id Description: The bounding coordinates of the place +-- # Class: "Landform" Description: "A natural feature of the solid surface of the Earth or other planetary body" -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. -- * Slot: description Description: A human-readable description for a thing -- * Slot: id Description: A unique identifier for a thing @@ -317,7 +431,7 @@ -- * Slot: address_id Description: -- * Slot: geolocation_id Description: The geolocation of the place -- * Slot: bounding_coordinates_id Description: The bounding coordinates of the place --- # Class: "Landform" Description: "A natural feature of the solid surface of the Earth or other planetary body" +-- # Class: "AstronomicalBody" Description: "" -- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. -- * Slot: description Description: A human-readable description for a thing -- * Slot: id Description: A unique identifier for a thing @@ -348,90 +462,71 @@ -- * Slot: north_bounding_coordinate Description: The northernmost coordinate of the location -- * Slot: south_bounding_coordinate Description: The southernmost coordinate of the location -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "QuantityKind" Description: "" +-- # Class: "ExecutionOfProcedure" Description: "" -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Quantity" Description: "" --- * Slot: id Description: --- * Slot: has_quantity_kind Description: The kind of quantity --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "SimpleQuantity" Description: "A quantity is a property that can be measured or counted" --- * Slot: id Description: --- * Slot: value Description: The value of the quantity --- * Slot: unit Description: --- * Slot: has_quantity_kind Description: The kind of quantity --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Ratio" Description: "A tuple of two quantities" --- * Slot: id Description: --- * Slot: has_quantity_kind Description: The kind of quantity --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: numerator_id Description: The numerator of the ratio --- * Slot: denominator_id Description: The denominator of the ratio --- # Class: "QuantityRange" Description: "A quantity range is a property that can be measured or counted" +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "PlannedProcessConfiguration" Description: "" -- * Slot: id Description: -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: lower_bound_id Description: The lower bound of the range --- * Slot: upper_bound_id Description: The upper bound of the range --- # Class: "UnitConcept" Description: "" --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Agent" Description: "Represents an Agent" --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Person" Description: "Represents a Person" --- * Slot: primary_email Description: The main email address of a person --- * Slot: birth_date Description: Date on which a person is born --- * Slot: age_in_years Description: Number of years since birth --- * Slot: vital_status Description: living or dead status --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Organization" Description: "Represents an Organization" --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing +-- # Class: "PlannedProcess" Description: "A process that follows a defined procedure or plan" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "AutomatedAgent" Description: "Represents an Automated Agent" --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing +-- * Slot: uses_configuration_id Description: +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "ComputationalPlannedProcess" Description: "Application of a mathematical operation to one or more inputs to produce one or more outputs" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "LifeEvent" Description: "" +-- * Slot: uses_configuration_id Description: +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "MaterialCollection" Description: "" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: uses_configuration_id Description: -- * Slot: starts_at_id Description: -- * Slot: ends_at_id Description: -- * Slot: happens_at_id Description: -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: --- # Class: "CreationMetadata" Description: "" --- * Slot: id Description: --- * Slot: title Description: The title of the item --- * Slot: abstract Description: A summary of the item --- * Slot: rights Description: Information about rights held in and over the item --- # Class: "CreativeWork" Description: "The most generic kind of creative work, including books, movies, photographs, software programs, etc." --- * Slot: title Description: The title of the item --- * Slot: abstract Description: A summary of the item --- * Slot: rights Description: Information about rights held in and over the item --- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. --- * Slot: description Description: A human-readable description for a thing +-- # Class: "MaterialProcessing" Description: "" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Service" Description: "A service provided by an organization" --- * Slot: id Description: --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: uses_configuration_id Description: +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: -- # Class: "MoneyQuantity" Description: "A quantity of money" -- * Slot: id Description: -- * Slot: value Description: The value of the quantity @@ -457,52 +552,171 @@ -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Observation" Description: "A statement about the state of something" --- * Slot: measured_using Description: +-- # Class: "EconomicSystem" Description: "" +-- * Slot: economy_of_place Description: +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: observation_subject_id Description: --- * Slot: variable_measured_id Description: The variable being measured --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "Measurement" Description: "" --- * Slot: measured_using Description: +-- # Class: "EngineeringSpecification" Description: "" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: describes_id Description: The thing that is being described +-- # Class: "RawMaterial" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "EngineeringProcess" Description: "" +-- * Slot: follows_procedure Description: +-- * Slot: part_of Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: quantity_measured_id Description: The quantity being measured --- * Slot: observation_subject_id Description: --- * Slot: variable_measured_id Description: The variable being measured -- * Slot: starts_at_id Description: -- * Slot: ends_at_id Description: -- * Slot: happens_at_id Description: -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: --- # Class: "QualitativeObservation" Description: "" --- * Slot: measured_using Description: +-- # Class: "EngineeringMaterialProcessing" Description: "" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: observation_subject_id Description: --- * Slot: variable_measured_id Description: The variable being measured +-- * Slot: uses_configuration_id Description: -- * Slot: starts_at_id Description: -- * Slot: ends_at_id Description: -- * Slot: happens_at_id Description: -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: --- # Class: "Variable" Description: "" --- * Slot: id Description: --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "PowerPlant" Description: "A facility for generating electrical power" --- * Slot: plant_type Description: --- * Slot: location Description: +-- # Class: "Equipment" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "QuantityKind" Description: "" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Quantity" Description: "" +-- * Slot: id Description: +-- * Slot: has_quantity_kind Description: The kind of quantity +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "SimpleQuantity" Description: "A quantity is a property that can be measured or counted" +-- * Slot: id Description: +-- * Slot: value Description: The value of the quantity +-- * Slot: unit Description: +-- * Slot: has_quantity_kind Description: The kind of quantity +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Ratio" Description: "A tuple of two quantities" +-- * Slot: id Description: +-- * Slot: has_quantity_kind Description: The kind of quantity +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: numerator_id Description: The numerator of the ratio +-- * Slot: denominator_id Description: The denominator of the ratio +-- # Class: "QuantityRange" Description: "A quantity range is a property that can be measured or counted" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: lower_bound_id Description: The lower bound of the range +-- * Slot: upper_bound_id Description: The upper bound of the range +-- # Class: "UnitConcept" Description: "" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Agent" Description: "Represents an Agent" +-- * Slot: id Description: +-- # Class: "Person" Description: "Represents a Person" +-- * Slot: primary_email Description: The main email address of a person +-- * Slot: birth_date Description: Date on which a person is born +-- * Slot: age_in_years Description: Number of years since birth +-- * Slot: vital_status Description: living or dead status +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "VeterinaryAnimal" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Organization" Description: "Represents an Organization" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "OrganizationalRole" Description: "" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "OrgChart" Description: "" +-- * Slot: for_organization Description: +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: relationships_id Description: +-- * Slot: describes_id Description: The thing that is being described +-- # Class: "PersonInRole" Description: "" +-- * Slot: id Description: +-- * Slot: subject_person Description: +-- * Slot: predicate Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: HealthcareOrganization_id Description: Autocreated FK slot +-- * Slot: FinancialOrganization_id Description: Autocreated FK slot +-- * Slot: Organization_id Description: Autocreated FK slot +-- * Slot: person_role_id Description: +-- * Slot: subject_id Description: +-- * Slot: object_id Description: +-- # Class: "OrganizationPersonnelRelationship" Description: "" +-- * Slot: id Description: +-- * Slot: subject Description: +-- * Slot: predicate Description: +-- * Slot: object Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "AutomatedAgent" Description: "Represents an Automated Agent" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "LifeEvent" Description: "" +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: +-- # Class: "CreationMetadata" Description: "" +-- * Slot: id Description: +-- * Slot: title Description: The title of the item +-- * Slot: abstract Description: A summary of the item +-- * Slot: rights Description: Information about rights held in and over the item +-- # Class: "CreativeWork" Description: "The most generic kind of creative work, including books, movies, photographs, software programs, etc." +-- * Slot: title Description: The title of the item +-- * Slot: abstract Description: A summary of the item +-- * Slot: rights Description: Information about rights held in and over the item +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Service" Description: "A service provided by an organization" +-- * Slot: id Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "PowerPlant" Description: "A facility for generating electrical power" +-- * Slot: plant_type Description: +-- * Slot: location Description: -- * Slot: operator Description: -- * Slot: commissioning_date Description: -- * Slot: decommissioning_date Description: @@ -617,111 +831,6 @@ -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "Event" Description: "A thing that happens" --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "TimePointOrTemporalInterval" Description: "" --- * Slot: id Description: --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- # Class: "TemporalInterval" Description: "A period of time" --- * Slot: id Description: --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- # Class: "TimePoint" Description: "A point in time. Can be fully specified, or specified in relative terms." --- * Slot: id Description: --- * Slot: year_value Description: --- * Slot: date_value Description: --- * Slot: time_value Description: --- * Slot: datetime_value Description: --- * Slot: marker_event Description: --- * Slot: description Description: A human-readable description for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- # Class: "Duration" Description: "A length of time" --- * Slot: id Description: --- * Slot: has_quantity_kind Description: The kind of quantity --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "TemporalRelationship" Description: "A relationship to another time point" --- * Slot: id Description: --- * Slot: predicate Description: The relationship between the two time points --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: relative_to_id Description: --- # Class: "ExecutionOfProcedure" Description: "" --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "PlannedProcessConfiguration" Description: "" --- * Slot: id Description: --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- # Class: "PlannedProcess" Description: "A process that follows a defined procedure or plan" --- * Slot: follows_procedure Description: --- * Slot: uses_physical_device Description: --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: uses_configuration_id Description: --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "ComputationalPlannedProcess" Description: "Application of a mathematical operation to one or more inputs to produce one or more outputs" --- * Slot: follows_procedure Description: --- * Slot: uses_physical_device Description: --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: uses_configuration_id Description: --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "MaterialCollection" Description: "" --- * Slot: follows_procedure Description: --- * Slot: uses_physical_device Description: --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: uses_configuration_id Description: --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: --- # Class: "MaterialProcessing" Description: "" --- * Slot: follows_procedure Description: --- * Slot: uses_physical_device Description: --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. --- * Slot: uses_configuration_id Description: --- * Slot: starts_at_id Description: --- * Slot: ends_at_id Description: --- * Slot: happens_at_id Description: --- * Slot: has_interval_id Description: --- * Slot: has_duration_id Description: --- * Slot: is_ongoing_as_of_id Description: -- # Class: "ExtractiveIndustryFacility" Description: "A facility where natural resources are extracted from the earth" -- * Slot: facility_type Description: -- * Slot: operator Description: @@ -805,6 +914,22 @@ -- * Slot: address_id Description: -- * Slot: geolocation_id Description: The geolocation of the place -- * Slot: bounding_coordinates_id Description: The bounding coordinates of the place +-- # Class: "EnvironmentalSystem" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "Climate" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "ClimateModel" Description: "" +-- * Slot: id Description: +-- * Slot: models Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. -- # Class: "FoodRecipe" Description: "" -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing @@ -827,6 +952,19 @@ -- * Slot: has_interval_id Description: -- * Slot: has_duration_id Description: -- * Slot: is_ongoing_as_of_id Description: +-- # Class: "FoodPreparation" Description: "" +-- * Slot: follows_procedure Description: +-- * Slot: uses_physical_device Description: +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: uses_configuration_id Description: +-- * Slot: starts_at_id Description: +-- * Slot: ends_at_id Description: +-- * Slot: happens_at_id Description: +-- * Slot: has_interval_id Description: +-- * Slot: has_duration_id Description: +-- * Slot: is_ongoing_as_of_id Description: -- # Class: "FoodTypeConcept" Description: "" -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing @@ -839,6 +977,18 @@ -- * Slot: id Description: A unique identifier for a thing -- * Slot: name Description: A human-readable name for a thing -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "IndividualOrganism" Description: "" +-- * Slot: classification Description: A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings. +-- * Slot: description Description: A human-readable description for a thing +-- * Slot: id Description: A unique identifier for a thing +-- * Slot: name Description: A human-readable name for a thing +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- # Class: "OrganismalRelationship" Description: "" +-- * Slot: id Description: +-- * Slot: predicate Description: +-- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. +-- * Slot: subject_id Description: +-- * Slot: object_id Description: -- # Class: "Prediction" Description: "" -- * Slot: id Description: -- * Slot: type Description: A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`. @@ -889,12 +1039,21 @@ -- * Slot: precision Description: Precision is calculated as TP / (TP + FP) -- * Slot: f1_score Description: F1 Score is the harmonic mean of precision and recall -- * Slot: accuracy Description: Accuracy is calculated as (TP + TN) / (TP + FP + TN + FN) --- # Class: "NamedThing_ontology_types" Description: "" --- * Slot: NamedThing_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- # Class: "PhysicalEntity_ontology_types" Description: "" +-- * Slot: PhysicalEntity_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "PhysicalDevice_ontology_types" Description: "" -- * Slot: PhysicalDevice_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "PhysicalSystem_components" Description: "" +-- * Slot: PhysicalSystem_id Description: Autocreated FK slot +-- * Slot: components_id Description: +-- # Class: "PhysicalSystem_events" Description: "" +-- * Slot: PhysicalSystem_id Description: Autocreated FK slot +-- * Slot: events_id Description: +-- # Class: "PhysicalSystem_ontology_types" Description: "" +-- * Slot: PhysicalSystem_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "Dataset_collected_as_part_of" Description: "" -- * Slot: Dataset_id Description: Autocreated FK slot -- * Slot: collected_as_part_of_id Description: @@ -912,61 +1071,106 @@ -- * Slot: keywords Description: Keywords or tags used to describe this item -- # Class: "BuiltEnvironmentFeature_ontology_types" Description: "" -- * Slot: BuiltEnvironmentFeature_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "Facility_ontology_types" Description: "" -- * Slot: Facility_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "Building_ontology_types" Description: "" -- * Slot: Building_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "BuiltSystem_ontology_types" Description: "" -- * Slot: BuiltSystem_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "HealthcareSite_ontology_types" Description: "" -- * Slot: HealthcareSite_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "HealthcareOrganization_provides_services" Description: "" -- * Slot: HealthcareOrganization_id Description: Autocreated FK slot -- * Slot: provides_services_id Description: -- # Class: "HealthcareOrganization_ontology_types" Description: "" -- * Slot: HealthcareOrganization_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "ClinicalHistory_events" Description: "" +-- * Slot: ClinicalHistory_id Description: Autocreated FK slot +-- * Slot: events_id Description: -- # Class: "Investigation_variables" Description: "" -- * Slot: Investigation_id Description: Autocreated FK slot -- * Slot: variables_id Description: +-- # Class: "Investigation_results" Description: "" +-- * Slot: Investigation_id Description: Autocreated FK slot +-- * Slot: results_id Description: -- # Class: "SampleMaterial_ontology_types" Description: "" -- * Slot: SampleMaterial_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "ClinicalCohort_ontology_types" Description: "" -- * Slot: ClinicalCohort_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "RawMaterial_ontology_types" Description: "" --- * Slot: RawMaterial_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "Equipment_ontology_types" Description: "" --- * Slot: Equipment_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "SubjectObservationHistory_events" Description: "" +-- * Slot: SubjectObservationHistory_id Description: Autocreated FK slot +-- * Slot: events_id Description: +-- # Class: "Variable_allowed_units" Description: "" +-- * Slot: Variable_id Description: Autocreated FK slot +-- * Slot: allowed_units_id Description: The units that are allowed for this variable +-- # Class: "SubjectHistory_events" Description: "" +-- * Slot: SubjectHistory_id Description: Autocreated FK slot +-- * Slot: events_id Description: -- # Class: "Place_ontology_types" Description: "" -- * Slot: Place_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "Landform_ontology_types" Description: "" -- * Slot: Landform_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "Agent_ontology_types" Description: "" --- * Slot: Agent_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "Person_ontology_types" Description: "" --- * Slot: Person_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "Organization_provides_services" Description: "" --- * Slot: Organization_id Description: Autocreated FK slot --- * Slot: provides_services_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "AstronomicalBody_ontology_types" Description: "" +-- * Slot: AstronomicalBody_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "ComputationalPlannedProcess_inputs" Description: "" +-- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot +-- * Slot: inputs_id Description: The inputs to the operation +-- # Class: "ComputationalPlannedProcess_outputs" Description: "" +-- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot +-- * Slot: outputs_id Description: The outputs of the operation +-- # Class: "ComputationalPlannedProcess_parts" Description: "" +-- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot +-- * Slot: parts_id Description: The parts of the process +-- # Class: "ComputationalPlannedProcess_immediate_preceding_steps" Description: "" +-- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot +-- * Slot: immediate_preceding_steps_id Description: The steps that immediately precede this step +-- # Class: "FinancialOrganization_provides_services" Description: "" +-- * Slot: FinancialOrganization_id Description: Autocreated FK slot +-- * Slot: provides_services_id Description: +-- # Class: "FinancialOrganization_ontology_types" Description: "" +-- * Slot: FinancialOrganization_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "EconomicSystem_components" Description: "" +-- * Slot: EconomicSystem_id Description: Autocreated FK slot +-- * Slot: components_id Description: +-- # Class: "EconomicSystem_events" Description: "" +-- * Slot: EconomicSystem_id Description: Autocreated FK slot +-- * Slot: events_id Description: +-- # Class: "EconomicSystem_ontology_types" Description: "" +-- * Slot: EconomicSystem_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "RawMaterial_ontology_types" Description: "" +-- * Slot: RawMaterial_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "Equipment_ontology_types" Description: "" +-- * Slot: Equipment_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "Person_ontology_types" Description: "" +-- * Slot: Person_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "VeterinaryAnimal_ontology_types" Description: "" +-- * Slot: VeterinaryAnimal_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "Organization_provides_services" Description: "" +-- * Slot: Organization_id Description: Autocreated FK slot +-- * Slot: provides_services_id Description: -- # Class: "Organization_ontology_types" Description: "" -- * Slot: Organization_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "AutomatedAgent_ontology_types" Description: "" -- * Slot: AutomatedAgent_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "CreationMetadata_creators" Description: "" -- * Slot: CreationMetadata_id Description: Autocreated FK slot -- * Slot: creators_id Description: The person or organization who created the work @@ -993,79 +1197,79 @@ -- * Slot: keywords Description: Keywords or tags used to describe this item -- # Class: "CreativeWork_ontology_types" Description: "" -- * Slot: CreativeWork_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "FinancialOrganization_provides_services" Description: "" --- * Slot: FinancialOrganization_id Description: Autocreated FK slot --- * Slot: provides_services_id Description: --- # Class: "FinancialOrganization_ontology_types" Description: "" --- * Slot: FinancialOrganization_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "Variable_allowed_units" Description: "" --- * Slot: Variable_id Description: Autocreated FK slot --- * Slot: allowed_units_id Description: The units that are allowed for this variable +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "PowerPlant_ontology_types" Description: "" -- * Slot: PowerPlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "FossilFuelPlant_ontology_types" Description: "" -- * Slot: FossilFuelPlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "NuclearPlant_ontology_types" Description: "" -- * Slot: NuclearPlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "RenewablePlant_ontology_types" Description: "" -- * Slot: RenewablePlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "HydroelectricPlant_ontology_types" Description: "" -- * Slot: HydroelectricPlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "SolarPlant_ontology_types" Description: "" -- * Slot: SolarPlant_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "WindFarm_ontology_types" Description: "" -- * Slot: WindFarm_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "ElectricalGrid_plants" Description: "" -- * Slot: ElectricalGrid_id Description: Autocreated FK slot -- * Slot: plants_id Description: -- # Class: "ElectricalGrid_ontology_types" Description: "" -- * Slot: ElectricalGrid_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: --- # Class: "ComputationalPlannedProcess_inputs" Description: "" --- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot --- * Slot: inputs_id Description: The inputs to the operation --- # Class: "ComputationalPlannedProcess_outputs" Description: "" --- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot --- * Slot: outputs_id Description: The outputs of the operation --- # Class: "ComputationalPlannedProcess_parts" Description: "" --- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot --- * Slot: parts_id Description: The parts of the process --- # Class: "ComputationalPlannedProcess_immediate_preceding_steps" Description: "" --- * Slot: ComputationalPlannedProcess_id Description: Autocreated FK slot --- * Slot: immediate_preceding_steps_id Description: The steps that immediately precede this step +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "ExtractiveIndustryFacility_ontology_types" Description: "" -- * Slot: ExtractiveIndustryFacility_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "MiningFacility_ontology_types" Description: "" -- * Slot: MiningFacility_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "WellFacility_ontology_types" Description: "" -- * Slot: WellFacility_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "QuarryFacility_ontology_types" Description: "" -- * Slot: QuarryFacility_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "ExtractiveIndustryEquipment_ontology_types" Description: "" -- * Slot: ExtractiveIndustryEquipment_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "EnvironmentalSite_ontology_types" Description: "" -- * Slot: EnvironmentalSite_id Description: Autocreated FK slot --- * Slot: ontology_types_id Description: +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "EnvironmentalSystem_components" Description: "" +-- * Slot: EnvironmentalSystem_id Description: Autocreated FK slot +-- * Slot: components_id Description: +-- # Class: "EnvironmentalSystem_events" Description: "" +-- * Slot: EnvironmentalSystem_id Description: Autocreated FK slot +-- * Slot: events_id Description: +-- # Class: "EnvironmentalSystem_ontology_types" Description: "" +-- * Slot: EnvironmentalSystem_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. +-- # Class: "Climate_components" Description: "" +-- * Slot: Climate_id Description: Autocreated FK slot +-- * Slot: components_id Description: +-- # Class: "Climate_events" Description: "" +-- * Slot: Climate_id Description: Autocreated FK slot +-- * Slot: events_id Description: +-- # Class: "Climate_ontology_types" Description: "" +-- * Slot: Climate_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. -- # Class: "FoodRecipe_ingredients" Description: "" -- * Slot: FoodRecipe_id Description: Autocreated FK slot -- * Slot: ingredients_id Description: -- # Class: "FoodRecipe_steps" Description: "" -- * Slot: FoodRecipe_id Description: Autocreated FK slot -- * Slot: steps_id Description: +-- # Class: "IndividualOrganism_ontology_types" Description: "" +-- * Slot: IndividualOrganism_id Description: Autocreated FK slot +-- * Slot: ontology_types_id Description: A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy. CREATE TABLE "Identified" ( id TEXT NOT NULL, @@ -1098,11 +1302,6 @@ CREATE TABLE "Role" ( type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "Relationship" ( - id INTEGER NOT NULL, - type TEXT, - PRIMARY KEY (id) -); CREATE TABLE "Location" ( id INTEGER NOT NULL, type TEXT, @@ -1127,6 +1326,54 @@ CREATE TABLE "DataStructure" ( type TEXT, PRIMARY KEY (id) ); +CREATE TABLE "Variable" ( + id INTEGER NOT NULL, + type TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "Event" ( + id TEXT NOT NULL, + name TEXT, + type TEXT, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "TemporalInterval" ( + id INTEGER NOT NULL, + type TEXT, + starts_at_id INTEGER, + ends_at_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "TimePoint" ( + id INTEGER NOT NULL, + year_value INTEGER, + date_value DATE, + time_value TIME, + datetime_value DATETIME, + marker_event TEXT, + description TEXT, + type TEXT, + starts_at_id INTEGER, + ends_at_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(marker_event) REFERENCES "Event" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) +); CREATE TABLE "PostalAddress" ( id INTEGER NOT NULL, street_address TEXT, @@ -1155,97 +1402,66 @@ CREATE TABLE "GeoBoxLocation" ( type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "QuantityKind" ( - id TEXT NOT NULL, - name TEXT, +CREATE TABLE "PlannedProcessConfiguration" ( + id INTEGER NOT NULL, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "UnitConcept" ( +CREATE TABLE "CurrencyConcept" ( id TEXT NOT NULL, name TEXT, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "CreationMetadata" ( +CREATE TABLE "FinancialProduct" ( id INTEGER NOT NULL, - title TEXT, - abstract TEXT, - rights TEXT, + type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "Service" ( - id INTEGER NOT NULL, +CREATE TABLE "QuantityKind" ( + id TEXT NOT NULL, + name TEXT, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "CurrencyConcept" ( +CREATE TABLE "UnitConcept" ( id TEXT NOT NULL, name TEXT, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "FinancialProduct" ( +CREATE TABLE "Agent" ( id INTEGER NOT NULL, - type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "Variable" ( +CREATE TABLE "OrganizationalRole" ( id INTEGER NOT NULL, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "PowerPlantType" ( - id TEXT NOT NULL, - name TEXT, +CREATE TABLE "OrganizationPersonnelRelationship" ( + id INTEGER NOT NULL, + subject TEXT, + predicate TEXT, + object TEXT, type TEXT, PRIMARY KEY (id) ); -CREATE TABLE "Event" ( - id TEXT NOT NULL, - name TEXT, - type TEXT, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) -); -CREATE TABLE "TemporalInterval" ( +CREATE TABLE "CreationMetadata" ( id INTEGER NOT NULL, - type TEXT, - starts_at_id INTEGER, - ends_at_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) + title TEXT, + abstract TEXT, + rights TEXT, + PRIMARY KEY (id) ); -CREATE TABLE "TimePoint" ( +CREATE TABLE "Service" ( id INTEGER NOT NULL, - year_value INTEGER, - date_value DATE, - time_value TIME, - datetime_value DATETIME, - marker_event TEXT, - description TEXT, type TEXT, - starts_at_id INTEGER, - ends_at_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(marker_event) REFERENCES "Event" (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) + PRIMARY KEY (id) ); -CREATE TABLE "PlannedProcessConfiguration" ( - id INTEGER NOT NULL, +CREATE TABLE "PowerPlantType" ( + id TEXT NOT NULL, + name TEXT, type TEXT, PRIMARY KEY (id) ); @@ -1292,7 +1508,7 @@ CREATE TABLE "Entity" ( PRIMARY KEY (id), FOREIGN KEY("EntitySet_id") REFERENCES "EntitySet" (id) ); -CREATE TABLE "NamedThing" ( +CREATE TABLE "PhysicalEntity" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1318,6 +1534,15 @@ CREATE TABLE "PhysicalDevice" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); +CREATE TABLE "PhysicalSystem" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); CREATE TABLE "Specification" ( id TEXT NOT NULL, name TEXT, @@ -1404,6 +1629,14 @@ CREATE TABLE "InvestigativeProtocol" ( PRIMARY KEY (id), FOREIGN KEY(describes_id) REFERENCES "Any" (id) ); +CREATE TABLE "StudyHypothesis" ( + id TEXT NOT NULL, + name TEXT, + type TEXT, + describes_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(describes_id) REFERENCES "Any" (id) +); CREATE TABLE "StudyDesign" ( id TEXT NOT NULL, name TEXT, @@ -1429,33 +1662,38 @@ CREATE TABLE "ClinicalCohortDefinition" ( PRIMARY KEY (id), FOREIGN KEY(describes_id) REFERENCES "Any" (id) ); -CREATE TABLE "EngineeringSpecification" ( - id TEXT NOT NULL, - name TEXT, +CREATE TABLE "TimePointOrTemporalInterval" ( + id INTEGER NOT NULL, type TEXT, - describes_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(describes_id) REFERENCES "Any" (id) + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "RawMaterial" ( - classification TEXT, - description TEXT, - id TEXT NOT NULL, - name TEXT, +CREATE TABLE "Duration" ( + id INTEGER NOT NULL, + has_quantity_kind TEXT, type TEXT, PRIMARY KEY (id), - FOREIGN KEY(classification) REFERENCES "Concept" (id) + FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) ); -CREATE TABLE "Equipment" ( +CREATE TABLE "Place" ( classification TEXT, description TEXT, id TEXT NOT NULL, name TEXT, type TEXT, + address_id INTEGER, + geolocation_id INTEGER, + bounding_coordinates_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(classification) REFERENCES "Concept" (id) + FOREIGN KEY(classification) REFERENCES "Concept" (id), + FOREIGN KEY(address_id) REFERENCES "PostalAddress" (id), + FOREIGN KEY(geolocation_id) REFERENCES "GeoPointLocation" (id), + FOREIGN KEY(bounding_coordinates_id) REFERENCES "GeoBoxLocation" (id) ); -CREATE TABLE "Place" ( +CREATE TABLE "Landform" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1470,7 +1708,7 @@ CREATE TABLE "Place" ( FOREIGN KEY(geolocation_id) REFERENCES "GeoPointLocation" (id), FOREIGN KEY(bounding_coordinates_id) REFERENCES "GeoBoxLocation" (id) ); -CREATE TABLE "Landform" ( +CREATE TABLE "AstronomicalBody" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1485,24 +1723,17 @@ CREATE TABLE "Landform" ( FOREIGN KEY(geolocation_id) REFERENCES "GeoPointLocation" (id), FOREIGN KEY(bounding_coordinates_id) REFERENCES "GeoBoxLocation" (id) ); -CREATE TABLE "Quantity" ( - id INTEGER NOT NULL, - has_quantity_kind TEXT, - type TEXT, - PRIMARY KEY (id), - FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) -); -CREATE TABLE "SimpleQuantity" ( +CREATE TABLE "MoneyQuantity" ( id INTEGER NOT NULL, value FLOAT, unit TEXT, has_quantity_kind TEXT, type TEXT, PRIMARY KEY (id), - FOREIGN KEY(unit) REFERENCES "UnitConcept" (id), + FOREIGN KEY(unit) REFERENCES "CurrencyConcept" (id), FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) ); -CREATE TABLE "Agent" ( +CREATE TABLE "FinancialOrganization" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1511,20 +1742,15 @@ CREATE TABLE "Agent" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "Person" ( - primary_email TEXT, - birth_date DATE, - age_in_years INTEGER, - vital_status VARCHAR(7), - classification TEXT, - description TEXT, +CREATE TABLE "EngineeringSpecification" ( id TEXT NOT NULL, name TEXT, type TEXT, + describes_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(classification) REFERENCES "Concept" (id) + FOREIGN KEY(describes_id) REFERENCES "Any" (id) ); -CREATE TABLE "Organization" ( +CREATE TABLE "RawMaterial" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1533,7 +1759,7 @@ CREATE TABLE "Organization" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "AutomatedAgent" ( +CREATE TABLE "Equipment" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1542,29 +1768,28 @@ CREATE TABLE "AutomatedAgent" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "CreativeWork" ( - title TEXT, - abstract TEXT, - rights TEXT, - classification TEXT, - description TEXT, - id TEXT NOT NULL, - name TEXT, +CREATE TABLE "Quantity" ( + id INTEGER NOT NULL, + has_quantity_kind TEXT, type TEXT, PRIMARY KEY (id), - FOREIGN KEY(classification) REFERENCES "Concept" (id) + FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) ); -CREATE TABLE "MoneyQuantity" ( +CREATE TABLE "SimpleQuantity" ( id INTEGER NOT NULL, value FLOAT, unit TEXT, has_quantity_kind TEXT, type TEXT, PRIMARY KEY (id), - FOREIGN KEY(unit) REFERENCES "CurrencyConcept" (id), + FOREIGN KEY(unit) REFERENCES "UnitConcept" (id), FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) ); -CREATE TABLE "FinancialOrganization" ( +CREATE TABLE "Person" ( + primary_email TEXT, + birth_date DATE, + age_in_years INTEGER, + vital_status VARCHAR(7), classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1573,7 +1798,7 @@ CREATE TABLE "FinancialOrganization" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "ElectricalGrid" ( +CREATE TABLE "VeterinaryAnimal" ( classification TEXT, description TEXT, id TEXT NOT NULL, @@ -1582,21 +1807,44 @@ CREATE TABLE "ElectricalGrid" ( PRIMARY KEY (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "TimePointOrTemporalInterval" ( - id INTEGER NOT NULL, +CREATE TABLE "Organization" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, type TEXT, - starts_at_id INTEGER, - ends_at_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id) + FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "Duration" ( - id INTEGER NOT NULL, - has_quantity_kind TEXT, +CREATE TABLE "AutomatedAgent" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, type TEXT, PRIMARY KEY (id), - FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); +CREATE TABLE "CreativeWork" ( + title TEXT, + abstract TEXT, + rights TEXT, + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); +CREATE TABLE "ElectricalGrid" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) ); CREATE TABLE "ExtractiveIndustryEquipment" ( classification TEXT, @@ -1622,6 +1870,24 @@ CREATE TABLE "EnvironmentalSite" ( FOREIGN KEY(geolocation_id) REFERENCES "GeoPointLocation" (id), FOREIGN KEY(bounding_coordinates_id) REFERENCES "GeoBoxLocation" (id) ); +CREATE TABLE "EnvironmentalSystem" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); +CREATE TABLE "Climate" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); CREATE TABLE "FoodRecipe" ( id TEXT NOT NULL, name TEXT, @@ -1637,6 +1903,15 @@ CREATE TABLE "FoodIngredient" ( PRIMARY KEY (id), FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id) ); +CREATE TABLE "IndividualOrganism" ( + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); CREATE TABLE "SimplePrediction" ( id INTEGER NOT NULL, outcome VARCHAR(2), @@ -1667,12 +1942,6 @@ CREATE TABLE "AggregatePrediction" ( FOREIGN KEY(predicted_value_id) REFERENCES "Any" (id), FOREIGN KEY(expected_value_id) REFERENCES "Any" (id) ); -CREATE TABLE "CreationMetadata_keywords" ( - "CreationMetadata_id" INTEGER, - keywords TEXT, - PRIMARY KEY ("CreationMetadata_id", keywords), - FOREIGN KEY("CreationMetadata_id") REFERENCES "CreationMetadata" (id) -); CREATE TABLE "Variable_allowed_units" ( "Variable_id" INTEGER, allowed_units_id TEXT, @@ -1680,6 +1949,23 @@ CREATE TABLE "Variable_allowed_units" ( FOREIGN KEY("Variable_id") REFERENCES "Variable" (id), FOREIGN KEY(allowed_units_id) REFERENCES "UnitConcept" (id) ); +CREATE TABLE "CreationMetadata_keywords" ( + "CreationMetadata_id" INTEGER, + keywords TEXT, + PRIMARY KEY ("CreationMetadata_id", keywords), + FOREIGN KEY("CreationMetadata_id") REFERENCES "CreationMetadata" (id) +); +CREATE TABLE "Relationship" ( + id INTEGER NOT NULL, + predicate TEXT, + type TEXT, + subject_id INTEGER, + object_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(predicate) REFERENCES "Concept" (id), + FOREIGN KEY(subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(object_id) REFERENCES "Entity" (id) +); CREATE TABLE "Facility" ( located_at_place TEXT, classification TEXT, @@ -1727,8 +2013,19 @@ CREATE TABLE "Patient" ( PRIMARY KEY (id), FOREIGN KEY(is_person) REFERENCES "Person" (id) ); +CREATE TABLE "ClinicalHistory" ( + id INTEGER NOT NULL, + subject TEXT, + type TEXT, + over_interval_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(subject) REFERENCES "Person" (id), + FOREIGN KEY(over_interval_id) REFERENCES "TemporalInterval" (id) +); CREATE TABLE "Investigation" ( objectives TEXT, + hypothesis TEXT, + design TEXT, id TEXT NOT NULL, name TEXT, type TEXT, @@ -1739,6 +2036,8 @@ CREATE TABLE "Investigation" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), + FOREIGN KEY(hypothesis) REFERENCES "StudyHypothesis" (id), + FOREIGN KEY(design) REFERENCES "StudyDesign" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -1746,6 +2045,17 @@ CREATE TABLE "Investigation" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); +CREATE TABLE "StudyResult" ( + hypothesis TEXT, + result TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + describes_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(hypothesis) REFERENCES "StudyHypothesis" (id), + FOREIGN KEY(describes_id) REFERENCES "Any" (id) +); CREATE TABLE "SampleProcessing" ( follows_procedure TEXT, uses_physical_device TEXT, @@ -1770,6 +2080,33 @@ CREATE TABLE "SampleProcessing" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); +CREATE TABLE "Model" ( + id INTEGER NOT NULL, + models_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(models_id) REFERENCES "Entity" (id) +); +CREATE TABLE "ComputationalModel" ( + id INTEGER NOT NULL, + type TEXT, + models_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(models_id) REFERENCES "Entity" (id) +); +CREATE TABLE "Simulation" ( + id INTEGER NOT NULL, + type TEXT, + models_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(models_id) REFERENCES "Entity" (id) +); +CREATE TABLE "DigitalTwin" ( + id INTEGER NOT NULL, + type TEXT, + models_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(models_id) REFERENCES "Entity" (id) +); CREATE TABLE "ClinicalCohort" ( definition TEXT, classification TEXT, @@ -1781,12 +2118,22 @@ CREATE TABLE "ClinicalCohort" ( FOREIGN KEY(definition) REFERENCES "ClinicalCohortDefinition" (id), FOREIGN KEY(classification) REFERENCES "Concept" (id) ); -CREATE TABLE "EngineeringProcess" ( - follows_procedure TEXT, - part_of TEXT, +CREATE TABLE "SubjectObservationHistory" ( + id INTEGER NOT NULL, + subject TEXT NOT NULL, + type TEXT, + over_interval_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(subject) REFERENCES "PhysicalEntity" (id), + FOREIGN KEY(over_interval_id) REFERENCES "TemporalInterval" (id) +); +CREATE TABLE "QualitativeObservation" ( + measured_using TEXT, id TEXT NOT NULL, name TEXT, type TEXT, + observation_subject_id INTEGER, + variable_measured_id INTEGER, starts_at_id INTEGER, ends_at_id INTEGER, happens_at_id INTEGER, @@ -1794,8 +2141,9 @@ CREATE TABLE "EngineeringProcess" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(follows_procedure) REFERENCES "EngineeringSpecification" (id), - FOREIGN KEY(part_of) REFERENCES "EngineeringProcess" (id), + FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -1803,7 +2151,46 @@ CREATE TABLE "EngineeringProcess" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "EngineeringMaterialProcessing" ( +CREATE TABLE "TemporalRelationship" ( + id INTEGER NOT NULL, + predicate VARCHAR(15), + type TEXT, + relative_to_id INTEGER, + subject_id INTEGER, + object_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(relative_to_id) REFERENCES "Entity" (id), + FOREIGN KEY(subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(object_id) REFERENCES "Entity" (id) +); +CREATE TABLE "SubjectHistory" ( + id INTEGER NOT NULL, + subject TEXT NOT NULL, + type TEXT, + over_interval_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(subject) REFERENCES "PhysicalEntity" (id), + FOREIGN KEY(over_interval_id) REFERENCES "TemporalInterval" (id) +); +CREATE TABLE "ExecutionOfProcedure" ( + id TEXT NOT NULL, + name TEXT, + type TEXT, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "PlannedProcess" ( follows_procedure TEXT, uses_physical_device TEXT, id TEXT NOT NULL, @@ -1827,30 +2214,61 @@ CREATE TABLE "EngineeringMaterialProcessing" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "Ratio" ( - id INTEGER NOT NULL, - has_quantity_kind TEXT, +CREATE TABLE "ComputationalPlannedProcess" ( + follows_procedure TEXT, + uses_physical_device TEXT, + id TEXT NOT NULL, + name TEXT, type TEXT, - numerator_id INTEGER, - denominator_id INTEGER, + uses_configuration_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id), - FOREIGN KEY(numerator_id) REFERENCES "Quantity" (id), - FOREIGN KEY(denominator_id) REFERENCES "Quantity" (id) + FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), + FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "QuantityRange" ( - id INTEGER NOT NULL, +CREATE TABLE "MaterialCollection" ( + follows_procedure TEXT, + uses_physical_device TEXT, + id TEXT NOT NULL, + name TEXT, type TEXT, - lower_bound_id INTEGER, - upper_bound_id INTEGER, + uses_configuration_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(lower_bound_id) REFERENCES "Quantity" (id), - FOREIGN KEY(upper_bound_id) REFERENCES "Quantity" (id) + FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), + FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "LifeEvent" ( +CREATE TABLE "MaterialProcessing" ( + follows_procedure TEXT, + uses_physical_device TEXT, id TEXT NOT NULL, name TEXT, type TEXT, + uses_configuration_id INTEGER, starts_at_id INTEGER, ends_at_id INTEGER, happens_at_id INTEGER, @@ -1858,6 +2276,9 @@ CREATE TABLE "LifeEvent" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), + FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), + FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -1875,13 +2296,23 @@ CREATE TABLE "FinancialAccount" ( FOREIGN KEY(bank) REFERENCES "Organization" (id), FOREIGN KEY(account_holder) REFERENCES "Person" (id) ); -CREATE TABLE "Observation" ( - measured_using TEXT, +CREATE TABLE "EconomicSystem" ( + economy_of_place TEXT, + classification TEXT, + description TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(economy_of_place) REFERENCES "Place" (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id) +); +CREATE TABLE "EngineeringProcess" ( + follows_procedure TEXT, + part_of TEXT, id TEXT NOT NULL, name TEXT, type TEXT, - observation_subject_id INTEGER, - variable_measured_id INTEGER, starts_at_id INTEGER, ends_at_id INTEGER, happens_at_id INTEGER, @@ -1889,9 +2320,8 @@ CREATE TABLE "Observation" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), - FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), + FOREIGN KEY(follows_procedure) REFERENCES "EngineeringSpecification" (id), + FOREIGN KEY(part_of) REFERENCES "EngineeringProcess" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -1899,14 +2329,13 @@ CREATE TABLE "Observation" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "Measurement" ( - measured_using TEXT, +CREATE TABLE "EngineeringMaterialProcessing" ( + follows_procedure TEXT, + uses_physical_device TEXT, id TEXT NOT NULL, name TEXT, type TEXT, - quantity_measured_id INTEGER, - observation_subject_id INTEGER, - variable_measured_id INTEGER, + uses_configuration_id INTEGER, starts_at_id INTEGER, ends_at_id INTEGER, happens_at_id INTEGER, @@ -1914,10 +2343,9 @@ CREATE TABLE "Measurement" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(quantity_measured_id) REFERENCES "Quantity" (id), - FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), - FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), + FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), + FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -1925,13 +2353,63 @@ CREATE TABLE "Measurement" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); -CREATE TABLE "QualitativeObservation" ( - measured_using TEXT, +CREATE TABLE "Ratio" ( + id INTEGER NOT NULL, + has_quantity_kind TEXT, + type TEXT, + numerator_id INTEGER, + denominator_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(has_quantity_kind) REFERENCES "QuantityKind" (id), + FOREIGN KEY(numerator_id) REFERENCES "Quantity" (id), + FOREIGN KEY(denominator_id) REFERENCES "Quantity" (id) +); +CREATE TABLE "QuantityRange" ( + id INTEGER NOT NULL, + type TEXT, + lower_bound_id INTEGER, + upper_bound_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(lower_bound_id) REFERENCES "Quantity" (id), + FOREIGN KEY(upper_bound_id) REFERENCES "Quantity" (id) +); +CREATE TABLE "OrgChart" ( + for_organization TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + relationships_id INTEGER, + describes_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(for_organization) REFERENCES "Organization" (id), + FOREIGN KEY(relationships_id) REFERENCES "OrganizationPersonnelRelationship" (id), + FOREIGN KEY(describes_id) REFERENCES "Any" (id) +); +CREATE TABLE "PersonInRole" ( + id INTEGER NOT NULL, + subject_person TEXT, + predicate TEXT, + type TEXT, + "HealthcareOrganization_id" TEXT, + "FinancialOrganization_id" TEXT, + "Organization_id" TEXT, + person_role_id INTEGER, + subject_id INTEGER, + object_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(subject_person) REFERENCES "Person" (id), + FOREIGN KEY(predicate) REFERENCES "Concept" (id), + FOREIGN KEY("HealthcareOrganization_id") REFERENCES "HealthcareOrganization" (id), + FOREIGN KEY("FinancialOrganization_id") REFERENCES "FinancialOrganization" (id), + FOREIGN KEY("Organization_id") REFERENCES "Organization" (id), + FOREIGN KEY(person_role_id) REFERENCES "OrganizationalRole" (id), + FOREIGN KEY(subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(object_id) REFERENCES "Entity" (id) +); +CREATE TABLE "LifeEvent" ( id TEXT NOT NULL, name TEXT, type TEXT, - observation_subject_id INTEGER, - variable_measured_id INTEGER, starts_at_id INTEGER, ends_at_id INTEGER, happens_at_id INTEGER, @@ -1939,9 +2417,6 @@ CREATE TABLE "QualitativeObservation" ( has_duration_id INTEGER, is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), - FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), @@ -2104,150 +2579,28 @@ CREATE TABLE "SolarPlant" ( ); CREATE TABLE "WindFarm" ( plant_type TEXT, - location TEXT, - operator TEXT, - commissioning_date DATE, - decommissioning_date DATE, - located_at_place TEXT, - classification TEXT, - description TEXT, - id TEXT NOT NULL, - name TEXT, - type TEXT, - capacity_id INTEGER, - capex_id INTEGER, - opex_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(plant_type) REFERENCES "PowerPlantType" (id), - FOREIGN KEY(location) REFERENCES "Place" (id), - FOREIGN KEY(operator) REFERENCES "Organization" (id), - FOREIGN KEY(located_at_place) REFERENCES "Place" (id), - FOREIGN KEY(classification) REFERENCES "Concept" (id), - FOREIGN KEY(capacity_id) REFERENCES "SimpleQuantity" (id), - FOREIGN KEY(capex_id) REFERENCES "MoneyQuantity" (id), - FOREIGN KEY(opex_id) REFERENCES "MoneyQuantity" (id) -); -CREATE TABLE "TemporalRelationship" ( - id INTEGER NOT NULL, - predicate VARCHAR(15), - type TEXT, - relative_to_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(relative_to_id) REFERENCES "Entity" (id) -); -CREATE TABLE "ExecutionOfProcedure" ( - id TEXT NOT NULL, - name TEXT, - type TEXT, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) -); -CREATE TABLE "PlannedProcess" ( - follows_procedure TEXT, - uses_physical_device TEXT, - id TEXT NOT NULL, - name TEXT, - type TEXT, - uses_configuration_id INTEGER, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), - FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) -); -CREATE TABLE "ComputationalPlannedProcess" ( - follows_procedure TEXT, - uses_physical_device TEXT, - id TEXT NOT NULL, - name TEXT, - type TEXT, - uses_configuration_id INTEGER, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), - FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) -); -CREATE TABLE "MaterialCollection" ( - follows_procedure TEXT, - uses_physical_device TEXT, - id TEXT NOT NULL, - name TEXT, - type TEXT, - uses_configuration_id INTEGER, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, - PRIMARY KEY (id), - FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), - FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) -); -CREATE TABLE "MaterialProcessing" ( - follows_procedure TEXT, - uses_physical_device TEXT, + location TEXT, + operator TEXT, + commissioning_date DATE, + decommissioning_date DATE, + located_at_place TEXT, + classification TEXT, + description TEXT, id TEXT NOT NULL, name TEXT, type TEXT, - uses_configuration_id INTEGER, - starts_at_id INTEGER, - ends_at_id INTEGER, - happens_at_id INTEGER, - has_interval_id INTEGER, - has_duration_id INTEGER, - is_ongoing_as_of_id INTEGER, + capacity_id INTEGER, + capex_id INTEGER, + opex_id INTEGER, PRIMARY KEY (id), - FOREIGN KEY(follows_procedure) REFERENCES "Procedure" (id), - FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), - FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), - FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), - FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), - FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), - FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) + FOREIGN KEY(plant_type) REFERENCES "PowerPlantType" (id), + FOREIGN KEY(location) REFERENCES "Place" (id), + FOREIGN KEY(operator) REFERENCES "Organization" (id), + FOREIGN KEY(located_at_place) REFERENCES "Place" (id), + FOREIGN KEY(classification) REFERENCES "Concept" (id), + FOREIGN KEY(capacity_id) REFERENCES "SimpleQuantity" (id), + FOREIGN KEY(capex_id) REFERENCES "MoneyQuantity" (id), + FOREIGN KEY(opex_id) REFERENCES "MoneyQuantity" (id) ); CREATE TABLE "ExtractiveIndustryFacility" ( facility_type VARCHAR(15), @@ -2337,6 +2690,13 @@ CREATE TABLE "QuarryFacility" ( FOREIGN KEY(annual_production_id) REFERENCES "SimpleQuantity" (id), FOREIGN KEY(reserves_id) REFERENCES "SimpleQuantity" (id) ); +CREATE TABLE "ClimateModel" ( + id INTEGER NOT NULL, + models TEXT, + type TEXT, + PRIMARY KEY (id), + FOREIGN KEY(models) REFERENCES "Climate" (id) +); CREATE TABLE "FoodProcessing" ( follows_procedure TEXT, uses_physical_device TEXT, @@ -2361,6 +2721,41 @@ CREATE TABLE "FoodProcessing" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); +CREATE TABLE "FoodPreparation" ( + follows_procedure TEXT, + uses_physical_device TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + uses_configuration_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(follows_procedure) REFERENCES "FoodRecipe" (id), + FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY(uses_configuration_id) REFERENCES "PlannedProcessConfiguration" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "OrganismalRelationship" ( + id INTEGER NOT NULL, + predicate TEXT, + type TEXT, + subject_id INTEGER, + object_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(predicate) REFERENCES "Concept" (id), + FOREIGN KEY(subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(object_id) REFERENCES "Entity" (id) +); CREATE TABLE "PredictionSummaryStatistics" ( id INTEGER NOT NULL, uses_dataset TEXT, @@ -2376,11 +2771,11 @@ CREATE TABLE "PredictionSummaryStatistics" ( PRIMARY KEY (id), FOREIGN KEY(uses_dataset) REFERENCES "Dataset" (id) ); -CREATE TABLE "NamedThing_ontology_types" ( - "NamedThing_id" TEXT, +CREATE TABLE "PhysicalEntity_ontology_types" ( + "PhysicalEntity_id" TEXT, ontology_types_id TEXT, - PRIMARY KEY ("NamedThing_id", ontology_types_id), - FOREIGN KEY("NamedThing_id") REFERENCES "NamedThing" (id), + PRIMARY KEY ("PhysicalEntity_id", ontology_types_id), + FOREIGN KEY("PhysicalEntity_id") REFERENCES "PhysicalEntity" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); CREATE TABLE "PhysicalDevice_ontology_types" ( @@ -2390,26 +2785,47 @@ CREATE TABLE "PhysicalDevice_ontology_types" ( FOREIGN KEY("PhysicalDevice_id") REFERENCES "PhysicalDevice" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); +CREATE TABLE "PhysicalSystem_components" ( + "PhysicalSystem_id" TEXT, + components_id TEXT, + PRIMARY KEY ("PhysicalSystem_id", components_id), + FOREIGN KEY("PhysicalSystem_id") REFERENCES "PhysicalSystem" (id), + FOREIGN KEY(components_id) REFERENCES "PhysicalEntity" (id) +); +CREATE TABLE "PhysicalSystem_events" ( + "PhysicalSystem_id" TEXT, + events_id INTEGER, + PRIMARY KEY ("PhysicalSystem_id", events_id), + FOREIGN KEY("PhysicalSystem_id") REFERENCES "PhysicalSystem" (id), + FOREIGN KEY(events_id) REFERENCES "Entity" (id) +); +CREATE TABLE "PhysicalSystem_ontology_types" ( + "PhysicalSystem_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("PhysicalSystem_id", ontology_types_id), + FOREIGN KEY("PhysicalSystem_id") REFERENCES "PhysicalSystem" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); CREATE TABLE "Dataset_creators" ( "Dataset_id" TEXT, creators_id TEXT, PRIMARY KEY ("Dataset_id", creators_id), FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id), - FOREIGN KEY(creators_id) REFERENCES "Agent" (id) + FOREIGN KEY(creators_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "Dataset_contributors" ( "Dataset_id" TEXT, contributors_id TEXT, PRIMARY KEY ("Dataset_id", contributors_id), FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id), - FOREIGN KEY(contributors_id) REFERENCES "Agent" (id) + FOREIGN KEY(contributors_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "Dataset_contacts" ( "Dataset_id" TEXT, contacts_id TEXT, PRIMARY KEY ("Dataset_id", contacts_id), FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id), - FOREIGN KEY(contacts_id) REFERENCES "Agent" (id) + FOREIGN KEY(contacts_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "Dataset_keywords" ( "Dataset_id" TEXT, @@ -2459,20 +2875,6 @@ CREATE TABLE "SampleMaterial_ontology_types" ( FOREIGN KEY("SampleMaterial_id") REFERENCES "SampleMaterial" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); -CREATE TABLE "RawMaterial_ontology_types" ( - "RawMaterial_id" TEXT, - ontology_types_id TEXT, - PRIMARY KEY ("RawMaterial_id", ontology_types_id), - FOREIGN KEY("RawMaterial_id") REFERENCES "RawMaterial" (id), - FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) -); -CREATE TABLE "Equipment_ontology_types" ( - "Equipment_id" TEXT, - ontology_types_id TEXT, - PRIMARY KEY ("Equipment_id", ontology_types_id), - FOREIGN KEY("Equipment_id") REFERENCES "Equipment" (id), - FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) -); CREATE TABLE "Place_ontology_types" ( "Place_id" TEXT, ontology_types_id TEXT, @@ -2487,11 +2889,39 @@ CREATE TABLE "Landform_ontology_types" ( FOREIGN KEY("Landform_id") REFERENCES "Landform" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); -CREATE TABLE "Agent_ontology_types" ( - "Agent_id" TEXT, +CREATE TABLE "AstronomicalBody_ontology_types" ( + "AstronomicalBody_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("AstronomicalBody_id", ontology_types_id), + FOREIGN KEY("AstronomicalBody_id") REFERENCES "AstronomicalBody" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); +CREATE TABLE "FinancialOrganization_provides_services" ( + "FinancialOrganization_id" TEXT, + provides_services_id INTEGER, + PRIMARY KEY ("FinancialOrganization_id", provides_services_id), + FOREIGN KEY("FinancialOrganization_id") REFERENCES "FinancialOrganization" (id), + FOREIGN KEY(provides_services_id) REFERENCES "Service" (id) +); +CREATE TABLE "FinancialOrganization_ontology_types" ( + "FinancialOrganization_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("FinancialOrganization_id", ontology_types_id), + FOREIGN KEY("FinancialOrganization_id") REFERENCES "FinancialOrganization" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); +CREATE TABLE "RawMaterial_ontology_types" ( + "RawMaterial_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("RawMaterial_id", ontology_types_id), + FOREIGN KEY("RawMaterial_id") REFERENCES "RawMaterial" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); +CREATE TABLE "Equipment_ontology_types" ( + "Equipment_id" TEXT, ontology_types_id TEXT, - PRIMARY KEY ("Agent_id", ontology_types_id), - FOREIGN KEY("Agent_id") REFERENCES "Agent" (id), + PRIMARY KEY ("Equipment_id", ontology_types_id), + FOREIGN KEY("Equipment_id") REFERENCES "Equipment" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); CREATE TABLE "Person_ontology_types" ( @@ -2501,6 +2931,13 @@ CREATE TABLE "Person_ontology_types" ( FOREIGN KEY("Person_id") REFERENCES "Person" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); +CREATE TABLE "VeterinaryAnimal_ontology_types" ( + "VeterinaryAnimal_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("VeterinaryAnimal_id", ontology_types_id), + FOREIGN KEY("VeterinaryAnimal_id") REFERENCES "VeterinaryAnimal" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); CREATE TABLE "Organization_provides_services" ( "Organization_id" TEXT, provides_services_id INTEGER, @@ -2527,42 +2964,42 @@ CREATE TABLE "CreationMetadata_creators" ( creators_id TEXT, PRIMARY KEY ("CreationMetadata_id", creators_id), FOREIGN KEY("CreationMetadata_id") REFERENCES "CreationMetadata" (id), - FOREIGN KEY(creators_id) REFERENCES "Agent" (id) + FOREIGN KEY(creators_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreationMetadata_contributors" ( "CreationMetadata_id" INTEGER, contributors_id TEXT, PRIMARY KEY ("CreationMetadata_id", contributors_id), FOREIGN KEY("CreationMetadata_id") REFERENCES "CreationMetadata" (id), - FOREIGN KEY(contributors_id) REFERENCES "Agent" (id) + FOREIGN KEY(contributors_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreationMetadata_contacts" ( "CreationMetadata_id" INTEGER, contacts_id TEXT, PRIMARY KEY ("CreationMetadata_id", contacts_id), FOREIGN KEY("CreationMetadata_id") REFERENCES "CreationMetadata" (id), - FOREIGN KEY(contacts_id) REFERENCES "Agent" (id) + FOREIGN KEY(contacts_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreativeWork_creators" ( "CreativeWork_id" TEXT, creators_id TEXT, PRIMARY KEY ("CreativeWork_id", creators_id), FOREIGN KEY("CreativeWork_id") REFERENCES "CreativeWork" (id), - FOREIGN KEY(creators_id) REFERENCES "Agent" (id) + FOREIGN KEY(creators_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreativeWork_contributors" ( "CreativeWork_id" TEXT, contributors_id TEXT, PRIMARY KEY ("CreativeWork_id", contributors_id), FOREIGN KEY("CreativeWork_id") REFERENCES "CreativeWork" (id), - FOREIGN KEY(contributors_id) REFERENCES "Agent" (id) + FOREIGN KEY(contributors_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreativeWork_contacts" ( "CreativeWork_id" TEXT, contacts_id TEXT, PRIMARY KEY ("CreativeWork_id", contacts_id), FOREIGN KEY("CreativeWork_id") REFERENCES "CreativeWork" (id), - FOREIGN KEY(contacts_id) REFERENCES "Agent" (id) + FOREIGN KEY(contacts_id) REFERENCES "PhysicalEntity" (id) ); CREATE TABLE "CreativeWork_keywords" ( "CreativeWork_id" TEXT, @@ -2577,20 +3014,6 @@ CREATE TABLE "CreativeWork_ontology_types" ( FOREIGN KEY("CreativeWork_id") REFERENCES "CreativeWork" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); -CREATE TABLE "FinancialOrganization_provides_services" ( - "FinancialOrganization_id" TEXT, - provides_services_id INTEGER, - PRIMARY KEY ("FinancialOrganization_id", provides_services_id), - FOREIGN KEY("FinancialOrganization_id") REFERENCES "FinancialOrganization" (id), - FOREIGN KEY(provides_services_id) REFERENCES "Service" (id) -); -CREATE TABLE "FinancialOrganization_ontology_types" ( - "FinancialOrganization_id" TEXT, - ontology_types_id TEXT, - PRIMARY KEY ("FinancialOrganization_id", ontology_types_id), - FOREIGN KEY("FinancialOrganization_id") REFERENCES "FinancialOrganization" (id), - FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) -); CREATE TABLE "ElectricalGrid_ontology_types" ( "ElectricalGrid_id" TEXT, ontology_types_id TEXT, @@ -2612,6 +3035,48 @@ CREATE TABLE "EnvironmentalSite_ontology_types" ( FOREIGN KEY("EnvironmentalSite_id") REFERENCES "EnvironmentalSite" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); +CREATE TABLE "EnvironmentalSystem_components" ( + "EnvironmentalSystem_id" TEXT, + components_id TEXT, + PRIMARY KEY ("EnvironmentalSystem_id", components_id), + FOREIGN KEY("EnvironmentalSystem_id") REFERENCES "EnvironmentalSystem" (id), + FOREIGN KEY(components_id) REFERENCES "PhysicalEntity" (id) +); +CREATE TABLE "EnvironmentalSystem_events" ( + "EnvironmentalSystem_id" TEXT, + events_id INTEGER, + PRIMARY KEY ("EnvironmentalSystem_id", events_id), + FOREIGN KEY("EnvironmentalSystem_id") REFERENCES "EnvironmentalSystem" (id), + FOREIGN KEY(events_id) REFERENCES "Entity" (id) +); +CREATE TABLE "EnvironmentalSystem_ontology_types" ( + "EnvironmentalSystem_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("EnvironmentalSystem_id", ontology_types_id), + FOREIGN KEY("EnvironmentalSystem_id") REFERENCES "EnvironmentalSystem" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); +CREATE TABLE "Climate_components" ( + "Climate_id" TEXT, + components_id TEXT, + PRIMARY KEY ("Climate_id", components_id), + FOREIGN KEY("Climate_id") REFERENCES "Climate" (id), + FOREIGN KEY(components_id) REFERENCES "PhysicalEntity" (id) +); +CREATE TABLE "Climate_events" ( + "Climate_id" TEXT, + events_id INTEGER, + PRIMARY KEY ("Climate_id", events_id), + FOREIGN KEY("Climate_id") REFERENCES "Climate" (id), + FOREIGN KEY(events_id) REFERENCES "Entity" (id) +); +CREATE TABLE "Climate_ontology_types" ( + "Climate_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("Climate_id", ontology_types_id), + FOREIGN KEY("Climate_id") REFERENCES "Climate" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); CREATE TABLE "FoodRecipe_ingredients" ( "FoodRecipe_id" TEXT, ingredients_id INTEGER, @@ -2619,6 +3084,13 @@ CREATE TABLE "FoodRecipe_ingredients" ( FOREIGN KEY("FoodRecipe_id") REFERENCES "FoodRecipe" (id), FOREIGN KEY(ingredients_id) REFERENCES "FoodIngredient" (id) ); +CREATE TABLE "IndividualOrganism_ontology_types" ( + "IndividualOrganism_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("IndividualOrganism_id", ontology_types_id), + FOREIGN KEY("IndividualOrganism_id") REFERENCES "IndividualOrganism" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); CREATE TABLE "HealthcareEncounter" ( id TEXT NOT NULL, name TEXT, @@ -2685,7 +3157,7 @@ CREATE TABLE "SampleCollectionProcess" ( is_ongoing_as_of_id INTEGER, PRIMARY KEY (id), FOREIGN KEY(material_collected) REFERENCES "SampleMaterial" (id), - FOREIGN KEY(collected_from) REFERENCES "NamedThing" (id), + FOREIGN KEY(collected_from) REFERENCES "PhysicalEntity" (id), FOREIGN KEY(follows_procedure) REFERENCES "InvestigativeProtocol" (id), FOREIGN KEY(part_of) REFERENCES "Investigation" (id), FOREIGN KEY(uses_physical_device) REFERENCES "PhysicalDevice" (id), @@ -2745,6 +3217,64 @@ CREATE TABLE "ClinicalCohortEnrollment" ( FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) ); +CREATE TABLE "Observation" ( + measured_using TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + "ClinicalHistory_id" INTEGER, + "SubjectObservationHistory_id" INTEGER, + observation_subject_id INTEGER, + variable_measured_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY("ClinicalHistory_id") REFERENCES "ClinicalHistory" (id), + FOREIGN KEY("SubjectObservationHistory_id") REFERENCES "SubjectObservationHistory" (id), + FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "Measurement" ( + measured_using TEXT, + id TEXT NOT NULL, + name TEXT, + type TEXT, + "ClinicalHistory_id" INTEGER, + "SubjectObservationHistory_id" INTEGER, + quantity_measured_id INTEGER, + observation_subject_id INTEGER, + variable_measured_id INTEGER, + starts_at_id INTEGER, + ends_at_id INTEGER, + happens_at_id INTEGER, + has_interval_id INTEGER, + has_duration_id INTEGER, + is_ongoing_as_of_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(measured_using) REFERENCES "PhysicalDevice" (id), + FOREIGN KEY("ClinicalHistory_id") REFERENCES "ClinicalHistory" (id), + FOREIGN KEY("SubjectObservationHistory_id") REFERENCES "SubjectObservationHistory" (id), + FOREIGN KEY(quantity_measured_id) REFERENCES "Quantity" (id), + FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(variable_measured_id) REFERENCES "Variable" (id), + FOREIGN KEY(starts_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(ends_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(happens_at_id) REFERENCES "TimePoint" (id), + FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), + FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), + FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); CREATE TABLE "ExtractiveIndustryProduct" ( product_type VARCHAR(7), processing_method TEXT, @@ -2798,6 +3328,13 @@ CREATE TABLE "Building_ontology_types" ( FOREIGN KEY("Building_id") REFERENCES "Building" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); +CREATE TABLE "ClinicalHistory_events" ( + "ClinicalHistory_id" INTEGER, + events_id TEXT, + PRIMARY KEY ("ClinicalHistory_id", events_id), + FOREIGN KEY("ClinicalHistory_id") REFERENCES "ClinicalHistory" (id), + FOREIGN KEY(events_id) REFERENCES "Event" (id) +); CREATE TABLE "Investigation_variables" ( "Investigation_id" TEXT, variables_id INTEGER, @@ -2805,6 +3342,13 @@ CREATE TABLE "Investigation_variables" ( FOREIGN KEY("Investigation_id") REFERENCES "Investigation" (id), FOREIGN KEY(variables_id) REFERENCES "Variable" (id) ); +CREATE TABLE "Investigation_results" ( + "Investigation_id" TEXT, + results_id TEXT, + PRIMARY KEY ("Investigation_id", results_id), + FOREIGN KEY("Investigation_id") REFERENCES "Investigation" (id), + FOREIGN KEY(results_id) REFERENCES "StudyResult" (id) +); CREATE TABLE "ClinicalCohort_ontology_types" ( "ClinicalCohort_id" TEXT, ontology_types_id TEXT, @@ -2812,6 +3356,69 @@ CREATE TABLE "ClinicalCohort_ontology_types" ( FOREIGN KEY("ClinicalCohort_id") REFERENCES "ClinicalCohort" (id), FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) ); +CREATE TABLE "SubjectObservationHistory_events" ( + "SubjectObservationHistory_id" INTEGER, + events_id TEXT, + PRIMARY KEY ("SubjectObservationHistory_id", events_id), + FOREIGN KEY("SubjectObservationHistory_id") REFERENCES "SubjectObservationHistory" (id), + FOREIGN KEY(events_id) REFERENCES "Event" (id) +); +CREATE TABLE "SubjectHistory_events" ( + "SubjectHistory_id" INTEGER, + events_id TEXT, + PRIMARY KEY ("SubjectHistory_id", events_id), + FOREIGN KEY("SubjectHistory_id") REFERENCES "SubjectHistory" (id), + FOREIGN KEY(events_id) REFERENCES "Event" (id) +); +CREATE TABLE "ComputationalPlannedProcess_inputs" ( + "ComputationalPlannedProcess_id" TEXT, + inputs_id INTEGER, + PRIMARY KEY ("ComputationalPlannedProcess_id", inputs_id), + FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), + FOREIGN KEY(inputs_id) REFERENCES "Any" (id) +); +CREATE TABLE "ComputationalPlannedProcess_outputs" ( + "ComputationalPlannedProcess_id" TEXT, + outputs_id INTEGER, + PRIMARY KEY ("ComputationalPlannedProcess_id", outputs_id), + FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), + FOREIGN KEY(outputs_id) REFERENCES "Any" (id) +); +CREATE TABLE "ComputationalPlannedProcess_parts" ( + "ComputationalPlannedProcess_id" TEXT, + parts_id TEXT, + PRIMARY KEY ("ComputationalPlannedProcess_id", parts_id), + FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), + FOREIGN KEY(parts_id) REFERENCES "ComputationalPlannedProcess" (id) +); +CREATE TABLE "ComputationalPlannedProcess_immediate_preceding_steps" ( + "ComputationalPlannedProcess_id" TEXT, + immediate_preceding_steps_id TEXT, + PRIMARY KEY ("ComputationalPlannedProcess_id", immediate_preceding_steps_id), + FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), + FOREIGN KEY(immediate_preceding_steps_id) REFERENCES "ComputationalPlannedProcess" (id) +); +CREATE TABLE "EconomicSystem_components" ( + "EconomicSystem_id" TEXT, + components_id TEXT, + PRIMARY KEY ("EconomicSystem_id", components_id), + FOREIGN KEY("EconomicSystem_id") REFERENCES "EconomicSystem" (id), + FOREIGN KEY(components_id) REFERENCES "PhysicalEntity" (id) +); +CREATE TABLE "EconomicSystem_events" ( + "EconomicSystem_id" TEXT, + events_id INTEGER, + PRIMARY KEY ("EconomicSystem_id", events_id), + FOREIGN KEY("EconomicSystem_id") REFERENCES "EconomicSystem" (id), + FOREIGN KEY(events_id) REFERENCES "Entity" (id) +); +CREATE TABLE "EconomicSystem_ontology_types" ( + "EconomicSystem_id" TEXT, + ontology_types_id TEXT, + PRIMARY KEY ("EconomicSystem_id", ontology_types_id), + FOREIGN KEY("EconomicSystem_id") REFERENCES "EconomicSystem" (id), + FOREIGN KEY(ontology_types_id) REFERENCES "Concept" (id) +); CREATE TABLE "PowerPlant_ontology_types" ( "PowerPlant_id" TEXT, ontology_types_id TEXT, @@ -2868,34 +3475,6 @@ CREATE TABLE "ElectricalGrid_plants" ( FOREIGN KEY("ElectricalGrid_id") REFERENCES "ElectricalGrid" (id), FOREIGN KEY(plants_id) REFERENCES "PowerPlant" (id) ); -CREATE TABLE "ComputationalPlannedProcess_inputs" ( - "ComputationalPlannedProcess_id" TEXT, - inputs_id INTEGER, - PRIMARY KEY ("ComputationalPlannedProcess_id", inputs_id), - FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), - FOREIGN KEY(inputs_id) REFERENCES "Any" (id) -); -CREATE TABLE "ComputationalPlannedProcess_outputs" ( - "ComputationalPlannedProcess_id" TEXT, - outputs_id INTEGER, - PRIMARY KEY ("ComputationalPlannedProcess_id", outputs_id), - FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), - FOREIGN KEY(outputs_id) REFERENCES "Any" (id) -); -CREATE TABLE "ComputationalPlannedProcess_parts" ( - "ComputationalPlannedProcess_id" TEXT, - parts_id TEXT, - PRIMARY KEY ("ComputationalPlannedProcess_id", parts_id), - FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), - FOREIGN KEY(parts_id) REFERENCES "ComputationalPlannedProcess" (id) -); -CREATE TABLE "ComputationalPlannedProcess_immediate_preceding_steps" ( - "ComputationalPlannedProcess_id" TEXT, - immediate_preceding_steps_id TEXT, - PRIMARY KEY ("ComputationalPlannedProcess_id", immediate_preceding_steps_id), - FOREIGN KEY("ComputationalPlannedProcess_id") REFERENCES "ComputationalPlannedProcess" (id), - FOREIGN KEY(immediate_preceding_steps_id) REFERENCES "ComputationalPlannedProcess" (id) -); CREATE TABLE "ExtractiveIndustryFacility_ontology_types" ( "ExtractiveIndustryFacility_id" TEXT, ontology_types_id TEXT, @@ -2952,4 +3531,13 @@ CREATE TABLE "HealthcareConditionOccurrence" ( FOREIGN KEY(has_interval_id) REFERENCES "TemporalInterval" (id), FOREIGN KEY(has_duration_id) REFERENCES "Duration" (id), FOREIGN KEY(is_ongoing_as_of_id) REFERENCES "TimePoint" (id) +); +CREATE TABLE "SetOfObservations" ( + id INTEGER NOT NULL, + type TEXT, + observation_subject_id INTEGER, + observations_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(observation_subject_id) REFERENCES "Entity" (id), + FOREIGN KEY(observations_id) REFERENCES "Observation" (id) ); \ No newline at end of file diff --git a/src/linkml_common/datamodel/bibliographic.py b/src/linkml_common/datamodel/bibliographic.py index a6faa39..21a3668 100644 --- a/src/linkml_common/datamodel/bibliographic.py +++ b/src/linkml_common/datamodel/bibliographic.py @@ -92,13 +92,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -117,7 +117,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -173,56 +173,10 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,LifeEvent,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Publication,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Quantity,QuantityRange,Service,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class QuantityKind(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Quantity(Intangible): - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["Quantity"] = Field("Quantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class SimpleQuantity(Quantity): - """ - A quantity is a property that can be measured or counted - """ - value: Optional[float] = Field(None, description="""The value of the quantity""") - unit: Optional[str] = Field(None) - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["SimpleQuantity"] = Field("SimpleQuantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Ratio(Quantity): - """ - A tuple of two quantities - """ - numerator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The numerator of the ratio""") - denominator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The denominator of the ratio""") - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class QuantityRange(Intangible): - """ - A quantity range is a property that can be measured or counted - """ - lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The lower bound of the range""") - upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The upper bound of the range""") - type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class UnitConcept(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class Event(Entity, Identified): """ A thing that happens @@ -232,6 +186,7 @@ class Event(Entity, Identified): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -267,6 +222,26 @@ class TimePoint(TimePointOrTemporalInterval): type: Literal["TimePoint"] = Field("TimePoint", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class TemporalRelationship(Relationship): + """ + A relationship to another time point + """ + predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") + relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityKind(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Quantity(Intangible): + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Quantity"] = Field("Quantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Duration(Quantity): """ A length of time @@ -275,16 +250,42 @@ class Duration(Quantity): type: Literal["Duration"] = Field("Duration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class TemporalRelationship(Relationship): +class SimpleQuantity(Quantity): """ - A relationship to another time point + A quantity is a property that can be measured or counted """ - predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") - relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) - type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + value: Optional[float] = Field(None, description="""The value of the quantity""") + unit: Optional[str] = Field(None) + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["SimpleQuantity"] = Field("SimpleQuantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Ratio(Quantity): + """ + A tuple of two quantities + """ + numerator: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The numerator of the ratio""") + denominator: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The denominator of the ratio""") + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityRange(Intangible): + """ + A quantity range is a property that can be measured or counted + """ + lower_bound: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The lower bound of the range""") + upper_bound: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The upper bound of the range""") + type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class UnitConcept(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Agent(PhysicalEntity): """ Represents an Agent """ @@ -355,6 +356,7 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -370,7 +372,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -409,7 +411,7 @@ class Publication(InformationEntity): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -421,18 +423,18 @@ class Publication(InformationEntity): Specification.update_forward_refs() Procedure.update_forward_refs() EntitySet.update_forward_refs() +Event.update_forward_refs() +TimePointOrTemporalInterval.update_forward_refs() +TemporalInterval.update_forward_refs() +TimePoint.update_forward_refs() +TemporalRelationship.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() +Duration.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() UnitConcept.update_forward_refs() -Event.update_forward_refs() -TimePointOrTemporalInterval.update_forward_refs() -TemporalInterval.update_forward_refs() -TimePoint.update_forward_refs() -Duration.update_forward_refs() -TemporalRelationship.update_forward_refs() Agent.update_forward_refs() Person.update_forward_refs() Organization.update_forward_refs() diff --git a/src/linkml_common/datamodel/civilengineering.py b/src/linkml_common/datamodel/civilengineering.py index 2c6c7d6..61c627f 100644 --- a/src/linkml_common/datamodel/civilengineering.py +++ b/src/linkml_common/datamodel/civilengineering.py @@ -53,37 +53,50 @@ class RelativeTimeEnum(str, Enum): AT_SAME_TIME_AS = "AT_SAME_TIME_AS" -class Entity(ConfiguredBaseModel): +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): """ A physical, digital, conceptual, or other kind of thing with some common characteristics """ type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Entity): +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ @@ -91,25 +104,22 @@ class InformationEntity(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class PhysicalDevice(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Intangible(Entity): +class StructuredValue(Intangible): """ - An entity that is not a physical object, process, or information + A value that is a structured collection of other values """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Role(Intangible): @@ -120,76 +130,46 @@ class Relationship(Intangible): type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") - variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Variable,NamedThing,Intangible,Observation,PostalAddress,Measurement,Role,Relationship,Collection,Quantity,QuantityRange,TimePointOrTemporalInterval,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Concept,InformationEntity,PhysicalDevice,Specification,Place,Event,RawMaterial,Equipment,BuiltEnvironmentFeature,Facility,BuiltSystem,Building,PlannedProcess,EngineeringProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Landform,Procedure,EngineeringSpecification,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Facility,BuiltSystem,Building,Landform,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class QuantityKind(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Quantity(Intangible): @@ -226,38 +206,25 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - class UnitConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Landform(Place): @@ -267,15 +234,15 @@ class Landform(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PostalAddress(Entity): +class PostalAddress(StructuredValue): """ Represents an Address """ @@ -292,6 +259,7 @@ class GeoPointLocation(PointLocation): latitude: Optional[Decimal] = Field(None, description="""The latitude of the location""") longitude: Optional[Decimal] = Field(None, description="""The longitude of the location""") altitude: Optional[Decimal] = Field(None, description="""The altitude of the location""") + type: Literal["GeoPointLocation"] = Field("GeoPointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class GeoBoxLocation(Location): @@ -299,9 +267,10 @@ class GeoBoxLocation(Location): east_bounding_coordinate: Optional[Decimal] = Field(None, description="""The easternmost coordinate of the location""") north_bounding_coordinate: Optional[Decimal] = Field(None, description="""The northernmost coordinate of the location""") south_bounding_coordinate: Optional[Decimal] = Field(None, description="""The southernmost coordinate of the location""") + type: Literal["GeoBoxLocation"] = Field("GeoBoxLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -310,12 +279,59 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Facility,BuiltSystem,Building,Landform,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Facility,BuiltSystem,Building,Landform,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Facility,BuiltSystem,Building,Landform,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class TimePointOrTemporalInterval(Intangible): @@ -365,73 +381,106 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PlannedProcess(Event): +class ExecutionOfProcedure(Event): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class ComputationalPlannedProcess(PlannedProcess): + """ + Application of a mathematical operation to one or more inputs to produce one or more outputs + """ + inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") + outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") + parts: Optional[List[str]] = Field(default_factory=list, description="""The parts of the process""") + immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringSpecification(Procedure): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringSpecification"] = Field("EngineeringSpecification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class RawMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class RawMaterial(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["RawMaterial"] = Field("RawMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringProcess(Event): @@ -442,102 +491,98 @@ class EngineeringProcess(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringProcess"] = Field("EngineeringProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringMaterialProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringMaterialProcessing"] = Field("EngineeringMaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Equipment(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class Equipment(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Equipment"] = Field("Equipment", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class BuiltEnvironmentFeature(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class BuiltEnvironmentFeature(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["BuiltEnvironmentFeature"] = Field("BuiltEnvironmentFeature", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Facility(BuiltEnvironmentFeature): located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Facility"] = Field("Facility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Facility"] = Field("Facility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Building(Facility): located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Building"] = Field("Building", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Building"] = Field("Building", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class BuiltSystem(BuiltEnvironmentFeature): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["BuiltSystem"] = Field("BuiltSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["BuiltSystem"] = Field("BuiltSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() +Intangible.update_forward_refs() Variable.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() -Measurement.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -UnitConversionOperation.update_forward_refs() UnitConcept.update_forward_refs() Place.update_forward_refs() Landform.update_forward_refs() @@ -545,12 +590,18 @@ class BuiltSystem(BuiltEnvironmentFeature): GeoPointLocation.update_forward_refs() GeoBoxLocation.update_forward_refs() Event.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() +ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() EngineeringSpecification.update_forward_refs() diff --git a/src/linkml_common/datamodel/clinicalresearch.py b/src/linkml_common/datamodel/clinicalresearch.py index ff18e3c..2695a7d 100644 --- a/src/linkml_common/datamodel/clinicalresearch.py +++ b/src/linkml_common/datamodel/clinicalresearch.py @@ -134,13 +134,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -159,7 +159,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -215,7 +215,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Variable,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,ExecutionOfProcedure,Observation,Investigation,ClinicalCohortEnrollment,Measurement,PlannedProcess,MathematicalOperationExecution,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,PhysicalDevice,Place,Agent,CreativeWork,SampleMaterial,ClinicalCohort,Person,Organization,AutomatedAgent,HealthcareOrganization,Landform,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,ClinicalCohortDefinition,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,Observation,ExecutionOfProcedure,Investigation,ClinicalCohortEnrollment,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,Agent,CreativeWork,SampleMaterial,ClinicalCohort,Person,Organization,AutomatedAgent,HealthcareOrganization,Landform,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,Variable,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,ClinicalCohortDefinition,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -265,7 +265,7 @@ class UnitConcept(Concept): type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ @@ -332,6 +332,7 @@ class Event(Entity, Identified): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -384,7 +385,7 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ @@ -455,6 +456,7 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -470,7 +472,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -519,6 +521,7 @@ class HealthcareEncounter(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareEncounter"] = Field("HealthcareEncounter", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -557,6 +560,7 @@ class HealthcareConditionOccurrence(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareConditionOccurrence"] = Field("HealthcareConditionOccurrence", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -567,7 +571,56 @@ class Patient(HealthcareRole): type: Literal["Patient"] = Field("Patient", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Entity): +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,Observation,ExecutionOfProcedure,Investigation,ClinicalCohortEnrollment,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,Agent,CreativeWork,SampleMaterial,ClinicalCohort,Person,Organization,AutomatedAgent,HealthcareOrganization,Landform,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,Variable,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,ClinicalCohortDefinition,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,Observation,ExecutionOfProcedure,Investigation,ClinicalCohortEnrollment,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,Agent,CreativeWork,SampleMaterial,ClinicalCohort,Person,Organization,AutomatedAgent,HealthcareOrganization,Landform,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,Variable,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,ClinicalCohortDefinition,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,Observation,ExecutionOfProcedure,Investigation,ClinicalCohortEnrollment,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,Agent,CreativeWork,SampleMaterial,ClinicalCohort,Person,Organization,AutomatedAgent,HealthcareOrganization,Landform,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,Variable,PlannedProcessConfiguration,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,ClinicalCohortDefinition,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -578,28 +631,35 @@ class ExecutionOfProcedure(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperationExecution(PlannedProcess): +class ComputationalPlannedProcess(PlannedProcess): """ Application of a mathematical operation to one or more inputs to produce one or more outputs """ @@ -609,24 +669,28 @@ class MathematicalOperationExecution(PlannedProcess): immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["MathematicalOperationExecution"] = Field("MathematicalOperationExecution", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -635,43 +699,18 @@ class MaterialCollection(PlannedProcess): class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Event): - """ - A statement about the state of something - """ - starts_at: Optional[TimePoint] = Field(None) - ends_at: Optional[TimePoint] = Field(None) - happens_at: Optional[TimePoint] = Field(None) - has_interval: Optional[TemporalInterval] = Field(None) - has_duration: Optional[Duration] = Field(None) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") - variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") - starts_at: Optional[TimePoint] = Field(None) - ends_at: Optional[TimePoint] = Field(None) - happens_at: Optional[TimePoint] = Field(None) - has_interval: Optional[TemporalInterval] = Field(None) - has_duration: Optional[Duration] = Field(None) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class Investigation(Event): objectives: Optional[str] = Field(None) variables: Optional[List[Variable]] = Field(default_factory=list) @@ -680,6 +719,7 @@ class Investigation(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Investigation"] = Field("Investigation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -700,7 +740,7 @@ class StudyDesign(Procedure): type: Literal["StudyDesign"] = Field("StudyDesign", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class SampleMaterial(NamedThing): +class SampleMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -713,11 +753,13 @@ class InvestigativeProcess(PlannedProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InvestigativeProcess"] = Field("InvestigativeProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -729,11 +771,13 @@ class SampleCollectionProcess(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["SampleCollectionProcess"] = Field("SampleCollectionProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -742,11 +786,13 @@ class SampleCollectionProcess(InvestigativeProcess): class SampleProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["SampleProcessing"] = Field("SampleProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -756,17 +802,19 @@ class DataGenerationFromSample(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["DataGenerationFromSample"] = Field("DataGenerationFromSample", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class ClinicalCohort(NamedThing): +class ClinicalCohort(PhysicalEntity): """ A group of patients who share a common set of characteristics """ @@ -800,6 +848,7 @@ class ClinicalCohortEnrollment(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ClinicalCohortEnrollment"] = Field("ClinicalCohortEnrollment", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -811,7 +860,7 @@ class ClinicalCohortEnrollment(Event): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -855,14 +904,16 @@ class ClinicalCohortEnrollment(Event): HealthcareProvider.update_forward_refs() HealthcareConditionOccurrence.update_forward_refs() Patient.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() Variable.update_forward_refs() ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() -MathematicalOperationExecution.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() -Observation.update_forward_refs() -Measurement.update_forward_refs() Investigation.update_forward_refs() InvestigativeProtocol.update_forward_refs() StudyDesign.update_forward_refs() diff --git a/src/linkml_common/datamodel/computational.py b/src/linkml_common/datamodel/computational.py index 9131afc..4b120e9 100644 --- a/src/linkml_common/datamodel/computational.py +++ b/src/linkml_common/datamodel/computational.py @@ -47,32 +47,45 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass -class Entity(ConfiguredBaseModel): +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): """ A physical, digital, conceptual, or other kind of thing with some common characteristics """ type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ @@ -80,25 +93,22 @@ class InformationEntity(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Intangible(Entity): +class StructuredValue(Intangible): """ - An entity that is not a physical object, process, or information + A value that is a structured collection of other values """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Role(Intangible): @@ -106,64 +116,57 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,DataStructure,Location,PointLocation,Specification,Procedure]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,DataStructure,Location,PointLocation,Specification,Procedure]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class PhysicalSystem(PhysicalEntity): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,DataStructure,Location,PointLocation,Specification,Procedure]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalSystem"] = Field("PhysicalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PointLocation(Location): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PointLocation(Location): + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,Role,Relationship,Collection,DataStructure,Concept,InformationEntity,PhysicalDevice,Specification,Procedure]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,DataStructure,Location,PointLocation,Specification,Procedure]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class DataStructure(Intangible): @@ -172,20 +175,22 @@ class DataStructure(Intangible): # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() -NamedThing.update_forward_refs() +Intangible.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() +PhysicalSystem.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() DataStructure.update_forward_refs() diff --git a/src/linkml_common/datamodel/core.py b/src/linkml_common/datamodel/core.py index 4eb6596..c8a0996 100644 --- a/src/linkml_common/datamodel/core.py +++ b/src/linkml_common/datamodel/core.py @@ -70,13 +70,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -95,9 +95,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -116,9 +116,23 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Location,PointLocation,Specification,Procedure]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Location,PointLocation,Specification,Procedure]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalSystem(PhysicalEntity): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Location,PointLocation,Specification,Procedure]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalSystem"] = Field("PhysicalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Location(StructuredValue): type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -151,7 +165,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Location,PointLocation,Specification,Procedure]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Location,PointLocation,Specification,Procedure]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -161,13 +175,14 @@ class EntitySet(Intangible): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() +PhysicalSystem.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() Specification.update_forward_refs() diff --git a/src/linkml_common/datamodel/datasets.py b/src/linkml_common/datamodel/datasets.py index 3781444..f39a17a 100644 --- a/src/linkml_common/datamodel/datasets.py +++ b/src/linkml_common/datamodel/datasets.py @@ -109,13 +109,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -134,7 +134,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -190,7 +190,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Variable,LifeEvent,ExecutionOfProcedure,Observation,Investigation,Measurement,PlannedProcess,MathematicalOperationExecution,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,PhysicalDevice,Agent,CreativeWork,SampleMaterial,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,SampleMaterial,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -203,6 +203,7 @@ class Event(Entity, Identified): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -247,7 +248,7 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ @@ -318,6 +319,7 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -333,7 +335,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -366,7 +368,56 @@ class Publication(InformationEntity): type: Literal["Publication"] = Field("Publication", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Entity): +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,SampleMaterial,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,SampleMaterial,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,SampleMaterial,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -431,28 +482,35 @@ class ExecutionOfProcedure(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperationExecution(PlannedProcess): +class ComputationalPlannedProcess(PlannedProcess): """ Application of a mathematical operation to one or more inputs to produce one or more outputs """ @@ -462,24 +520,28 @@ class MathematicalOperationExecution(PlannedProcess): immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["MathematicalOperationExecution"] = Field("MathematicalOperationExecution", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -488,43 +550,18 @@ class MaterialCollection(PlannedProcess): class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Event): - """ - A statement about the state of something - """ - starts_at: Optional[TimePoint] = Field(None) - ends_at: Optional[TimePoint] = Field(None) - happens_at: Optional[TimePoint] = Field(None) - has_interval: Optional[TemporalInterval] = Field(None) - has_duration: Optional[Duration] = Field(None) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") - variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") - starts_at: Optional[TimePoint] = Field(None) - ends_at: Optional[TimePoint] = Field(None) - happens_at: Optional[TimePoint] = Field(None) - has_interval: Optional[TemporalInterval] = Field(None) - has_duration: Optional[Duration] = Field(None) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class Investigation(Event): objectives: Optional[str] = Field(None) variables: Optional[List[Variable]] = Field(default_factory=list) @@ -533,6 +570,7 @@ class Investigation(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Investigation"] = Field("Investigation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -553,7 +591,7 @@ class StudyDesign(Procedure): type: Literal["StudyDesign"] = Field("StudyDesign", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class SampleMaterial(NamedThing): +class SampleMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -566,11 +604,13 @@ class InvestigativeProcess(PlannedProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InvestigativeProcess"] = Field("InvestigativeProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -582,11 +622,13 @@ class SampleCollectionProcess(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["SampleCollectionProcess"] = Field("SampleCollectionProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -595,11 +637,13 @@ class SampleCollectionProcess(InvestigativeProcess): class SampleProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["SampleProcessing"] = Field("SampleProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -609,11 +653,13 @@ class DataGenerationFromSample(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["DataGenerationFromSample"] = Field("DataGenerationFromSample", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -640,7 +686,7 @@ class Dataset(CreationMetadata, InformationEntity): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -666,6 +712,9 @@ class Dataset(CreationMetadata, InformationEntity): CreativeWork.update_forward_refs() Service.update_forward_refs() Publication.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() Variable.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() @@ -675,12 +724,11 @@ class Dataset(CreationMetadata, InformationEntity): QuantityRange.update_forward_refs() UnitConcept.update_forward_refs() ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() -MathematicalOperationExecution.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() -Observation.update_forward_refs() -Measurement.update_forward_refs() Investigation.update_forward_refs() InvestigativeProtocol.update_forward_refs() StudyDesign.update_forward_refs() diff --git a/src/linkml_common/datamodel/energytechnology.py b/src/linkml_common/datamodel/energytechnology.py index 2cf8872..dc0594e 100644 --- a/src/linkml_common/datamodel/energytechnology.py +++ b/src/linkml_common/datamodel/energytechnology.py @@ -105,13 +105,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -130,7 +130,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -186,11 +186,11 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,MathematicalOperationExecution,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Facility,BuiltSystem,ElectricalGrid,Building,PowerPlant,FossilFuelPlant,NuclearPlant,RenewablePlant,HydroelectricPlant,SolarPlant,WindFarm,Landform,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,Variable,TimePointOrTemporalInterval,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,MoneyQuantity,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,CurrencyConcept,PowerPlantType]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,EngineeringProcess,Observation,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Facility,BuiltSystem,ElectricalGrid,Building,PowerPlant,FossilFuelPlant,NuclearPlant,RenewablePlant,HydroelectricPlant,SolarPlant,WindFarm,Landform,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,MoneyQuantity,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,CurrencyConcept,PowerPlantType]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ @@ -301,7 +301,7 @@ class EngineeringSpecification(Procedure): type: Literal["EngineeringSpecification"] = Field("EngineeringSpecification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class RawMaterial(NamedThing): +class RawMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -310,7 +310,7 @@ class RawMaterial(NamedThing): type: Literal["RawMaterial"] = Field("RawMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Equipment(NamedThing): +class Equipment(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -339,10 +339,27 @@ class Event(Entity, Identified): type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class EngineeringProcess(Event): + follows_procedure: Optional[str] = Field(None) + part_of: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["EngineeringProcess"] = Field("EngineeringProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Observation(Event): """ A statement about the state of something """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,EngineeringProcess,Observation,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Facility,BuiltSystem,ElectricalGrid,Building,PowerPlant,FossilFuelPlant,NuclearPlant,RenewablePlant,HydroelectricPlant,SolarPlant,WindFarm,Landform,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,MoneyQuantity,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,CurrencyConcept,PowerPlantType]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -354,9 +371,11 @@ class Observation(Event): type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class EngineeringProcess(Event): - follows_procedure: Optional[str] = Field(None) - part_of: Optional[str] = Field(None) +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration,MoneyQuantity]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,EngineeringProcess,Observation,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Facility,BuiltSystem,ElectricalGrid,Building,PowerPlant,FossilFuelPlant,NuclearPlant,RenewablePlant,HydroelectricPlant,SolarPlant,WindFarm,Landform,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,MoneyQuantity,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,CurrencyConcept,PowerPlantType]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -365,12 +384,13 @@ class EngineeringProcess(Event): is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["EngineeringProcess"] = Field("EngineeringProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration,MoneyQuantity]] = Field(None, description="""The quantity being measured""") +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,EngineeringProcess,Observation,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Place,RawMaterial,Equipment,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Facility,BuiltSystem,ElectricalGrid,Building,PowerPlant,FossilFuelPlant,NuclearPlant,RenewablePlant,HydroelectricPlant,SolarPlant,WindFarm,Landform,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,MoneyQuantity,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,CurrencyConcept,PowerPlantType]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -379,7 +399,7 @@ class Measurement(Observation): is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class TimePointOrTemporalInterval(Intangible): @@ -441,12 +461,17 @@ class ExecutionOfProcedure(Event): type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -458,7 +483,7 @@ class PlannedProcess(ExecutionOfProcedure): type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperationExecution(PlannedProcess): +class ComputationalPlannedProcess(PlannedProcess): """ Application of a mathematical operation to one or more inputs to produce one or more outputs """ @@ -468,6 +493,7 @@ class MathematicalOperationExecution(PlannedProcess): immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -476,12 +502,13 @@ class MathematicalOperationExecution(PlannedProcess): is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["MathematicalOperationExecution"] = Field("MathematicalOperationExecution", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -496,6 +523,7 @@ class MaterialCollection(PlannedProcess): class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -510,6 +538,7 @@ class MaterialProcessing(PlannedProcess): class EngineeringMaterialProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -521,7 +550,7 @@ class EngineeringMaterialProcessing(MaterialProcessing): type: Literal["EngineeringMaterialProcessing"] = Field("EngineeringMaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class BuiltEnvironmentFeature(NamedThing): +class BuiltEnvironmentFeature(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -559,7 +588,7 @@ class BuiltSystem(BuiltEnvironmentFeature): type: Literal["BuiltSystem"] = Field("BuiltSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ @@ -646,7 +675,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -898,7 +927,7 @@ class ElectricalGrid(BuiltSystem): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -926,17 +955,19 @@ class ElectricalGrid(BuiltSystem): Equipment.update_forward_refs() Variable.update_forward_refs() Event.update_forward_refs() -Observation.update_forward_refs() EngineeringProcess.update_forward_refs() +Observation.update_forward_refs() Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() -MathematicalOperationExecution.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() EngineeringMaterialProcessing.update_forward_refs() diff --git a/src/linkml_common/datamodel/engineering.py b/src/linkml_common/datamodel/engineering.py index 43dff23..f908c4a 100644 --- a/src/linkml_common/datamodel/engineering.py +++ b/src/linkml_common/datamodel/engineering.py @@ -53,28 +53,23 @@ class RelativeTimeEnum(str, Enum): AT_SAME_TIME_AS = "AT_SAME_TIME_AS" -class Entity(ConfiguredBaseModel): - """ - A physical, digital, conceptual, or other kind of thing with some common characteristics - """ - type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") -class Variable(Entity): - allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") - type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") +class Entity(Typed): + """ + A physical, digital, conceptual, or other kind of thing with some common characteristics + """ + type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -83,61 +78,59 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class Concept(NamedThing): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class QuantityKind(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class UnitConcept(Concept): +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Event,Intangible,PhysicalEntity,PhysicalDevice,RawMaterial,Equipment,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,TemporalRelationship,Location,PointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class InformationEntity(NamedThing): - """ - An entity that describes some information - """ - describes: Optional[Any] = Field(None, description="""The thing that is being described""") +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Event,Intangible,PhysicalEntity,PhysicalDevice,RawMaterial,Equipment,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,TemporalRelationship,Location,PointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Event,Intangible,PhysicalEntity,PhysicalDevice,RawMaterial,Equipment,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,TemporalRelationship,Location,PointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Intangible(Entity): @@ -147,6 +140,11 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Variable(Intangible): + allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") + type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class TimePointOrTemporalInterval(Intangible): starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) @@ -219,6 +217,59 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalEntity(Entity, Identified): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list) + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Concept(Intangible, Identified): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityKind(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class UnitConcept(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class InformationEntity(Intangible, Identified): + """ + An entity that describes some information + """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list) + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class StructuredValue(Intangible): + """ + A value that is a structured collection of other values + """ + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Role(Intangible): type: Literal["Role"] = Field("Role", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -236,146 +287,142 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass - - -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") - variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class MathematicalOperation(ConfiguredBaseModel): +class EntitySet(Intangible): """ - Application of a mathematical operation to one or more inputs to produce one or more outputs + A group of things. The collection may be heterogeneous or homogeneous. """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + members: Optional[List[Union[Entity,Event,Intangible,PhysicalEntity,PhysicalDevice,RawMaterial,Equipment,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,TemporalRelationship,Location,PointLocation,Specification,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Observation,ExecutionOfProcedure,EngineeringProcess,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,Duration,SimpleQuantity,Ratio]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,Duration,SimpleQuantity,Ratio]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") +class ExecutionOfProcedure(Event): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Collection(Intangible): - """ - A group of things. The collection may be heterogeneous or homogeneous. - """ - members: Optional[List[Union[Entity,Variable,NamedThing,Intangible,Observation,Measurement,TimePointOrTemporalInterval,Quantity,QuantityRange,Role,Relationship,Collection,TemporalRelationship,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Event,Concept,InformationEntity,PhysicalDevice,Specification,RawMaterial,Equipment,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,PlannedProcess,EngineeringProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PlannedProcess(Event): +class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class ComputationalPlannedProcess(PlannedProcess): + """ + Application of a mathematical operation to one or more inputs to produce one or more outputs + """ + inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") + outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") + parts: Optional[List[str]] = Field(default_factory=list, description="""The parts of the process""") + immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringSpecification(Procedure): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringSpecification"] = Field("EngineeringSpecification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class RawMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class RawMaterial(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["RawMaterial"] = Field("RawMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringProcess(Event): @@ -386,51 +433,47 @@ class EngineeringProcess(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringProcess"] = Field("EngineeringProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringMaterialProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringMaterialProcessing"] = Field("EngineeringMaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Equipment(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class Equipment(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Equipment"] = Field("Equipment", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() -Variable.update_forward_refs() -NamedThing.update_forward_refs() Event.update_forward_refs() -Concept.update_forward_refs() -QuantityKind.update_forward_refs() -UnitConcept.update_forward_refs() -InformationEntity.update_forward_refs() -PhysicalDevice.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() Intangible.update_forward_refs() +Variable.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() @@ -439,19 +482,25 @@ class Equipment(NamedThing): SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() +PhysicalEntity.update_forward_refs() +Concept.update_forward_refs() +QuantityKind.update_forward_refs() +UnitConcept.update_forward_refs() +InformationEntity.update_forward_refs() +PhysicalDevice.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() TemporalRelationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() -Measurement.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -UnitConversionOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() +ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() EngineeringSpecification.update_forward_refs() diff --git a/src/linkml_common/datamodel/environmental.py b/src/linkml_common/datamodel/environmental.py index 901f7d8..af0c554 100644 --- a/src/linkml_common/datamodel/environmental.py +++ b/src/linkml_common/datamodel/environmental.py @@ -47,6 +47,33 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass +class LandformEnum(str): + pass + + +class RelativeTimeEnum(str, Enum): + BEFORE = "BEFORE" + AFTER = "AFTER" + AT_SAME_TIME_AS = "AT_SAME_TIME_AS" + + +class CaseOrControlEnum(str, Enum): + case_role_in_case_control_study = "CASE" + control_role_in_case_control_study = "CONTROL" + + +class StudyDesignEnum(str): + pass + + +class InvestigativeProtocolEnum(str): + pass + + +class SampleProcessingEnum(str): + pass + + class Identified(ConfiguredBaseModel): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -63,51 +90,45 @@ class Entity(Typed): type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): - type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ describes: Optional[Any] = Field(None, description="""The thing that is being described""") - type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): - type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - - -class Intangible(Entity): - """ - An entity that is not a physical object, process, or information - """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class StructuredValue(Intangible): @@ -122,9 +143,23 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalSystem(PhysicalEntity): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalSystem"] = Field("PhysicalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Location(StructuredValue): type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -133,52 +168,38 @@ class PointLocation(Location): type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ - type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ - type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,StructuredValue,Role,Relationship,Collection,Quantity,QuantityRange,SimpleQuantity,Ratio,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Concept,InformationEntity,PhysicalDevice,Specification,Place,Landform,EnvironmentalSite,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class QuantityKind(Concept): - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Quantity(Intangible): @@ -200,8 +221,8 @@ class Ratio(Quantity): """ A tuple of two quantities """ - numerator: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The numerator of the ratio""") - denominator: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The denominator of the ratio""") + numerator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The numerator of the ratio""") + denominator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The denominator of the ratio""") has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -210,33 +231,30 @@ class QuantityRange(Intangible): """ A quantity range is a property that can be measured or counted """ - lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The lower bound of the range""") - upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The upper bound of the range""") + lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The lower bound of the range""") + upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The upper bound of the range""") type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class UnitConcept(Concept): - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") - type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Landform(Place): @@ -246,12 +264,24 @@ class Landform(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AstronomicalBody(Place): + address: Optional[PostalAddress] = Field(None) + geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") + bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["AstronomicalBody"] = Field("AstronomicalBody", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PostalAddress(StructuredValue): @@ -282,6 +312,374 @@ class GeoBoxLocation(Location): type: Literal["GeoBoxLocation"] = Field("GeoBoxLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SetOfObservations(Intangible): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + observations: Optional[Union[Observation,Measurement,QualitativeObservation]] = Field(None) + type: Literal["SetOfObservations"] = Field("SetOfObservations", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): + allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") + type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Event(Entity, Identified): + """ + A thing that happens + """ + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TimePointOrTemporalInterval(Intangible): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TimePointOrTemporalInterval"] = Field("TimePointOrTemporalInterval", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TemporalInterval(TimePointOrTemporalInterval): + """ + A period of time + """ + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TemporalInterval"] = Field("TemporalInterval", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TimePoint(TimePointOrTemporalInterval): + """ + A point in time. Can be fully specified, or specified in relative terms. + """ + year_value: Optional[int] = Field(None) + date_value: Optional[date] = Field(None) + time_value: Optional[str] = Field(None) + datetime_value: Optional[datetime ] = Field(None) + marker_event: Optional[str] = Field(None) + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TimePoint"] = Field("TimePoint", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Duration(Quantity): + """ + A length of time + """ + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Duration"] = Field("Duration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TemporalRelationship(Relationship): + """ + A relationship to another time point + """ + predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") + relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectObservationHistory(SubjectHistory): + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectObservationHistory"] = Field("SubjectObservationHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class ExecutionOfProcedure(Event): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcess(ExecutionOfProcedure): + """ + A process that follows a defined procedure or plan + """ + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class ComputationalPlannedProcess(PlannedProcess): + """ + Application of a mathematical operation to one or more inputs to produce one or more outputs + """ + inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") + outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") + parts: Optional[List[str]] = Field(default_factory=list, description="""The parts of the process""") + immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class MaterialCollection(PlannedProcess): + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class MaterialProcessing(PlannedProcess): + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Investigation(Event): + objectives: Optional[str] = Field(None) + variables: Optional[List[Variable]] = Field(default_factory=list) + hypothesis: Optional[str] = Field(None) + design: Optional[str] = Field(None) + results: Optional[List[str]] = Field(default_factory=list) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Investigation"] = Field("Investigation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class InvestigativeProtocol(Procedure): + protocols_io_url: Optional[str] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InvestigativeProtocol"] = Field("InvestigativeProtocol", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class StudyHypothesis(InformationEntity): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["StudyHypothesis"] = Field("StudyHypothesis", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class StudyDesign(Procedure): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["StudyDesign"] = Field("StudyDesign", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class StudyResult(InformationEntity): + hypothesis: Optional[str] = Field(None) + result: Optional[str] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["StudyResult"] = Field("StudyResult", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SampleMaterial(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["SampleMaterial"] = Field("SampleMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class InvestigativeProcess(PlannedProcess): + follows_procedure: Optional[str] = Field(None) + part_of: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InvestigativeProcess"] = Field("InvestigativeProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SampleCollectionProcess(InvestigativeProcess): + material_collected: Optional[str] = Field(None) + collected_from: Optional[str] = Field(None) + follows_procedure: Optional[str] = Field(None) + part_of: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["SampleCollectionProcess"] = Field("SampleCollectionProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SampleProcessing(MaterialProcessing): + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["SampleProcessing"] = Field("SampleProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class DataGenerationFromSample(InvestigativeProcess): + follows_procedure: Optional[str] = Field(None) + part_of: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["DataGenerationFromSample"] = Field("DataGenerationFromSample", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Model(ConfiguredBaseModel): + models: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + + +class ComputationalModel(Model, Intangible): + models: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + type: Literal["ComputationalModel"] = Field("ComputationalModel", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Simulation(ComputationalModel): + models: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + type: Literal["Simulation"] = Field("Simulation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class DigitalTwin(ComputationalModel): + models: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + type: Literal["DigitalTwin"] = Field("DigitalTwin", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class EnvironmentalSite(Place): """ A location or site that is the subject of environmental monitoring @@ -289,12 +687,39 @@ class EnvironmentalSite(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EnvironmentalSite"] = Field("EnvironmentalSite", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class EnvironmentalSystem(PhysicalSystem): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list) classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["EnvironmentalSystem"] = Field("EnvironmentalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Climate(EnvironmentalSystem): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation,PhysicalDevice,PhysicalSystem,Place,SampleMaterial,Landform,AstronomicalBody,EnvironmentalSite,EnvironmentalSystem,Climate,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,SetOfObservations,Variable,TimePointOrTemporalInterval,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,ClimateModel,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Climate"] = Field("Climate", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class ClimateModel(Simulation): + models: Optional[str] = Field(None) + type: Literal["ClimateModel"] = Field("ClimateModel", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") # Update forward refs @@ -302,20 +727,20 @@ class EnvironmentalSite(Place): Identified.update_forward_refs() Typed.update_forward_refs() Entity.update_forward_refs() -NamedThing.update_forward_refs() +Intangible.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() +PhysicalSystem.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() @@ -324,8 +749,45 @@ class EnvironmentalSite(Place): UnitConcept.update_forward_refs() Place.update_forward_refs() Landform.update_forward_refs() +AstronomicalBody.update_forward_refs() PostalAddress.update_forward_refs() GeoPointLocation.update_forward_refs() GeoBoxLocation.update_forward_refs() +SetOfObservations.update_forward_refs() +Variable.update_forward_refs() +Event.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() +TimePointOrTemporalInterval.update_forward_refs() +TemporalInterval.update_forward_refs() +TimePoint.update_forward_refs() +Duration.update_forward_refs() +TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() +SubjectObservationHistory.update_forward_refs() +ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() +PlannedProcess.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() +MaterialCollection.update_forward_refs() +MaterialProcessing.update_forward_refs() +Investigation.update_forward_refs() +InvestigativeProtocol.update_forward_refs() +StudyHypothesis.update_forward_refs() +StudyDesign.update_forward_refs() +StudyResult.update_forward_refs() +SampleMaterial.update_forward_refs() +InvestigativeProcess.update_forward_refs() +SampleCollectionProcess.update_forward_refs() +SampleProcessing.update_forward_refs() +DataGenerationFromSample.update_forward_refs() +Model.update_forward_refs() +ComputationalModel.update_forward_refs() +Simulation.update_forward_refs() +DigitalTwin.update_forward_refs() EnvironmentalSite.update_forward_refs() +EnvironmentalSystem.update_forward_refs() +Climate.update_forward_refs() +ClimateModel.update_forward_refs() diff --git a/src/linkml_common/datamodel/extractiveindustry.py b/src/linkml_common/datamodel/extractiveindustry.py index c8ece6f..0743a79 100644 --- a/src/linkml_common/datamodel/extractiveindustry.py +++ b/src/linkml_common/datamodel/extractiveindustry.py @@ -47,12 +47,20 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass +class LandformEnum(str): + pass + + class RelativeTimeEnum(str, Enum): BEFORE = "BEFORE" AFTER = "AFTER" AT_SAME_TIME_AS = "AT_SAME_TIME_AS" +class OrganismTaxonEnum(str): + pass + + class HumanLanguageCodeEnum(str): """ An enumeration of languages @@ -69,6 +77,13 @@ class PersonStatus(str, Enum): UNKNOWN = "UNKNOWN" +class OrganizationPersonnelRelationshipEnum(str): + """ + ... + """ + pass + + class ExtractiveIndustryFacilityType(str, Enum): # A facility where mineral resources are extracted MINING_FACILITY = "MINING_FACILITY" @@ -119,53 +134,62 @@ class WellType(str, Enum): INJECTION = "INJECTION" -class Entity(ConfiguredBaseModel): +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): """ A physical, digital, conceptual, or other kind of thing with some common characteristics """ type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Entity): - allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") - type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class PostalAddress(Entity): +class Intangible(Entity): """ - Represents an Address + An entity that is not a physical object, process, or information """ - street_address: Optional[str] = Field(None, description="""The street address""") - street_address_additional: Optional[str] = Field(None) - city: Optional[str] = Field(None, description="""The city""") - state: Optional[str] = Field(None, description="""The state""") - postal_code: Optional[str] = Field(None, description="""The postal code or zip code""") - country: Optional[str] = Field(None, description="""The country""") - type: Literal["PostalAddress"] = Field("PostalAddress", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SetOfObservations(Intangible): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + observations: Optional[Union[Observation,Measurement,QualitativeObservation]] = Field(None) + type: Literal["SetOfObservations"] = Field("SetOfObservations", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): + allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") + type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Landform(Place): @@ -175,42 +199,51 @@ class Landform(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AstronomicalBody(Place): + address: Optional[PostalAddress] = Field(None) + geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") + bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["AstronomicalBody"] = Field("AstronomicalBody", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class RawMaterial(NamedThing): +class RawMaterial(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["RawMaterial"] = Field("RawMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Equipment(NamedThing): +class Equipment(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Equipment"] = Field("Equipment", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Concept(NamedThing): +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ @@ -218,25 +251,35 @@ class InformationEntity(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Intangible(Entity): +class StructuredValue(Intangible): """ - An entity that is not a physical object, process, or information + A value that is a structured collection of other values """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PostalAddress(StructuredValue): + """ + Represents an Address + """ + street_address: Optional[str] = Field(None, description="""The street address""") + street_address_additional: Optional[str] = Field(None) + city: Optional[str] = Field(None, description="""The city""") + state: Optional[str] = Field(None, description="""The state""") + postal_code: Optional[str] = Field(None, description="""The postal code or zip code""") + country: Optional[str] = Field(None, description="""The country""") + type: Literal["PostalAddress"] = Field("PostalAddress", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Role(Intangible): @@ -244,11 +287,25 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class PhysicalSystem(PhysicalEntity): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalSystem"] = Field("PhysicalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class GeoBoxLocation(Location): @@ -256,89 +313,59 @@ class GeoBoxLocation(Location): east_bounding_coordinate: Optional[Decimal] = Field(None, description="""The easternmost coordinate of the location""") north_bounding_coordinate: Optional[Decimal] = Field(None, description="""The northernmost coordinate of the location""") south_bounding_coordinate: Optional[Decimal] = Field(None, description="""The southernmost coordinate of the location""") + type: Literal["GeoBoxLocation"] = Field("GeoBoxLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class GeoPointLocation(PointLocation): latitude: Optional[Decimal] = Field(None, description="""The latitude of the location""") longitude: Optional[Decimal] = Field(None, description="""The longitude of the location""") altitude: Optional[Decimal] = Field(None, description="""The altitude of the location""") + type: Literal["GeoPointLocation"] = Field("GeoPointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Measurement(Observation): - quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") - variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") - type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringSpecification(Procedure): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringSpecification"] = Field("EngineeringSpecification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Variable,PostalAddress,NamedThing,Intangible,Observation,Measurement,Role,Relationship,Collection,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Place,RawMaterial,Equipment,Concept,InformationEntity,PhysicalDevice,Specification,Event,BuiltEnvironmentFeature,Agent,CreativeWork,Person,Organization,AutomatedAgent,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,EngineeringProcess,PlannedProcess,LifeEvent,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste,ExtractiveIndustryEquipment,Landform]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class QuantityKind(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Quantity(Intangible): @@ -375,26 +402,13 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - class UnitConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -403,12 +417,59 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class EngineeringProcess(Event): @@ -419,12 +480,10 @@ class EngineeringProcess(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringProcess"] = Field("EngineeringProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class TimePointOrTemporalInterval(Intangible): @@ -471,127 +530,191 @@ class TemporalRelationship(Relationship): """ predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PlannedProcess(Event): +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectObservationHistory(SubjectHistory): + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectObservationHistory"] = Field("SubjectObservationHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class ExecutionOfProcedure(Event): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class ComputationalPlannedProcess(PlannedProcess): + """ + Application of a mathematical operation to one or more inputs to produce one or more outputs + """ + inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") + outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") + parts: Optional[List[str]] = Field(default_factory=list, description="""The parts of the process""") + immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class EngineeringMaterialProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["EngineeringMaterialProcessing"] = Field("EngineeringMaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class BuiltEnvironmentFeature(NamedThing): +class BuiltEnvironmentFeature(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["BuiltEnvironmentFeature"] = Field("BuiltEnvironmentFeature", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Facility(BuiltEnvironmentFeature): located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Facility"] = Field("Facility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Building(Facility): located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Building"] = Field("Building", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class BuiltSystem(BuiltEnvironmentFeature): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["BuiltSystem"] = Field("BuiltSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class IndividualOrganism(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["IndividualOrganism"] = Field("IndividualOrganism", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganismalRelationship(Relationship): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + type: Literal["OrganismalRelationship"] = Field("OrganismalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(ConfiguredBaseModel): """ Represents an Agent """ - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + pass -class Person(Agent): +class Person(Agent, IndividualOrganism): """ Represents a Person """ @@ -599,12 +722,12 @@ class Person(Agent): birth_date: Optional[date] = Field(None, description="""Date on which a person is born""") age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Person"] = Field("Person", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @validator('primary_email', allow_reuse=True) def pattern_primary_email(cls, v): @@ -619,29 +742,68 @@ def pattern_primary_email(cls, v): return v -class Organization(Agent): +class VeterinaryAnimal(IndividualOrganism): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["VeterinaryAnimal"] = Field("VeterinaryAnimal", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Organization(Agent, PhysicalEntity): """ Represents an Organization """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class AutomatedAgent(Agent): +class OrganizationalRole(Role): + type: Literal["OrganizationalRole"] = Field("OrganizationalRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrgChart(InformationEntity): + for_organization: Optional[str] = Field(None) + relationships: Optional[OrganizationPersonnelRelationship] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["OrgChart"] = Field("OrgChart", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PersonInRole(Relationship): + subject_person: Optional[str] = Field(None) + person_role: Optional[OrganizationalRole] = Field(None) + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,EngineeringProcess,ExecutionOfProcedure,LifeEvent,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,EngineeringMaterialProcessing,Measurement,QualitativeObservation,Place,RawMaterial,Equipment,PhysicalDevice,PhysicalSystem,BuiltEnvironmentFeature,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Facility,BuiltSystem,Building,ExtractiveIndustryFacility,MiningFacility,WellFacility,QuarryFacility,ExtractiveIndustryEquipment,Landform,AstronomicalBody,SetOfObservations,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,PlannedProcessConfiguration,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,PostalAddress,Location,GeoBoxLocation,PointLocation,GeoPointLocation,Specification,OrgChart,Procedure,EngineeringSpecification,QuantityKind,UnitConcept,ExtractiveIndustryProduct,ExtractiveIndustryWaste]] = Field(None) + type: Literal["PersonInRole"] = Field("PersonInRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganizationPersonnelRelationship(Relationship): + subject: Optional[str] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[str] = Field(None) + type: Literal["OrganizationPersonnelRelationship"] = Field("OrganizationPersonnelRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AutomatedAgent(Agent, PhysicalEntity): """ Represents an Automated Agent """ + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["AutomatedAgent"] = Field("AutomatedAgent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class LifeEvent(Event): @@ -650,15 +812,23 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class CreativeWork(NamedThing): +class CreationMetadata(ConfiguredBaseModel): + title: Optional[str] = Field(None, description="""The title of the item""") + abstract: Optional[str] = Field(None, description="""A summary of the item""") + rights: Optional[str] = Field(None, description="""Information about rights held in and over the item""") + creators: Optional[List[str]] = Field(default_factory=list, description="""The person or organization who created the work""") + contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") + contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") + keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + + +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -669,12 +839,12 @@ class CreativeWork(NamedThing): contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["CreativeWork"] = Field("CreativeWork", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Service(Intangible): @@ -695,12 +865,12 @@ class ExtractiveIndustryFacility(Facility): annual_production: Optional[SimpleQuantity] = Field(None) reserves: Optional[SimpleQuantity] = Field(None) located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExtractiveIndustryFacility"] = Field("ExtractiveIndustryFacility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class MiningFacility(ExtractiveIndustryFacility): @@ -717,12 +887,12 @@ class MiningFacility(ExtractiveIndustryFacility): annual_production: Optional[SimpleQuantity] = Field(None) reserves: Optional[SimpleQuantity] = Field(None) located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MiningFacility"] = Field("MiningFacility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class WellFacility(ExtractiveIndustryFacility): @@ -738,12 +908,12 @@ class WellFacility(ExtractiveIndustryFacility): annual_production: Optional[SimpleQuantity] = Field(None) reserves: Optional[SimpleQuantity] = Field(None) located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["WellFacility"] = Field("WellFacility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class QuarryFacility(ExtractiveIndustryFacility): @@ -757,24 +927,24 @@ class QuarryFacility(ExtractiveIndustryFacility): annual_production: Optional[SimpleQuantity] = Field(None) reserves: Optional[SimpleQuantity] = Field(None) located_at_place: Optional[str] = Field(None, description="""The place where the entity is located""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["QuarryFacility"] = Field("QuarryFacility", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class ExtractiveIndustryEquipment(Equipment): """ The equipment used in extractive industry operations """ + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExtractiveIndustryEquipment"] = Field("ExtractiveIndustryEquipment", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class ExtractiveIndustryProduct(Concept): @@ -787,9 +957,6 @@ class ExtractiveIndustryProduct(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExtractiveIndustryProduct"] = Field("ExtractiveIndustryProduct", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class ExtractiveIndustryWaste(Concept): @@ -799,53 +966,60 @@ class ExtractiveIndustryWaste(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["ExtractiveIndustryWaste"] = Field("ExtractiveIndustryWaste", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() +Intangible.update_forward_refs() +SetOfObservations.update_forward_refs() Variable.update_forward_refs() -PostalAddress.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Place.update_forward_refs() Landform.update_forward_refs() +AstronomicalBody.update_forward_refs() RawMaterial.update_forward_refs() Equipment.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() +StructuredValue.update_forward_refs() +PostalAddress.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() +PhysicalSystem.update_forward_refs() Location.update_forward_refs() GeoBoxLocation.update_forward_refs() PointLocation.update_forward_refs() GeoPointLocation.update_forward_refs() -Observation.update_forward_refs() -Measurement.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() EngineeringSpecification.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -UnitConversionOperation.update_forward_refs() UnitConcept.update_forward_refs() Event.update_forward_refs() +Observation.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() EngineeringProcess.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() +SubjectObservationHistory.update_forward_refs() +ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() EngineeringMaterialProcessing.update_forward_refs() @@ -853,11 +1027,19 @@ class ExtractiveIndustryWaste(Concept): Facility.update_forward_refs() Building.update_forward_refs() BuiltSystem.update_forward_refs() +IndividualOrganism.update_forward_refs() +OrganismalRelationship.update_forward_refs() Agent.update_forward_refs() Person.update_forward_refs() +VeterinaryAnimal.update_forward_refs() Organization.update_forward_refs() +OrganizationalRole.update_forward_refs() +OrgChart.update_forward_refs() +PersonInRole.update_forward_refs() +OrganizationPersonnelRelationship.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() +CreationMetadata.update_forward_refs() CreativeWork.update_forward_refs() Service.update_forward_refs() ExtractiveIndustryFacility.update_forward_refs() diff --git a/src/linkml_common/datamodel/financial.py b/src/linkml_common/datamodel/financial.py index 3244725..4c762af 100644 --- a/src/linkml_common/datamodel/financial.py +++ b/src/linkml_common/datamodel/financial.py @@ -73,69 +73,20 @@ class FinanicialOrganizationEnum(str): pass -class Entity(ConfiguredBaseModel): - """ - A physical, digital, conceptual, or other kind of thing with some common characteristics - """ - type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class NamedThing(Entity): +class Identified(ConfiguredBaseModel): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class Concept(NamedThing): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class QuantityKind(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class UnitConcept(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class InformationEntity(NamedThing): +class Entity(Typed): """ - An entity that describes some information + A physical, digital, conceptual, or other kind of thing with some common characteristics """ - describes: Optional[Any] = Field(None, description="""The thing that is being described""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class PhysicalDevice(NamedThing): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Intangible(Entity): @@ -179,6 +130,59 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalEntity(Entity, Identified): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list) + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Concept(Intangible, Identified): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityKind(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class UnitConcept(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class InformationEntity(Intangible, Identified): + """ + An entity that describes some information + """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list) + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class StructuredValue(Intangible): + """ + A value that is a structured collection of other values + """ + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Role(Intangible): type: Literal["Role"] = Field("Role", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -187,74 +191,43 @@ class Relationship(Intangible): type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass - - -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration,MoneyQuantity]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration,MoneyQuantity]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,Quantity,QuantityRange,Role,Relationship,Collection,TimePointOrTemporalInterval,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,TemporalRelationship,SimpleQuantity,Ratio,Duration,MoneyQuantity,Concept,InformationEntity,PhysicalDevice,Specification,Event,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,LifeEvent,Procedure,QuantityKind,UnitConcept,CurrencyConcept]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,FinancialOrganization,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,FinancialProduct,FinancialAccount,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,CurrencyConcept,SimpleQuantity,Ratio,Duration,MoneyQuantity]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -263,12 +236,10 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class TimePointOrTemporalInterval(Intangible): @@ -318,16 +289,16 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Person(Agent): @@ -338,12 +309,12 @@ class Person(Agent): birth_date: Optional[date] = Field(None, description="""Date on which a person is born""") age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Person"] = Field("Person", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Person"] = Field("Person", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @validator('primary_email', allow_reuse=True) def pattern_primary_email(cls, v): @@ -363,24 +334,24 @@ class Organization(Agent): Represents an Organization """ provides_services: Optional[List[Union[Service,FinancialProduct,FinancialAccount]]] = Field(default_factory=list) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class AutomatedAgent(Agent): """ Represents an Automated Agent """ - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["AutomatedAgent"] = Field("AutomatedAgent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["AutomatedAgent"] = Field("AutomatedAgent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class LifeEvent(Event): @@ -389,15 +360,23 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class CreativeWork(NamedThing): +class CreationMetadata(ConfiguredBaseModel): + title: Optional[str] = Field(None, description="""The title of the item""") + abstract: Optional[str] = Field(None, description="""A summary of the item""") + rights: Optional[str] = Field(None, description="""Information about rights held in and over the item""") + creators: Optional[List[str]] = Field(default_factory=list, description="""The person or organization who created the work""") + contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") + contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") + keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + + +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -408,12 +387,12 @@ class CreativeWork(NamedThing): contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["CreativeWork"] = Field("CreativeWork", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["CreativeWork"] = Field("CreativeWork", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Service(Intangible): @@ -440,9 +419,6 @@ class CurrencyConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["CurrencyConcept"] = Field("CurrencyConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class FinancialProduct(Service): @@ -467,38 +443,38 @@ class FinancialOrganization(Organization): An organization that provides financial services """ provides_services: Optional[List[Union[Service,FinancialProduct,FinancialAccount]]] = Field(default_factory=list) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["FinancialOrganization"] = Field("FinancialOrganization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["FinancialOrganization"] = Field("FinancialOrganization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() -NamedThing.update_forward_refs() -Concept.update_forward_refs() -QuantityKind.update_forward_refs() -UnitConcept.update_forward_refs() -InformationEntity.update_forward_refs() -PhysicalDevice.update_forward_refs() Intangible.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() +PhysicalEntity.update_forward_refs() +Concept.update_forward_refs() +QuantityKind.update_forward_refs() +UnitConcept.update_forward_refs() +InformationEntity.update_forward_refs() +PhysicalDevice.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -UnitConversionOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() Event.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() @@ -510,6 +486,7 @@ class FinancialOrganization(Organization): Organization.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() +CreationMetadata.update_forward_refs() CreativeWork.update_forward_refs() Service.update_forward_refs() MoneyQuantity.update_forward_refs() diff --git a/src/linkml_common/datamodel/foods.py b/src/linkml_common/datamodel/foods.py index 0eede9d..9a5d4f5 100644 --- a/src/linkml_common/datamodel/foods.py +++ b/src/linkml_common/datamodel/foods.py @@ -69,32 +69,52 @@ class PersonStatus(str, Enum): UNKNOWN = "UNKNOWN" -class Entity(ConfiguredBaseModel): +class OrganizationPersonnelRelationshipEnum(str): """ - A physical, digital, conceptual, or other kind of thing with some common characteristics + ... """ - type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + pass -class NamedThing(Entity): +class Identified(ConfiguredBaseModel): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): + """ + A physical, digital, conceptual, or other kind of thing with some common characteristics + """ + type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ @@ -102,25 +122,22 @@ class InformationEntity(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Intangible(Entity): +class StructuredValue(Intangible): """ - An entity that is not a physical object, process, or information + A value that is a structured collection of other values """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Role(Intangible): @@ -131,64 +148,43 @@ class Relationship(Intangible): type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass - - -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,Variable,Measurement,Role,Relationship,Collection,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Duration,SimpleQuantity,Ratio,FoodIngredient,TemporalInterval,TimePoint,TemporalRelationship,Concept,InformationEntity,PhysicalDevice,Specification,Event,Agent,CreativeWork,Person,Organization,AutomatedAgent,LifeEvent,PlannedProcess,MaterialCollection,MaterialProcessing,FoodProcessing,Procedure,FoodRecipe,QuantityKind,UnitConcept,FoodTypeConcept,BasicFoodType,CompositeFoodType]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,FoodPreparation,FoodProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Variable,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,FoodIngredient,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Procedure,FoodRecipe,QuantityKind,UnitConcept,FoodTypeConcept,BasicFoodType,CompositeFoodType]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -197,12 +193,10 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class TimePointOrTemporalInterval(Intangible): @@ -244,16 +238,16 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Person(Agent): @@ -264,12 +258,12 @@ class Person(Agent): birth_date: Optional[date] = Field(None, description="""Date on which a person is born""") age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Person"] = Field("Person", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @validator('primary_email', allow_reuse=True) def pattern_primary_email(cls, v): @@ -289,24 +283,51 @@ class Organization(Agent): Represents an Organization """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class OrganizationalRole(Role): + type: Literal["OrganizationalRole"] = Field("OrganizationalRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrgChart(InformationEntity): + for_organization: Optional[str] = Field(None) + relationships: Optional[OrganizationPersonnelRelationship] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["OrgChart"] = Field("OrgChart", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PersonInRole(Relationship): + subject_person: Optional[str] = Field(None) + person_role: Optional[OrganizationalRole] = Field(None) + type: Literal["PersonInRole"] = Field("PersonInRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganizationPersonnelRelationship(Relationship): + subject: Optional[str] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[str] = Field(None) + type: Literal["OrganizationPersonnelRelationship"] = Field("OrganizationPersonnelRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class AutomatedAgent(Agent): """ Represents an Automated Agent """ + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["AutomatedAgent"] = Field("AutomatedAgent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class LifeEvent(Event): @@ -315,15 +336,23 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class CreativeWork(NamedThing): +class CreationMetadata(ConfiguredBaseModel): + title: Optional[str] = Field(None, description="""The title of the item""") + abstract: Optional[str] = Field(None, description="""A summary of the item""") + rights: Optional[str] = Field(None, description="""Information about rights held in and over the item""") + creators: Optional[List[str]] = Field(default_factory=list, description="""The person or organization who created the work""") + contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") + contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") + keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + + +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -334,12 +363,12 @@ class CreativeWork(NamedThing): contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["CreativeWork"] = Field("CreativeWork", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Service(Intangible): @@ -353,9 +382,6 @@ class QuantityKind(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Quantity(Intangible): @@ -400,96 +426,159 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,Duration,SimpleQuantity,Ratio,FoodIngredient]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,Duration,SimpleQuantity,Ratio,FoodIngredient]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - class UnitConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,FoodPreparation,FoodProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Variable,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,FoodIngredient,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Procedure,FoodRecipe,QuantityKind,UnitConcept,FoodTypeConcept,BasicFoodType,CompositeFoodType]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Measurement(Observation): quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio,FoodIngredient]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,FoodPreparation,FoodProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Variable,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,FoodIngredient,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Procedure,FoodRecipe,QuantityKind,UnitConcept,FoodTypeConcept,BasicFoodType,CompositeFoodType]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Entity): +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,FoodPreparation,FoodProcessing,Measurement,QualitativeObservation,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Quantity,QuantityRange,Variable,PlannedProcessConfiguration,Duration,SimpleQuantity,Ratio,FoodIngredient,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Procedure,FoodRecipe,QuantityKind,UnitConcept,FoodTypeConcept,BasicFoodType,CompositeFoodType]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PlannedProcess(Event): +class ExecutionOfProcedure(Event): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class ComputationalPlannedProcess(PlannedProcess): + """ + Application of a mathematical operation to one or more inputs to produce one or more outputs + """ + inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") + outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") + parts: Optional[List[str]] = Field(default_factory=list, description="""The parts of the process""") + immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialCollection"] = Field("MaterialCollection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["MaterialProcessing"] = Field("MaterialProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class FoodRecipe(Procedure): ingredients: Optional[List[FoodIngredient]] = Field(default_factory=list) steps: Optional[List[str]] = Field(default_factory=list) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["FoodRecipe"] = Field("FoodRecipe", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class FoodIngredient(Quantity): @@ -500,63 +589,69 @@ class FoodIngredient(Quantity): class FoodProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["FoodProcessing"] = Field("FoodProcessing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + + +class FoodPreparation(PlannedProcess): + follows_procedure: Optional[str] = Field(None) + uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["FoodPreparation"] = Field("FoodPreparation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class FoodTypeConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["FoodTypeConcept"] = Field("FoodTypeConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class BasicFoodType(FoodTypeConcept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["BasicFoodType"] = Field("BasicFoodType", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class CompositeFoodType(FoodTypeConcept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["CompositeFoodType"] = Field("CompositeFoodType", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() -NamedThing.update_forward_refs() +Intangible.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() Event.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() @@ -565,8 +660,13 @@ class CompositeFoodType(FoodTypeConcept): Agent.update_forward_refs() Person.update_forward_refs() Organization.update_forward_refs() +OrganizationalRole.update_forward_refs() +OrgChart.update_forward_refs() +PersonInRole.update_forward_refs() +OrganizationPersonnelRelationship.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() +CreationMetadata.update_forward_refs() CreativeWork.update_forward_refs() Service.update_forward_refs() QuantityKind.update_forward_refs() @@ -575,16 +675,21 @@ class CompositeFoodType(FoodTypeConcept): SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -UnitConversionOperation.update_forward_refs() UnitConcept.update_forward_refs() +Observation.update_forward_refs() Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() Variable.update_forward_refs() +ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() FoodRecipe.update_forward_refs() FoodIngredient.update_forward_refs() FoodProcessing.update_forward_refs() +FoodPreparation.update_forward_refs() FoodTypeConcept.update_forward_refs() BasicFoodType.update_forward_refs() CompositeFoodType.update_forward_refs() diff --git a/src/linkml_common/datamodel/geography.py b/src/linkml_common/datamodel/geography.py index fb8fc89..ae4c3d5 100644 --- a/src/linkml_common/datamodel/geography.py +++ b/src/linkml_common/datamodel/geography.py @@ -47,63 +47,71 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass -class Entity(ConfiguredBaseModel): +class RelativeTimeEnum(str, Enum): + BEFORE = "BEFORE" + AFTER = "AFTER" + AT_SAME_TIME_AS = "AT_SAME_TIME_AS" + + +class LandformEnum(str): + pass + + +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): """ A physical, digital, conceptual, or other kind of thing with some common characteristics """ type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Identified(ConfiguredBaseModel): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Identified, Entity): - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): - type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ describes: Optional[Any] = Field(None, description="""The thing that is being described""") - type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): - type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - - -class Intangible(Entity): - """ - An entity that is not a physical object, process, or information - """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class StructuredValue(Intangible): @@ -129,62 +137,38 @@ class PointLocation(Location): type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ - type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ - type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,StructuredValue,Role,Relationship,Collection,Quantity,QuantityRange,SimpleQuantity,Ratio,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Concept,InformationEntity,PhysicalDevice,Specification,Place,Landform,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,PhysicalDevice,Place,Landform,AstronomicalBody,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class QuantityKind(Concept): - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Quantity(Intangible): @@ -206,8 +190,8 @@ class Ratio(Quantity): """ A tuple of two quantities """ - numerator: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The numerator of the ratio""") - denominator: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The denominator of the ratio""") + numerator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The numerator of the ratio""") + denominator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The denominator of the ratio""") has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -216,43 +200,92 @@ class QuantityRange(Intangible): """ A quantity range is a property that can be measured or counted """ - lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The lower bound of the range""") - upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio]] = Field(None, description="""The upper bound of the range""") + lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The lower bound of the range""") + upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The upper bound of the range""") type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): +class UnitConcept(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Event(Entity, Identified): """ - A unit conversion operation + A thing that happens """ - inputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConcept(Concept): - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) +class TimePointOrTemporalInterval(Intangible): + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TimePointOrTemporalInterval"] = Field("TimePointOrTemporalInterval", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TemporalInterval(TimePointOrTemporalInterval): + """ + A period of time + """ + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TemporalInterval"] = Field("TemporalInterval", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class TimePoint(TimePointOrTemporalInterval): + """ + A point in time. Can be fully specified, or specified in relative terms. + """ + year_value: Optional[int] = Field(None) + date_value: Optional[date] = Field(None) + time_value: Optional[str] = Field(None) + datetime_value: Optional[datetime ] = Field(None) + marker_event: Optional[str] = Field(None) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + type: Literal["TimePoint"] = Field("TimePoint", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Duration(Quantity): + """ + A length of time + """ + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Duration"] = Field("Duration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Place(NamedThing): +class TemporalRelationship(Relationship): + """ + A relationship to another time point + """ + predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") + relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") - type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Landform(Place): @@ -262,12 +295,24 @@ class Landform(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AstronomicalBody(Place): + address: Optional[PostalAddress] = Field(None) + geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") + bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["AstronomicalBody"] = Field("AstronomicalBody", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PostalAddress(StructuredValue): @@ -300,32 +345,37 @@ class GeoBoxLocation(Location): # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ -Entity.update_forward_refs() Identified.update_forward_refs() -NamedThing.update_forward_refs() +Typed.update_forward_refs() +Entity.update_forward_refs() +Intangible.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -UnitConversionOperation.update_forward_refs() UnitConcept.update_forward_refs() +Event.update_forward_refs() +TimePointOrTemporalInterval.update_forward_refs() +TemporalInterval.update_forward_refs() +TimePoint.update_forward_refs() +Duration.update_forward_refs() +TemporalRelationship.update_forward_refs() Place.update_forward_refs() Landform.update_forward_refs() +AstronomicalBody.update_forward_refs() PostalAddress.update_forward_refs() GeoPointLocation.update_forward_refs() GeoBoxLocation.update_forward_refs() diff --git a/src/linkml_common/datamodel/healthcare.py b/src/linkml_common/datamodel/healthcare.py index 5aef2a1..16ef967 100644 --- a/src/linkml_common/datamodel/healthcare.py +++ b/src/linkml_common/datamodel/healthcare.py @@ -47,12 +47,20 @@ class ConfiguredBaseModel(WeakRefShimBaseModel, pass +class LandformEnum(str): + pass + + class RelativeTimeEnum(str, Enum): BEFORE = "BEFORE" AFTER = "AFTER" AT_SAME_TIME_AS = "AT_SAME_TIME_AS" +class OrganismTaxonEnum(str): + pass + + class HumanLanguageCodeEnum(str): """ An enumeration of languages @@ -69,6 +77,13 @@ class PersonStatus(str, Enum): UNKNOWN = "UNKNOWN" +class OrganizationPersonnelRelationshipEnum(str): + """ + ... + """ + pass + + class HealthcareEncounterClassification(str, Enum): # Person visiting hospital, at a Care Site, in bed, for duration of more than one day, with physicians and other Providers permanently available to deliver service around the clock Inpatient_Visit = "Inpatient Visit" @@ -94,32 +109,45 @@ class HealthcareEncounterClassification(str, Enum): Case_Management_Visit = "Case Management Visit" -class Entity(ConfiguredBaseModel): +class Identified(ConfiguredBaseModel): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + + +class Typed(ConfiguredBaseModel): + type: Literal["Typed"] = Field("Typed", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Entity(Typed): """ A physical, digital, conceptual, or other kind of thing with some common characteristics """ type: Literal["Entity"] = Field("Entity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Intangible(Entity): + """ + An entity that is not a physical object, process, or information + """ + type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Concept(NamedThing): +class Concept(Intangible, Identified): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Concept"] = Field("Concept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class InformationEntity(NamedThing): +class InformationEntity(Intangible, Identified): """ An entity that describes some information """ @@ -127,25 +155,22 @@ class InformationEntity(NamedThing): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["PhysicalDevice"] = Field("PhysicalDevice", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Intangible(Entity): +class StructuredValue(Intangible): """ - An entity that is not a physical object, process, or information + A value that is a structured collection of other values """ - type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["StructuredValue"] = Field("StructuredValue", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Role(Intangible): @@ -153,73 +178,52 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Location(ConfiguredBaseModel): - pass +class Location(StructuredValue): + type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class PointLocation(Location): - pass - - -class Observation(Entity): - """ - A statement about the state of something - """ - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PointLocation"] = Field("PointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Specification(NamedThing): +class Specification(InformationEntity): """ A specification of a thing """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Specification"] = Field("Specification", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Procedure(Specification): """ A canonical series of actions conducted in a certain order or manner """ + describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Procedure"] = Field("Procedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") - - -class MathematicalOperation(ConfiguredBaseModel): - """ - Application of a mathematical operation to one or more inputs to produce one or more outputs - """ - inputs: Optional[List[Any]] = Field(default_factory=list, description="""The inputs to the operation""") - outputs: Optional[List[Any]] = Field(default_factory=list, description="""The outputs of the operation""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") -class Collection(Intangible): +class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,NamedThing,Intangible,Observation,PostalAddress,Role,Relationship,Collection,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,HealthcareRole,HealthcareProvider,Patient,Concept,InformationEntity,PhysicalDevice,Specification,Place,Event,Agent,CreativeWork,Person,Organization,AutomatedAgent,HealthcareOrganization,LifeEvent,HealthcareEncounter,HealthcareConditionOccurrence,Landform,HealthcareSite,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") - type: Literal["Collection"] = Field("Collection", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class QuantityKind(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Quantity(Intangible): @@ -256,38 +260,25 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class UnitConversionOperation(MathematicalOperation): - """ - A unit conversion operation - """ - inputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The input unit""") - outputs: Optional[List[Union[Quantity,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The output unit""") - parts: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The parts of the process""") - immediate_preceding_steps: Optional[List[MathematicalOperation]] = Field(default_factory=list, description="""The steps that immediately precede this step""") - - class UnitConcept(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Place"] = Field("Place", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Landform(Place): @@ -297,15 +288,27 @@ class Landform(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Landform"] = Field("Landform", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AstronomicalBody(Place): + address: Optional[PostalAddress] = Field(None) + geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") + bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["AstronomicalBody"] = Field("AstronomicalBody", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PostalAddress(Entity): +class PostalAddress(StructuredValue): """ Represents an Address """ @@ -322,6 +325,7 @@ class GeoPointLocation(PointLocation): latitude: Optional[Decimal] = Field(None, description="""The latitude of the location""") longitude: Optional[Decimal] = Field(None, description="""The longitude of the location""") altitude: Optional[Decimal] = Field(None, description="""The altitude of the location""") + type: Literal["GeoPointLocation"] = Field("GeoPointLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class GeoBoxLocation(Location): @@ -329,9 +333,10 @@ class GeoBoxLocation(Location): east_bounding_coordinate: Optional[Decimal] = Field(None, description="""The easternmost coordinate of the location""") north_bounding_coordinate: Optional[Decimal] = Field(None, description="""The northernmost coordinate of the location""") south_bounding_coordinate: Optional[Decimal] = Field(None, description="""The southernmost coordinate of the location""") + type: Literal["GeoBoxLocation"] = Field("GeoBoxLocation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Event(NamedThing): +class Event(Entity, Identified): """ A thing that happens """ @@ -340,12 +345,10 @@ class Event(NamedThing): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class TimePointOrTemporalInterval(Intangible): @@ -392,22 +395,42 @@ class TemporalRelationship(Relationship): """ predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class IndividualOrganism(PhysicalEntity): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["IndividualOrganism"] = Field("IndividualOrganism", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganismalRelationship(Relationship): + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + type: Literal["OrganismalRelationship"] = Field("OrganismalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Agent(ConfiguredBaseModel): """ Represents an Agent """ - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + pass -class Person(Agent): +class Person(Agent, IndividualOrganism): """ Represents a Person """ @@ -415,12 +438,12 @@ class Person(Agent): birth_date: Optional[date] = Field(None, description="""Date on which a person is born""") age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Person"] = Field("Person", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @validator('primary_email', allow_reuse=True) def pattern_primary_email(cls, v): @@ -435,29 +458,68 @@ def pattern_primary_email(cls, v): return v -class Organization(Agent): +class VeterinaryAnimal(IndividualOrganism): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["VeterinaryAnimal"] = Field("VeterinaryAnimal", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Organization(Agent, PhysicalEntity): """ Represents an Organization """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class AutomatedAgent(Agent): +class OrganizationalRole(Role): + type: Literal["OrganizationalRole"] = Field("OrganizationalRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrgChart(InformationEntity): + for_organization: Optional[str] = Field(None) + relationships: Optional[OrganizationPersonnelRelationship] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["OrgChart"] = Field("OrgChart", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PersonInRole(Relationship): + subject_person: Optional[str] = Field(None) + person_role: Optional[OrganizationalRole] = Field(None) + subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + type: Literal["PersonInRole"] = Field("PersonInRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganizationPersonnelRelationship(Relationship): + subject: Optional[str] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[str] = Field(None) + type: Literal["OrganizationPersonnelRelationship"] = Field("OrganizationPersonnelRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AutomatedAgent(Agent, PhysicalEntity): """ Represents an Automated Agent """ + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["AutomatedAgent"] = Field("AutomatedAgent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class LifeEvent(Event): @@ -466,15 +528,23 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") -class CreativeWork(NamedThing): +class CreationMetadata(ConfiguredBaseModel): + title: Optional[str] = Field(None, description="""The title of the item""") + abstract: Optional[str] = Field(None, description="""A summary of the item""") + rights: Optional[str] = Field(None, description="""Information about rights held in and over the item""") + creators: Optional[List[str]] = Field(default_factory=list, description="""The person or organization who created the work""") + contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") + contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") + keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + + +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -485,12 +555,12 @@ class CreativeWork(NamedThing): contributors: Optional[List[str]] = Field(default_factory=list, description="""A person or organization that contributed to the creation of the work""") contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["CreativeWork"] = Field("CreativeWork", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Service(Intangible): @@ -500,16 +570,86 @@ class Service(Intangible): type: Literal["Service"] = Field("Service", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Observation(Event): + """ + A statement about the state of something + """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SetOfObservations(Intangible): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + observations: Optional[Union[Observation,Measurement,QualitativeObservation]] = Field(None) + type: Literal["SetOfObservations"] = Field("SetOfObservations", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectObservationHistory(SubjectHistory): + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectObservationHistory"] = Field("SubjectObservationHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Measurement(Observation): + quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,ClinicalHistory,LifeEvent,Observation,HealthcareEncounter,HealthcareConditionOccurrence,Measurement,QualitativeObservation,PhysicalDevice,Place,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,HealthcareOrganization,Person,VeterinaryAnimal,Landform,AstronomicalBody,HealthcareSite,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,OrganismalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,HealthcareRole,HealthcareProvider,Patient,Location,PostalAddress,PointLocation,GeoBoxLocation,GeoPointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): + allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") + type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class HealthcareSite(Place): address: Optional[PostalAddress] = Field(None) geolocation: Optional[GeoPointLocation] = Field(None, description="""The geolocation of the place""") bounding_coordinates: Optional[GeoBoxLocation] = Field(None, description="""The bounding coordinates of the place""") + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareSite"] = Field("HealthcareSite", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class HealthcareEncounter(Event): @@ -523,12 +663,10 @@ class HealthcareEncounter(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareEncounter"] = Field("HealthcareEncounter", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[HealthcareEncounterClassification] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class HealthcareOrganization(Organization): @@ -536,12 +674,13 @@ class HealthcareOrganization(Organization): An organization that provides healthcare services """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareOrganization"] = Field("HealthcareOrganization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class HealthcareRole(Role): @@ -564,12 +703,10 @@ class HealthcareConditionOccurrence(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["HealthcareConditionOccurrence"] = Field("HealthcareConditionOccurrence", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""A human-readable description for a thing""") class Patient(HealthcareRole): @@ -577,32 +714,43 @@ class Patient(HealthcareRole): type: Literal["Patient"] = Field("Patient", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class ClinicalHistory(SubjectObservationHistory): + subject: Optional[str] = Field(None) + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["ClinicalHistory"] = Field("ClinicalHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ +Identified.update_forward_refs() +Typed.update_forward_refs() Entity.update_forward_refs() -NamedThing.update_forward_refs() +Intangible.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() -Intangible.update_forward_refs() +StructuredValue.update_forward_refs() Role.update_forward_refs() Relationship.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() -Observation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() -MathematicalOperation.update_forward_refs() -Collection.update_forward_refs() +EntitySet.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -UnitConversionOperation.update_forward_refs() UnitConcept.update_forward_refs() Place.update_forward_refs() Landform.update_forward_refs() +AstronomicalBody.update_forward_refs() PostalAddress.update_forward_refs() GeoPointLocation.update_forward_refs() GeoBoxLocation.update_forward_refs() @@ -612,13 +760,28 @@ class Patient(HealthcareRole): TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() +IndividualOrganism.update_forward_refs() +OrganismalRelationship.update_forward_refs() Agent.update_forward_refs() Person.update_forward_refs() +VeterinaryAnimal.update_forward_refs() Organization.update_forward_refs() +OrganizationalRole.update_forward_refs() +OrgChart.update_forward_refs() +PersonInRole.update_forward_refs() +OrganizationPersonnelRelationship.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() +CreationMetadata.update_forward_refs() CreativeWork.update_forward_refs() Service.update_forward_refs() +Observation.update_forward_refs() +SetOfObservations.update_forward_refs() +SubjectObservationHistory.update_forward_refs() +Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() +Variable.update_forward_refs() HealthcareSite.update_forward_refs() HealthcareEncounter.update_forward_refs() HealthcareOrganization.update_forward_refs() @@ -626,4 +789,5 @@ class Patient(HealthcareRole): HealthcareProvider.update_forward_refs() HealthcareConditionOccurrence.update_forward_refs() Patient.update_forward_refs() +ClinicalHistory.update_forward_refs() diff --git a/src/linkml_common/datamodel/investigations.py b/src/linkml_common/datamodel/investigations.py index d8d9e42..3cc9736 100644 --- a/src/linkml_common/datamodel/investigations.py +++ b/src/linkml_common/datamodel/investigations.py @@ -105,6 +105,9 @@ class Observation(Event): """ A statement about the state of something """ + observation_subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -118,7 +121,9 @@ class Observation(Event): class Measurement(Observation): quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -130,6 +135,38 @@ class Measurement(Observation): type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectObservationHistory(SubjectHistory): + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectObservationHistory"] = Field("SubjectObservationHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Intangible(Entity): """ An entity that is not a physical object, process, or information @@ -137,6 +174,12 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SetOfObservations(Intangible): + observation_subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + observations: Optional[Union[Observation,Measurement,QualitativeObservation]] = Field(None) + type: Literal["SetOfObservations"] = Field("SetOfObservations", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Variable(Intangible): allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -214,13 +257,13 @@ class QuantityRange(Intangible): type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -251,9 +294,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -272,6 +315,9 @@ class Role(Intangible): class Relationship(Intangible): + subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) type: Literal["Relationship"] = Field("Relationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -281,9 +327,22 @@ class TemporalRelationship(Relationship): """ predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + subject: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + object: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PhysicalSystem(PhysicalEntity): + components: Optional[List[str]] = Field(default_factory=list) + events: Optional[List[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]]] = Field(default_factory=list) + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["PhysicalSystem"] = Field("PhysicalSystem", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Location(StructuredValue): type: Literal["Location"] = Field("Location", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -316,7 +375,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Event,Intangible,NamedThing,PhysicalDevice,SampleMaterial,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TemporalRelationship,Location,PointLocation,Specification,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,MathematicalOperationExecution,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -332,12 +391,17 @@ class ExecutionOfProcedure(Event): type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -349,7 +413,7 @@ class PlannedProcess(ExecutionOfProcedure): type: Literal["PlannedProcess"] = Field("PlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperationExecution(PlannedProcess): +class ComputationalPlannedProcess(PlannedProcess): """ Application of a mathematical operation to one or more inputs to produce one or more outputs """ @@ -359,6 +423,7 @@ class MathematicalOperationExecution(PlannedProcess): immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -367,12 +432,13 @@ class MathematicalOperationExecution(PlannedProcess): is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["MathematicalOperationExecution"] = Field("MathematicalOperationExecution", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -387,6 +453,7 @@ class MaterialCollection(PlannedProcess): class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -401,6 +468,9 @@ class MaterialProcessing(PlannedProcess): class Investigation(Event): objectives: Optional[str] = Field(None) variables: Optional[List[Variable]] = Field(default_factory=list) + hypothesis: Optional[str] = Field(None) + design: Optional[str] = Field(None) + results: Optional[List[str]] = Field(default_factory=list) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -420,6 +490,13 @@ class InvestigativeProtocol(Procedure): type: Literal["InvestigativeProtocol"] = Field("InvestigativeProtocol", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class StudyHypothesis(InformationEntity): + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["StudyHypothesis"] = Field("StudyHypothesis", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class StudyDesign(Procedure): describes: Optional[Any] = Field(None, description="""The thing that is being described""") id: str = Field(..., description="""A unique identifier for a thing""") @@ -427,9 +504,18 @@ class StudyDesign(Procedure): type: Literal["StudyDesign"] = Field("StudyDesign", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class SampleMaterial(NamedThing): +class StudyResult(InformationEntity): + hypothesis: Optional[str] = Field(None) + result: Optional[str] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["StudyResult"] = Field("StudyResult", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SampleMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -440,6 +526,7 @@ class InvestigativeProcess(PlannedProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -457,6 +544,7 @@ class SampleCollectionProcess(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -471,6 +559,7 @@ class SampleCollectionProcess(InvestigativeProcess): class SampleProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -486,6 +575,7 @@ class DataGenerationFromSample(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -497,6 +587,25 @@ class DataGenerationFromSample(InvestigativeProcess): type: Literal["DataGenerationFromSample"] = Field("DataGenerationFromSample", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class Model(ConfiguredBaseModel): + models: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + + +class ComputationalModel(Model, Intangible): + models: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + type: Literal["ComputationalModel"] = Field("ComputationalModel", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Simulation(ComputationalModel): + models: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + type: Literal["Simulation"] = Field("Simulation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class DigitalTwin(ComputationalModel): + models: Optional[Union[Entity,Event,SubjectHistory,Intangible,PhysicalEntity,PhysicalDevice,PhysicalSystem,SampleMaterial,SetOfObservations,Variable,TimePointOrTemporalInterval,Quantity,QuantityRange,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,PlannedProcessConfiguration,ComputationalModel,Simulation,DigitalTwin,TemporalRelationship,Location,PointLocation,Specification,StudyHypothesis,StudyResult,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,SubjectObservationHistory,Observation,ExecutionOfProcedure,Investigation,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,InvestigativeProcess,SampleCollectionProcess,DataGenerationFromSample,SampleProcessing,Measurement,QualitativeObservation]] = Field(None) + type: Literal["DigitalTwin"] = Field("DigitalTwin", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ Identified.update_forward_refs() @@ -505,7 +614,11 @@ class DataGenerationFromSample(InvestigativeProcess): Event.update_forward_refs() Observation.update_forward_refs() Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() +SubjectHistory.update_forward_refs() +SubjectObservationHistory.update_forward_refs() Intangible.update_forward_refs() +SetOfObservations.update_forward_refs() Variable.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() @@ -515,7 +628,7 @@ class DataGenerationFromSample(InvestigativeProcess): SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() QuantityKind.update_forward_refs() UnitConcept.update_forward_refs() @@ -525,22 +638,30 @@ class DataGenerationFromSample(InvestigativeProcess): Role.update_forward_refs() Relationship.update_forward_refs() TemporalRelationship.update_forward_refs() +PhysicalSystem.update_forward_refs() Location.update_forward_refs() PointLocation.update_forward_refs() Specification.update_forward_refs() Procedure.update_forward_refs() EntitySet.update_forward_refs() ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() -MathematicalOperationExecution.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() Investigation.update_forward_refs() InvestigativeProtocol.update_forward_refs() +StudyHypothesis.update_forward_refs() StudyDesign.update_forward_refs() +StudyResult.update_forward_refs() SampleMaterial.update_forward_refs() InvestigativeProcess.update_forward_refs() SampleCollectionProcess.update_forward_refs() SampleProcessing.update_forward_refs() DataGenerationFromSample.update_forward_refs() +Model.update_forward_refs() +ComputationalModel.update_forward_refs() +Simulation.update_forward_refs() +DigitalTwin.update_forward_refs() diff --git a/src/linkml_common/datamodel/linkml_common.py b/src/linkml_common/datamodel/linkml_common.py index 2dcfeaf..0cdb82e 100644 --- a/src/linkml_common/datamodel/linkml_common.py +++ b/src/linkml_common/datamodel/linkml_common.py @@ -1,5 +1,5 @@ # Auto generated from linkml_common.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-06-13T22:32:43 +# Generation date: 2024-06-20T18:35:56 # Schema: linkml-common # # id: https://w3id.org/linkml/linkml-common @@ -36,7 +36,9 @@ ENVO = CurieNamespace('ENVO', 'http://purl.obolibrary.org/obo/ENVO_') IAO = CurieNamespace('IAO', 'http://purl.obolibrary.org/obo/IAO_') OBI = CurieNamespace('OBI', 'http://purl.obolibrary.org/obo/OBI_') +ORGANIZATIONPERSONNELRELATIONSHIPENUM = CurieNamespace('OrganizationPersonnelRelationshipEnum', 'http://example.org/UNKNOWN/OrganizationPersonnelRelationshipEnum/') PATO = CurieNamespace('PATO', 'http://purl.obolibrary.org/obo/PATO_') +PERSONINROLE = CurieNamespace('PersonInRole', 'http://example.org/UNKNOWN/PersonInRole/') UCUM = CurieNamespace('UCUM', 'http://unitsofmeasure.org/') UO = CurieNamespace('UO', 'http://purl.obolibrary.org/obo/UO_') BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/') @@ -73,7 +75,7 @@ class IdentifiedId(URIorCURIE): pass -class NamedThingId(URIorCURIE): +class PhysicalEntityId(URIorCURIE): pass @@ -85,7 +87,11 @@ class InformationEntityId(URIorCURIE): pass -class PhysicalDeviceId(NamedThingId): +class PhysicalDeviceId(PhysicalEntityId): + pass + + +class PhysicalSystemId(PhysicalEntityId): pass @@ -105,7 +111,7 @@ class DatasetId(InformationEntityId): pass -class BuiltEnvironmentFeatureId(NamedThingId): +class BuiltEnvironmentFeatureId(PhysicalEntityId): pass @@ -121,7 +127,7 @@ class BuiltSystemId(BuiltEnvironmentFeatureId): pass -class ClinicalCohortId(NamedThingId): +class ClinicalCohortId(PhysicalEntityId): pass @@ -129,15 +135,19 @@ class ClinicalCohortDefinitionId(InformationEntityId): pass +class EconomicSystemId(PhysicalSystemId): + pass + + class EngineeringSpecificationId(ProcedureId): pass -class RawMaterialId(NamedThingId): +class RawMaterialId(PhysicalEntityId): pass -class EquipmentId(NamedThingId): +class EquipmentId(PhysicalEntityId): pass @@ -205,6 +215,14 @@ class ExtractiveIndustryWasteId(ConceptId): pass +class EnvironmentalSystemId(PhysicalSystemId): + pass + + +class ClimateId(EnvironmentalSystemId): + pass + + class CurrencyConceptId(ConceptId): pass @@ -225,7 +243,7 @@ class CompositeFoodTypeId(FoodTypeConceptId): pass -class PlaceId(NamedThingId): +class PlaceId(PhysicalEntityId): pass @@ -237,6 +255,10 @@ class LandformId(PlaceId): pass +class AstronomicalBodyId(PlaceId): + pass + + class HealthcareSiteId(PlaceId): pass @@ -245,31 +267,31 @@ class InvestigativeProtocolId(ProcedureId): pass -class StudyDesignId(ProcedureId): +class StudyHypothesisId(InformationEntityId): pass -class SampleMaterialId(NamedThingId): +class StudyDesignId(ProcedureId): pass -class QuantityKindId(ConceptId): +class StudyResultId(InformationEntityId): pass -class UnitConceptId(ConceptId): +class SampleMaterialId(PhysicalEntityId): pass -class AgentId(NamedThingId): +class QuantityKindId(ConceptId): pass -class PersonId(AgentId): +class UnitConceptId(ConceptId): pass -class OrganizationId(AgentId): +class OrganizationId(PhysicalEntityId): pass @@ -281,11 +303,15 @@ class HealthcareOrganizationId(OrganizationId): pass -class AutomatedAgentId(AgentId): +class OrgChartId(InformationEntityId): + pass + + +class AutomatedAgentId(PhysicalEntityId): pass -class CreativeWorkId(NamedThingId): +class CreativeWorkId(PhysicalEntityId): pass @@ -337,6 +363,10 @@ class PlannedProcessId(ExecutionOfProcedureId): pass +class FoodPreparationId(PlannedProcessId): + pass + + class InvestigativeProcessId(PlannedProcessId): pass @@ -373,6 +403,18 @@ class SampleProcessingId(MaterialProcessingId): pass +class IndividualOrganismId(PhysicalEntityId): + pass + + +class PersonId(IndividualOrganismId): + pass + + +class VeterinaryAnimalId(IndividualOrganismId): + pass + + @dataclass class Identified(YAMLRoot): _inherited_slots: ClassVar[List[str]] = [] @@ -487,15 +529,15 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class NamedThing(Entity): +class PhysicalEntity(Entity): _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = LINKML_COMMON["NamedThing"] - class_class_curie: ClassVar[str] = "linkml_common:NamedThing" - class_name: ClassVar[str] = "NamedThing" - class_model_uri: ClassVar[URIRef] = LINKML_COMMON.NamedThing + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["PhysicalEntity"] + class_class_curie: ClassVar[str] = "linkml_common:PhysicalEntity" + class_name: ClassVar[str] = "PhysicalEntity" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.PhysicalEntity - id: Union[str, NamedThingId] = None + id: Union[str, PhysicalEntityId] = None classification: Optional[Union[str, ConceptId]] = None ontology_types: Optional[Union[Union[str, ConceptId], List[Union[str, ConceptId]]]] = empty_list() description: Optional[str] = None @@ -504,8 +546,8 @@ class NamedThing(Entity): def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): self.MissingRequiredField("id") - if not isinstance(self.id, NamedThingId): - self.id = NamedThingId(self.id) + if not isinstance(self.id, PhysicalEntityId): + self.id = PhysicalEntityId(self.id) if self.classification is not None and not isinstance(self.classification, ConceptId): self.classification = ConceptId(self.classification) @@ -579,7 +621,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): _inherited_slots: ClassVar[List[str]] = [] class_class_uri: ClassVar[URIRef] = LINKML_COMMON["PhysicalDevice"] @@ -632,6 +674,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass class Relationship(Intangible): _inherited_slots: ClassVar[List[str]] = [] @@ -640,8 +683,50 @@ class Relationship(Intangible): class_name: ClassVar[str] = "Relationship" class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Relationship + subject: Optional[Union[dict, Entity]] = None + predicate: Optional[Union[str, ConceptId]] = None + object: Optional[Union[dict, Entity]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.subject is not None and not isinstance(self.subject, Entity): + self.subject = Entity(**as_dict(self.subject)) + + if self.predicate is not None and not isinstance(self.predicate, ConceptId): + self.predicate = ConceptId(self.predicate) + + if self.object is not None and not isinstance(self.object, Entity): + self.object = Entity(**as_dict(self.object)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class PhysicalSystem(PhysicalEntity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["PhysicalSystem"] + class_class_curie: ClassVar[str] = "linkml_common:PhysicalSystem" + class_name: ClassVar[str] = "PhysicalSystem" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.PhysicalSystem + + id: Union[str, PhysicalSystemId] = None + components: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + events: Optional[Union[Union[dict, Entity], List[Union[dict, Entity]]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, PhysicalSystemId): + self.id = PhysicalSystemId(self.id) + + if not isinstance(self.components, list): + self.components = [self.components] if self.components is not None else [] + self.components = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.components] + + if not isinstance(self.events, list): + self.events = [self.events] if self.events is not None else [] + self.events = [v if isinstance(v, Entity) else Entity(**as_dict(v)) for v in self.events] super().__post_init__(**kwargs) self.type = str(self.class_name) @@ -785,9 +870,9 @@ class Dataset(InformationEntity): title: Optional[str] = None abstract: Optional[str] = None rights: Optional[str] = None - creators: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contributors: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contacts: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() + creators: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contributors: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contacts: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() keywords: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -811,15 +896,15 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.creators, list): self.creators = [self.creators] if self.creators is not None else [] - self.creators = [v if isinstance(v, AgentId) else AgentId(v) for v in self.creators] + self.creators = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.creators] if not isinstance(self.contributors, list): self.contributors = [self.contributors] if self.contributors is not None else [] - self.contributors = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contributors] + self.contributors = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contributors] if not isinstance(self.contacts, list): self.contacts = [self.contacts] if self.contacts is not None else [] - self.contacts = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contacts] + self.contacts = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contacts] if not isinstance(self.keywords, list): self.keywords = [self.keywords] if self.keywords is not None else [] @@ -830,7 +915,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class BuiltEnvironmentFeature(NamedThing): +class BuiltEnvironmentFeature(PhysicalEntity): _inherited_slots: ClassVar[List[str]] = [] class_class_uri: ClassVar[URIRef] = LINKML_COMMON["BuiltEnvironmentFeature"] @@ -922,7 +1007,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class ClinicalCohort(NamedThing): +class ClinicalCohort(PhysicalEntity): """ A group of patients who share a common set of characteristics """ @@ -988,6 +1073,31 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class EconomicSystem(PhysicalSystem): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["EconomicSystem"] + class_class_curie: ClassVar[str] = "linkml_common:EconomicSystem" + class_name: ClassVar[str] = "EconomicSystem" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.EconomicSystem + + id: Union[str, EconomicSystemId] = None + economy_of_place: Optional[Union[str, PlaceId]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, EconomicSystemId): + self.id = EconomicSystemId(self.id) + + if self.economy_of_place is not None and not isinstance(self.economy_of_place, PlaceId): + self.economy_of_place = PlaceId(self.economy_of_place) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class EngineeringSpecification(Procedure): _inherited_slots: ClassVar[List[str]] = [] @@ -1010,7 +1120,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class RawMaterial(NamedThing): +class RawMaterial(PhysicalEntity): _inherited_slots: ClassVar[List[str]] = [] class_class_uri: ClassVar[URIRef] = LINKML_COMMON["RawMaterial"] @@ -1031,7 +1141,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class Equipment(NamedThing): +class Equipment(PhysicalEntity): _inherited_slots: ClassVar[List[str]] = [] class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Equipment"] @@ -1535,6 +1645,48 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class EnvironmentalSystem(PhysicalSystem): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["EnvironmentalSystem"] + class_class_curie: ClassVar[str] = "linkml_common:EnvironmentalSystem" + class_name: ClassVar[str] = "EnvironmentalSystem" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.EnvironmentalSystem + + id: Union[str, EnvironmentalSystemId] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, EnvironmentalSystemId): + self.id = EnvironmentalSystemId(self.id) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class Climate(EnvironmentalSystem): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Climate"] + class_class_curie: ClassVar[str] = "linkml_common:Climate" + class_name: ClassVar[str] = "Climate" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Climate + + id: Union[str, ClimateId] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, ClimateId): + self.id = ClimateId(self.id) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class CurrencyConcept(Concept): """ @@ -1654,7 +1806,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class Place(NamedThing): +class Place(PhysicalEntity): """ Entities that have a somewhat fixed, physical extension. """ @@ -1727,6 +1879,7 @@ class Landform(Place): id: Union[str, LandformId] = None geolocation: Optional[Union[dict, "GeoPointLocation"]] = None + classification: Optional[Union[str, ConceptId]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -1737,6 +1890,30 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.geolocation is not None and not isinstance(self.geolocation, GeoPointLocation): self.geolocation = GeoPointLocation(**as_dict(self.geolocation)) + if self.classification is not None and not isinstance(self.classification, ConceptId): + self.classification = ConceptId(self.classification) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class AstronomicalBody(Place): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["AstronomicalBody"] + class_class_curie: ClassVar[str] = "linkml_common:AstronomicalBody" + class_name: ClassVar[str] = "AstronomicalBody" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.AstronomicalBody + + id: Union[str, AstronomicalBodyId] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, AstronomicalBodyId): + self.id = AstronomicalBodyId(self.id) + super().__post_init__(**kwargs) self.type = str(self.class_name) @@ -1948,6 +2125,27 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class StudyHypothesis(InformationEntity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["StudyHypothesis"] + class_class_curie: ClassVar[str] = "linkml_common:StudyHypothesis" + class_name: ClassVar[str] = "StudyHypothesis" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.StudyHypothesis + + id: Union[str, StudyHypothesisId] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, StudyHypothesisId): + self.id = StudyHypothesisId(self.id) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class StudyDesign(Procedure): _inherited_slots: ClassVar[List[str]] = [] @@ -1974,7 +2172,36 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class SampleMaterial(NamedThing): +class StudyResult(InformationEntity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["StudyResult"] + class_class_curie: ClassVar[str] = "linkml_common:StudyResult" + class_name: ClassVar[str] = "StudyResult" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.StudyResult + + id: Union[str, StudyResultId] = None + hypothesis: Optional[Union[str, StudyHypothesisId]] = None + result: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, StudyResultId): + self.id = StudyResultId(self.id) + + if self.hypothesis is not None and not isinstance(self.hypothesis, StudyHypothesisId): + self.hypothesis = StudyHypothesisId(self.hypothesis) + + if self.result is not None and not isinstance(self.result, str): + self.result = str(self.result) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class SampleMaterial(PhysicalEntity): _inherited_slots: ClassVar[List[str]] = [] class_class_uri: ClassVar[URIRef] = LINKML_COMMON["SampleMaterial"] @@ -1994,6 +2221,115 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class Model(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Model"] + class_class_curie: ClassVar[str] = "linkml_common:Model" + class_name: ClassVar[str] = "Model" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Model + + models: Optional[Union[dict, Entity]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.models is not None and not isinstance(self.models, Entity): + self.models = Entity(**as_dict(self.models)) + + super().__post_init__(**kwargs) + + +@dataclass +class ComputationalModel(Intangible): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["ComputationalModel"] + class_class_curie: ClassVar[str] = "linkml_common:ComputationalModel" + class_name: ClassVar[str] = "ComputationalModel" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.ComputationalModel + + models: Optional[Union[dict, Entity]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.models is not None and not isinstance(self.models, Entity): + self.models = Entity(**as_dict(self.models)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +class Simulation(ComputationalModel): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Simulation"] + class_class_curie: ClassVar[str] = "linkml_common:Simulation" + class_name: ClassVar[str] = "Simulation" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Simulation + + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class ClimateModel(Simulation): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["ClimateModel"] + class_class_curie: ClassVar[str] = "linkml_common:ClimateModel" + class_name: ClassVar[str] = "ClimateModel" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.ClimateModel + + models: Optional[Union[str, ClimateId]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.models is not None and not isinstance(self.models, ClimateId): + self.models = ClimateId(self.models) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +class DigitalTwin(ComputationalModel): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["DigitalTwin"] + class_class_curie: ClassVar[str] = "linkml_common:DigitalTwin" + class_name: ClassVar[str] = "DigitalTwin" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.DigitalTwin + + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class SetOfObservations(Intangible): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["SetOfObservations"] + class_class_curie: ClassVar[str] = "linkml_common:SetOfObservations" + class_name: ClassVar[str] = "SetOfObservations" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.SetOfObservations + + observation_subject: Optional[Union[dict, Entity]] = None + observations: Optional[Union[dict, "Observation"]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.observation_subject is not None and not isinstance(self.observation_subject, Entity): + self.observation_subject = Entity(**as_dict(self.observation_subject)) + + if self.observations is not None and not isinstance(self.observations, Observation): + self.observations = Observation(**as_dict(self.observations)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class Variable(Intangible): _inherited_slots: ClassVar[List[str]] = [] @@ -2194,8 +2530,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) -@dataclass -class Agent(NamedThing): +class Agent(YAMLRoot): """ Represents an Agent """ @@ -2206,60 +2541,9 @@ class Agent(NamedThing): class_name: ClassVar[str] = "Agent" class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Agent - id: Union[str, AgentId] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, AgentId): - self.id = AgentId(self.id) - - super().__post_init__(**kwargs) - self.type = str(self.class_name) - @dataclass -class Person(Agent): - """ - Represents a Person - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Person"] - class_class_curie: ClassVar[str] = "linkml_common:Person" - class_name: ClassVar[str] = "Person" - class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Person - - id: Union[str, PersonId] = None - primary_email: Optional[str] = None - birth_date: Optional[Union[str, XSDDate]] = None - age_in_years: Optional[int] = None - vital_status: Optional[Union[str, "PersonStatus"]] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, PersonId): - self.id = PersonId(self.id) - - if self.primary_email is not None and not isinstance(self.primary_email, str): - self.primary_email = str(self.primary_email) - - if self.birth_date is not None and not isinstance(self.birth_date, XSDDate): - self.birth_date = XSDDate(self.birth_date) - - if self.age_in_years is not None and not isinstance(self.age_in_years, int): - self.age_in_years = int(self.age_in_years) - - if self.vital_status is not None and not isinstance(self.vital_status, PersonStatus): - self.vital_status = PersonStatus(self.vital_status) - - super().__post_init__(**kwargs) - self.type = str(self.class_name) - - -@dataclass -class Organization(Agent): +class Organization(PhysicalEntity): """ Represents an Organization """ @@ -2272,6 +2556,7 @@ class Organization(Agent): id: Union[str, OrganizationId] = None provides_services: Optional[Union[Union[dict, "Service"], List[Union[dict, "Service"]]]] = empty_list() + has_person_roles: Optional[Union[Union[dict, "PersonInRole"], List[Union[dict, "PersonInRole"]]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -2283,6 +2568,10 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.provides_services = [self.provides_services] if self.provides_services is not None else [] self.provides_services = [v if isinstance(v, Service) else Service(**as_dict(v)) for v in self.provides_services] + if not isinstance(self.has_person_roles, list): + self.has_person_roles = [self.has_person_roles] if self.has_person_roles is not None else [] + self.has_person_roles = [v if isinstance(v, PersonInRole) else PersonInRole(**as_dict(v)) for v in self.has_person_roles] + super().__post_init__(**kwargs) self.type = str(self.class_name) @@ -2335,8 +2624,102 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +class OrganizationalRole(Role): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["OrganizationalRole"] + class_class_curie: ClassVar[str] = "linkml_common:OrganizationalRole" + class_name: ClassVar[str] = "OrganizationalRole" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.OrganizationalRole + + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass -class AutomatedAgent(Agent): +class OrgChart(InformationEntity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["OrgChart"] + class_class_curie: ClassVar[str] = "linkml_common:OrgChart" + class_name: ClassVar[str] = "OrgChart" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.OrgChart + + id: Union[str, OrgChartId] = None + for_organization: Optional[Union[str, OrganizationId]] = None + relationships: Optional[Union[dict, "OrganizationPersonnelRelationship"]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, OrgChartId): + self.id = OrgChartId(self.id) + + if self.for_organization is not None and not isinstance(self.for_organization, OrganizationId): + self.for_organization = OrganizationId(self.for_organization) + + if self.relationships is not None and not isinstance(self.relationships, OrganizationPersonnelRelationship): + self.relationships = OrganizationPersonnelRelationship(**as_dict(self.relationships)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class PersonInRole(Relationship): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["PersonInRole"] + class_class_curie: ClassVar[str] = "linkml_common:PersonInRole" + class_name: ClassVar[str] = "PersonInRole" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.PersonInRole + + subject_person: Optional[Union[str, PersonId]] = None + person_role: Optional[Union[dict, OrganizationalRole]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.subject_person is not None and not isinstance(self.subject_person, PersonId): + self.subject_person = PersonId(self.subject_person) + + if self.person_role is not None and not isinstance(self.person_role, OrganizationalRole): + self.person_role = OrganizationalRole(**as_dict(self.person_role)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class OrganizationPersonnelRelationship(Relationship): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["OrganizationPersonnelRelationship"] + class_class_curie: ClassVar[str] = "linkml_common:OrganizationPersonnelRelationship" + class_name: ClassVar[str] = "OrganizationPersonnelRelationship" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.OrganizationPersonnelRelationship + + subject: Optional[str] = None + predicate: Optional[str] = None + object: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.subject is not None and not isinstance(self.subject, str): + self.subject = str(self.subject) + + if self.predicate is not None and not isinstance(self.predicate, str): + self.predicate = str(self.predicate) + + if self.object is not None and not isinstance(self.object, str): + self.object = str(self.object) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class AutomatedAgent(PhysicalEntity): """ Represents an Automated Agent """ @@ -2371,9 +2754,9 @@ class CreationMetadata(YAMLRoot): title: Optional[str] = None abstract: Optional[str] = None rights: Optional[str] = None - creators: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contributors: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contacts: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() + creators: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contributors: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contacts: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() keywords: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -2388,15 +2771,15 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.creators, list): self.creators = [self.creators] if self.creators is not None else [] - self.creators = [v if isinstance(v, AgentId) else AgentId(v) for v in self.creators] + self.creators = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.creators] if not isinstance(self.contributors, list): self.contributors = [self.contributors] if self.contributors is not None else [] - self.contributors = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contributors] + self.contributors = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contributors] if not isinstance(self.contacts, list): self.contacts = [self.contacts] if self.contacts is not None else [] - self.contacts = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contacts] + self.contacts = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contacts] if not isinstance(self.keywords, list): self.keywords = [self.keywords] if self.keywords is not None else [] @@ -2406,7 +2789,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class CreativeWork(NamedThing): +class CreativeWork(PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -2421,9 +2804,9 @@ class CreativeWork(NamedThing): title: Optional[str] = None abstract: Optional[str] = None rights: Optional[str] = None - creators: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contributors: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() - contacts: Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]] = empty_list() + creators: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contributors: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() + contacts: Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]] = empty_list() keywords: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -2443,15 +2826,15 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.creators, list): self.creators = [self.creators] if self.creators is not None else [] - self.creators = [v if isinstance(v, AgentId) else AgentId(v) for v in self.creators] + self.creators = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.creators] if not isinstance(self.contributors, list): self.contributors = [self.contributors] if self.contributors is not None else [] - self.contributors = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contributors] + self.contributors = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contributors] if not isinstance(self.contacts, list): self.contacts = [self.contacts] if self.contacts is not None else [] - self.contacts = [v if isinstance(v, AgentId) else AgentId(v) for v in self.contacts] + self.contacts = [v if isinstance(v, PhysicalEntityId) else PhysicalEntityId(v) for v in self.contacts] if not isinstance(self.keywords, list): self.keywords = [self.keywords] if self.keywords is not None else [] @@ -2917,6 +3300,9 @@ class Investigation(Event): id: Union[str, InvestigationId] = None objectives: Optional[str] = None variables: Optional[Union[Union[dict, Variable], List[Union[dict, Variable]]]] = empty_list() + hypothesis: Optional[Union[str, StudyHypothesisId]] = None + design: Optional[Union[str, StudyDesignId]] = None + results: Optional[Union[Union[str, StudyResultId], List[Union[str, StudyResultId]]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -2931,6 +3317,16 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.variables = [self.variables] if self.variables is not None else [] self.variables = [v if isinstance(v, Variable) else Variable(**as_dict(v)) for v in self.variables] + if self.hypothesis is not None and not isinstance(self.hypothesis, StudyHypothesisId): + self.hypothesis = StudyHypothesisId(self.hypothesis) + + if self.design is not None and not isinstance(self.design, StudyDesignId): + self.design = StudyDesignId(self.design) + + if not isinstance(self.results, list): + self.results = [self.results] if self.results is not None else [] + self.results = [v if isinstance(v, StudyResultId) else StudyResultId(v) for v in self.results] + super().__post_init__(**kwargs) self.type = str(self.class_name) @@ -3173,6 +3569,80 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class SubjectHistory(Entity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["SubjectHistory"] + class_class_curie: ClassVar[str] = "linkml_common:SubjectHistory" + class_name: ClassVar[str] = "SubjectHistory" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.SubjectHistory + + subject: Union[str, PhysicalEntityId] = None + events: Optional[Union[Union[str, EventId], List[Union[str, EventId]]]] = empty_list() + over_interval: Optional[Union[dict, TemporalInterval]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.subject): + self.MissingRequiredField("subject") + if not isinstance(self.subject, PhysicalEntityId): + self.subject = PhysicalEntityId(self.subject) + + if not isinstance(self.events, list): + self.events = [self.events] if self.events is not None else [] + self.events = [v if isinstance(v, EventId) else EventId(v) for v in self.events] + + if self.over_interval is not None and not isinstance(self.over_interval, TemporalInterval): + self.over_interval = TemporalInterval(**as_dict(self.over_interval)) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class SubjectObservationHistory(SubjectHistory): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["SubjectObservationHistory"] + class_class_curie: ClassVar[str] = "linkml_common:SubjectObservationHistory" + class_name: ClassVar[str] = "SubjectObservationHistory" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.SubjectObservationHistory + + subject: Union[str, PhysicalEntityId] = None + observations: Optional[Union[Dict[Union[str, ObservationId], Union[dict, Observation]], List[Union[dict, Observation]]]] = empty_dict() + measurements: Optional[Union[Dict[Union[str, MeasurementId], Union[dict, Measurement]], List[Union[dict, Measurement]]]] = empty_dict() + interpretations: Optional[Union[Dict[Union[str, ObservationId], Union[dict, Observation]], List[Union[dict, Observation]]]] = empty_dict() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + self._normalize_inlined_as_list(slot_name="observations", slot_type=Observation, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="measurements", slot_type=Measurement, key_name="id", keyed=True) + + self._normalize_inlined_as_list(slot_name="interpretations", slot_type=Observation, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class ClinicalHistory(SubjectObservationHistory): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["ClinicalHistory"] + class_class_curie: ClassVar[str] = "linkml_common:ClinicalHistory" + class_name: ClassVar[str] = "ClinicalHistory" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.ClinicalHistory + + subject: Optional[Union[str, PersonId]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.subject is not None and not isinstance(self.subject, PersonId): + self.subject = PersonId(self.subject) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class ExecutionOfProcedure(Event): _inherited_slots: ClassVar[List[str]] = [] @@ -3245,6 +3715,31 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class FoodPreparation(PlannedProcess): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["FoodPreparation"] + class_class_curie: ClassVar[str] = "linkml_common:FoodPreparation" + class_name: ClassVar[str] = "FoodPreparation" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.FoodPreparation + + id: Union[str, FoodPreparationId] = None + follows_procedure: Optional[Union[str, FoodRecipeId]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, FoodPreparationId): + self.id = FoodPreparationId(self.id) + + if self.follows_procedure is not None and not isinstance(self.follows_procedure, FoodRecipeId): + self.follows_procedure = FoodRecipeId(self.follows_procedure) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + @dataclass class InvestigativeProcess(PlannedProcess): _inherited_slots: ClassVar[List[str]] = [] @@ -3285,7 +3780,7 @@ class SampleCollectionProcess(InvestigativeProcess): id: Union[str, SampleCollectionProcessId] = None material_collected: Optional[Union[str, SampleMaterialId]] = None - collected_from: Optional[Union[str, NamedThingId]] = None + collected_from: Optional[Union[str, PhysicalEntityId]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -3296,8 +3791,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.material_collected is not None and not isinstance(self.material_collected, SampleMaterialId): self.material_collected = SampleMaterialId(self.material_collected) - if self.collected_from is not None and not isinstance(self.collected_from, NamedThingId): - self.collected_from = NamedThingId(self.collected_from) + if self.collected_from is not None and not isinstance(self.collected_from, PhysicalEntityId): + self.collected_from = PhysicalEntityId(self.collected_from) super().__post_init__(**kwargs) self.type = str(self.class_name) @@ -3465,6 +3960,107 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.type = str(self.class_name) +@dataclass +class IndividualOrganism(PhysicalEntity): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["organisms/IndividualOrganism"] + class_class_curie: ClassVar[str] = "linkml_common:organisms/IndividualOrganism" + class_name: ClassVar[str] = "IndividualOrganism" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.IndividualOrganism + + id: Union[str, IndividualOrganismId] = None + classification: Optional[Union[str, ConceptId]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, IndividualOrganismId): + self.id = IndividualOrganismId(self.id) + + if self.classification is not None and not isinstance(self.classification, ConceptId): + self.classification = ConceptId(self.classification) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class Person(IndividualOrganism): + """ + Represents a Person + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["Person"] + class_class_curie: ClassVar[str] = "linkml_common:Person" + class_name: ClassVar[str] = "Person" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.Person + + id: Union[str, PersonId] = None + primary_email: Optional[str] = None + birth_date: Optional[Union[str, XSDDate]] = None + age_in_years: Optional[int] = None + vital_status: Optional[Union[str, "PersonStatus"]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, PersonId): + self.id = PersonId(self.id) + + if self.primary_email is not None and not isinstance(self.primary_email, str): + self.primary_email = str(self.primary_email) + + if self.birth_date is not None and not isinstance(self.birth_date, XSDDate): + self.birth_date = XSDDate(self.birth_date) + + if self.age_in_years is not None and not isinstance(self.age_in_years, int): + self.age_in_years = int(self.age_in_years) + + if self.vital_status is not None and not isinstance(self.vital_status, PersonStatus): + self.vital_status = PersonStatus(self.vital_status) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +@dataclass +class VeterinaryAnimal(IndividualOrganism): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["VeterinaryAnimal"] + class_class_curie: ClassVar[str] = "linkml_common:VeterinaryAnimal" + class_name: ClassVar[str] = "VeterinaryAnimal" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.VeterinaryAnimal + + id: Union[str, VeterinaryAnimalId] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, VeterinaryAnimalId): + self.id = VeterinaryAnimalId(self.id) + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + +class OrganismalRelationship(Relationship): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = LINKML_COMMON["organisms/OrganismalRelationship"] + class_class_curie: ClassVar[str] = "linkml_common:organisms/OrganismalRelationship" + class_name: ClassVar[str] = "OrganismalRelationship" + class_model_uri: ClassVar[URIRef] = LINKML_COMMON.OrganismalRelationship + + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + + super().__post_init__(**kwargs) + self.type = str(self.class_name) + + # Enumerations class FossilFuelType(EnumDefinitionImpl): @@ -3573,6 +4169,12 @@ class FinanicialOrganizationEnum(EnumDefinitionImpl): name="FinanicialOrganizationEnum", ) +class LandformEnum(EnumDefinitionImpl): + + _defn = EnumDefinition( + name="LandformEnum", + ) + class HealthcareEncounterClassification(EnumDefinitionImpl): _defn = EnumDefinition( @@ -3684,6 +4286,15 @@ class PersonStatus(EnumDefinitionImpl): name="PersonStatus", ) +class OrganizationPersonnelRelationshipEnum(EnumDefinitionImpl): + """ + ... + """ + _defn = EnumDefinition( + name="OrganizationPersonnelRelationshipEnum", + description="...", + ) + class OutcomeType(EnumDefinitionImpl): TP = PermissibleValue( @@ -3713,6 +4324,12 @@ class RelativeTimeEnum(EnumDefinitionImpl): name="RelativeTimeEnum", ) +class OrganismTaxonEnum(EnumDefinitionImpl): + + _defn = EnumDefinition( + name="OrganismTaxonEnum", + ) + # Slots class slots: pass @@ -3804,6 +4421,21 @@ class slots: slots.is_ongoing_as_of = Slot(uri=LINKML_COMMON.is_ongoing_as_of, name="is_ongoing_as_of", curie=LINKML_COMMON.curie('is_ongoing_as_of'), model_uri=LINKML_COMMON.is_ongoing_as_of, domain=None, range=Optional[Union[dict, TimePoint]]) +slots.relationship__subject = Slot(uri=LINKML_COMMON.subject, name="relationship__subject", curie=LINKML_COMMON.curie('subject'), + model_uri=LINKML_COMMON.relationship__subject, domain=None, range=Optional[Union[dict, Entity]]) + +slots.relationship__predicate = Slot(uri=LINKML_COMMON.predicate, name="relationship__predicate", curie=LINKML_COMMON.curie('predicate'), + model_uri=LINKML_COMMON.relationship__predicate, domain=None, range=Optional[Union[str, ConceptId]]) + +slots.relationship__object = Slot(uri=LINKML_COMMON.object, name="relationship__object", curie=LINKML_COMMON.curie('object'), + model_uri=LINKML_COMMON.relationship__object, domain=None, range=Optional[Union[dict, Entity]]) + +slots.physicalSystem__components = Slot(uri=LINKML_COMMON.components, name="physicalSystem__components", curie=LINKML_COMMON.curie('components'), + model_uri=LINKML_COMMON.physicalSystem__components, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) + +slots.physicalSystem__events = Slot(uri=LINKML_COMMON.events, name="physicalSystem__events", curie=LINKML_COMMON.curie('events'), + model_uri=LINKML_COMMON.physicalSystem__events, domain=None, range=Optional[Union[Union[dict, Entity], List[Union[dict, Entity]]]]) + slots.entitySet__members = Slot(uri=LINKML_COMMON.members, name="entitySet__members", curie=LINKML_COMMON.curie('members'), model_uri=LINKML_COMMON.entitySet__members, domain=None, range=Optional[Union[Union[dict, Entity], List[Union[dict, Entity]]]]) @@ -3819,6 +4451,9 @@ class slots: slots.clinicalCohortEnrollment__cohort = Slot(uri=LINKML_COMMON.cohort, name="clinicalCohortEnrollment__cohort", curie=LINKML_COMMON.curie('cohort'), model_uri=LINKML_COMMON.clinicalCohortEnrollment__cohort, domain=None, range=Optional[Union[str, ClinicalCohortId]]) +slots.economicSystem__economy_of_place = Slot(uri=LINKML_COMMON.economy_of_place, name="economicSystem__economy_of_place", curie=LINKML_COMMON.curie('economy_of_place'), + model_uri=LINKML_COMMON.economicSystem__economy_of_place, domain=None, range=Optional[Union[str, PlaceId]]) + slots.engineeringProcess__follows_procedure = Slot(uri=LINKML_COMMON.follows_procedure, name="engineeringProcess__follows_procedure", curie=LINKML_COMMON.curie('follows_procedure'), model_uri=LINKML_COMMON.engineeringProcess__follows_procedure, domain=None, range=Optional[Union[str, EngineeringSpecificationId]]) @@ -3981,15 +4616,33 @@ class slots: slots.healthcareConditionOccurrence__observed_during = Slot(uri=LINKML_COMMON.observed_during, name="healthcareConditionOccurrence__observed_during", curie=LINKML_COMMON.curie('observed_during'), model_uri=LINKML_COMMON.healthcareConditionOccurrence__observed_during, domain=None, range=Optional[Union[str, HealthcareEncounterId]]) +slots.clinicalHistory__subject = Slot(uri=LINKML_COMMON.subject, name="clinicalHistory__subject", curie=LINKML_COMMON.curie('subject'), + model_uri=LINKML_COMMON.clinicalHistory__subject, domain=None, range=Optional[Union[str, PersonId]]) + slots.investigation__objectives = Slot(uri=LINKML_COMMON.objectives, name="investigation__objectives", curie=LINKML_COMMON.curie('objectives'), model_uri=LINKML_COMMON.investigation__objectives, domain=None, range=Optional[str]) slots.investigation__variables = Slot(uri=LINKML_COMMON.variables, name="investigation__variables", curie=LINKML_COMMON.curie('variables'), model_uri=LINKML_COMMON.investigation__variables, domain=None, range=Optional[Union[Union[dict, Variable], List[Union[dict, Variable]]]]) +slots.investigation__hypothesis = Slot(uri=LINKML_COMMON.hypothesis, name="investigation__hypothesis", curie=LINKML_COMMON.curie('hypothesis'), + model_uri=LINKML_COMMON.investigation__hypothesis, domain=None, range=Optional[Union[str, StudyHypothesisId]]) + +slots.investigation__design = Slot(uri=LINKML_COMMON.design, name="investigation__design", curie=LINKML_COMMON.curie('design'), + model_uri=LINKML_COMMON.investigation__design, domain=None, range=Optional[Union[str, StudyDesignId]]) + +slots.investigation__results = Slot(uri=LINKML_COMMON.results, name="investigation__results", curie=LINKML_COMMON.curie('results'), + model_uri=LINKML_COMMON.investigation__results, domain=None, range=Optional[Union[Union[str, StudyResultId], List[Union[str, StudyResultId]]]]) + slots.investigativeProtocol__protocols_io_url = Slot(uri=LINKML_COMMON.protocols_io_url, name="investigativeProtocol__protocols_io_url", curie=LINKML_COMMON.curie('protocols_io_url'), model_uri=LINKML_COMMON.investigativeProtocol__protocols_io_url, domain=None, range=Optional[Union[str, URI]]) +slots.studyResult__hypothesis = Slot(uri=LINKML_COMMON.hypothesis, name="studyResult__hypothesis", curie=LINKML_COMMON.curie('hypothesis'), + model_uri=LINKML_COMMON.studyResult__hypothesis, domain=None, range=Optional[Union[str, StudyHypothesisId]]) + +slots.studyResult__result = Slot(uri=LINKML_COMMON.result, name="studyResult__result", curie=LINKML_COMMON.curie('result'), + model_uri=LINKML_COMMON.studyResult__result, domain=None, range=Optional[str]) + slots.investigativeProcess__follows_procedure = Slot(uri=LINKML_COMMON.follows_procedure, name="investigativeProcess__follows_procedure", curie=LINKML_COMMON.curie('follows_procedure'), model_uri=LINKML_COMMON.investigativeProcess__follows_procedure, domain=None, range=Optional[Union[str, InvestigativeProtocolId]]) @@ -4000,7 +4653,10 @@ class slots: model_uri=LINKML_COMMON.sampleCollectionProcess__material_collected, domain=None, range=Optional[Union[str, SampleMaterialId]]) slots.sampleCollectionProcess__collected_from = Slot(uri=LINKML_COMMON.collected_from, name="sampleCollectionProcess__collected_from", curie=LINKML_COMMON.curie('collected_from'), - model_uri=LINKML_COMMON.sampleCollectionProcess__collected_from, domain=None, range=Optional[Union[str, NamedThingId]]) + model_uri=LINKML_COMMON.sampleCollectionProcess__collected_from, domain=None, range=Optional[Union[str, PhysicalEntityId]]) + +slots.model__models = Slot(uri=LINKML_COMMON.models, name="model__models", curie=LINKML_COMMON.curie('models'), + model_uri=LINKML_COMMON.model__models, domain=None, range=Optional[Union[dict, Entity]]) slots.observation__observation_subject = Slot(uri=LINKML_COMMON.observation_subject, name="observation__observation_subject", curie=LINKML_COMMON.curie('observation_subject'), model_uri=LINKML_COMMON.observation__observation_subject, domain=None, range=Optional[Union[dict, Entity]]) @@ -4011,6 +4667,21 @@ class slots: slots.observation__measured_using = Slot(uri=LINKML_COMMON.measured_using, name="observation__measured_using", curie=LINKML_COMMON.curie('measured_using'), model_uri=LINKML_COMMON.observation__measured_using, domain=None, range=Optional[Union[str, PhysicalDeviceId]]) +slots.setOfObservations__observation_subject = Slot(uri=LINKML_COMMON.observation_subject, name="setOfObservations__observation_subject", curie=LINKML_COMMON.curie('observation_subject'), + model_uri=LINKML_COMMON.setOfObservations__observation_subject, domain=None, range=Optional[Union[dict, Entity]]) + +slots.setOfObservations__observations = Slot(uri=LINKML_COMMON.observations, name="setOfObservations__observations", curie=LINKML_COMMON.curie('observations'), + model_uri=LINKML_COMMON.setOfObservations__observations, domain=None, range=Optional[Union[dict, Observation]]) + +slots.subjectObservationHistory__observations = Slot(uri=LINKML_COMMON.observations, name="subjectObservationHistory__observations", curie=LINKML_COMMON.curie('observations'), + model_uri=LINKML_COMMON.subjectObservationHistory__observations, domain=None, range=Optional[Union[Dict[Union[str, ObservationId], Union[dict, Observation]], List[Union[dict, Observation]]]]) + +slots.subjectObservationHistory__measurements = Slot(uri=LINKML_COMMON.measurements, name="subjectObservationHistory__measurements", curie=LINKML_COMMON.curie('measurements'), + model_uri=LINKML_COMMON.subjectObservationHistory__measurements, domain=None, range=Optional[Union[Dict[Union[str, MeasurementId], Union[dict, Measurement]], List[Union[dict, Measurement]]]]) + +slots.subjectObservationHistory__interpretations = Slot(uri=LINKML_COMMON.interpretations, name="subjectObservationHistory__interpretations", curie=LINKML_COMMON.curie('interpretations'), + model_uri=LINKML_COMMON.subjectObservationHistory__interpretations, domain=None, range=Optional[Union[Dict[Union[str, ObservationId], Union[dict, Observation]], List[Union[dict, Observation]]]]) + slots.measurement__quantity_measured = Slot(uri=LINKML_COMMON.quantity_measured, name="measurement__quantity_measured", curie=LINKML_COMMON.curie('quantity_measured'), model_uri=LINKML_COMMON.measurement__quantity_measured, domain=None, range=Optional[Union[dict, Quantity]]) @@ -4038,6 +4709,30 @@ class slots: slots.quantityRange__upper_bound = Slot(uri=LINKML_COMMON.upper_bound, name="quantityRange__upper_bound", curie=LINKML_COMMON.curie('upper_bound'), model_uri=LINKML_COMMON.quantityRange__upper_bound, domain=None, range=Optional[Union[dict, Quantity]]) +slots.organization__has_person_roles = Slot(uri=LINKML_COMMON.has_person_roles, name="organization__has_person_roles", curie=LINKML_COMMON.curie('has_person_roles'), + model_uri=LINKML_COMMON.organization__has_person_roles, domain=None, range=Optional[Union[Union[dict, PersonInRole], List[Union[dict, PersonInRole]]]]) + +slots.orgChart__for_organization = Slot(uri=LINKML_COMMON.for_organization, name="orgChart__for_organization", curie=LINKML_COMMON.curie('for_organization'), + model_uri=LINKML_COMMON.orgChart__for_organization, domain=None, range=Optional[Union[str, OrganizationId]]) + +slots.orgChart__relationships = Slot(uri=LINKML_COMMON.relationships, name="orgChart__relationships", curie=LINKML_COMMON.curie('relationships'), + model_uri=LINKML_COMMON.orgChart__relationships, domain=None, range=Optional[Union[dict, OrganizationPersonnelRelationship]]) + +slots.personInRole__subject_person = Slot(uri=LINKML_COMMON.subject_person, name="personInRole__subject_person", curie=LINKML_COMMON.curie('subject_person'), + model_uri=LINKML_COMMON.personInRole__subject_person, domain=None, range=Optional[Union[str, PersonId]]) + +slots.personInRole__person_role = Slot(uri=LINKML_COMMON.person_role, name="personInRole__person_role", curie=LINKML_COMMON.curie('person_role'), + model_uri=LINKML_COMMON.personInRole__person_role, domain=None, range=Optional[Union[dict, OrganizationalRole]]) + +slots.organizationPersonnelRelationship__subject = Slot(uri=LINKML_COMMON.subject, name="organizationPersonnelRelationship__subject", curie=LINKML_COMMON.curie('subject'), + model_uri=LINKML_COMMON.organizationPersonnelRelationship__subject, domain=None, range=Optional[str]) + +slots.organizationPersonnelRelationship__predicate = Slot(uri=LINKML_COMMON.predicate, name="organizationPersonnelRelationship__predicate", curie=LINKML_COMMON.curie('predicate'), + model_uri=LINKML_COMMON.organizationPersonnelRelationship__predicate, domain=None, range=Optional[str]) + +slots.organizationPersonnelRelationship__object = Slot(uri=LINKML_COMMON.object, name="organizationPersonnelRelationship__object", curie=LINKML_COMMON.curie('object'), + model_uri=LINKML_COMMON.organizationPersonnelRelationship__object, domain=None, range=Optional[str]) + slots.creationMetadata__title = Slot(uri=LINKML_COMMON.title, name="creationMetadata__title", curie=LINKML_COMMON.curie('title'), model_uri=LINKML_COMMON.creationMetadata__title, domain=None, range=Optional[str]) @@ -4048,13 +4743,13 @@ class slots: model_uri=LINKML_COMMON.creationMetadata__rights, domain=None, range=Optional[str]) slots.creationMetadata__creators = Slot(uri=DCTERMS.creator, name="creationMetadata__creators", curie=DCTERMS.curie('creator'), - model_uri=LINKML_COMMON.creationMetadata__creators, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creationMetadata__creators, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creationMetadata__contributors = Slot(uri=DCTERMS.contributor, name="creationMetadata__contributors", curie=DCTERMS.curie('contributor'), - model_uri=LINKML_COMMON.creationMetadata__contributors, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creationMetadata__contributors, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creationMetadata__contacts = Slot(uri=SCHEMA.contactPoint, name="creationMetadata__contacts", curie=SCHEMA.curie('contactPoint'), - model_uri=LINKML_COMMON.creationMetadata__contacts, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creationMetadata__contacts, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creationMetadata__keywords = Slot(uri=SCHEMA.keywords, name="creationMetadata__keywords", curie=SCHEMA.curie('keywords'), model_uri=LINKML_COMMON.creationMetadata__keywords, domain=None, range=Optional[Union[str, List[str]]]) @@ -4069,13 +4764,13 @@ class slots: model_uri=LINKML_COMMON.creativeWork__rights, domain=None, range=Optional[str]) slots.creativeWork__creators = Slot(uri=DCTERMS.creator, name="creativeWork__creators", curie=DCTERMS.curie('creator'), - model_uri=LINKML_COMMON.creativeWork__creators, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creativeWork__creators, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creativeWork__contributors = Slot(uri=DCTERMS.contributor, name="creativeWork__contributors", curie=DCTERMS.curie('contributor'), - model_uri=LINKML_COMMON.creativeWork__contributors, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creativeWork__contributors, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creativeWork__contacts = Slot(uri=SCHEMA.contactPoint, name="creativeWork__contacts", curie=SCHEMA.curie('contactPoint'), - model_uri=LINKML_COMMON.creativeWork__contacts, domain=None, range=Optional[Union[Union[str, AgentId], List[Union[str, AgentId]]]]) + model_uri=LINKML_COMMON.creativeWork__contacts, domain=None, range=Optional[Union[Union[str, PhysicalEntityId], List[Union[str, PhysicalEntityId]]]]) slots.creativeWork__keywords = Slot(uri=SCHEMA.keywords, name="creativeWork__keywords", curie=SCHEMA.curie('keywords'), model_uri=LINKML_COMMON.creativeWork__keywords, domain=None, range=Optional[Union[str, List[str]]]) @@ -4131,6 +4826,15 @@ class slots: slots.temporalRelationship__relative_to = Slot(uri=LINKML_COMMON.relative_to, name="temporalRelationship__relative_to", curie=LINKML_COMMON.curie('relative_to'), model_uri=LINKML_COMMON.temporalRelationship__relative_to, domain=None, range=Optional[Union[dict, Entity]]) +slots.subjectHistory__subject = Slot(uri=LINKML_COMMON.subject, name="subjectHistory__subject", curie=LINKML_COMMON.curie('subject'), + model_uri=LINKML_COMMON.subjectHistory__subject, domain=None, range=Union[str, PhysicalEntityId]) + +slots.subjectHistory__events = Slot(uri=LINKML_COMMON.events, name="subjectHistory__events", curie=LINKML_COMMON.curie('events'), + model_uri=LINKML_COMMON.subjectHistory__events, domain=None, range=Optional[Union[Union[str, EventId], List[Union[str, EventId]]]]) + +slots.subjectHistory__over_interval = Slot(uri=LINKML_COMMON.over_interval, name="subjectHistory__over_interval", curie=LINKML_COMMON.curie('over_interval'), + model_uri=LINKML_COMMON.subjectHistory__over_interval, domain=None, range=Optional[Union[dict, TemporalInterval]]) + slots.plannedProcess__follows_procedure = Slot(uri=LINKML_COMMON.follows_procedure, name="plannedProcess__follows_procedure", curie=LINKML_COMMON.curie('follows_procedure'), model_uri=LINKML_COMMON.plannedProcess__follows_procedure, domain=None, range=Optional[Union[str, ProcedureId]]) @@ -4152,9 +4856,21 @@ class slots: slots.computationalPlannedProcess__immediate_preceding_steps = Slot(uri=LINKML_COMMON.immediate_preceding_steps, name="computationalPlannedProcess__immediate_preceding_steps", curie=LINKML_COMMON.curie('immediate_preceding_steps'), model_uri=LINKML_COMMON.computationalPlannedProcess__immediate_preceding_steps, domain=None, range=Optional[Union[Union[str, ComputationalPlannedProcessId], List[Union[str, ComputationalPlannedProcessId]]]]) +slots.models = Slot(uri=LINKML_COMMON.models, name="models", curie=LINKML_COMMON.curie('models'), + model_uri=LINKML_COMMON.models, domain=None, range=Optional[Union[str, ClimateId]]) + +slots.ClimateModel_models = Slot(uri=LINKML_COMMON.models, name="ClimateModel_models", curie=LINKML_COMMON.curie('models'), + model_uri=LINKML_COMMON.ClimateModel_models, domain=ClimateModel, range=Optional[Union[str, ClimateId]]) + +slots.FoodPreparation_follows_procedure = Slot(uri=LINKML_COMMON.follows_procedure, name="FoodPreparation_follows_procedure", curie=LINKML_COMMON.curie('follows_procedure'), + model_uri=LINKML_COMMON.FoodPreparation_follows_procedure, domain=FoodPreparation, range=Optional[Union[str, FoodRecipeId]]) + slots.Landform_geolocation = Slot(uri=LINKML_COMMON.geolocation, name="Landform_geolocation", curie=LINKML_COMMON.curie('geolocation'), model_uri=LINKML_COMMON.Landform_geolocation, domain=Landform, range=Optional[Union[dict, "GeoPointLocation"]]) +slots.Landform_classification = Slot(uri=LINKML_COMMON.classification, name="Landform_classification", curie=LINKML_COMMON.curie('classification'), + model_uri=LINKML_COMMON.Landform_classification, domain=Landform, range=Optional[Union[str, ConceptId]]) + slots.HealthcareEncounter_classification = Slot(uri=LINKML_COMMON.classification, name="HealthcareEncounter_classification", curie=LINKML_COMMON.curie('classification'), model_uri=LINKML_COMMON.HealthcareEncounter_classification, domain=HealthcareEncounter, range=Optional[Union[str, "HealthcareEncounterClassification"]]) @@ -4166,4 +4882,7 @@ class slots: slots.Person_primary_email = Slot(uri=SCHEMA.email, name="Person_primary_email", curie=SCHEMA.curie('email'), model_uri=LINKML_COMMON.Person_primary_email, domain=Person, range=Optional[str], - pattern=re.compile(r'^\S+@[\S+\.]+\S+')) \ No newline at end of file + pattern=re.compile(r'^\S+@[\S+\.]+\S+')) + +slots.IndividualOrganism_classification = Slot(uri=LINKML_COMMON.classification, name="IndividualOrganism_classification", curie=LINKML_COMMON.curie('classification'), + model_uri=LINKML_COMMON.IndividualOrganism_classification, domain=IndividualOrganism, range=Optional[Union[str, ConceptId]]) \ No newline at end of file diff --git a/src/linkml_common/datamodel/measurements.py b/src/linkml_common/datamodel/measurements.py index 727f9ff..7e5022c 100644 --- a/src/linkml_common/datamodel/measurements.py +++ b/src/linkml_common/datamodel/measurements.py @@ -76,13 +76,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -101,9 +101,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -157,7 +157,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -269,11 +269,18 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Observation(Event): """ A statement about the state of something """ - observation_subject: Optional[Union[Entity,Intangible,NamedThing,Event,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) @@ -287,9 +294,25 @@ class Observation(Event): type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SetOfObservations(Intangible): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) + observations: Optional[Union[Observation,Measurement,QualitativeObservation]] = Field(None) + type: Literal["SetOfObservations"] = Field("SetOfObservations", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectObservationHistory(SubjectHistory): + observations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + measurements: Optional[List[Measurement]] = Field(default_factory=list) + interpretations: Optional[List[Union[Observation,Measurement,QualitativeObservation]]] = Field(default_factory=list) + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectObservationHistory"] = Field("SubjectObservationHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Measurement(Observation): quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") - observation_subject: Optional[Union[Entity,Intangible,NamedThing,Event,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) @@ -304,7 +327,7 @@ class Measurement(Observation): class QualitativeObservation(Observation): - observation_subject: Optional[Union[Entity,Intangible,NamedThing,Event,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,SubjectObservationHistory,Observation,Measurement,QualitativeObservation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,SetOfObservations,Variable,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) @@ -329,7 +352,7 @@ class Variable(Intangible): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -353,7 +376,10 @@ class Variable(Intangible): TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() Observation.update_forward_refs() +SetOfObservations.update_forward_refs() +SubjectObservationHistory.update_forward_refs() Measurement.update_forward_refs() QualitativeObservation.update_forward_refs() Variable.update_forward_refs() diff --git a/src/linkml_common/datamodel/plannedprocess.py b/src/linkml_common/datamodel/plannedprocess.py index 23e4736..88dfbaa 100644 --- a/src/linkml_common/datamodel/plannedprocess.py +++ b/src/linkml_common/datamodel/plannedprocess.py @@ -115,13 +115,13 @@ class Variable(Intangible): type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -152,7 +152,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -208,7 +208,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,Measurement,PhysicalDevice,Quantity,QuantityRange,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Quantity,QuantityRange,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,SimpleQuantity,Ratio,Duration]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -231,6 +231,9 @@ class Observation(Event): """ A statement about the state of something """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Quantity,QuantityRange,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,SimpleQuantity,Ratio,Duration]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -244,7 +247,9 @@ class Observation(Event): class Measurement(Observation): quantity_measured: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Quantity,QuantityRange,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,SimpleQuantity,Ratio,Duration]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -256,6 +261,21 @@ class Measurement(Observation): type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Observation,ExecutionOfProcedure,PlannedProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,Measurement,QualitativeObservation,PhysicalDevice,Quantity,QuantityRange,Variable,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,PlannedProcessConfiguration,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept,SimpleQuantity,Ratio,Duration]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class TimePointOrTemporalInterval(Intangible): starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) @@ -400,7 +420,7 @@ class MaterialProcessing(PlannedProcess): Ratio.update_forward_refs() QuantityRange.update_forward_refs() Variable.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() QuantityKind.update_forward_refs() UnitConcept.update_forward_refs() @@ -417,6 +437,7 @@ class MaterialProcessing(PlannedProcess): Event.update_forward_refs() Observation.update_forward_refs() Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() diff --git a/src/linkml_common/datamodel/quantities.py b/src/linkml_common/datamodel/quantities.py index 1716ca7..4849176 100644 --- a/src/linkml_common/datamodel/quantities.py +++ b/src/linkml_common/datamodel/quantities.py @@ -76,13 +76,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -101,7 +101,7 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") ontology_types: Optional[List[str]] = Field(default_factory=list) description: Optional[str] = Field(None, description="""A human-readable description for a thing""") @@ -157,7 +157,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Quantity,QuantityRange,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Quantity,QuantityRange,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -275,7 +275,7 @@ class UnitConcept(Concept): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() diff --git a/src/linkml_common/datamodel/social.py b/src/linkml_common/datamodel/social.py index b63fdd3..e3dde05 100644 --- a/src/linkml_common/datamodel/social.py +++ b/src/linkml_common/datamodel/social.py @@ -53,6 +53,10 @@ class RelativeTimeEnum(str, Enum): AT_SAME_TIME_AS = "AT_SAME_TIME_AS" +class OrganismTaxonEnum(str): + pass + + class HumanLanguageCodeEnum(str): """ An enumeration of languages @@ -69,6 +73,13 @@ class PersonStatus(str, Enum): UNKNOWN = "UNKNOWN" +class OrganizationPersonnelRelationshipEnum(str): + """ + ... + """ + pass + + class Identified(ConfiguredBaseModel): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -92,13 +103,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -117,9 +128,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -173,56 +184,10 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,LifeEvent,PhysicalDevice,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,Service,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,LifeEvent,PhysicalDevice,IndividualOrganism,Organization,AutomatedAgent,CreativeWork,Person,VeterinaryAnimal,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Quantity,QuantityRange,Service,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class QuantityKind(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Quantity(Intangible): - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["Quantity"] = Field("Quantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class SimpleQuantity(Quantity): - """ - A quantity is a property that can be measured or counted - """ - value: Optional[float] = Field(None, description="""The value of the quantity""") - unit: Optional[str] = Field(None) - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["SimpleQuantity"] = Field("SimpleQuantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class Ratio(Quantity): - """ - A tuple of two quantities - """ - numerator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The numerator of the ratio""") - denominator: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The denominator of the ratio""") - has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") - type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class QuantityRange(Intangible): - """ - A quantity range is a property that can be measured or counted - """ - lower_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The lower bound of the range""") - upper_bound: Optional[Union[Quantity,SimpleQuantity,Ratio,Duration]] = Field(None, description="""The upper bound of the range""") - type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - -class UnitConcept(Concept): - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class Event(Entity, Identified): """ A thing that happens @@ -232,6 +197,7 @@ class Event(Entity, Identified): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -267,6 +233,33 @@ class TimePoint(TimePointOrTemporalInterval): type: Literal["TimePoint"] = Field("TimePoint", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class TemporalRelationship(Relationship): + """ + A relationship to another time point + """ + predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") + relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) + type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityKind(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QuantityKind"] = Field("QuantityKind", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Quantity(Intangible): + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Quantity"] = Field("Quantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class Duration(Quantity): """ A length of time @@ -275,28 +268,58 @@ class Duration(Quantity): type: Literal["Duration"] = Field("Duration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class TemporalRelationship(Relationship): +class SimpleQuantity(Quantity): """ - A relationship to another time point + A quantity is a property that can be measured or counted """ - predicate: Optional[RelativeTimeEnum] = Field(None, description="""The relationship between the two time points""") - relative_to: Optional[Union[TemporalInterval, TimePoint, str]] = Field(None) - type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + value: Optional[float] = Field(None, description="""The value of the quantity""") + unit: Optional[str] = Field(None) + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["SimpleQuantity"] = Field("SimpleQuantity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Ratio(Quantity): """ - Represents an Agent + A tuple of two quantities """ + numerator: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The numerator of the ratio""") + denominator: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The denominator of the ratio""") + has_quantity_kind: Optional[str] = Field(None, description="""The kind of quantity""") + type: Literal["Ratio"] = Field("Ratio", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class QuantityRange(Intangible): + """ + A quantity range is a property that can be measured or counted + """ + lower_bound: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The lower bound of the range""") + upper_bound: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The upper bound of the range""") + type: Literal["QuantityRange"] = Field("QuantityRange", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class UnitConcept(Concept): + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["UnitConcept"] = Field("UnitConcept", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class IndividualOrganism(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Agent"] = Field("Agent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["IndividualOrganism"] = Field("IndividualOrganism", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Person(Agent): +class Agent(ConfiguredBaseModel): + """ + Represents an Agent + """ + pass + + +class Person(Agent, IndividualOrganism): """ Represents a Person """ @@ -305,7 +328,7 @@ class Person(Agent): age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -324,25 +347,61 @@ def pattern_primary_email(cls, v): return v -class Organization(Agent): +class VeterinaryAnimal(IndividualOrganism): + classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") + description: Optional[str] = Field(None, description="""A human-readable description for a thing""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["VeterinaryAnimal"] = Field("VeterinaryAnimal", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Organization(Agent, PhysicalEntity): """ Represents an Organization """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class AutomatedAgent(Agent): +class OrganizationalRole(Role): + type: Literal["OrganizationalRole"] = Field("OrganizationalRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrgChart(InformationEntity): + for_organization: Optional[str] = Field(None) + relationships: Optional[OrganizationPersonnelRelationship] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["OrgChart"] = Field("OrgChart", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PersonInRole(Relationship): + subject_person: Optional[str] = Field(None) + person_role: Optional[OrganizationalRole] = Field(None) + type: Literal["PersonInRole"] = Field("PersonInRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganizationPersonnelRelationship(Relationship): + subject: Optional[str] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[str] = Field(None) + type: Literal["OrganizationPersonnelRelationship"] = Field("OrganizationPersonnelRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class AutomatedAgent(Agent, PhysicalEntity): """ Represents an Automated Agent """ classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -355,6 +414,7 @@ class LifeEvent(Event): happens_at: Optional[TimePoint] = Field(None) has_interval: Optional[TemporalInterval] = Field(None) has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["LifeEvent"] = Field("LifeEvent", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -370,7 +430,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -382,7 +442,7 @@ class CreativeWork(CreationMetadata, NamedThing): contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -402,7 +462,7 @@ class Service(Intangible): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -414,21 +474,28 @@ class Service(Intangible): Specification.update_forward_refs() Procedure.update_forward_refs() EntitySet.update_forward_refs() +Event.update_forward_refs() +TimePointOrTemporalInterval.update_forward_refs() +TemporalInterval.update_forward_refs() +TimePoint.update_forward_refs() +TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() +Duration.update_forward_refs() SimpleQuantity.update_forward_refs() Ratio.update_forward_refs() QuantityRange.update_forward_refs() UnitConcept.update_forward_refs() -Event.update_forward_refs() -TimePointOrTemporalInterval.update_forward_refs() -TemporalInterval.update_forward_refs() -TimePoint.update_forward_refs() -Duration.update_forward_refs() -TemporalRelationship.update_forward_refs() +IndividualOrganism.update_forward_refs() Agent.update_forward_refs() Person.update_forward_refs() +VeterinaryAnimal.update_forward_refs() Organization.update_forward_refs() +OrganizationalRole.update_forward_refs() +OrgChart.update_forward_refs() +PersonInRole.update_forward_refs() +OrganizationPersonnelRelationship.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() CreationMetadata.update_forward_refs() diff --git a/src/linkml_common/datamodel/statistics.py b/src/linkml_common/datamodel/statistics.py index ce2514a..2cc8e28 100644 --- a/src/linkml_common/datamodel/statistics.py +++ b/src/linkml_common/datamodel/statistics.py @@ -86,6 +86,13 @@ class PersonStatus(str, Enum): UNKNOWN = "UNKNOWN" +class OrganizationPersonnelRelationshipEnum(str): + """ + ... + """ + pass + + class OutcomeType(str, Enum): # True Positive TP = "TP" @@ -120,13 +127,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -145,9 +152,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -201,7 +208,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Investigation,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,InvestigativeProcess,MathematicalOperationExecution,MaterialCollection,MaterialProcessing,SampleProcessing,SampleCollectionProcess,DataGenerationFromSample,Measurement,PhysicalDevice,SampleMaterial,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,Prediction,PredictionSummaryStatistics,SimplePrediction,AggregatePrediction,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,Location,PointLocation,Specification,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,Investigation,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,InvestigativeProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,SampleProcessing,SampleCollectionProcess,DataGenerationFromSample,Measurement,QualitativeObservation,PhysicalDevice,SampleMaterial,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Prediction,PredictionSummaryStatistics,SimplePrediction,AggregatePrediction,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -288,21 +295,21 @@ class StudyDesign(Procedure): type: Literal["StudyDesign"] = Field("StudyDesign", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class SampleMaterial(NamedThing): +class SampleMaterial(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["SampleMaterial"] = Field("SampleMaterial", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Agent(NamedThing): +class Agent(PhysicalEntity): """ Represents an Agent """ classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -318,7 +325,7 @@ class Person(Agent): age_in_years: Optional[int] = Field(None, description="""Number of years since birth""") vital_status: Optional[PersonStatus] = Field(None, description="""living or dead status""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -342,20 +349,47 @@ class Organization(Agent): Represents an Organization """ provides_services: Optional[List[Service]] = Field(default_factory=list) + has_person_roles: Optional[List[PersonInRole]] = Field(default_factory=list) classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") type: Literal["Organization"] = Field("Organization", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class OrganizationalRole(Role): + type: Literal["OrganizationalRole"] = Field("OrganizationalRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrgChart(InformationEntity): + for_organization: Optional[str] = Field(None) + relationships: Optional[OrganizationPersonnelRelationship] = Field(None) + describes: Optional[Any] = Field(None, description="""The thing that is being described""") + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["OrgChart"] = Field("OrgChart", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class PersonInRole(Relationship): + subject_person: Optional[str] = Field(None) + person_role: Optional[OrganizationalRole] = Field(None) + type: Literal["PersonInRole"] = Field("PersonInRole", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class OrganizationPersonnelRelationship(Relationship): + subject: Optional[str] = Field(None) + predicate: Optional[str] = Field(None) + object: Optional[str] = Field(None) + type: Literal["OrganizationPersonnelRelationship"] = Field("OrganizationPersonnelRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class AutomatedAgent(Agent): """ Represents an Automated Agent """ classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -384,7 +418,7 @@ class CreationMetadata(ConfiguredBaseModel): keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") -class CreativeWork(CreationMetadata, NamedThing): +class CreativeWork(CreationMetadata, PhysicalEntity): """ The most generic kind of creative work, including books, movies, photographs, software programs, etc. """ @@ -396,7 +430,7 @@ class CreativeWork(CreationMetadata, NamedThing): contacts: Optional[List[str]] = Field(default_factory=list, description="""A contact point for a person or organization""") keywords: Optional[List[str]] = Field(default_factory=list, description="""Keywords or tags used to describe this item""") classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -417,15 +451,13 @@ class Publication(InformationEntity): type: Literal["Publication"] = Field("Publication", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Variable(Intangible): - allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") - type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class Observation(Event): """ A statement about the state of something """ + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Investigation,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,InvestigativeProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,SampleProcessing,SampleCollectionProcess,DataGenerationFromSample,Measurement,QualitativeObservation,PhysicalDevice,SampleMaterial,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Prediction,PredictionSummaryStatistics,SimplePrediction,AggregatePrediction,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -439,7 +471,9 @@ class Observation(Event): class Measurement(Observation): quantity_measured: Optional[Union[Quantity,Duration,SimpleQuantity,Ratio]] = Field(None, description="""The quantity being measured""") + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Investigation,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,InvestigativeProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,SampleProcessing,SampleCollectionProcess,DataGenerationFromSample,Measurement,QualitativeObservation,PhysicalDevice,SampleMaterial,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Prediction,PredictionSummaryStatistics,SimplePrediction,AggregatePrediction,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -451,6 +485,26 @@ class Measurement(Observation): type: Literal["Measurement"] = Field("Measurement", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class QualitativeObservation(Observation): + observation_subject: Optional[Union[Entity,Intangible,PhysicalEntity,Event,Investigation,LifeEvent,Observation,ExecutionOfProcedure,PlannedProcess,InvestigativeProcess,ComputationalPlannedProcess,MaterialCollection,MaterialProcessing,SampleProcessing,SampleCollectionProcess,DataGenerationFromSample,Measurement,QualitativeObservation,PhysicalDevice,SampleMaterial,Agent,CreativeWork,Person,Organization,AutomatedAgent,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,TimePointOrTemporalInterval,Service,Variable,Quantity,QuantityRange,PlannedProcessConfiguration,Prediction,PredictionSummaryStatistics,SimplePrediction,AggregatePrediction,Duration,SimpleQuantity,Ratio,TemporalInterval,TimePoint,TemporalRelationship,PersonInRole,OrganizationPersonnelRelationship,OrganizationalRole,Location,PointLocation,Specification,OrgChart,Publication,Dataset,Procedure,InvestigativeProtocol,StudyDesign,QuantityKind,UnitConcept]] = Field(None) + variable_measured: Optional[Variable] = Field(None, description="""The variable being measured""") + measured_using: Optional[str] = Field(None) + starts_at: Optional[TimePoint] = Field(None) + ends_at: Optional[TimePoint] = Field(None) + happens_at: Optional[TimePoint] = Field(None) + has_interval: Optional[TemporalInterval] = Field(None) + has_duration: Optional[Duration] = Field(None) + is_ongoing_as_of: Optional[TimePoint] = Field(None) + id: str = Field(..., description="""A unique identifier for a thing""") + name: Optional[str] = Field(None, description="""A human-readable name for a thing""") + type: Literal["QualitativeObservation"] = Field("QualitativeObservation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + +class Variable(Intangible): + allowed_units: Optional[List[str]] = Field(default_factory=list, description="""The units that are allowed for this variable""") + type: Literal["Variable"] = Field("Variable", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class QuantityKind(Concept): id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -517,12 +571,17 @@ class ExecutionOfProcedure(Event): type: Literal["ExecutionOfProcedure"] = Field("ExecutionOfProcedure", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class PlannedProcessConfiguration(Intangible): + type: Literal["PlannedProcessConfiguration"] = Field("PlannedProcessConfiguration", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + class PlannedProcess(ExecutionOfProcedure): """ A process that follows a defined procedure or plan """ follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -538,6 +597,7 @@ class InvestigativeProcess(PlannedProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -555,6 +615,7 @@ class SampleCollectionProcess(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -570,6 +631,7 @@ class DataGenerationFromSample(InvestigativeProcess): follows_procedure: Optional[str] = Field(None) part_of: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -581,7 +643,7 @@ class DataGenerationFromSample(InvestigativeProcess): type: Literal["DataGenerationFromSample"] = Field("DataGenerationFromSample", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class MathematicalOperationExecution(PlannedProcess): +class ComputationalPlannedProcess(PlannedProcess): """ Application of a mathematical operation to one or more inputs to produce one or more outputs """ @@ -591,6 +653,7 @@ class MathematicalOperationExecution(PlannedProcess): immediate_preceding_steps: Optional[List[str]] = Field(default_factory=list, description="""The steps that immediately precede this step""") follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -599,12 +662,13 @@ class MathematicalOperationExecution(PlannedProcess): is_ongoing_as_of: Optional[TimePoint] = Field(None) id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["MathematicalOperationExecution"] = Field("MathematicalOperationExecution", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["ComputationalPlannedProcess"] = Field("ComputationalPlannedProcess", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class MaterialCollection(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -619,6 +683,7 @@ class MaterialCollection(PlannedProcess): class MaterialProcessing(PlannedProcess): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -633,6 +698,7 @@ class MaterialProcessing(PlannedProcess): class SampleProcessing(MaterialProcessing): follows_procedure: Optional[str] = Field(None) uses_physical_device: Optional[str] = Field(None) + uses_configuration: Optional[PlannedProcessConfiguration] = Field(None) starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) happens_at: Optional[TimePoint] = Field(None) @@ -726,7 +792,7 @@ class PredictionSummaryStatistics(OutcomeStatistics, Intangible): Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -750,15 +816,20 @@ class PredictionSummaryStatistics(OutcomeStatistics, Intangible): Agent.update_forward_refs() Person.update_forward_refs() Organization.update_forward_refs() +OrganizationalRole.update_forward_refs() +OrgChart.update_forward_refs() +PersonInRole.update_forward_refs() +OrganizationPersonnelRelationship.update_forward_refs() AutomatedAgent.update_forward_refs() LifeEvent.update_forward_refs() CreationMetadata.update_forward_refs() CreativeWork.update_forward_refs() Service.update_forward_refs() Publication.update_forward_refs() -Variable.update_forward_refs() Observation.update_forward_refs() Measurement.update_forward_refs() +QualitativeObservation.update_forward_refs() +Variable.update_forward_refs() QuantityKind.update_forward_refs() Quantity.update_forward_refs() Duration.update_forward_refs() @@ -767,11 +838,12 @@ class PredictionSummaryStatistics(OutcomeStatistics, Intangible): QuantityRange.update_forward_refs() UnitConcept.update_forward_refs() ExecutionOfProcedure.update_forward_refs() +PlannedProcessConfiguration.update_forward_refs() PlannedProcess.update_forward_refs() InvestigativeProcess.update_forward_refs() SampleCollectionProcess.update_forward_refs() DataGenerationFromSample.update_forward_refs() -MathematicalOperationExecution.update_forward_refs() +ComputationalPlannedProcess.update_forward_refs() MaterialCollection.update_forward_refs() MaterialProcessing.update_forward_refs() SampleProcessing.update_forward_refs() diff --git a/src/linkml_common/datamodel/time.py b/src/linkml_common/datamodel/time.py index 80717fd..4fd5b20 100644 --- a/src/linkml_common/datamodel/time.py +++ b/src/linkml_common/datamodel/time.py @@ -76,13 +76,13 @@ class Intangible(Entity): type: Literal["Intangible"] = Field("Intangible", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class NamedThing(Entity, Identified): +class PhysicalEntity(Entity, Identified): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["NamedThing"] = Field("NamedThing", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + type: Literal["PhysicalEntity"] = Field("PhysicalEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") class Concept(Intangible, Identified): @@ -101,9 +101,9 @@ class InformationEntity(Intangible, Identified): type: Literal["InformationEntity"] = Field("InformationEntity", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class PhysicalDevice(NamedThing): +class PhysicalDevice(PhysicalEntity): classification: Optional[str] = Field(None, description="""A precise classification of the thing, using a concept from an ontology, controlled vocabulary, thesaurus, or taxonomy. Some schema classes may choose to restrict the range of values which this slot can take, using `values_from`, or bindings.""") - ontology_types: Optional[List[str]] = Field(default_factory=list) + ontology_types: Optional[List[str]] = Field(default_factory=list, description="""A collection of concepts that help to classify the thing, using concepts from an ontolology, thesaurus, or taxonomy.""") description: Optional[str] = Field(None, description="""A human-readable description for a thing""") id: str = Field(..., description="""A unique identifier for a thing""") name: Optional[str] = Field(None, description="""A human-readable name for a thing""") @@ -157,7 +157,7 @@ class EntitySet(Intangible): """ A group of things. The collection may be heterogeneous or homogeneous. """ - members: Optional[List[Union[Entity,Intangible,NamedThing,Event,Observation,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") + members: Optional[List[Union[Entity,Intangible,PhysicalEntity,Event,SubjectHistory,PhysicalDevice,Concept,InformationEntity,StructuredValue,Role,Relationship,EntitySet,Quantity,QuantityRange,TimePointOrTemporalInterval,TemporalInterval,TimePoint,SimpleQuantity,Ratio,Duration,TemporalRelationship,Location,PointLocation,Specification,Procedure,QuantityKind,UnitConcept]]] = Field(default_factory=list, description="""The members of the collection""") type: Literal["EntitySet"] = Field("EntitySet", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") @@ -222,21 +222,6 @@ class Event(Entity, Identified): type: Literal["Event"] = Field("Event", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") -class Observation(Event): - """ - A statement about the state of something - """ - starts_at: Optional[TimePoint] = Field(None) - ends_at: Optional[TimePoint] = Field(None) - happens_at: Optional[TimePoint] = Field(None) - has_interval: Optional[TemporalInterval] = Field(None) - has_duration: Optional[Duration] = Field(None) - is_ongoing_as_of: Optional[TimePoint] = Field(None) - id: str = Field(..., description="""A unique identifier for a thing""") - name: Optional[str] = Field(None, description="""A human-readable name for a thing""") - type: Literal["Observation"] = Field("Observation", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") - - class TimePointOrTemporalInterval(Intangible): starts_at: Optional[TimePoint] = Field(None) ends_at: Optional[TimePoint] = Field(None) @@ -284,13 +269,20 @@ class TemporalRelationship(Relationship): type: Literal["TemporalRelationship"] = Field("TemporalRelationship", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") +class SubjectHistory(Entity): + subject: str = Field(...) + events: Optional[List[str]] = Field(default_factory=list) + over_interval: Optional[TemporalInterval] = Field(None) + type: Literal["SubjectHistory"] = Field("SubjectHistory", description="""A type for a thing. The range of this should be a class within the schema. It is intended for schema-based classification. Anything beneath the shoreline of the schema should use `classification`.""") + + # Update forward refs # see https://pydantic-docs.helpmanual.io/usage/postponed_annotations/ Identified.update_forward_refs() Typed.update_forward_refs() Entity.update_forward_refs() Intangible.update_forward_refs() -NamedThing.update_forward_refs() +PhysicalEntity.update_forward_refs() Concept.update_forward_refs() InformationEntity.update_forward_refs() PhysicalDevice.update_forward_refs() @@ -309,10 +301,10 @@ class TemporalRelationship(Relationship): QuantityRange.update_forward_refs() UnitConcept.update_forward_refs() Event.update_forward_refs() -Observation.update_forward_refs() TimePointOrTemporalInterval.update_forward_refs() TemporalInterval.update_forward_refs() TimePoint.update_forward_refs() Duration.update_forward_refs() TemporalRelationship.update_forward_refs() +SubjectHistory.update_forward_refs() diff --git a/src/linkml_common/schema/biodiversity.yaml b/src/linkml_common/schema/biodiversity.yaml new file mode 100644 index 0000000..39fdc75 --- /dev/null +++ b/src/linkml_common/schema/biodiversity.yaml @@ -0,0 +1,30 @@ +id: https://w3id.org/linkml-common/biodiversity +name: linkml-common-biodiversity +title: linkml-common-biodiversity +description: |- + Common Data Model Elements +license: MIT +see_also: + - https://linkml.github.io/linkml-common + +prefixes: + linkml_common: https://w3id.org/linkml-common/ + linkml: https://w3id.org/linkml/ + biolink: https://w3id.org/biolink/ + schema: http://schema.org/ + OBI: http://purl.obolibrary.org/obo/OBI_ + fhir: http://hl7.org/fhir/ +default_prefix: linkml_common +default_range: string + +imports: + - linkml:types + - measurements + - investigations + +classes: + + OrganismObservation: + is_a: Observation + + diff --git a/src/linkml_common/schema/civilengineering.yaml b/src/linkml_common/schema/civilengineering.yaml index c61c89a..3518de3 100644 --- a/src/linkml_common/schema/civilengineering.yaml +++ b/src/linkml_common/schema/civilengineering.yaml @@ -26,7 +26,7 @@ imports: classes: BuiltEnvironmentFeature: - is_a: NamedThing + is_a: PhysicalEntity Facility: is_a: BuiltEnvironmentFeature diff --git a/src/linkml_common/schema/clinicalresearch.yaml b/src/linkml_common/schema/clinicalresearch.yaml index 841ad33..ac2ae36 100644 --- a/src/linkml_common/schema/clinicalresearch.yaml +++ b/src/linkml_common/schema/clinicalresearch.yaml @@ -27,7 +27,7 @@ classes: ClinicalCohort: description: A group of patients who share a common set of characteristics - is_a: NamedThing + is_a: PhysicalEntity attributes: definition: range: ClinicalCohortDefinition diff --git a/src/linkml_common/schema/computational.yaml b/src/linkml_common/schema/computational.yaml index 8c02841..f301df1 100644 --- a/src/linkml_common/schema/computational.yaml +++ b/src/linkml_common/schema/computational.yaml @@ -26,3 +26,4 @@ classes: DataStructure: is_a: Intangible + diff --git a/src/linkml_common/schema/core.yaml b/src/linkml_common/schema/core.yaml index c1f34e3..2685125 100644 --- a/src/linkml_common/schema/core.yaml +++ b/src/linkml_common/schema/core.yaml @@ -53,7 +53,7 @@ classes: class_uri: schema:Intangible is_a: Entity - NamedThing: + PhysicalEntity: is_a: Entity mixins: - Identified @@ -80,7 +80,7 @@ classes: - describes PhysicalDevice: - is_a: NamedThing + is_a: PhysicalEntity StructuredValue: @@ -101,7 +101,24 @@ classes: abstract: true close_mappings: - rdfs:Statement + attributes: + subject: + range: Entity + predicate: + range: Concept + object: + range: Entity + PhysicalSystem: + is_a: PhysicalEntity + attributes: + components: + range: PhysicalEntity + multivalued: true + events: + # range: Event + range: Entity ## TODO: modules + multivalued: true Location: abstract: true @@ -145,6 +162,8 @@ slots: name: slot_uri: schema:name description: A human-readable name for a thing + exact_mappings: + - rdfs:label description: slot_uri: schema:description description: A human-readable description for a thing @@ -162,6 +181,8 @@ slots: ontology_types: range: Concept multivalued: true + description: A collection of concepts that help to classify the thing, using concepts + from an ontolology, thesaurus, or taxonomy. describes: slot_uri: schema:describes range: Any diff --git a/src/linkml_common/schema/economy.yaml b/src/linkml_common/schema/economy.yaml new file mode 100644 index 0000000..b8e509c --- /dev/null +++ b/src/linkml_common/schema/economy.yaml @@ -0,0 +1,35 @@ +id: https://w3id.org/linkml-common/economy +name: linkml-common-economy +title: linkml-common-economy +description: |- + Common Data Model Elements +license: MIT +see_also: + - https://linkml.github.io/linkml-common + +prefixes: + linkml_common: https://w3id.org/linkml-common/ + linkml: https://w3id.org/linkml/ + biolink: https://w3id.org/biolink/ + schema: http://schema.org/ + OBI: http://purl.obolibrary.org/obo/OBI_ + fhir: http://hl7.org/fhir/ +default_prefix: linkml_common +default_range: string + +imports: + - linkml:types + - measurements + - time + - geography + - plannedprocess + - financial + +classes: + + EconomicSystem: + is_a: PhysicalSystem + attributes: + economy_of_place: + range: Place + diff --git a/src/linkml_common/schema/engineering.yaml b/src/linkml_common/schema/engineering.yaml index a930317..873e696 100644 --- a/src/linkml_common/schema/engineering.yaml +++ b/src/linkml_common/schema/engineering.yaml @@ -29,7 +29,7 @@ classes: is_a: Procedure RawMaterial: - is_a: NamedThing + is_a: PhysicalEntity EngineeringProcess: is_a: Event @@ -43,5 +43,5 @@ classes: is_a: MaterialProcessing Equipment: - is_a: NamedThing + is_a: PhysicalEntity diff --git a/src/linkml_common/schema/environmental.yaml b/src/linkml_common/schema/environmental.yaml index 33ae25e..5e6bdef 100644 --- a/src/linkml_common/schema/environmental.yaml +++ b/src/linkml_common/schema/environmental.yaml @@ -22,6 +22,7 @@ imports: - core - quantities - geography + - investigations classes: @@ -29,6 +30,18 @@ classes: description: A location or site that is the subject of environmental monitoring is_a: Place + EnvironmentalSystem: + is_a: PhysicalSystem + + Climate: + is_a: EnvironmentalSystem + + ClimateModel: + is_a: Simulation + slot_usage: + models: + range: Climate + #EnvironmentalProcess: # comments: # - TODO diff --git a/src/linkml_common/schema/foods.yaml b/src/linkml_common/schema/foods.yaml index 5efbd91..cff8d3f 100644 --- a/src/linkml_common/schema/foods.yaml +++ b/src/linkml_common/schema/foods.yaml @@ -40,6 +40,12 @@ classes: FoodProcessing: is_a: MaterialProcessing + FoodPreparation: + is_a: PlannedProcess + slot_usage: + follows_procedure: + range: FoodRecipe + FoodTypeConcept: is_a: Concept diff --git a/src/linkml_common/schema/geography.yaml b/src/linkml_common/schema/geography.yaml index ba1f0cc..b3bde69 100644 --- a/src/linkml_common/schema/geography.yaml +++ b/src/linkml_common/schema/geography.yaml @@ -28,7 +28,7 @@ classes: Place: class_uri: schema:Place - is_a: NamedThing + is_a: PhysicalEntity description: Entities that have a somewhat fixed, physical extension. slots: - address @@ -40,11 +40,19 @@ classes: description: >- A natural feature of the solid surface of the Earth or other planetary body exact_mappings: - - ENVO:00000083 + - ENVO:01000813 - fhir:Location slot_usage: geolocation: recommended: true + classification: + annotations: + recommended_value_set_bindings: linkml_common:LandformEnum + + AstronomicalBody: + is_a: Place + exact_mappings: + - ENVO:01000799 PostalAddress: class_uri: schema:PostalAddress @@ -112,4 +120,14 @@ slots: description: The geolocation of the place bounding_coordinates: range: GeoBoxLocation - description: The bounding coordinates of the place \ No newline at end of file + description: The bounding coordinates of the place + +enums: + + LandformEnum: + reachable_from: + source_nodes: + - ENVO:01000813 + is_direct: false + relationship_types: + - rdfs:subClassOf diff --git a/src/linkml_common/schema/healthcare.yaml b/src/linkml_common/schema/healthcare.yaml index 2f3c5e9..7d86500 100644 --- a/src/linkml_common/schema/healthcare.yaml +++ b/src/linkml_common/schema/healthcare.yaml @@ -23,6 +23,7 @@ imports: - core - geography - social + - measurements classes: @@ -78,6 +79,11 @@ classes: Patient: is_a: HealthcareRole + ClinicalHistory: + is_a: SubjectObservationHistory + attributes: + subject: + range: Person enums: HealthcareEncounterClassification: diff --git a/src/linkml_common/schema/investigations.yaml b/src/linkml_common/schema/investigations.yaml index c5b212b..0593903 100644 --- a/src/linkml_common/schema/investigations.yaml +++ b/src/linkml_common/schema/investigations.yaml @@ -37,6 +37,13 @@ classes: variables: range: Variable multivalued: true + hypothesis: + range: StudyHypothesis + design: + range: StudyDesign + results: + range: StudyResult + multivalued: true InvestigativeProtocol: is_a: Procedure @@ -48,6 +55,9 @@ classes: annotations: recommended_value_set_bindings: linkml_common:InvestigativeProtocolEnum + StudyHypothesis: + is_a: InformationEntity + StudyDesign: is_a: Procedure slot_usage: @@ -55,8 +65,16 @@ classes: annotations: recommended_value_set_bindings: linkml_common:StudyDesignEnum + StudyResult: + is_a: InformationEntity + attributes: + hypothesis: + range: StudyHypothesis + result: + range: string + SampleMaterial: - is_a: NamedThing + is_a: PhysicalEntity InvestigativeProcess: is_a: PlannedProcess @@ -72,7 +90,7 @@ classes: material_collected: range: SampleMaterial collected_from: - range: NamedThing + range: PhysicalEntity exact_mappings: - nmdcschema:CollectingBiosamplesFromSite @@ -82,6 +100,23 @@ classes: DataGenerationFromSample: is_a: InvestigativeProcess + Model: + mixin: true + attributes: + models: + range: Entity + + ComputationalModel: + is_a: Intangible + mixins: + - Model + + Simulation: + is_a: ComputationalModel + + DigitalTwin: + is_a: ComputationalModel + enums: CaseOrControlEnum: diff --git a/src/linkml_common/schema/linkml_common.yaml b/src/linkml_common/schema/linkml_common.yaml index 0a89bb5..dc1a0bd 100644 --- a/src/linkml_common/schema/linkml_common.yaml +++ b/src/linkml_common/schema/linkml_common.yaml @@ -25,6 +25,7 @@ imports: - civilengineering - clinicalresearch - computational + - economy - engineering - energytechnology - extractiveindustry diff --git a/src/linkml_common/schema/measurements.yaml b/src/linkml_common/schema/measurements.yaml index bad7e5d..c39f31b 100644 --- a/src/linkml_common/schema/measurements.yaml +++ b/src/linkml_common/schema/measurements.yaml @@ -35,6 +35,31 @@ classes: measured_using: range: PhysicalDevice + SetOfObservations: + is_a: Intangible + attributes: + observation_subject: + range: Entity + observations: + range: Observation + inlined_as_list: True + + SubjectObservationHistory: + is_a: SubjectHistory + attributes: + observations: + range: Observation + inlined_as_list: True + multivalued: true + measurements: + range: Measurement + inlined_as_list: True + multivalued: true + interpretations: + range: Observation + inlined_as_list: True + multivalued: true + Measurement: is_a: Observation attributes: diff --git a/src/linkml_common/schema/organisms.yaml b/src/linkml_common/schema/organisms.yaml new file mode 100644 index 0000000..d14967f --- /dev/null +++ b/src/linkml_common/schema/organisms.yaml @@ -0,0 +1,34 @@ +id: https://w3id.org/linkml-common/organisms +name: linkml-common-organisms +title: linkml-common-organisms +description: |- + Common Data Model Elements +license: MIT +see_also: + - https://linkml.github.io/linkml-common + +imports: + - linkml:types + - core + +classes: + + IndividualOrganism: + is_a: PhysicalEntity + slot_usage: + classification: + annotations: + recommended_value_set_bindings: linkml_common:OrganismTaxonEnum + + OrganismalRelationship: + is_a: Relationship + +enums: + + OrganismTaxonEnum: + reachable_from: + source_nodes: + - NCBITaxon:1 + is_direct: false + relationship_types: + - rdfs:subClassOf \ No newline at end of file diff --git a/src/linkml_common/schema/social.yaml b/src/linkml_common/schema/social.yaml index ceefe90..1aec7a7 100644 --- a/src/linkml_common/schema/social.yaml +++ b/src/linkml_common/schema/social.yaml @@ -13,6 +13,7 @@ prefixes: biolink: https://w3id.org/biolink/ schema: http://schema.org/ PATO: http://purl.obolibrary.org/obo/PATO_ + NCBITaxon: http://purl.obolibrary.org/obo/NCBITaxon_ fhir: http://hl7.org/fhir/ prov: http://www.w3.org/ns/prov# dcterms: http://purl.org/dc/terms/ @@ -24,18 +25,21 @@ imports: - linkml:types - core - time + - organisms classes: Agent: - is_a: NamedThing + mixin: true description: Represents an Agent exact_mappings: - prov:Agent - fibo.commons.PartiesAndSituations:Agent Person: - is_a: Agent + is_a: IndividualOrganism + mixins: + - Agent description: Represents a Person slots: - primary_email @@ -48,17 +52,55 @@ classes: exact_mappings: - schema:Person + VeterinaryAnimal: + is_a: IndividualOrganism + + Organization: - is_a: Agent + is_a: PhysicalEntity + mixins: + - Agent description: Represents an Organization exact_mappings: - schema:Organization slots: - provides_services + attributes: + has_person_roles: + range: PersonInRole + inlined_as_list: true + multivalued: true + OrganizationalRole: + is_a: Role + + OrgChart: + is_a: InformationEntity + attributes: + for_organization: + range: Organization + relationships: + range: OrganizationPersonnelRelationship + + PersonInRole: + is_a: Relationship + attributes: + subject_person: + range: Person + person_role: + range: OrganizationalRole + + OrganizationPersonnelRelationship: + is_a: Relationship + attributes: + subject: PersonInRole + predicate: OrganizationPersonnelRelationshipEnum + object: PersonInRole AutomatedAgent: - is_a: Agent + is_a: PhysicalEntity + mixins: + - Agent description: Represents an Automated Agent LifeEvent: @@ -79,17 +121,17 @@ classes: range: string description: Information about rights held in and over the item creators: - range: Agent + range: PhysicalEntity slot_uri: dcterms:creator description: The person or organization who created the work multivalued: true contributors: - range: Agent + range: PhysicalEntity slot_uri: dcterms:contributor description: A person or organization that contributed to the creation of the work multivalued: true contacts: - range: Agent + range: PhysicalEntity slot_uri: schema:contactPoint description: A contact point for a person or organization multivalued: true @@ -101,7 +143,7 @@ classes: CreativeWork: description: The most generic kind of creative work, including books, movies, photographs, software programs, etc. - is_a: NamedThing + is_a: PhysicalEntity mixins: - CreationMetadata exact_mappings: @@ -119,17 +161,23 @@ classes: range: string description: Information about rights held in and over the item creators: - range: Agent + range: PhysicalEntity + any_of: + - range: Person + - range: Organization slot_uri: dcterms:creator description: The person or organization who created the work multivalued: true contributors: - range: Agent + range: PhysicalEntity + any_of: + - range: Person + - range: Organization slot_uri: dcterms:contributor description: A person or organization that contributed to the creation of the work multivalued: true contacts: - range: Agent + range: PhysicalEntity slot_uri: schema:contactPoint description: A contact point for a person or organization multivalued: true @@ -179,3 +227,6 @@ enums: description: the vital status is not known todos: - map this to an ontology + + OrganizationPersonnelRelationshipEnum: + description: ... diff --git a/src/linkml_common/schema/statistics.yaml b/src/linkml_common/schema/statistics.yaml index af7251d..4a97d53 100644 --- a/src/linkml_common/schema/statistics.yaml +++ b/src/linkml_common/schema/statistics.yaml @@ -43,6 +43,9 @@ enums: classes: Prediction: is_a: Intangible + union_of: + - SimplePrediction + - AggregatePrediction attributes: variable_predicted: range: Variable diff --git a/src/linkml_common/schema/time.yaml b/src/linkml_common/schema/time.yaml index 27b0eb2..d2b69a1 100644 --- a/src/linkml_common/schema/time.yaml +++ b/src/linkml_common/schema/time.yaml @@ -84,6 +84,18 @@ classes: - range: TemporalInterval - range: Event + SubjectHistory: + is_a: Entity + attributes: + subject: + range: PhysicalEntity + required: true + events: + range: Event + multivalued: true + over_interval: + range: TemporalInterval + slots: