From fd366a5c66a0736f2112e3f7ced05355a8b9c8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Str=C3=B6mert?= Date: Fri, 25 Oct 2024 15:47:11 +0200 Subject: [PATCH] chore: make setup was run --- .idea/.gitignore | 3 + .idea/LNKD.tech Editor.xml | 178 ++ .idea/dcat-4C-ap.iml | 12 + .idea/inspectionProfiles/Project_Default.xml | 12 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + examples/Dataset-001.yaml | 35 +- project/excel/dcat_4c_ap.xlsx | Bin 5965 -> 15597 bytes project/graphql/dcat_4c_ap.graphql | 219 ++- project/jsonld/dcat_4c_ap.context.jsonld | 216 ++- project/jsonld/dcat_4c_ap.jsonld | 1490 +++++++++++++++-- project/jsonschema/dcat_4c_ap.schema.json | 1344 ++++++++++++++- project/owl/dcat_4c_ap.owl.ttl | 753 ++++++++- project/prefixmap/dcat_4c_ap.yaml | 94 +- project/protobuf/dcat_4c_ap.proto | 201 ++- project/shacl/dcat_4c_ap.shacl.ttl | 786 ++++++++- project/shex/dcat_4c_ap.shex | 239 ++- project/sqlschema/dcat_4c_ap.sql | 845 +++++++++- pyproject.toml | 2 +- src/data/examples/Dataset-001.yaml | 35 +- src/dcat_4c_ap/datamodel/dcat_4c_ap.py | 826 ++++++++- src/dcat_4c_ap/schema/dcat_4c_ap.yaml | 464 ++++- tests/test_data.py | 2 +- 25 files changed, 7159 insertions(+), 621 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/LNKD.tech Editor.xml create mode 100644 .idea/dcat-4C-ap.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/LNKD.tech Editor.xml b/.idea/LNKD.tech Editor.xml new file mode 100644 index 0000000..2615fe6 --- /dev/null +++ b/.idea/LNKD.tech Editor.xml @@ -0,0 +1,178 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/dcat-4C-ap.iml b/.idea/dcat-4C-ap.iml new file mode 100644 index 0000000..2946dc0 --- /dev/null +++ b/.idea/dcat-4C-ap.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..cb54fda --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a663074 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3f3734b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..c8397c9 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/Dataset-001.yaml b/examples/Dataset-001.yaml index d4b3d6c..4808e65 100644 --- a/examples/Dataset-001.yaml +++ b/examples/Dataset-001.yaml @@ -1,7 +1,30 @@ -# Example data object +# Example Dataset object --- -entries: - - id: example:Dataset001 - name: foo bar - primary_email: foo.bar@example.com - age_in_years: 33 +id: 10-14272-kvoivnbynqxcny-bochjotcsa-n-chmo0000595 +alternative_id: + - doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595 + - https://www.chemotion-repository.net/pid/37012 +name: "13C nuclear magnetic resonance spectroscopy (13C NMR)" +description: "Dataset for 13C nuclear magnetic resonance spectroscopy (13C NMR)" +was_generated_by: + #id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595/spectroscopy + type: + id: CHMO:0000595 + name: "13C nuclear magnetic resonance spectroscopy" + evaluated_entity: + type: + id: CHEBI:59999 + name: "Chemical Substance" + id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N.1 + name: "CRS-37013" + alternative_id: + - https://www.chemotion-repository.net/pid/37013 + inchikey: + has_value: KVOIVNBYNQXCNY-BOCHJOTCSA-N + used_tool: + - #id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595/spectrometer + type: + id: OBI:0000566 + name: "NMR instrument" + #has_setting: + \ No newline at end of file diff --git a/project/excel/dcat_4c_ap.xlsx b/project/excel/dcat_4c_ap.xlsx index 426e1f8b534b0effcc3e61a439e9ca945a4f2dbd..4113d5976e5737490943215c4f8015e04d92ff58 100644 GIT binary patch literal 15597 zcmeHuWmKHY(k||S}c*SU5Z=C@3VTPyYJ)vI8peX^?NDkOvF$ zSUOv%yE(f6*q^w#uz5Q=sEn(ic5|R1tafO4Hf2SVmtZ^+jn02N&gK!;$mAG$ey|TG z?&RY$NK(WWMNQwBDRacO;mFN3fG#mhb1pVATo_%r;akJG931{@G;csFzNANZC zKMy-!TEcfAwi2rUX$oRkt09Mwp^rdAL1F*<6fB(GtbWcREvd_{hXXC#wDdv{1DhZkn2s8?^BOw;R}!@%~Q zw8t=%UuX>Qr-NOjo1LF)^N937znx<6kQjX9fJ~r3B!eRRWX+nUjWI4i?V6h>rPHPp zfmJBFQxk(fodfj4x+nF$CB<&mmsYm@=qM7twZrSnQz6!Z8Mb6MVtu+e0-+a0d|K-= z*Gv33U!#w?F4}^gaw=oFgPWhuZB&CCyb`L0-@H}!PT#;3Hi>j&8vZb_eLfk8yD&R* zaW3AUHh3(&uC1={qN2@>HIe#wDzJVcN zK>#n{pmxIB8tjPL&llVX#0A)TE&{Vc_f;vvu=U~`d@Pef13TpSutw6+_mfpxb41`+ zb}q(baU*gMsGh-i|DC| z>aUz|-?gP@xT>))*&(ozl3m|@hJ)X*DKSk6rRU-~`+f>G-Gu4fBb9ibtZiA+=uq#g zU=;Rse;?ee?G#ZukE~l>B0L5ZfA6HSx?iniWAtiw@|02H>^M_{Ix$lAVDLA&5UReV z+N*CFZ9^s8&+`0*#_UrAZ7ZS6_SM1OQ z{=kwYUdsi12246!AePEbg0HTljYeIaXZzdP` zyDNW$bP5Kt`Hz<#w490-PBrn<_*-{P#~7~2IvMs})Nn4$@vt#k=(>##4rtY;Fo6UM zI`^(@#PW~!&*y1FYqRxPX$TUPg5OBeHebdJA3p3w-nKNPLmttZw&IV*$(JH=+R^-` zm^Qar+rro^Vz{wWTj(yvGJYmvx&<6X<(6)8Q~J`F+TK7fpm_TFy^AXO2%509NHSTY z*9$V<3$U^022Cl4W`=Y#u~a*(V{6`$kU)NBQVYtoMxt}i*-oD~@tWW~T#J9EuHzPH za`IxU>v3K2fk-;pK;&@|)z`xC%<&%S2p?b5OzX6MbsjuNhbmeY*(S5*xg!?5RZBD0 z7l_YmAHy7LXq#~w_QNtK7Wpa1%51xAWf+;RPbRM~zO-s^s%7#ba-`M}?6%FswXPgq zv3lL5O*XD=cwEh~e z_{wES4s%m@%k(hq~?JfgDlSYa_K*+VB{xvxf0T+5Sb?DI{ zOo-)6(xA+9)OW{dEll`h)nbByGAz%-RZXVoaPXq*(BP>E-PR8dQtZ59=gwJz9YeLa zEI$wqOGkBya=S@`wCGN17U)sK7T2^!+lbrg&6IkcIpwi3+$@^Rhyn>kWlxH;R>|K) z0CJu+cgs}W=*^O!aeWkYSrl4@ zhLF9r1_lc1!5HGLWQfehZGXSCB~r(im*J6m?>B` zd)Q&KrPvBff=`#P0~A_RL&`v7f&*fz^%%ChBv7gWRjy)$=m6p5sSI?zO+-)#DnDK-zZeKXmpkNTC{UT6qyMreJnIp%W0FG5)A zbsWv0FDDVCY{24oI@AzeAQjz5Xx!i|3 zGO{2#yio#uqURtksD>CN1CFp(jJ)OvZF<4ege(@!?ITto7utrFdqeAR?vlBX)hCpI zXQ-yQ3m+`c3aFn~uh)RZ)`i=d7i_k0VLcKR5fh$}08QVEJ#o13GNs{O5Oe4bgozGv zF{L?Xioyh(7xhv6nGg*oYHLpN9yBmy zzszUA)_25sDXP#GM^&xXkOzq0*R+0D9OsNJc*eJIZUlV4T%FqPFc~BcAX_-p5a#Nn zDwREt$Epan1iqD@X10~ke{3o3C@J%~u_~<(o-V*1ZDL&1Zfw_M3w=~m_g&5vCqrMjDQXDtlaWwjrFa}HF;fBQ z>S72Z0EUOx*|MKq-)01of-%>tyVl?DU~0SO#E>Lu>GkNGOnp;pUfel$?nN|Xx9M@!QfP(1C%S(UJc~nZrd~@G1!SR|3SK34o{hI%d(gJcYcvY?~+(N=x3*0D8vg;>hd&$<_s9ogp@$9#z{M9a?h&9yTP z578RyJT6HG3Yrgg*535`nw2X>TS&Idw>s1(X`)Poi^@a%%PH0ez`V~~^vV+K)-O*)dEgl9=YA|o zdJ}st{%68E1r>OcAcUp=o-m%Dg!!i|IxTXbNd)#yAZpnLH%LDr(VJE}SASvi`WvSi zix5G@B4ew`bwDz}77^r&qi}Rct+BbfBkCDxbosi!PtpDTCxc;-yA4(TSrFSYFrURm z!E71$=Z9-){UQ~XKBS(qHXo(;AlUP5D&DSnE;cxDAZ)R8VA*R&SgyM3gzj@2%2$V6n~tD`o(JTD0lo91 zla4rrrc^P2A|!geB9Nq2q13bGJii&u?dS$2Vzj(Nb`XpRenN|Q zCOB)LlGp^GJ?Pd7_5xi0fPRT6+aNoT?S;E{MY=c;>LFnVm92PwXv%S(Zr%BT6eMYc zNO_%+Wa~GO2O8%-*u|aDY14b)pjp*7ubnNlPiR(Khq)f$Eb^wQ7*rbgJe6$9e^<01 z^=(jDt=tAK+1`t7TBJ5;Ktq)r{zn zjSp8=t^(|EG}nPeg4SoJQ3HLy5|*ks=mn!fPh+b1KCwFW%JhpM762x*pHu)i3Cq}L z;#Ha?N$MM-Cz_EX>pOlU+t}R^RXFY6A=-QIkG^It@;`J-nKCcTUTC?adegZpN~&=DBK< zlQd*s)Z5CdDRb7C)3a&kDaD_qFjSJA+o3sjtwIIxh1YUwmG}|&L+w9{MaWKKDf#pc zoxq#Bef9sT&6ZjuM3Y!{>OCj{Y}?@4PDo~y=AEo>-zG0 z>*D{1lT_WfEw~KBCPLeKVcRix)#cLC!oje~<JEkV3uMtY}<6NLU8> z9N3T=Z7jrMeIuU2rNv5&BsW$Z#}G#YOKNN|w2E9vPFcJ; z=K54P;R?1p@S0xNDALt&@ zv!zuVH1w;m3F;)7*Dr7qc5u;j`r&MgXrZDa$d!*MRFDr{i>HYe2JohtT9nJ5ovPA+ zzTw>(o|kbf#PDQ}`xEfJh0{Jt=|OS7vKp{hU3PwfxK&m6A4$G z%1k!dRZPmG#li)ly~{dorGdToW{s|dNg7fj&bjN)Q^L>dRyG;_YBo$2H zTj7aEa|xXp{z;>}>`2PchVm_qtA^@XZTR+9u9EtCM6jp+VGG~F1PBZVitU8SNg*@> ze}rD{(NIaXjQpZ8V_^C$oAc3I#=RbPVWm-)JYTidcD7zxTZo@5!^2AW=_i>qwT@pa zJOs=9^ph%q!lxAf@{_uM_({c+;@tz6>FFJlHC~QX!4|RN8HX(0A$dBB7xg#SE5z_mU~_#7QZp#nt1FMwie^Pi5i|{Kk20dXzQ?p%CTmcSxidg_9?bYd!`hBBbK` zENnhaEpr+%(9eCm)&vR7WXp|nqJjnJKie4tG7^0jI*ADfDO4!o7}fk0ttOsrI!NhR zt@&`|ekC&QE9;&$?Nu;(y17Ij(!_;(RgTO{Kx!!Q<8t*uLwsIH@`1FbD>-pi#?k95 zrKZ5dCYS_^vJR~w5BmH^8s_kZqky^gwI^j4Z+ekAHkexY3Y#7B2{Pa zjY`%Vn&H*q$uI9zj?h+uXNS)pS>O|ceG|Hr7cN>6_p-k_=)})wu~qd5Qul=%ng|Xs zVBPHQbf4Tw*ZvAc|EPidP0{}jMFwUReCiM@diEcz=#LtR#t0-A!@5ixq)=~?7tx|i zvcU?0)%buS&^AQ>+Rpd+JG#>YeFlHzNlnjL;Wyl#Q{-2CK&aG9y>%&igCZw3D@Mb* zhst%Z0}Q;+DkBS>Ew@F=?I`tWoL^20+opL^t3|9#Z83cvv_VuV2+eC4J|Hx!8}C&n zC1G9$^6*&ZdsYPVPWTSMg&&t_+M=@AxJN|@;U>KC;p7UB!bJCPE>C&z^m%jKYQu0Z z&odZUIvM1?0%yj~%<^8(_zyTz9$i3R(PT0tzHx2&}X{i4m{>2Vr4LkqA8g45SKdb1^Aw^sKR7}0? z5@Rjssb^V@5enLsjtOa~2t}W}aWrQ;Or>hGhjGQ?6Z|2GHBp-fFSSgEqFqLPb~zE? z>oGBYv+(o_Fnj51ltF1j*Ezk=A_k_RgY_Rt%vjl03I&EB7EV@$Lf0oWa}VJ?#U*W9 zQ{zBPuko~1{6nl2VDW1b#Yof+6ALczqzXN|w+GF$>N6(21I$kGO<{z+@a3Ll#c?h| zt;D4EN#ZKLX97aq%zwfwMaz4eTwtN;Nkp7Ecl7GYzM~_f2|7ZPrb9;3V>n-5%M7`? zq;zNHuz9*iW(^IgzBik#{>ePckTjO;xm4kE1?GA&_DkAf9!6yWA9(1KOFeO-3igRj z9iAueNPs(7=(L3&u=ey~)(`-Ey(RttrB%Q3c7&#tV27KeX0Hv)ldd8c7z#7yLSx$3 zr=x3a49+E@-p`;cv#%}r!UxO6s;-!d(BZG&@q~|2UQVBQSO@;uPNo4bA|fFKJ%MCI zzuWZxQHvP*>8`FI?kdQTmY|Rp2M>ibu|lWwbvAuUe+B;@a$#UXUX2to!#Mcq3X7`Y zI$yhN$%dT5KDQ3;yzrR+<6@Y=CoEr9U&U%lNP5_Rt(ImKPE5XZ<7xej68h9RpszhdyB*b5%V{{B6)%oq=qyx^@@VZ3aKD~?cbX%r`^Qib5|?cOJ8uP=_4 zPcSBB{E!^3vT}Q$>hwDl9UDA#z!NO&4KYVS8s}G4AI@arI9p(_Dl5YFVWXH*YrBSh zhwq*H;EYMJg4=T>8Hd@1c2wme4ahah^%#ZB35u1&n{M-1%X)d(sMJ!Tnb=BN=_)GxuR;V+2sz`f!aeUO-d!GY8s zbI&%hkk*}ejX1riwrK||xv?=}^(655CBpnA^if?@&oi&esIu<}POLyRS{ETYlj2x98#qTm#||)=o^GQzoYNAHlgx( z#Hoi8>k>Z(6G^pH3~xStN=w_f9Iw>QxBqBC7CODV)#;`^$bx~v)6*-Qh*8#^;Ula% zxH9dCZZ~Q#91yrCiP|BBO0R6-ZlE4iv%VsPr9y4n=X`t_Z%>6@89lSuR?!)p%2Vf+ zMFAxEdVq}=PiOe1#Wm4b?NwK0cQnRIu$TiS+#q3|tR06*(GV$+Zn1`cF)E2qj4t-N zV$3{~_z17dUb9~084SE!G!8YXcpYqMk%r5$KY>+-63t0#{$_#ZwOK6zxo3I1rL_ML zx!$YZMOcmzyIIy_kV#PuG`G~Z-V}N3Hn#x z!QT1z3^nf|Q}R=4WLOsGb5inucKq-NRL-&)ZA88uTD>(e*Xn#$Ym zZ>F9vJe*??=C)~4wYE)m)Ty4Fn-GbE?nr0Kf6LXP%1kfgC}Z?KHL>i0Y3SgXyan#o z2bUtv@*8}@_i`B}@hzzn{oytQBcXB!xTs9*4+(719CXM4@rLidsnUjR`#JzkRr7RT zH|_D5`YAg<`1EOHrk`(VrGZ2`CvBseCLI4lnj?2-`!UH@EOjNegELQz;uvu9u*J)0 z*jlKTV&6E}BBwX*W-3&)EPni@E^jvH=(c+BqC4kV$JTytrE3A=$3%?l@h*XDOCRR= zF7ZZZI3qhmIbw6 z610127q}kxK+8w}+oQO+${Mh)(6Endo~Ehtb~uHPW?aqkT$l3OPb2ZVW^cn9Kfz#G z%3w*rbsMN7Sjv!BeG>;a^!m$SJv0&vPtR=Vts3-2(*6|Q09AQPXw$-S@|JNGtn{1H+X*f#2Pa=(Cc5`ufN+#g_F~X!bfGr#U8e-_3*{kBE+&U`!zcA{Siusq`O=XlAY`Or zN-C`3lOI(6C!!-`A6xd$=Uh+j9PKvA?M8P(l#T$RfT)m9Q#UII06W{y_q=2!Cm2pN ziCP>hQ{`8^Fq~DOI_XH%=BTaWtllJx-cxWKsFTtLTj?f0pS2c~=Y=OJV6oJppQG1k zUWd0Ds@|T-EZ?}1ZyEr;>0%)7R%=ox&QjiR){ylW7*(#`17ILb_RUTxLhWf||`%l9YWC=-k1WL#KIlS-6hJX34M@|W97 zPD(Azf!-gtZ%!u4@kGx$@;FMPrsiaj>7DD&?z9{*1K~2CKqh&G2nB`thn4+ok2806 zw*P5oacPcf5IYOHQB0$#n}HvWVZ?d3SZ+4a(CNj{l875mHcu$@BUo_2@xHVMa8w3{_j6&pX#8$npOsWY;c)Tx1fp@UwoQ#3ZF>cwoh@R+<2O>(DW!`FWtw!8l- zXEmqT+FkF3)UzzBMKAdIa+x^Rb}8PG{`o=PrvO`)c48HcY9;&BY%B8z-cU+&>-&1t^2gF1h>hP+KLyM1vP5SRl-Q^xBJLFtHy=DmE`dc^V~F}Oqq@;=p0lCA7%xc{ z8Zn?RyjZTI8$vT3l_5;kGJD^o#&i1cL#b6XRMpJOL}7YiS5KKET6`vvsWQqkzg zA!eN{FRP<}50(=U@1!f+u%8kSr?9x`v^M#!INEZcV@jg`&X}()=Xmc45PpslbN+>K2ZSO}6 z!iaOl%xC&APvMZ?lnk-g-E8#tFL)GITqG_nzC>-QFy9jgV#xGWqod9N_?KFQJ}wBb z_`mWsTyhv%D6xHcwTtEf>KIcVOUS?Bnl!HU=#ta*Ygph?aZ zoqyVMVjPtB^p+?m80X3|Qti&WvbUIA5jye!W9T;BJ5LAQ~%>^w(!nlCM zxF9vDBQc2)?FkdjC_}A@tis($*Q|oXuaKCN=#*^6PqjiT=`7W*5b`lJCR7X>4(08bv8 zY2s@r%sYn&>E3aIWr zxO$GIH)DqPbnJO)-Y|SI^}Fz_!-~vGqDViE2hrX0NPJ+6$|O};HT73v@k1xkVixOr z0_ZO|Rml0ns^S9V{jCxQE>(#4I=O)-c(JbCr_$$hmF>CJ0pn!Z)`G#+^%Q}NKz zYT~cOaB0!&7?>H^ckb2olPl_Kt3a1B6NDRZokD9x@k;OrEk=Ul_2gPDK_Z)dP%jtS9&|yED=mUr>X!|;rp+H>;8U_#c_xG6~^xVFJ zAbkDbx0~)t-@Quohb$CS5OmMKOaJp?(OvPoS8aZYuR(tPo{Kkk0q(Y1{|g|P2I&^y z-p1>@D0lmVf1v=8??t(d((j_&ZDIX|q6^v2A(Oc~mfOReyC`@2Du1CMK|<1dP;Sp6 z?xNgn>-&W=4)JsMpxl?pni>o73W@*+p^idzepT_ru()z;|=yU!$?1xF6VBAeRrqd^_ZQ3{_5CpS>hSMjuxRgxxmSsQzczYw_ru()#lMF+qrVsCkMiDK_4_?c zHsk#;_iFL)VT2#v4|A^;-%a8F#T4`s^DWG;g#PYC?j~TrMD^MJl#bmMyqnPc5|m>9 z*U$DyR;3?%}&bO37Zp()NhiZ3q9@_^j#r+P}a7P z;?v{fmjyRV>efnT?HX7QewrLeD57kLv^h}s$BGw4X@&*si)tfmWs5=YcO^W=Vb`-n z043^Kx2ie78ln3!safmE42(p)|81J!lvkWCH#$U&WWb$OY!RjXOFHZtMoN$;pw-^Y zJi6K$7dtSa6R+6yPLp9o3N^WHJlQo~#T53wEo{+ew|@`OfswGql=Xt4Awqc(Gw7u| zJ0{qk(z-K_CbLvm^B#@O#MR1IdcEG)9C~hj~nLl z5?-WWF*;Ov&v^8dh=T(itsjx5tvHMF&HnvbB{wk-=H>Nif@nXgN{>(bt0 z&IQ3^K6uK*Y-7I_hS2w7dgxO-SoDh|t1|k8c~Z>BdsycOWd$bW>85X|YRmoBY=KBy zF((-Lgm3l^@2aZzYeXHHO_)%N^wqAU)R>PyCWT&Gqc3vx zei)RuQrb+TQ`ml);c>Km#Pjg0T<@-|&BQ4>&sD$hVTRUp3#}g{z55toX{o7dH_iLN z2W+L4U;AnH;!(v-n74zbj&HQ$ zgrrDdW_1HeHT2sv|I_hB9i3hcr2O2x8o0OX<^P|9x80g?TQx#Da z#}HvB#VGaiyoChEzR|~dhTu(BZ#3)YTUiG1Xy7w=Et*w-fwh+Rb#1wb^!?4j`ShTk z)UxTK9(3vg-g|KCs-uB5e>_RrXJ15)*t!+ijSLgMi36eQwr8iej_^^iJem6+pCFM% zO>qkKh_N&24Za*7nNn38#zjTWeP}QRzj5;9^-6FNRx?^~u^}=a21ok$zy_XqsOT0? zEY>aH)fXfduDf^jU=Bb#TUlu#V>f=+Ye@NH#bR>6vc^;AH|j{ILQ{6_TZ-0K6X~Ut zWBi=xc!(|nZRt82yaud4suo!rfs#;8RkAi<|JYIPL>tKevtujc&vuNMJ+b4bRxK27 z+v3hJQdVHi=4|~)v=@Iup#u->PFoEPZibGA)@?w*rwLdv;L0cSm-dF<Da-dFoHRJ7){E*fonAWx4 zgx@b&Nkl&>m}zQcJ8m)Kun()!pDGtMPP-f!ltKuO?NNGOUriFyd#jiAaa3ORxXodA z5$*q~QjW=FN!_W*uYdI2Q zr7pGGq`(F>iP}6(^Bc`i)+=2Ue*mPQA=pYSoi+z)u+eiPGV4kp0C1Mv9K5m8UN|?5 zH4cY4!5(R7p&xXG@j!geKfs_6iPg0l%||}r82fq{kc0h$cg`7IUN@met80yYFg-l- zp*p#`Wu(T&c};e&w_~TeQyV$hH9O3z;JA##Qil2x@84lg{KPm`*a#e|aKtOHg%1cN zw=l#Dm9@Sf_U4uwBLg`U~^=nIlc5Kz2B(@HV2bNF$PhzMW@!6%W#6f7)vk zb!J(P7)gO;r9!L_XEP~i-a4pOPzuidi!2Rde3D?SSt$(D%j41)Xl$G zh|CCDM~+|w&U0S!aGwhui&tAqdRR>4aV$%>9ML}>wQ}Y1I}prWhUTJiE-uEJA)t=C z?O`AX^DmTP*_-hb6Ua}OI!y|oHpL4g9UH2-(~*f*-~R?9xkr=L4xzOG)so5cQWBPA z`SFBH3_&uCI>pwz06KV_z(W+;QBdk`!^=l42@YBHYe5+RxM+U{spQDi{}?*E6ZmxI z+F6uRX!EcarErP8;%z_&W)quAQA*5nb89RF+hK(b1K)SdD(QL z3_VCp>x2AGDj3f_{p(ws2e8UL;TKw7hTRcV%E!}Npzk~TXJcdg-O)m1X)RL`5ON%N zR42KgG9D1y-;245GSdux1)68l_}2^l*&1%O;SAr~#xiq&QFjXY`ryyK9UNL!OA?Fs z0ZC;;%3V6hbDwgWvp~;eHYvDni}4l-97S@nqx$mc+gl#^Ux0k3<;od!ef0MRlUTVz z{N?i6$kEs4+A<<>VHCsYdCic!9+{8uD{hM&II-nC&DN)CAPl!lD#}m^*_Bo(se%bs9;4^}+FvNfSytMcpp`gc4k49$00TG$@EqlT4{(Grc{T9=PH+T% z1x2!PO%=E)#tEJZ0(}2Ixc~rcWD$M80s^^d39*-8gl+}K)4(77_Se8HFgXxPU{Pc` z4g67je+}%0oCcaHGLh3LROJS0&=cONa+;mwQF(nOyq^4V7`co-IzbNj4>R7+B>(^b diff --git a/project/graphql/dcat_4c_ap.graphql b/project/graphql/dcat_4c_ap.graphql index ca430f3..b47a5d8 100644 --- a/project/graphql/dcat_4c_ap.graphql +++ b/project/graphql/dcat_4c_ap.graphql @@ -1,31 +1,222 @@ # metamodel_version: 1.7.0 -enum PersonStatus +enum EntityOfInterestTypeEnum { - ALIVE - DEAD - UNKNOWN + Chemical_Substance + } + +type Attribute + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + } + +type AttributeKind + { + } + +type ChemicalReaction + { + id: Uriorcurie! + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasAttribute: [Attribute] + hasPart: String + } + +type ChemicalSubstance + { + id: Uriorcurie! + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasAttribute: [Attribute] + hasPart: String + inchikey: InChIKey + inchi: InChi + iupacName: IUPACName } type Dataset { id: Uriorcurie! - name: String - description: String - primaryEmail: String - birthDate: Date - ageInYears: Integer - vitalStatus: PersonStatus + name: [String]! + description: [String]! + alternativeId: [Uriorcurie] + wasGeneratedBy: ResearchActivity } type DatasetCollection { - entries: [Dataset] + alternativeId: [Uriorcurie] + wasGeneratedBy: ResearchActivity + hasDataset: [Dataset] + id: Uriorcurie! + name: [String]! + description: [String]! + } + +type DefinedTerm + { + id: Uriorcurie! + alternativeId: [Uriorcurie] + name: [String] + fromCV: String } -type NamedThing +type EntityOfInterest { id: Uriorcurie! - name: String - description: String + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasAttribute: [Attribute] + hasPart: String + } + +type Environment + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasAttribute: [Attribute] + } + +type HardwareTool + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasPart: [Tool] + hasAttribute: [Attribute] + hasSetting: [SettingDatum] + } + +type InChi + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + } + +type InChIKey + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + } + +type IUPACName + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + } + +type Laboratory + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasAttribute: [Attribute] + } + +type NMRSpectroscopy + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + usedHardware: [HardwareTool] + usedSoftware: [SoftwareTool] + hasPart: String + evaluatedEntity: ChemicalSubstance + type: DefinedTerm + } + +type PlanSpecification + { + name: [String] + description: [String] + type: DefinedTerm + } + +type QuantifiableAttribute + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + hasQuantityKind: String + applicableUnit: String + } + +interface ResearchActivity + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + evaluatedEntity: EntityOfInterest + usedHardware: [HardwareTool] + usedSoftware: [SoftwareTool] + hasPart: String + } + +type ResearchActivitySpecification + { + name: [String] + description: [String] + type: DefinedTerm + } + +type SettingDatum + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasValue: String + } + +type SoftwareTool + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasPart: [Tool] + hasAttribute: [Attribute] + hasSetting: [SettingDatum] + } + +type Tool + { + name: [String] + description: [String] + alternativeId: [Uriorcurie] + type: DefinedTerm + hasPart: [Tool] + hasAttribute: [Attribute] + hasSetting: [SettingDatum] + } + +type Unit + { } diff --git a/project/jsonld/dcat_4c_ap.context.jsonld b/project/jsonld/dcat_4c_ap.context.jsonld index d2fd7be..3a6b2c2 100644 --- a/project/jsonld/dcat_4c_ap.context.jsonld +++ b/project/jsonld/dcat_4c_ap.context.jsonld @@ -1,60 +1,218 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-10-25T15:40:14", + "generation_date": "2024-10-25T15:45:47", "source": "dcat_4c_ap.yaml" }, "@context": { "xsd": "http://www.w3.org/2001/XMLSchema#", + "BFO": { + "@id": "http://purl.obolibrary.org/obo/BFO_", + "@prefix": true + }, + "CHEBI": { + "@id": "http://purl.obolibrary.org/obo/CHEBI_", + "@prefix": true + }, + "CHEMINF": { + "@id": "http://semanticscience.org/resource/CHEMINF_", + "@prefix": true + }, + "CHMO": { + "@id": "http://purl.obolibrary.org/obo/CHMO_", + "@prefix": true + }, + "FOODON": { + "@id": "http://purl.obolibrary.org/obo/FOODON_", + "@prefix": true + }, + "IAO": { + "@id": "http://purl.obolibrary.org/obo/IAO_", + "@prefix": true + }, + "NCIT": { + "@id": "http://purl.obolibrary.org/obo/NCIT_", + "@prefix": true + }, + "OBI": { + "@id": "http://purl.obolibrary.org/obo/OBI_", + "@prefix": true + }, "PATO": { "@id": "http://purl.obolibrary.org/obo/PATO_", "@prefix": true }, - "biolink": "https://w3id.org/biolink/", - "dcat_4c_ap": "https://w3id.org/StroemPhi/dcat-4C-ap/", - "example": "https://example.org/", + "RO": { + "@id": "http://purl.obolibrary.org/obo/RO_", + "@prefix": true + }, + "RXNO": "http://example.org/UNKNOWN/RXNO/", + "SIO": { + "@id": "http://semanticscience.org/resource/SIO_", + "@prefix": true + }, + "T4FS": { + "@id": "http://purl.obolibrary.org/obo/T4FS_", + "@prefix": true + }, + "biolink": "https://w3id.org/biolink/vocab/", + "dcat": "http://www.w3.org/ns/dcat#", + "dcterms": "http://purl.org/dc/terms/", + "doi": "https://doi.org/", + "ex": "http://example.org/", + "foaf": "http://xmlns.com/foaf/0.1/", "linkml": "https://w3id.org/linkml/", + "nfdi": "https://w3id.org/StroemPhi/dcat_4C_ap/", + "owl": "http://www.w3.org/2002/07/owl#", + "prov": "http://www.w3.org/ns/prov#", + "qudt": "http://qudt.org/schema/qudt/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "schema": "http://schema.org/", "skos": "http://www.w3.org/2004/02/skos/core#", - "@vocab": "https://w3id.org/StroemPhi/dcat-4C-ap/", - "age_in_years": { - "@type": "xsd:integer", - "@id": "age_in_years" + "sosa": "http://www.w3.org/ns/sosa/", + "vcard": "http://www.w3.org/2006/vcard/ns#", + "@vocab": "https://w3id.org/StroemPhi/dcat_4C_ap/", + "alternative_id": { + "@type": "xsd:anyURI", + "@id": "dcterms:identifier" }, - "birth_date": { - "@type": "xsd:date", - "@id": "schema:birthDate" + "inchi": { + "@type": "@id", + "@id": "inchi" }, - "entries": { + "inchikey": { "@type": "@id", - "@id": "entries" + "@id": "inchikey" }, - "description": { - "@id": "schema:description" + "iupac_name": { + "@type": "@id", + "@id": "iupac_name" }, "id": "@id", + "from_CV": { + "@id": "schema:inDefinedTermSet" + }, + "description": { + "@id": "dcterms:description" + }, + "evaluated_entity": { + "@type": "@id", + "@id": "prov:used" + }, + "has_attribute": { + "@type": "@id", + "@id": "dcterms:relation" + }, + "has_dataset": { + "@type": "@id", + "@id": "dcat:dataset" + }, + "has_part": { + "@id": "dcterms:hasPart" + }, + "has_setting": { + "@type": "@id", + "@id": "has_setting" + }, + "has_unit": { + "@id": "has_unit" + }, + "has_value": { + "@id": "prov:value" + }, "name": { - "@id": "schema:name" + "@id": "dcterms:title" + }, + "applicable_unit": { + "@id": "qudt:applicableUnit" + }, + "has_quantity_kind": { + "@id": "qudt:hasQuantityKind" + }, + "type": { + "@id": "rdf:type" + }, + "used_hardware": { + "@type": "@id", + "@id": "prov:used" + }, + "used_software": { + "@type": "@id", + "@id": "prov:used" + }, + "was_generated_by": { + "@type": "@id", + "@id": "was_generated_by" + }, + "Attribute": { + "@id": "IAO:0000030" + }, + "AttributeKind": { + "@id": "qudt:QuantityKind" }, - "primary_email": { - "@id": "schema:email" + "ChemicalReaction": { + "@id": "RXNO:0000329" }, - "vital_status": { - "@context": { - "text": "skos:notation", - "description": "skos:prefLabel", - "meaning": "@id" - }, - "@id": "vital_status" + "ChemicalSubstance": { + "@id": "CHEBI:59999" }, "Dataset": { - "@id": "Dataset" + "@id": "dcat:Dataset" }, "DatasetCollection": { - "@id": "DatasetCollection" + "@id": "dcat:Catalog" + }, + "DefinedTerm": { + "@id": "schema:DefinedTerm" + }, + "EntityOfInterest": { + "@id": "prov:Entity" + }, + "Environment": { + "@id": "prov:Entity" + }, + "HardwareTool": { + "@id": "HardwareTool" + }, + "InChi": { + "@id": "CHEMINF:000113" + }, + "InChIKey": { + "@id": "CHEMINF:000059" + }, + "IUPACName": { + "@id": "CHEMINF:000107" + }, + "Laboratory": { + "@id": "prov:Entity" + }, + "NMRSpectroscopy": { + "@id": "CHMO:0000613" + }, + "PlanSpecification": { + "@id": "prov:Entity" + }, + "QuantifiableAttribute": { + "@id": "qudt:Quantity" + }, + "ResearchActivity": { + "@id": "prov:Activity" + }, + "ResearchActivitySpecification": { + "@id": "prov:Entity" + }, + "SettingDatum": { + "@id": "IAO:0000140" + }, + "SoftwareTool": { + "@id": "SoftwareTool" + }, + "Tool": { + "@id": "prov:Entity" }, - "NamedThing": { - "@id": "schema:Thing" + "Unit": { + "@id": "qudt:Unit" } } } diff --git a/project/jsonld/dcat_4c_ap.jsonld b/project/jsonld/dcat_4c_ap.jsonld index 73762bc..39618ca 100644 --- a/project/jsonld/dcat_4c_ap.jsonld +++ b/project/jsonld/dcat_4c_ap.jsonld @@ -1,19 +1,21 @@ { "name": "dcat-4C-ap", "description": "This is an extension of the DCAT Application Profile in LinkML. It is intended to be used by NFDI4Chem & NFDI 4Cat as a core that can further be extended in profiles to provide domain specific metadata for a dataset.", - "title": "dcat-4C-ap", + "title": "DCAT-4C-AP", "see_also": [ - "https://StroemPhi.github.io/dcat-4C-ap" + "https://StroemPhi.github.io/dcat-NFDI-ap", + "https://github.com/HendrikBorgelt/DCAT-ap_as_LinkML_template/blob/main/src/dcatlinkml/schema/dcatlinkml.yaml", + "https://gitlab.com/opensourcelab/scientificdata/scidats/-/blob/feature/linkml-schemata/schemata/metadata_model_scidats_dcat_ap.yaml?ref_type=heads" ], "id": "https://w3id.org/StroemPhi/dcat-4C-ap", "imports": [ "linkml:types" ], - "license": "MIT", + "license": "CC-BY 4.0", "prefixes": [ { - "prefix_prefix": "dcat_4c_ap", - "prefix_reference": "https://w3id.org/StroemPhi/dcat-4C-ap/" + "prefix_prefix": "nfdi", + "prefix_reference": "https://w3id.org/StroemPhi/dcat_4C_ap/" }, { "prefix_prefix": "linkml", @@ -21,22 +23,114 @@ }, { "prefix_prefix": "biolink", - "prefix_reference": "https://w3id.org/biolink/" + "prefix_reference": "https://w3id.org/biolink/vocab/" }, { "prefix_prefix": "schema", "prefix_reference": "http://schema.org/" }, + { + "prefix_prefix": "dcterms", + "prefix_reference": "http://purl.org/dc/terms/" + }, + { + "prefix_prefix": "dcat", + "prefix_reference": "http://www.w3.org/ns/dcat#" + }, + { + "prefix_prefix": "prov", + "prefix_reference": "http://www.w3.org/ns/prov#" + }, + { + "prefix_prefix": "sosa", + "prefix_reference": "http://www.w3.org/ns/sosa/" + }, + { + "prefix_prefix": "vcard", + "prefix_reference": "http://www.w3.org/2006/vcard/ns#" + }, + { + "prefix_prefix": "rdf", + "prefix_reference": "http://www.w3.org/1999/02/22-rdf-syntax-ns#" + }, + { + "prefix_prefix": "rdfs", + "prefix_reference": "http://www.w3.org/2000/01/rdf-schema#" + }, + { + "prefix_prefix": "owl", + "prefix_reference": "http://www.w3.org/2002/07/owl#" + }, + { + "prefix_prefix": "skos", + "prefix_reference": "http://www.w3.org/2004/02/skos/core#" + }, + { + "prefix_prefix": "foaf", + "prefix_reference": "http://xmlns.com/foaf/0.1/" + }, + { + "prefix_prefix": "qudt", + "prefix_reference": "http://qudt.org/schema/qudt/" + }, + { + "prefix_prefix": "RO", + "prefix_reference": "http://purl.obolibrary.org/obo/RO_" + }, { "prefix_prefix": "PATO", "prefix_reference": "http://purl.obolibrary.org/obo/PATO_" }, { - "prefix_prefix": "example", - "prefix_reference": "https://example.org/" + "prefix_prefix": "OBI", + "prefix_reference": "http://purl.obolibrary.org/obo/OBI_" + }, + { + "prefix_prefix": "IAO", + "prefix_reference": "http://purl.obolibrary.org/obo/IAO_" + }, + { + "prefix_prefix": "CHEBI", + "prefix_reference": "http://purl.obolibrary.org/obo/CHEBI_" + }, + { + "prefix_prefix": "CHMO", + "prefix_reference": "http://purl.obolibrary.org/obo/CHMO_" + }, + { + "prefix_prefix": "BFO", + "prefix_reference": "http://purl.obolibrary.org/obo/BFO_" + }, + { + "prefix_prefix": "T4FS", + "prefix_reference": "http://purl.obolibrary.org/obo/T4FS_" + }, + { + "prefix_prefix": "FOODON", + "prefix_reference": "http://purl.obolibrary.org/obo/FOODON_" + }, + { + "prefix_prefix": "CHEMINF", + "prefix_reference": "http://semanticscience.org/resource/CHEMINF_" + }, + { + "prefix_prefix": "ex", + "prefix_reference": "http://example.org/" + }, + { + "prefix_prefix": "NCIT", + "prefix_reference": "http://purl.obolibrary.org/obo/NCIT_" + }, + { + "prefix_prefix": "SIO", + "prefix_reference": "http://semanticscience.org/resource/SIO_" + }, + { + "prefix_prefix": "doi", + "prefix_reference": "https://doi.org/" } ], - "default_prefix": "dcat_4c_ap", + "default_prefix": "nfdi", "default_range": "string", "types": [ { @@ -350,247 +444,1357 @@ ], "enums": [ { - "name": "PersonStatus", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/PersonStatus", + "name": "NMRSpectroscopyEnum", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/NMRSpectroscopyEnum", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "permissible_values": [ - { - "text": "ALIVE", - "description": "the person is living", - "meaning": "PATO:0001421" - }, - { - "text": "DEAD", - "description": "the person is deceased", - "meaning": "PATO:0001422" - }, + "minus": [ { - "text": "UNKNOWN", - "description": "the vital status is not known", - "todos": [ - "map this to an ontology" + "permissible_values": [ + { + "text": "root_node", + "meaning": "CHMO:0000613" + } ] } + ], + "reachable_from": { + "source_ontology": "bioregistry:chmo", + "source_nodes": [ + "CHMO:0000613" + ], + "relationship_types": [ + "rdfs:subClassOf" + ] + } + }, + { + "name": "EntityOfInterestTypeEnum", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/EntityOfInterestTypeEnum", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "permissible_values": [ + { + "text": "Chemical Substance", + "meaning": "CHEBI:59999" + } ] + }, + { + "name": "ResearchActivityTypeEnum", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/ResearchActivityTypeEnum", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap" } ], "slots": [ { - "name": "id", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/id", - "description": "A unique identifier for a thing", + "name": "type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The slot to specify the rdf:type of an entity according to a controlled vocabulary.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "http://schema.org/identifier" + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" ], - "slot_uri": "http://schema.org/identifier", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "owner": "Attribute", + "domain_of": [ + "ResearchActivity", + "EntityOfInterest", + "Tool", + "Environment", + "PlanSpecification", + "Attribute" + ], + "range": "string", + "recommended": true, + "@type": "SlotDefinition" + }, + { + "name": "alternative_id", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/alternative_id", + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/identifier" + ], + "slot_uri": "http://purl.org/dc/terms/identifier", + "owner": "Attribute", + "domain_of": [ + "DefinedTerm", + "Dataset", + "ResearchActivity", + "EntityOfInterest", + "Tool", + "Environment", + "Attribute" + ], + "range": "uriorcurie", + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "id", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/id", + "description": "The slot to specify the canonical unique identifier of an entity.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/id", "identifier": true, - "owner": "NamedThing", + "owner": "EntityOfInterest", "domain_of": [ - "NamedThing" + "DefinedTerm", + "Dataset", + "EntityOfInterest" ], "range": "uriorcurie", "required": true, "@type": "SlotDefinition" }, + { + "name": "description", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/description", + "description": "The slot to provide a free-text account of a thing.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/description" + ], + "slot_uri": "http://purl.org/dc/terms/description", + "owner": "Attribute", + "domain_of": [ + "Dataset", + "ResearchActivity", + "EntityOfInterest", + "Tool", + "Environment", + "PlanSpecification", + "Attribute" + ], + "range": "string", + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, { "name": "name", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/name", - "description": "A human-readable name for a thing", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/name", + "description": "The slot to specify the label, name or title of a thing.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ + "http://purl.org/dc/terms/title" + ], + "exact_mappings": [ + "http://www.w3.org/2000/01/rdf-schema#label", + "http://www.w3.org/2004/02/skos/core#title", "http://schema.org/name" ], - "slot_uri": "http://schema.org/name", - "owner": "NamedThing", + "slot_uri": "http://purl.org/dc/terms/title", + "owner": "Attribute", "domain_of": [ - "NamedThing" + "DefinedTerm", + "Dataset", + "ResearchActivity", + "EntityOfInterest", + "Tool", + "Environment", + "PlanSpecification", + "Attribute" ], "range": "string", + "multivalued": true, + "inlined_as_list": true, "@type": "SlotDefinition" }, { - "name": "description", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/description", - "description": "A human-readable description for a thing", + "name": "was_generated_by", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/was_generated_by", + "description": "The slot to provide the ResearchActivity that created a Dataset.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "exact_mappings": [ + "http://www.w3.org/ns/prov#wasGeneratedBy" + ], + "close_mappings": [ + "http://schema.org/measurementTechnique" + ], + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/was_generated_by", + "owner": "Dataset", + "domain_of": [ + "Dataset" + ], + "range": "ResearchActivity", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "has_dataset", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_dataset", + "description": "The slot to list the datasets of a catalog.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/dcat#dataset" + ], + "slot_uri": "http://www.w3.org/ns/dcat#dataset", + "owner": "DatasetCollection", + "domain_of": [ + "DatasetCollection" + ], + "range": "Dataset", + "recommended": true, + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "evaluated_entity", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/evaluated_entity", + "description": "The slot to specify the entity of interest that was evaluated.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/prov#used" + ], + "slot_uri": "http://www.w3.org/ns/prov#used", + "owner": "ResearchActivity", + "domain_of": [ + "ResearchActivity" + ], + "range": "EntityOfInterest", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "used_hardware", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/used_hardware", + "description": "The slot to specify the hardware that was used.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/prov#used" + ], + "slot_uri": "http://www.w3.org/ns/prov#used", + "owner": "ResearchActivity", + "domain_of": [ + "ResearchActivity" + ], + "range": "HardwareTool", + "recommended": true, + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "used_software", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/used_software", + "description": "The slot to specify the hardware that was used.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/prov#used" + ], + "slot_uri": "http://www.w3.org/ns/prov#used", + "owner": "ResearchActivity", + "domain_of": [ + "ResearchActivity" + ], + "range": "SoftwareTool", + "recommended": true, + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "has_part", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_part", + "description": "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "http://schema.org/description" + "http://purl.org/dc/terms/hasPart" ], - "slot_uri": "http://schema.org/description", - "owner": "NamedThing", + "slot_uri": "http://purl.org/dc/terms/hasPart", + "owner": "Tool", "domain_of": [ - "NamedThing" + "ResearchActivity", + "EntityOfInterest", + "Tool" ], "range": "string", "@type": "SlotDefinition" }, { - "name": "primary_email", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/primary_email", - "description": "The main email address of a person", + "name": "has_attribute", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_attribute", + "description": "The slot to related an attribute to an entity of interest, tool or environment.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "http://schema.org/email" + "http://purl.org/dc/terms/relation" ], - "slot_uri": "http://schema.org/email", - "owner": "Dataset", + "exact_mappings": [ + "http://purl.obolibrary.org/obo/RO_0000053", + "http://semanticscience.org/resource/SIO_000223" + ], + "slot_uri": "http://purl.org/dc/terms/relation", + "owner": "Environment", "domain_of": [ - "Dataset" + "EntityOfInterest", + "Tool", + "Environment" + ], + "range": "Attribute", + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "has_setting", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_setting", + "description": "The slot to specify the setting of a hardware or software tool.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "is_a": "has_attribute", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_setting", + "owner": "Tool", + "domain_of": [ + "Tool" + ], + "range": "SettingDatum", + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "has_value", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_value", + "description": "A slot to provide the value of an attribute.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/prov#value" ], + "slot_uri": "http://www.w3.org/ns/prov#value", + "owner": "Attribute", + "domain_of": [ + "Attribute" + ], + "range": "string", + "@type": "SlotDefinition" + }, + { + "name": "has_unit", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_unit", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_unit", "range": "string", "@type": "SlotDefinition" }, { - "name": "birth_date", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/birth_date", - "description": "Date on which a person is born", + "name": "definedTerm__from_CV", + "description": "The name of the controlled vocabulary.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "http://schema.org/birthDate" + "http://schema.org/inDefinedTermSet" ], - "slot_uri": "http://schema.org/birthDate", - "owner": "Dataset", + "slot_uri": "http://schema.org/inDefinedTermSet", + "alias": "from_CV", + "owner": "DefinedTerm", "domain_of": [ - "Dataset" + "DefinedTerm" ], - "range": "date", + "range": "string", "@type": "SlotDefinition" }, { - "name": "age_in_years", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/age_in_years", - "description": "Number of years since birth", + "name": "chemicalSubstance__inchikey", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "slot_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/age_in_years", - "owner": "Dataset", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/inchikey", + "alias": "inchikey", + "owner": "ChemicalSubstance", "domain_of": [ - "Dataset" + "ChemicalSubstance" ], - "range": "integer", + "range": "InChIKey", + "inlined": true, "@type": "SlotDefinition" }, { - "name": "vital_status", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/vital_status", - "description": "living or dead status", + "name": "chemicalSubstance__inchi", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "slot_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/vital_status", - "owner": "Dataset", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/inchi", + "alias": "inchi", + "owner": "ChemicalSubstance", "domain_of": [ - "Dataset" + "ChemicalSubstance" ], - "range": "PersonStatus", + "range": "InChi", + "inlined": true, "@type": "SlotDefinition" }, { - "name": "datasetCollection__entries", + "name": "chemicalSubstance__iupac_name", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "slot_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/entries", - "alias": "entries", - "owner": "DatasetCollection", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/iupac_name", + "alias": "iupac_name", + "owner": "ChemicalSubstance", "domain_of": [ - "DatasetCollection" + "ChemicalSubstance" ], - "range": "Dataset", - "multivalued": true, + "range": "IUPACName", "inlined": true, "@type": "SlotDefinition" }, { - "name": "Dataset_primary_email", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/primary_email", - "description": "The main email address of a person", + "name": "quantifiableAttribute__has_quantity_kind", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "http://schema.org/email" + "http://qudt.org/schema/qudt/hasQuantityKind" ], - "is_a": "primary_email", - "domain": "Dataset", - "slot_uri": "http://schema.org/email", - "alias": "primary_email", - "owner": "Dataset", + "slot_uri": "http://qudt.org/schema/qudt/hasQuantityKind", + "alias": "has_quantity_kind", + "owner": "QuantifiableAttribute", "domain_of": [ - "Dataset" + "QuantifiableAttribute" ], - "is_usage_slot": true, - "usage_slot_name": "primary_email", "range": "string", - "pattern": "^\\S+@[\\S+\\.]+\\S+", "@type": "SlotDefinition" - } - ], - "classes": [ + }, { - "name": "NamedThing", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/NamedThing", - "description": "A generic grouping for any identifiable entity", + "name": "quantifiableAttribute__applicable_unit", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", "mappings": [ - "schema:Thing" + "http://qudt.org/schema/qudt/applicableUnit" ], - "slots": [ - "id", - "name", - "description" + "slot_uri": "http://qudt.org/schema/qudt/applicableUnit", + "alias": "applicable_unit", + "owner": "QuantifiableAttribute", + "domain_of": [ + "QuantifiableAttribute" ], - "slot_usage": {}, - "class_uri": "http://schema.org/Thing", - "@type": "ClassDefinition" + "range": "string", + "@type": "SlotDefinition" }, { - "name": "Dataset", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/Dataset", - "description": "Represents a Dataset", + "name": "DefinedTerm_name", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/name", + "description": "The slot to specify the label, name or title of a thing.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "is_a": "NamedThing", - "slots": [ - "id", - "name", - "description", - "Dataset_primary_email", - "birth_date", - "age_in_years", - "vital_status" + "mappings": [ + "http://schema.org/name" ], - "slot_usage": {}, - "class_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/Dataset", - "@type": "ClassDefinition" + "exact_mappings": [ + "http://www.w3.org/2000/01/rdf-schema#label", + "http://www.w3.org/2004/02/skos/core#title", + "http://schema.org/name" + ], + "is_a": "name", + "domain": "DefinedTerm", + "slot_uri": "http://schema.org/name", + "alias": "name", + "owner": "DefinedTerm", + "domain_of": [ + "DefinedTerm" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" }, { - "name": "DatasetCollection", - "definition_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/DatasetCollection", - "description": "A holder for Dataset objects", + "name": "DefinedTerm_alternative_id", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/alternative_id", + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", - "slots": [ - "datasetCollection__entries" + "mappings": [ + "http://schema.org/identifier" ], - "slot_usage": {}, - "attributes": [ - { - "name": "entries", - "range": "Dataset", - "multivalued": true, - "inlined": true, - "@type": "SlotDefinition" - } + "is_a": "alternative_id", + "domain": "DefinedTerm", + "slot_uri": "http://schema.org/identifier", + "alias": "alternative_id", + "owner": "DefinedTerm", + "domain_of": [ + "DefinedTerm" ], - "class_uri": "https://w3id.org/StroemPhi/dcat-4C-ap/DatasetCollection", - "tree_root": true, + "is_usage_slot": true, + "usage_slot_name": "alternative_id", + "range": "uriorcurie", + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "Dataset_name", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/name", + "description": "The label, name or title of a Dataset.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/title" + ], + "exact_mappings": [ + "http://www.w3.org/2000/01/rdf-schema#label", + "http://www.w3.org/2004/02/skos/core#title", + "http://schema.org/name" + ], + "is_a": "name", + "domain": "Dataset", + "slot_uri": "http://purl.org/dc/terms/title", + "alias": "name", + "owner": "Dataset", + "domain_of": [ + "Dataset" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "required": true, + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "Dataset_description", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/description", + "description": "A free-text account of a Dataset.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/description" + ], + "is_a": "description", + "domain": "Dataset", + "slot_uri": "http://purl.org/dc/terms/description", + "alias": "description", + "owner": "Dataset", + "domain_of": [ + "Dataset" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "required": true, + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "Dataset_was_generated_by", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/was_generated_by", + "description": "The slot to provide the ResearchActivity that created a Dataset.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "exact_mappings": [ + "http://www.w3.org/ns/prov#wasGeneratedBy" + ], + "close_mappings": [ + "http://schema.org/measurementTechnique" + ], + "is_a": "was_generated_by", + "domain": "Dataset", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/was_generated_by", + "alias": "was_generated_by", + "owner": "Dataset", + "domain_of": [ + "Dataset" + ], + "is_usage_slot": true, + "usage_slot_name": "was_generated_by", + "range": "ResearchActivity", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "DatasetCollection_id", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/id", + "description": "The unique identifier of a Catalog.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "is_a": "id", + "domain": "DatasetCollection", + "slot_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/id", + "identifier": true, + "alias": "id", + "owner": "DatasetCollection", + "domain_of": [ + "DatasetCollection" + ], + "is_usage_slot": true, + "usage_slot_name": "id", + "range": "uriorcurie", + "required": true, + "@type": "SlotDefinition" + }, + { + "name": "DatasetCollection_name", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/name", + "description": "The name of a DatasetCollection.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/title" + ], + "exact_mappings": [ + "http://www.w3.org/2000/01/rdf-schema#label", + "http://www.w3.org/2004/02/skos/core#title", + "http://schema.org/name" + ], + "is_a": "Dataset_name", + "domain": "DatasetCollection", + "slot_uri": "http://purl.org/dc/terms/title", + "alias": "name", + "owner": "DatasetCollection", + "domain_of": [ + "DatasetCollection" + ], + "is_usage_slot": true, + "usage_slot_name": "name", + "range": "string", + "required": true, + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "DatasetCollection_description", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/description", + "description": "A free-text account of a DatasetCollection.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/description" + ], + "is_a": "Dataset_description", + "domain": "DatasetCollection", + "slot_uri": "http://purl.org/dc/terms/description", + "alias": "description", + "owner": "DatasetCollection", + "domain_of": [ + "DatasetCollection" + ], + "is_usage_slot": true, + "usage_slot_name": "description", + "range": "string", + "required": true, + "multivalued": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "ResearchActivity_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of the ResearchActivity provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "ResearchActivity", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "ResearchActivity", + "domain_of": [ + "ResearchActivity" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "NMRSpectroscopy_evaluated_entity", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/evaluated_entity", + "description": "The slot to specify the entity of interest that was evaluated.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/ns/prov#used" + ], + "is_a": "evaluated_entity", + "domain": "NMRSpectroscopy", + "slot_uri": "http://www.w3.org/ns/prov#used", + "alias": "evaluated_entity", + "owner": "NMRSpectroscopy", + "domain_of": [ + "NMRSpectroscopy" + ], + "is_usage_slot": true, + "usage_slot_name": "evaluated_entity", + "range": "ChemicalSubstance", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "NMRSpectroscopy_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of NMR Spectroscopy according provided as CURIE of a subclass of CHMO:0000613.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "ResearchActivity_type", + "domain": "NMRSpectroscopy", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "NMRSpectroscopy", + "domain_of": [ + "NMRSpectroscopy" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "EntityOfInterest_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of the EntityOfInterest provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "EntityOfInterest", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "EntityOfInterest", + "domain_of": [ + "EntityOfInterest" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Tool_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of the Tool provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "Tool", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "Tool", + "domain_of": [ + "Tool" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Tool_has_part", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/has_part", + "description": "The slot to specify parts of a tool.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://purl.org/dc/terms/hasPart" + ], + "is_a": "has_part", + "domain": "Tool", + "slot_uri": "http://purl.org/dc/terms/hasPart", + "alias": "has_part", + "owner": "Tool", + "domain_of": [ + "Tool" + ], + "is_usage_slot": true, + "usage_slot_name": "has_part", + "range": "Tool", + "multivalued": true, + "inlined": true, + "inlined_as_list": true, + "@type": "SlotDefinition" + }, + { + "name": "Environment_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of Environment provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "Environment", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "Environment", + "domain_of": [ + "Environment" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "PlanSpecification_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The type of PlanSpecification provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "PlanSpecification", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "PlanSpecification", + "domain_of": [ + "PlanSpecification" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "Attribute_type", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/type", + "description": "The slot to specify the type of Attribute provided as a DefinedTerm.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" + ], + "is_a": "type", + "domain": "Attribute", + "slot_uri": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + "alias": "type", + "owner": "Attribute", + "domain_of": [ + "Attribute" + ], + "is_usage_slot": true, + "usage_slot_name": "type", + "range": "DefinedTerm", + "recommended": true, + "inlined": true, + "@type": "SlotDefinition" + } + ], + "classes": [ + { + "name": "DefinedTerm", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/DefinedTerm", + "description": "A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "schema:DefinedTerm" + ], + "slots": [ + "id", + "DefinedTerm_alternative_id", + "DefinedTerm_name", + "definedTerm__from_CV" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "from_CV", + "description": "The name of the controlled vocabulary.", + "slot_uri": "schema:inDefinedTermSet", + "@type": "SlotDefinition" + } + ], + "class_uri": "http://schema.org/DefinedTerm", + "@type": "ClassDefinition" + }, + { + "name": "Dataset", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Dataset", + "implements": [ + "dcat:Dataset" + ], + "description": "A collection of data, published or curated by a single agent, and available for access or download in one or more representations.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "dcat:Dataset" + ], + "slots": [ + "id", + "Dataset_name", + "Dataset_description", + "alternative_id", + "Dataset_was_generated_by" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/dcat#Dataset", + "tree_root": true, + "@type": "ClassDefinition" + }, + { + "name": "DatasetCollection", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/DatasetCollection", + "description": "A curated collection of metadata about data resources.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "dcat:Catalog" + ], + "is_a": "Dataset", + "slots": [ + "alternative_id", + "Dataset_was_generated_by", + "has_dataset", + "DatasetCollection_id", + "DatasetCollection_name", + "DatasetCollection_description" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/dcat#Catalog", + "@type": "ClassDefinition" + }, + { + "name": "ResearchActivity", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/ResearchActivity", + "description": "An activity (process) that has the objective to produce information about an entity by evaluating it.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Activity" + ], + "narrow_mappings": [ + "NCIT:C25598", + "sosa:Observation", + "OBI:0000070" + ], + "abstract": true, + "slots": [ + "name", + "description", + "alternative_id", + "ResearchActivity_type", + "evaluated_entity", + "used_hardware", + "used_software", + "has_part" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Activity", + "@type": "ClassDefinition" + }, + { + "name": "NMRSpectroscopy", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/NMRSpectroscopy", + "description": "Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "CHMO:0000613" + ], + "is_a": "ResearchActivity", + "slots": [ + "name", + "description", + "alternative_id", + "used_hardware", + "used_software", + "has_part", + "NMRSpectroscopy_evaluated_entity", + "NMRSpectroscopy_type" + ], + "slot_usage": {}, + "class_uri": "http://purl.obolibrary.org/obo/CHMO_0000613", + "@type": "ClassDefinition" + }, + { + "name": "EntityOfInterest", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/EntityOfInterest", + "description": "Something that is being evaluated in a scientific process.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "slots": [ + "id", + "name", + "description", + "alternative_id", + "EntityOfInterest_type", + "has_attribute", + "has_part" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "ChemicalReaction", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/ChemicalReaction", + "description": "An experimental procedure with the aim of producing a portion of a given compound or mixture.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "RXNO:0000329" + ], + "is_a": "EntityOfInterest", + "slots": [ + "id", + "name", + "description", + "alternative_id", + "EntityOfInterest_type", + "has_attribute", + "has_part" + ], + "slot_usage": {}, + "class_uri": "http://example.org/UNKNOWN/RXNO/0000329", + "@type": "ClassDefinition" + }, + { + "name": "ChemicalSubstance", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/ChemicalSubstance", + "description": "A chemical substance that is being evaluated in a scientific process.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "CHEBI:59999" + ], + "is_a": "EntityOfInterest", + "slots": [ + "id", + "name", + "description", + "alternative_id", + "EntityOfInterest_type", + "has_attribute", + "has_part", + "chemicalSubstance__inchikey", + "chemicalSubstance__inchi", + "chemicalSubstance__iupac_name" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "inchikey", + "range": "InChIKey", + "inlined": true, + "@type": "SlotDefinition" + }, + { + "name": "inchi", + "range": "InChi", + "@type": "SlotDefinition" + }, + { + "name": "iupac_name", + "range": "IUPACName", + "@type": "SlotDefinition" + } + ], + "class_uri": "http://purl.obolibrary.org/obo/CHEBI_59999", + "@type": "ClassDefinition" + }, + { + "name": "Tool", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Tool", + "description": "A entity with a certain function used within a scientific activity.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "broad_mappings": [ + "prov:Entity" + ], + "slots": [ + "name", + "description", + "alternative_id", + "Tool_type", + "Tool_has_part", + "has_attribute", + "has_setting" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "HardwareTool", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/HardwareTool", + "description": "A hardware with a certain function.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "aliases": [ + "Device" + ], + "is_a": "Tool", + "slots": [ + "name", + "description", + "alternative_id", + "Tool_type", + "Tool_has_part", + "has_attribute", + "has_setting" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/HardwareTool", + "@type": "ClassDefinition" + }, + { + "name": "SoftwareTool", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/SoftwareTool", + "description": "A software with a certain function.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "is_a": "Tool", + "slots": [ + "name", + "description", + "alternative_id", + "Tool_type", + "Tool_has_part", + "has_attribute", + "has_setting" + ], + "slot_usage": {}, + "class_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/SoftwareTool", + "@type": "ClassDefinition" + }, + { + "name": "Environment", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Environment", + "description": "The environment in which the dataset creating Observation took place (e.g. a lab).", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "slots": [ + "name", + "description", + "alternative_id", + "Environment_type", + "has_attribute" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "Laboratory", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Laboratory", + "description": "A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "is_a": "Environment", + "slots": [ + "name", + "description", + "alternative_id", + "Environment_type", + "has_attribute" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "PlanSpecification", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/PlanSpecification", + "description": "\"A piece of information that specifies: \n a) how an activity has to be carried out by its agents and \n b) the attributes of the passive activity participants in terms of their presence and magnitude.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "slots": [ + "name", + "description", + "PlanSpecification_type" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "ResearchActivitySpecification", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/ResearchActivitySpecification", + "description": "A PlanSpecification that specifies a ResearchActivity.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "prov:Entity" + ], + "is_a": "PlanSpecification", + "slots": [ + "name", + "description", + "PlanSpecification_type" + ], + "slot_usage": {}, + "class_uri": "http://www.w3.org/ns/prov#Entity", + "@type": "ClassDefinition" + }, + { + "name": "Attribute", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Attribute", + "description": "A piece of information that is attributed to an entity of interest, tool or environment.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "IAO:0000030" + ], + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value" + ], + "slot_usage": {}, + "class_uri": "http://purl.obolibrary.org/obo/IAO_0000030", + "@type": "ClassDefinition" + }, + { + "name": "QuantifiableAttribute", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/QuantifiableAttribute", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "qudt:Quantity" + ], + "is_a": "Attribute", + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value", + "quantifiableAttribute__has_quantity_kind", + "quantifiableAttribute__applicable_unit" + ], + "slot_usage": {}, + "attributes": [ + { + "name": "has_quantity_kind", + "slot_uri": "qudt:hasQuantityKind", + "@type": "SlotDefinition" + }, + { + "name": "applicable_unit", + "slot_uri": "qudt:applicableUnit", + "@type": "SlotDefinition" + } + ], + "class_uri": "http://qudt.org/schema/qudt/Quantity", + "@type": "ClassDefinition" + }, + { + "name": "AttributeKind", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/AttributeKind", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "qudt:QuantityKind" + ], + "slot_usage": {}, + "class_uri": "http://qudt.org/schema/qudt/QuantityKind", + "@type": "ClassDefinition" + }, + { + "name": "Unit", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/Unit", + "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "qudt:Unit" + ], + "slot_usage": {}, + "class_uri": "http://qudt.org/schema/qudt/Unit", + "@type": "ClassDefinition" + }, + { + "name": "SettingDatum", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/SettingDatum", + "description": "An attribute that specifies the configuration of a tool.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "IAO:0000140" + ], + "is_a": "Attribute", + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value" + ], + "slot_usage": {}, + "class_uri": "http://purl.obolibrary.org/obo/IAO_0000140", + "@type": "ClassDefinition" + }, + { + "name": "InChIKey", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/InChIKey", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "CHEMINF:000059" + ], + "is_a": "Attribute", + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value" + ], + "slot_usage": {}, + "class_uri": "http://semanticscience.org/resource/CHEMINF_000059", + "@type": "ClassDefinition" + }, + { + "name": "InChi", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/InChi", + "description": "A structure descriptor which conforms to the InChI format specification.", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "CHEMINF:000113" + ], + "is_a": "Attribute", + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value" + ], + "slot_usage": {}, + "class_uri": "http://semanticscience.org/resource/CHEMINF_000113", + "@type": "ClassDefinition" + }, + { + "name": "IUPACName", + "definition_uri": "https://w3id.org/StroemPhi/dcat_4C_ap/IUPACName", + "description": "An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC).", + "from_schema": "https://w3id.org/StroemPhi/dcat-4C-ap", + "mappings": [ + "CHEMINF:000107" + ], + "is_a": "Attribute", + "slots": [ + "name", + "description", + "alternative_id", + "Attribute_type", + "has_value" + ], + "slot_usage": {}, + "class_uri": "http://semanticscience.org/resource/CHEMINF_000107", "@type": "ClassDefinition" } ], "metamodel_version": "1.7.0", "source_file": "dcat_4c_ap.yaml", - "source_file_date": "2024-10-25T15:39:02", - "source_file_size": 2360, - "generation_date": "2024-10-25T15:40:14", + "source_file_date": "2024-10-25T15:42:52", + "source_file_size": 13650, + "generation_date": "2024-10-25T15:45:48", "@type": "SchemaDefinition", "@context": [ "project/jsonld/dcat_4c_ap.context.jsonld", "https://w3id.org/linkml/types.context.jsonld", { - "@base": "https://w3id.org/StroemPhi/dcat-4C-ap/" + "@base": "https://w3id.org/StroemPhi/dcat_4C_ap/" } ] } diff --git a/project/jsonschema/dcat_4c_ap.schema.json b/project/jsonschema/dcat_4c_ap.schema.json index 2fbf238..b09aa1b 100644 --- a/project/jsonschema/dcat_4c_ap.schema.json +++ b/project/jsonschema/dcat_4c_ap.schema.json @@ -1,205 +1,1363 @@ { "$defs": { - "Dataset": { + "Attribute": { "additionalProperties": false, - "description": "Represents a Dataset", + "description": "A piece of information that is attributed to an entity of interest, tool or environment.", "properties": { - "age_in_years": { - "description": "Number of years since birth", + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, "type": [ - "integer", + "array", "null" ] }, - "birth_date": { - "description": "Date on which a person is born", - "format": "date", + "has_value": { + "description": "A slot to provide the value of an attribute.", "type": [ "string", "null" ] }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "Attribute", + "type": "object" + }, + "AttributeKind": { + "additionalProperties": false, + "description": "", + "title": "AttributeKind", + "type": "object" + }, + "ChemicalReaction": { + "additionalProperties": false, + "description": "An experimental procedure with the aim of producing a portion of a given compound or mixture.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, "description": { - "description": "A human-readable description for a thing", + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, "type": [ - "string", + "array", "null" ] }, - "id": { - "description": "A unique identifier for a thing", - "type": "string" + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] }, - "name": { - "description": "A human-readable name for a thing", + "has_part": { + "description": "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part.", "type": [ "string", "null" ] }, - "primary_email": { - "description": "The main email address of a person", - "pattern": "^\\S+@[\\S+\\.]+\\S+", + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", + "type": "string" + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, "type": [ - "string", + "array", "null" ] }, - "vital_status": { - "$ref": "#/$defs/PersonStatus", - "description": "living or dead status" + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the EntityOfInterest provided as a DefinedTerm." } }, "required": [ "id" ], - "title": "Dataset", + "title": "ChemicalReaction", "type": "object" }, - "DatasetCollection": { + "ChemicalSubstance": { "additionalProperties": false, - "description": "A holder for Dataset objects", + "description": "A chemical substance that is being evaluated in a scientific process.", "properties": { - "entries": { - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/Dataset__identifier_optional" - }, - { - "type": "null" - } - ] + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "has_part": { + "description": "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part.", + "type": [ + "string", + "null" + ] + }, + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", + "type": "string" + }, + "inchi": { + "anyOf": [ + { + "$ref": "#/$defs/InChi" + }, + { + "type": "null" + } + ] + }, + "inchikey": { + "anyOf": [ + { + "$ref": "#/$defs/InChIKey" + }, + { + "type": "null" + } + ] + }, + "iupac_name": { + "anyOf": [ + { + "$ref": "#/$defs/IUPACName" + }, + { + "type": "null" + } + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" }, "type": [ - "object", + "array", "null" ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the EntityOfInterest provided as a DefinedTerm." } }, - "title": "DatasetCollection", + "required": [ + "id" + ], + "title": "ChemicalSubstance", "type": "object" }, - "Dataset__identifier_optional": { + "Dataset": { "additionalProperties": false, - "description": "Represents a Dataset", + "description": "A collection of data, published or curated by a single agent, and available for access or download in one or more representations.", "properties": { - "age_in_years": { - "description": "Number of years since birth", + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, "type": [ - "integer", + "array", "null" ] }, - "birth_date": { - "description": "Date on which a person is born", - "format": "date", + "description": { + "description": "A free-text account of a Dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", + "type": "string" + }, + "name": { + "description": "The label, name or title of a Dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "was_generated_by": { + "anyOf": [ + { + "$ref": "#/$defs/ResearchActivity" + }, + { + "type": "null" + } + ], + "description": "The slot to provide the ResearchActivity that created a Dataset." + } + }, + "required": [ + "id", + "name", + "description" + ], + "title": "Dataset", + "type": "object" + }, + "DatasetCollection": { + "additionalProperties": false, + "description": "A curated collection of metadata about data resources.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, "type": [ - "string", + "array", "null" ] }, "description": { - "description": "A human-readable description for a thing", + "description": "A free-text account of a DatasetCollection.", + "items": { + "type": "string" + }, + "type": "array" + }, + "has_dataset": { + "description": "The slot to list the datasets of a catalog.", + "items": { + "$ref": "#/$defs/Dataset" + }, "type": [ - "string", + "array", "null" ] }, "id": { - "description": "A unique identifier for a thing", + "description": "The unique identifier of a Catalog.", "type": "string" }, "name": { - "description": "A human-readable name for a thing", + "description": "The name of a DatasetCollection.", + "items": { + "type": "string" + }, + "type": "array" + }, + "was_generated_by": { + "anyOf": [ + { + "$ref": "#/$defs/ResearchActivity" + }, + { + "type": "null" + } + ], + "description": "The slot to provide the ResearchActivity that created a Dataset." + } + }, + "required": [ + "id", + "name", + "description" + ], + "title": "DatasetCollection", + "type": "object" + }, + "DefinedTerm": { + "additionalProperties": false, + "description": "A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "from_CV": { + "description": "The name of the controlled vocabulary.", "type": [ "string", "null" ] }, - "primary_email": { - "description": "The main email address of a person", - "pattern": "^\\S+@[\\S+\\.]+\\S+", + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", "type": [ "string", "null" ] }, - "vital_status": { - "$ref": "#/$defs/PersonStatus", - "description": "living or dead status" + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] } }, - "required": [], - "title": "Dataset", + "required": [ + "id" + ], + "title": "DefinedTerm", "type": "object" }, - "NamedThing": { + "EntityOfInterest": { "additionalProperties": false, - "description": "A generic grouping for any identifiable entity", + "description": "Something that is being evaluated in a scientific process.", "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, "description": { - "description": "A human-readable description for a thing", + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, "type": [ - "string", + "array", "null" ] }, - "id": { - "description": "A unique identifier for a thing", + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "has_part": { + "description": "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part.", "type": [ "string", "null" ] }, + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", + "type": "string" + }, "name": { - "description": "A human-readable name for a thing", + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, "type": [ - "string", + "array", "null" ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the EntityOfInterest provided as a DefinedTerm." } }, "required": [ "id" ], - "title": "NamedThing", + "title": "EntityOfInterest", "type": "object" }, - "PersonStatus": { + "EntityOfInterestTypeEnum": { "description": "", "enum": [ - "ALIVE", - "DEAD", - "UNKNOWN" + "Chemical Substance" ], - "title": "PersonStatus", + "title": "EntityOfInterestTypeEnum", "type": "string" - } - }, - "$id": "https://w3id.org/StroemPhi/dcat-4C-ap", - "$schema": "https://json-schema.org/draft/2019-09/schema", - "additionalProperties": true, - "description": "A holder for Dataset objects", - "metamodel_version": "1.7.0", - "properties": { - "entries": { - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/Dataset__identifier_optional" + }, + "Environment": { + "additionalProperties": false, + "description": "The environment in which the dataset creating Observation took place (e.g. a lab).", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" }, - { - "type": "null" - } - ] + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of Environment provided as a DefinedTerm." + } }, - "type": [ - "object", - "null" - ] + "title": "Environment", + "type": "object" + }, + "HardwareTool": { + "additionalProperties": false, + "description": "A hardware with a certain function.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "has_part": { + "description": "The slot to specify parts of a tool.", + "items": { + "$ref": "#/$defs/Tool" + }, + "type": [ + "array", + "null" + ] + }, + "has_setting": { + "description": "The slot to specify the setting of a hardware or software tool.", + "items": { + "$ref": "#/$defs/SettingDatum" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the Tool provided as a DefinedTerm." + } + }, + "title": "HardwareTool", + "type": "object" + }, + "IUPACName": { + "additionalProperties": false, + "description": "An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC).", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_value": { + "description": "A slot to provide the value of an attribute.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "IUPACName", + "type": "object" + }, + "InChIKey": { + "additionalProperties": false, + "description": "", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_value": { + "description": "A slot to provide the value of an attribute.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "InChIKey", + "type": "object" + }, + "InChi": { + "additionalProperties": false, + "description": "A structure descriptor which conforms to the InChI format specification.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_value": { + "description": "A slot to provide the value of an attribute.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "InChi", + "type": "object" + }, + "Laboratory": { + "additionalProperties": false, + "description": "A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of Environment provided as a DefinedTerm." + } + }, + "title": "Laboratory", + "type": "object" + }, + "NMRSpectroscopy": { + "additionalProperties": false, + "description": "Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "evaluated_entity": { + "anyOf": [ + { + "$ref": "#/$defs/ChemicalSubstance" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the entity of interest that was evaluated." + }, + "has_part": { + "description": "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of NMR Spectroscopy according provided as CURIE of a subclass of CHMO:0000613." + }, + "used_hardware": { + "description": "The slot to specify the hardware that was used.", + "items": { + "$ref": "#/$defs/HardwareTool" + }, + "type": [ + "array", + "null" + ] + }, + "used_software": { + "description": "The slot to specify the hardware that was used.", + "items": { + "$ref": "#/$defs/SoftwareTool" + }, + "type": [ + "array", + "null" + ] + } + }, + "title": "NMRSpectroscopy", + "type": "object" + }, + "NMRSpectroscopyEnum": { + "description": "", + "title": "NMRSpectroscopyEnum", + "type": "string" + }, + "PlanSpecification": { + "additionalProperties": false, + "description": "\"A piece of information that specifies: \n a) how an activity has to be carried out by its agents and \n b) the attributes of the passive activity participants in terms of their presence and magnitude.", + "properties": { + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of PlanSpecification provided as a DefinedTerm." + } + }, + "title": "PlanSpecification", + "type": "object" + }, + "QuantifiableAttribute": { + "additionalProperties": false, + "description": "", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "applicable_unit": { + "type": [ + "string", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_quantity_kind": { + "type": [ + "string", + "null" + ] + }, + "has_value": { + "description": "A slot to provide the value of an attribute.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "QuantifiableAttribute", + "type": "object" + }, + "ResearchActivitySpecification": { + "additionalProperties": false, + "description": "A PlanSpecification that specifies a ResearchActivity.", + "properties": { + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of PlanSpecification provided as a DefinedTerm." + } + }, + "title": "ResearchActivitySpecification", + "type": "object" + }, + "ResearchActivityTypeEnum": { + "description": "", + "title": "ResearchActivityTypeEnum", + "type": "string" + }, + "SettingDatum": { + "additionalProperties": false, + "description": "An attribute that specifies the configuration of a tool.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_value": { + "description": "A slot to provide the value of an attribute.", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The slot to specify the type of Attribute provided as a DefinedTerm." + } + }, + "title": "SettingDatum", + "type": "object" + }, + "SoftwareTool": { + "additionalProperties": false, + "description": "A software with a certain function.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "has_part": { + "description": "The slot to specify parts of a tool.", + "items": { + "$ref": "#/$defs/Tool" + }, + "type": [ + "array", + "null" + ] + }, + "has_setting": { + "description": "The slot to specify the setting of a hardware or software tool.", + "items": { + "$ref": "#/$defs/SettingDatum" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the Tool provided as a DefinedTerm." + } + }, + "title": "SoftwareTool", + "type": "object" + }, + "Tool": { + "additionalProperties": false, + "description": "A entity with a certain function used within a scientific activity.", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "The slot to provide a free-text account of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "has_attribute": { + "description": "The slot to related an attribute to an entity of interest, tool or environment.", + "items": { + "$ref": "#/$defs/Attribute" + }, + "type": [ + "array", + "null" + ] + }, + "has_part": { + "description": "The slot to specify parts of a tool.", + "items": { + "$ref": "#/$defs/Tool" + }, + "type": [ + "array", + "null" + ] + }, + "has_setting": { + "description": "The slot to specify the setting of a hardware or software tool.", + "items": { + "$ref": "#/$defs/SettingDatum" + }, + "type": [ + "array", + "null" + ] + }, + "name": { + "description": "The slot to specify the label, name or title of a thing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/$defs/DefinedTerm" + }, + { + "type": "null" + } + ], + "description": "The type of the Tool provided as a DefinedTerm." + } + }, + "title": "Tool", + "type": "object" + }, + "Unit": { + "additionalProperties": false, + "description": "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension).", + "title": "Unit", + "type": "object" + } + }, + "$id": "https://w3id.org/StroemPhi/dcat-4C-ap", + "$schema": "https://json-schema.org/draft/2019-09/schema", + "additionalProperties": true, + "description": "A collection of data, published or curated by a single agent, and available for access or download in one or more representations.", + "metamodel_version": "1.7.0", + "properties": { + "alternative_id": { + "description": "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "description": { + "description": "A free-text account of a Dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "The slot to specify the canonical unique identifier of an entity.", + "type": "string" + }, + "name": { + "description": "The label, name or title of a Dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "was_generated_by": { + "anyOf": [ + { + "$ref": "#/$defs/ResearchActivity" + }, + { + "type": "null" + } + ], + "description": "The slot to provide the ResearchActivity that created a Dataset." } }, + "required": [ + "id", + "name", + "description" + ], "title": "dcat-4C-ap", "type": "object", "version": null diff --git a/project/owl/dcat_4c_ap.owl.ttl b/project/owl/dcat_4c_ap.owl.ttl index 34baf58..a55dd1b 100644 --- a/project/owl/dcat_4c_ap.owl.ttl +++ b/project/owl/dcat_4c_ap.owl.ttl @@ -1,182 +1,757 @@ -@prefix PATO: . -@prefix dcat_4c_ap: . +@prefix CHEBI: . +@prefix CHEMINF: . +@prefix CHMO: . +@prefix IAO: . +@prefix NCIT: . +@prefix OBI: . +@prefix RO: . +@prefix SIO: . +@prefix dcat: . @prefix dcterms: . @prefix linkml: . +@prefix nfdi: . @prefix owl: . -@prefix rdf: . +@prefix prov: . +@prefix qudt: . @prefix rdfs: . @prefix schema1: . @prefix skos: . +@prefix sosa: . @prefix xsd: . -dcat_4c_ap:DatasetCollection a owl:Class, +nfdi:AttributeKind a owl:Class, + linkml:ClassDefinition ; + rdfs:label "AttributeKind" ; + skos:exactMatch qudt:QuantityKind ; + skos:inScheme . + +nfdi:ChemicalReaction a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ChemicalReaction" ; + rdfs:subClassOf nfdi:EntityOfInterest ; + skos:definition "An experimental procedure with the aim of producing a portion of a given compound or mixture." ; + skos:exactMatch ; + skos:inScheme . + +nfdi:DatasetCollection a owl:Class, linkml:ClassDefinition ; rdfs:label "DatasetCollection" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:entries ], + owl:onProperty nfdi:has_dataset ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ], [ a owl:Restriction ; - owl:allValuesFrom dcat_4c_ap:Dataset ; - owl:onProperty dcat_4c_ap:entries ] ; - skos:definition "A holder for Dataset objects" ; + owl:allValuesFrom nfdi:Dataset ; + owl:onProperty nfdi:has_dataset ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:id ], + nfdi:Dataset ; + skos:definition "A curated collection of metadata about data resources." ; + skos:exactMatch dcat:Catalog ; skos:inScheme . -dcat_4c_ap:Dataset a owl:Class, +nfdi:Laboratory a owl:Class, linkml:ClassDefinition ; - rdfs:label "Dataset" ; + rdfs:label "Laboratory" ; + rdfs:subClassOf nfdi:Environment ; + skos:definition "A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed." ; + skos:exactMatch prov:Entity ; + skos:inScheme . + +nfdi:NMRSpectroscopy a owl:Class, + linkml:ClassDefinition ; + rdfs:label "NMRSpectroscopy" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom nfdi:ChemicalSubstance ; + owl:onProperty nfdi:evaluated_entity ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:birth_date ], + owl:onProperty nfdi:evaluated_entity ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:primary_email ], + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:evaluated_entity ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:type ], + nfdi:ResearchActivity ; + skos:definition "Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them." ; + skos:exactMatch CHMO:0000613 ; + skos:inScheme . + +nfdi:NMRSpectroscopyEnum a owl:Class, + linkml:EnumDefinition . + +nfdi:QuantifiableAttribute a owl:Class, + linkml:ClassDefinition ; + rdfs:label "QuantifiableAttribute" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_quantity_kind ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:applicable_unit ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:has_quantity_kind ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:has_quantity_kind ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:applicable_unit ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:applicable_unit ], + nfdi:Attribute ; + skos:exactMatch qudt:Quantity ; + skos:inScheme . + +nfdi:ResearchActivitySpecification a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ResearchActivitySpecification" ; + rdfs:subClassOf nfdi:PlanSpecification ; + skos:definition "A PlanSpecification that specifies a ResearchActivity." ; + skos:exactMatch prov:Entity ; + skos:inScheme . + +nfdi:ResearchActivityTypeEnum a owl:Class, + linkml:EnumDefinition . + +nfdi:Unit a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Unit" ; + skos:definition "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + skos:exactMatch qudt:Unit ; + skos:inScheme . + +nfdi:has_unit a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_unit" ; + skos:inScheme . + +nfdi:ChemicalSubstance a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ChemicalSubstance" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom nfdi:InChi ; + owl:onProperty nfdi:inchi ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:IUPACName ; + owl:onProperty nfdi:iupac_name ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:InChIKey ; + owl:onProperty nfdi:inchikey ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:age_in_years ], + owl:onProperty nfdi:iupac_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:primary_email ], + owl:onProperty nfdi:inchikey ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:inchikey ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty dcat_4c_ap:age_in_years ], + owl:minCardinality 0 ; + owl:onProperty nfdi:inchi ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:inchi ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:age_in_years ], + owl:onProperty nfdi:iupac_name ], + nfdi:EntityOfInterest ; + skos:definition "A chemical substance that is being evaluated in a scientific process." ; + skos:exactMatch CHEBI:59999 ; + skos:inScheme . + +nfdi:Environment a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Environment" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_attribute ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:Attribute ; + owl:onProperty nfdi:has_attribute ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:birth_date ], + owl:onProperty nfdi:type ], [ a owl:Restriction ; - owl:allValuesFrom dcat_4c_ap:PersonStatus ; - owl:onProperty dcat_4c_ap:vital_status ], + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ] ; + skos:definition "The environment in which the dataset creating Observation took place (e.g. a lab)." ; + skos:exactMatch prov:Entity ; + skos:inScheme . + +nfdi:IUPACName a owl:Class, + linkml:ClassDefinition ; + rdfs:label "IUPACName" ; + rdfs:subClassOf nfdi:Attribute ; + skos:definition "An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC)." ; + skos:exactMatch CHEMINF:000107 ; + skos:inScheme . + +nfdi:InChIKey a owl:Class, + linkml:ClassDefinition ; + rdfs:label "InChIKey" ; + rdfs:subClassOf nfdi:Attribute ; + skos:exactMatch CHEMINF:000059 ; + skos:inScheme . + +nfdi:InChi a owl:Class, + linkml:ClassDefinition ; + rdfs:label "InChi" ; + rdfs:subClassOf nfdi:Attribute ; + skos:definition "A structure descriptor which conforms to the InChI format specification." ; + skos:exactMatch CHEMINF:000113 ; + skos:inScheme . + +nfdi:PlanSpecification a owl:Class, + linkml:ClassDefinition ; + rdfs:label "PlanSpecification" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:vital_status ], + owl:onProperty nfdi:type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:vital_status ], + owl:onProperty nfdi:description ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty dcat_4c_ap:birth_date ], + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], [ a owl:Restriction ; - owl:allValuesFrom [ a rdfs:Datatype ; - owl:onDatatype xsd:string ; - owl:withRestrictions ( [ xsd:pattern "^\\S+@[\\S+\\.]+\\S+" ] ) ] ; - owl:onProperty dcat_4c_ap:primary_email ], - dcat_4c_ap:NamedThing ; - skos:definition "Represents a Dataset" ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ] ; + skos:definition """"A piece of information that specifies: + a) how an activity has to be carried out by its agents and + b) the attributes of the passive activity participants in terms of their presence and magnitude.""" ; + skos:exactMatch prov:Entity ; + skos:inScheme . + +CHEBI:59999 a owl:Class, + nfdi:EntityOfInterestTypeEnum ; + rdfs:label "Chemical Substance" ; + rdfs:subClassOf nfdi:EntityOfInterestTypeEnum . + +nfdi:EntityOfInterestTypeEnum a owl:Class, + linkml:EnumDefinition ; + linkml:permissible_values CHEBI:59999 . + +nfdi:HardwareTool a owl:Class, + linkml:ClassDefinition ; + rdfs:label "HardwareTool" ; + rdfs:subClassOf nfdi:Tool ; + skos:altLabel "Device" ; + skos:definition "A hardware with a certain function." ; + skos:inScheme . + +nfdi:SettingDatum a owl:Class, + linkml:ClassDefinition ; + rdfs:label "SettingDatum" ; + rdfs:subClassOf nfdi:Attribute ; + skos:definition "An attribute that specifies the configuration of a tool." ; + skos:exactMatch IAO:0000140 ; + skos:inScheme . + +nfdi:SoftwareTool a owl:Class, + linkml:ClassDefinition ; + rdfs:label "SoftwareTool" ; + rdfs:subClassOf nfdi:Tool ; + skos:definition "A software with a certain function." ; + skos:inScheme . + +nfdi:has_dataset a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_dataset" ; + rdfs:range nfdi:Dataset ; + skos:definition "The slot to list the datasets of a catalog." ; + skos:inScheme . + +nfdi:has_setting a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_setting" ; + rdfs:range nfdi:SettingDatum ; + rdfs:subPropertyOf nfdi:has_attribute ; + skos:definition "The slot to specify the setting of a hardware or software tool." ; + skos:inScheme . + +nfdi:used_hardware a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "used_hardware" ; + rdfs:range nfdi:HardwareTool ; + skos:definition "The slot to specify the hardware that was used." ; skos:inScheme . -dcat_4c_ap:NamedThing a owl:Class, +nfdi:used_software a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "used_software" ; + rdfs:range nfdi:SoftwareTool ; + skos:definition "The slot to specify the hardware that was used." ; + skos:inScheme . + +nfdi:Dataset a owl:Class, linkml:ClassDefinition ; - rdfs:label "NamedThing" ; + rdfs:label "Dataset" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:name ], + owl:onProperty nfdi:was_generated_by ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty dcat_4c_ap:description ], + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty nfdi:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty dcat_4c_ap:name ], + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:ResearchActivity ; + owl:onProperty nfdi:was_generated_by ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:description ], + owl:onProperty nfdi:was_generated_by ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty dcat_4c_ap:id ], + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ] ; + skos:definition "A collection of data, published or curated by a single agent, and available for access or download in one or more representations." ; + skos:exactMatch dcat:Dataset ; + skos:inScheme . + +nfdi:ResearchActivity a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ResearchActivity" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:EntityOfInterest ; + owl:onProperty nfdi:evaluated_entity ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:used_hardware ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:evaluated_entity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:id ], + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:SoftwareTool ; + owl:onProperty nfdi:used_software ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:HardwareTool ; + owl:onProperty nfdi:used_hardware ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:evaluated_entity ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:used_software ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty dcat_4c_ap:id ], + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ] ; + skos:definition "An activity (process) that has the objective to produce information about an entity by evaluating it." ; + skos:exactMatch prov:Activity ; + skos:inScheme ; + skos:narrowMatch NCIT:C25598, + OBI:0000070, + sosa:Observation . + +nfdi:Tool a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Tool" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty dcat_4c_ap:description ], + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:SettingDatum ; + owl:onProperty nfdi:has_setting ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_attribute ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_setting ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty dcat_4c_ap:name ] ; - skos:definition "A generic grouping for any identifiable entity" ; - skos:exactMatch schema1:Thing ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:Attribute ; + owl:onProperty nfdi:has_attribute ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:Tool ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ] ; + skos:broadMatch prov:Entity ; + skos:definition "A entity with a certain function used within a scientific activity." ; + skos:exactMatch prov:Entity ; skos:inScheme . -PATO:0001421 a owl:Class, - dcat_4c_ap:PersonStatus ; - rdfs:label "ALIVE" ; - rdfs:subClassOf dcat_4c_ap:PersonStatus . +nfdi:applicable_unit a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "applicable_unit" ; + skos:inScheme . -PATO:0001422 a owl:Class, - dcat_4c_ap:PersonStatus ; - rdfs:label "DEAD" ; - rdfs:subClassOf dcat_4c_ap:PersonStatus . +nfdi:from_CV a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "from_CV" ; + skos:definition "The name of the controlled vocabulary." ; + skos:inScheme . - a owl:Class, - dcat_4c_ap:PersonStatus ; - rdfs:label "UNKNOWN" ; - rdfs:subClassOf dcat_4c_ap:PersonStatus . +nfdi:has_quantity_kind a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_quantity_kind" ; + skos:inScheme . -dcat_4c_ap:entries a owl:ObjectProperty, +nfdi:has_value a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "entries" ; + rdfs:label "has_value" ; + skos:definition "A slot to provide the value of an attribute." ; skos:inScheme . -dcat_4c_ap:age_in_years a owl:ObjectProperty, +nfdi:inchi a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "age_in_years" ; - rdfs:range linkml:Integer ; - skos:definition "Number of years since birth" ; + rdfs:label "inchi" ; skos:inScheme . -dcat_4c_ap:birth_date a owl:ObjectProperty, +nfdi:inchikey a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "birth_date" ; - rdfs:range linkml:Date ; - skos:definition "Date on which a person is born" ; + rdfs:label "inchikey" ; skos:inScheme . -dcat_4c_ap:description a owl:ObjectProperty, +nfdi:iupac_name a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "description" ; - skos:definition "A human-readable description for a thing" ; + rdfs:label "iupac_name" ; skos:inScheme . -dcat_4c_ap:id a owl:ObjectProperty, +nfdi:was_generated_by a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "was_generated_by" ; + rdfs:range nfdi:ResearchActivity ; + skos:closeMatch schema1:measurementTechnique ; + skos:definition "The slot to provide the ResearchActivity that created a Dataset." ; + skos:exactMatch prov:wasGeneratedBy ; + skos:inScheme . + +nfdi:EntityOfInterest a owl:Class, + linkml:ClassDefinition ; + rdfs:label "EntityOfInterest" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:Attribute ; + owl:onProperty nfdi:has_attribute ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_part ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_attribute ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:has_part ] ; + skos:definition "Something that is being evaluated in a scientific process." ; + skos:exactMatch prov:Entity ; + skos:inScheme . + +nfdi:DefinedTerm a owl:Class, + linkml:ClassDefinition ; + rdfs:label "DefinedTerm" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:from_CV ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:from_CV ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:from_CV ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty nfdi:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ] ; + skos:definition "A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema." ; + skos:exactMatch schema1:DefinedTerm ; + skos:inScheme . + +nfdi:evaluated_entity a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "evaluated_entity" ; + rdfs:range nfdi:EntityOfInterest ; + skos:definition "The slot to specify the entity of interest that was evaluated." ; + skos:inScheme . + +nfdi:has_attribute a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_attribute" ; + rdfs:range nfdi:Attribute ; + skos:definition "The slot to related an attribute to an entity of interest, tool or environment." ; + skos:exactMatch RO:0000053, + SIO:000223 ; + skos:inScheme . + +nfdi:has_part a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "has_part" ; + skos:definition "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; + skos:inScheme . + +nfdi:Attribute a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Attribute" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:alternative_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:has_value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:has_value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:name ], + [ a owl:Restriction ; + owl:allValuesFrom nfdi:DefinedTerm ; + owl:onProperty nfdi:type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty nfdi:has_value ] ; + skos:definition "A piece of information that is attributed to an entity of interest, tool or environment." ; + skos:exactMatch IAO:0000030 ; + skos:inScheme . + +nfdi:id a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "id" ; rdfs:range linkml:Uriorcurie ; - skos:definition "A unique identifier for a thing" ; + skos:definition "The slot to specify the canonical unique identifier of an entity." ; skos:inScheme . -dcat_4c_ap:name a owl:ObjectProperty, +nfdi:alternative_id a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "name" ; - skos:definition "A human-readable name for a thing" ; + rdfs:label "alternative_id" ; + rdfs:range linkml:Uriorcurie ; + skos:definition "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; skos:inScheme . -dcat_4c_ap:primary_email a owl:ObjectProperty, +nfdi:description a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "primary_email" ; - skos:definition "The main email address of a person" ; + rdfs:label "description" ; + skos:definition "The slot to provide a free-text account of a thing." ; skos:inScheme . -dcat_4c_ap:vital_status a owl:ObjectProperty, +nfdi:name a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "vital_status" ; - rdfs:range dcat_4c_ap:PersonStatus ; - skos:definition "living or dead status" ; + rdfs:label "name" ; + skos:definition "The slot to specify the label, name or title of a thing." ; + skos:exactMatch schema1:name, + rdfs:label, + skos:title ; skos:inScheme . -dcat_4c_ap:PersonStatus a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( PATO:0001421 PATO:0001422 ) ; - linkml:permissible_values PATO:0001421, - PATO:0001422, - . +nfdi:type a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "type" ; + skos:definition "The slot to specify the rdf:type of an entity according to a controlled vocabulary." ; + skos:inScheme . a owl:Ontology ; rdfs:label "dcat-4C-ap" ; - dcterms:license "MIT" ; - dcterms:title "dcat-4C-ap" ; - rdfs:seeAlso ; + dcterms:license "CC-BY 4.0" ; + dcterms:title "DCAT-4C-AP" ; + rdfs:seeAlso , + , + ; skos:definition "This is an extension of the DCAT Application Profile in LinkML. It is intended to be used by NFDI4Chem & NFDI 4Cat as a core that can further be extended in profiles to provide domain specific metadata for a dataset." . diff --git a/project/prefixmap/dcat_4c_ap.yaml b/project/prefixmap/dcat_4c_ap.yaml index f5f3b13..5f7334a 100644 --- a/project/prefixmap/dcat_4c_ap.yaml +++ b/project/prefixmap/dcat_4c_ap.yaml @@ -1,11 +1,95 @@ { + "BFO": "http://purl.obolibrary.org/obo/BFO_", + "CHEBI": "http://purl.obolibrary.org/obo/CHEBI_", + "CHEMINF": "http://semanticscience.org/resource/CHEMINF_", + "CHMO": "http://purl.obolibrary.org/obo/CHMO_", + "FOODON": "http://purl.obolibrary.org/obo/FOODON_", + "IAO": "http://purl.obolibrary.org/obo/IAO_", + "NCIT": "http://purl.obolibrary.org/obo/NCIT_", + "OBI": "http://purl.obolibrary.org/obo/OBI_", "PATO": "http://purl.obolibrary.org/obo/PATO_", - "biolink": "https://w3id.org/biolink/", - "dcat_4c_ap": "https://w3id.org/StroemPhi/dcat-4C-ap/", - "example": "https://example.org/", + "RO": "http://purl.obolibrary.org/obo/RO_", + "RXNO": "http://example.org/UNKNOWN/RXNO/", + "SIO": "http://semanticscience.org/resource/SIO_", + "T4FS": "http://purl.obolibrary.org/obo/T4FS_", + "biolink": "https://w3id.org/biolink/vocab/", + "dcat": "http://www.w3.org/ns/dcat#", + "dcterms": "http://purl.org/dc/terms/", + "doi": "https://doi.org/", + "ex": "http://example.org/", + "foaf": "http://xmlns.com/foaf/0.1/", "linkml": "https://w3id.org/linkml/", + "nfdi": "https://w3id.org/StroemPhi/dcat_4C_ap/", + "owl": "http://www.w3.org/2002/07/owl#", + "prov": "http://www.w3.org/ns/prov#", + "qudt": "http://qudt.org/schema/qudt/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "schema": "http://schema.org/", - "NamedThing": { - "@id": "schema:Thing" + "skos": "http://www.w3.org/2004/02/skos/core#", + "sosa": "http://www.w3.org/ns/sosa/", + "vcard": "http://www.w3.org/2006/vcard/ns#", + "Attribute": { + "@id": "IAO:0000030" + }, + "AttributeKind": { + "@id": "qudt:QuantityKind" + }, + "ChemicalReaction": { + "@id": "RXNO:0000329" + }, + "ChemicalSubstance": { + "@id": "CHEBI:59999" + }, + "Dataset": { + "@id": "dcat:Dataset" + }, + "DatasetCollection": { + "@id": "dcat:Catalog" + }, + "DefinedTerm": { + "@id": "schema:DefinedTerm" + }, + "EntityOfInterest": { + "@id": "prov:Entity" + }, + "Environment": { + "@id": "prov:Entity" + }, + "InChi": { + "@id": "CHEMINF:000113" + }, + "InChIKey": { + "@id": "CHEMINF:000059" + }, + "IUPACName": { + "@id": "CHEMINF:000107" + }, + "Laboratory": { + "@id": "prov:Entity" + }, + "NMRSpectroscopy": { + "@id": "CHMO:0000613" + }, + "PlanSpecification": { + "@id": "prov:Entity" + }, + "QuantifiableAttribute": { + "@id": "qudt:Quantity" + }, + "ResearchActivity": { + "@id": "prov:Activity" + }, + "ResearchActivitySpecification": { + "@id": "prov:Entity" + }, + "SettingDatum": { + "@id": "IAO:0000140" + }, + "Tool": { + "@id": "prov:Entity" + }, + "Unit": { + "@id": "qudt:Unit" } } \ No newline at end of file diff --git a/project/protobuf/dcat_4c_ap.proto b/project/protobuf/dcat_4c_ap.proto index e765ac9..daf85bc 100644 --- a/project/protobuf/dcat_4c_ap.proto +++ b/project/protobuf/dcat_4c_ap.proto @@ -1,26 +1,199 @@ syntax="proto3"; package // metamodel_version: 1.7.0 -// Represents a Dataset +// A piece of information that is attributed to an entity of interest, tool or environment. +message Attribute + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + } +// An experimental procedure with the aim of producing a portion of a given compound or mixture. +message ChemicalReaction + { + uriorcurie id = 0 + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated attribute hasAttribute = 0 + string hasPart = 0 + } +// A chemical substance that is being evaluated in a scientific process. +message ChemicalSubstance + { + uriorcurie id = 0 + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated attribute hasAttribute = 0 + string hasPart = 0 + inChIKey inchikey = 0 + inChi inchi = 0 + iUPACName iupacName = 0 + } +// A collection of data, published or curated by a single agent, and available for access or download in one or more representations. message Dataset { uriorcurie id = 0 - string name = 0 - string description = 0 - string primaryEmail = 0 - date birthDate = 0 - integer ageInYears = 0 - personStatus vitalStatus = 0 - } -// A holder for Dataset objects + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + researchActivity wasGeneratedBy = 0 + } +// A curated collection of metadata about data resources. message DatasetCollection { - repeated dataset entries = 0 + repeated uriorcurie alternativeId = 0 + researchActivity wasGeneratedBy = 0 + repeated dataset hasDataset = 0 + uriorcurie id = 0 + repeated string name = 0 + repeated string description = 0 + } +// A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema. +message DefinedTerm + { + uriorcurie id = 0 + repeated uriorcurie alternativeId = 0 + repeated string name = 0 + string fromCV = 0 } -// A generic grouping for any identifiable entity -message NamedThing +// Something that is being evaluated in a scientific process. +message EntityOfInterest { uriorcurie id = 0 - string name = 0 - string description = 0 + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated attribute hasAttribute = 0 + string hasPart = 0 + } +// The environment in which the dataset creating Observation took place (e.g. a lab). +message Environment + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated attribute hasAttribute = 0 + } +// A hardware with a certain function. +message HardwareTool + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated tool hasPart = 0 + repeated attribute hasAttribute = 0 + repeated settingDatum hasSetting = 0 + } +// A structure descriptor which conforms to the InChI format specification. +message InChi + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + } +message InChIKey + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + } +// An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC). +message IUPACName + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + } +// A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed. +message Laboratory + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated attribute hasAttribute = 0 + } +// Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them. +message NMRSpectroscopy + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + repeated hardwareTool usedHardware = 0 + repeated softwareTool usedSoftware = 0 + string hasPart = 0 + chemicalSubstance evaluatedEntity = 0 + definedTerm type = 0 + } +// "A piece of information that specifies: +// a) how an activity has to be carried out by its agents and +// b) the attributes of the passive activity participants in terms of their presence and magnitude. +message PlanSpecification + { + repeated string name = 0 + repeated string description = 0 + definedTerm type = 0 + } +message QuantifiableAttribute + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + string hasQuantityKind = 0 + string applicableUnit = 0 + } +// A PlanSpecification that specifies a ResearchActivity. +message ResearchActivitySpecification + { + repeated string name = 0 + repeated string description = 0 + definedTerm type = 0 + } +// An attribute that specifies the configuration of a tool. +message SettingDatum + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + string hasValue = 0 + } +// A software with a certain function. +message SoftwareTool + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated tool hasPart = 0 + repeated attribute hasAttribute = 0 + repeated settingDatum hasSetting = 0 + } +// A entity with a certain function used within a scientific activity. +message Tool + { + repeated string name = 0 + repeated string description = 0 + repeated uriorcurie alternativeId = 0 + definedTerm type = 0 + repeated tool hasPart = 0 + repeated attribute hasAttribute = 0 + repeated settingDatum hasSetting = 0 } diff --git a/project/shacl/dcat_4c_ap.shacl.ttl b/project/shacl/dcat_4c_ap.shacl.ttl index f956953..f2bb032 100644 --- a/project/shacl/dcat_4c_ap.shacl.ttl +++ b/project/shacl/dcat_4c_ap.shacl.ttl @@ -1,90 +1,800 @@ -@prefix PATO: . -@prefix dcat_4c_ap: . +@prefix CHEBI: . +@prefix CHEMINF: . +@prefix CHMO: . +@prefix IAO: . +@prefix dcat: . +@prefix dcterms: . +@prefix nfdi: . +@prefix prov: . +@prefix qudt: . @prefix rdf: . @prefix schema1: . @prefix sh: . @prefix xsd: . -schema1:Thing a sh:NodeShape ; + a sh:NodeShape ; sh:closed true ; - sh:description "A generic grouping for any identifiable entity" ; - sh:ignoredProperties ( dcat_4c_ap:vital_status schema1:email rdf:type schema1:birthDate dcat_4c_ap:age_in_years ) ; + sh:description "An experimental procedure with the aim of producing a portion of a given compound or mixture." ; + sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path dcterms:hasPart ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path schema1:name ], + sh:path dcterms:title ], [ sh:datatype xsd:anyURI ; - sh:description "A unique identifier for a thing" ; + sh:description "The slot to specify the canonical unique identifier of an entity." ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path schema1:identifier ], + sh:path nfdi:id ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the EntityOfInterest provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path rdf:type ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path dcterms:relation ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:description ] ; + sh:targetClass . + +CHMO:0000613 a sh:NodeShape ; + sh:closed true ; + sh:description "Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class nfdi:HardwareTool ; + sh:description "The slot to specify the hardware that was used." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path prov:used ], + [ sh:datatype xsd:string ; + sh:description "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path dcterms:hasPart ], + [ sh:class CHEBI:59999 ; + sh:description "The slot to specify the entity of interest that was evaluated." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path prov:used ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class nfdi:SoftwareTool ; + sh:description "The slot to specify the hardware that was used." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path prov:used ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path schema1:description ] ; - sh:targetClass schema1:Thing . + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of NMR Spectroscopy according provided as CURIE of a subclass of CHMO:0000613." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ] ; + sh:targetClass CHMO:0000613 . -dcat_4c_ap:DatasetCollection a sh:NodeShape ; +qudt:Quantity a sh:NodeShape ; sh:closed true ; - sh:description "A holder for Dataset objects" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class dcat_4c_ap:Dataset ; + sh:property [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path qudt:applicableUnit ], + [ sh:datatype xsd:string ; + sh:description "A slot to provide the value of an attribute." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path prov:value ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:title ], + [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path dcat_4c_ap:entries ] ; - sh:targetClass dcat_4c_ap:DatasetCollection . + sh:path qudt:hasQuantityKind ] ; + sh:targetClass qudt:Quantity . -dcat_4c_ap:Dataset a sh:NodeShape ; +qudt:QuantityKind a sh:NodeShape ; sh:closed true ; - sh:description "Represents a Dataset" ; + sh:ignoredProperties ( rdf:type ) ; + sh:targetClass qudt:QuantityKind . + +qudt:Unit a sh:NodeShape ; + sh:closed true ; + sh:description "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." ; + sh:ignoredProperties ( rdf:type ) ; + sh:targetClass qudt:Unit . + +dcat:Catalog a sh:NodeShape ; + sh:closed true ; + sh:description "A curated collection of metadata about data resources." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a thing" ; + sh:description "The name of a DatasetCollection." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:title ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path dcterms:identifier ], + [ sh:class dcat:Dataset ; + sh:description "The slot to list the datasets of a catalog." ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path dcat:dataset ], + [ sh:class prov:Activity ; + sh:description "The slot to provide the ResearchActivity that created a Dataset." ; sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path nfdi:was_generated_by ], + [ sh:datatype xsd:string ; + sh:description "A free-text account of a DatasetCollection." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path dcterms:description ], + [ sh:datatype xsd:anyURI ; + sh:description "The unique identifier of a Catalog." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path nfdi:id ] ; + sh:targetClass dcat:Catalog . + +CHEBI:59999 a sh:NodeShape ; + sh:closed true ; + sh:description "A chemical substance that is being evaluated in a scientific process." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path dcterms:title ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; sh:nodeKind sh:Literal ; sh:order 6 ; - sh:path schema1:description ], + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 5 ; + sh:path dcterms:description ], + [ sh:class CHEMINF:000113 ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path nfdi:inchi ], + [ sh:class CHEMINF:000107 ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path nfdi:iupac_name ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the canonical unique identifier of an entity." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path nfdi:id ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path dcterms:relation ], [ sh:datatype xsd:string ; - sh:description "The main email address of a person" ; + sh:description "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path dcterms:hasPart ], + [ sh:class CHEMINF:000059 ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; - sh:path schema1:email ; - sh:pattern "^\\S+@[\\S+\\.]+\\S+" ], - [ sh:datatype xsd:date ; - sh:description "Date on which a person is born" ; + sh:path nfdi:inchikey ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the EntityOfInterest provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 7 ; + sh:path rdf:type ] ; + sh:targetClass CHEBI:59999 . + +CHEMINF:000059 a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "A slot to provide the value of an attribute." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path prov:value ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ] ; + sh:targetClass CHEMINF:000059 . + +CHEMINF:000107 a sh:NodeShape ; + sh:closed true ; + sh:description "An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC)." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "A slot to provide the value of an attribute." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path prov:value ] ; + sh:targetClass CHEMINF:000107 . + +CHEMINF:000113 a sh:NodeShape ; + sh:closed true ; + sh:description "A structure descriptor which conforms to the InChI format specification." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path schema1:birthDate ], + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a thing" ; + sh:description "A slot to provide the value of an attribute." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path prov:value ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ] ; + sh:targetClass CHEMINF:000113 . + +dcat:Dataset a sh:NodeShape ; + sh:closed true ; + sh:description "A collection of data, published or curated by a single agent, and available for access or download in one or more representations." ; + sh:ignoredProperties ( rdf:type dcat:dataset ) ; + sh:property [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the canonical unique identifier of an entity." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path nfdi:id ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path dcterms:identifier ], + [ sh:class prov:Activity ; + sh:description "The slot to provide the ResearchActivity that created a Dataset." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path nfdi:was_generated_by ], + [ sh:datatype xsd:string ; + sh:description "The label, name or title of a Dataset." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "A free-text account of a Dataset." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:description ] ; + sh:targetClass dcat:Dataset . + +prov:Activity a sh:NodeShape ; + sh:closed false ; + sh:description "An activity (process) that has the objective to produce information about an entity by evaluating it." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class nfdi:HardwareTool ; + sh:description "The slot to specify the hardware that was used." ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:integer ; - sh:description "Number of years since birth" ; + sh:path prov:used ], + [ sh:class prov:Entity ; + sh:description "The slot to specify the entity of interest that was evaluated." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path prov:used ], + [ sh:class nfdi:SoftwareTool ; + sh:description "The slot to specify the hardware that was used." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path prov:used ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the ResearchActivity provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path dcterms:hasPart ] ; + sh:targetClass prov:Activity . + +nfdi:HardwareTool a sh:NodeShape ; + sh:closed true ; + sh:description "A hardware with a certain function." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class IAO:0000140 ; + sh:description "The slot to specify the setting of a hardware or software tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path nfdi:has_setting ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class prov:Entity ; + sh:description "The slot to specify parts of a tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path dcterms:hasPart ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path dcterms:relation ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the Tool provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ] ; + sh:targetClass nfdi:HardwareTool . + +nfdi:SoftwareTool a sh:NodeShape ; + sh:closed true ; + sh:description "A software with a certain function." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class prov:Entity ; + sh:description "The slot to specify parts of a tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path dcterms:hasPart ], + [ sh:class IAO:0000140 ; + sh:description "The slot to specify the setting of a hardware or software tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path nfdi:has_setting ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path dcterms:relation ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the Tool provided as a DefinedTerm." ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ] ; + sh:targetClass nfdi:SoftwareTool . + +IAO:0000140 a sh:NodeShape ; + sh:closed true ; + sh:description "An attribute that specifies the configuration of a tool." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path dcat_4c_ap:age_in_years ], + sh:path dcterms:identifier ], + [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "A slot to provide the value of an attribute." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path prov:value ] ; + sh:targetClass IAO:0000140 . + +prov:Entity a sh:NodeShape ; + sh:closed true ; + sh:description """"A piece of information that specifies: + a) how an activity has to be carried out by its agents and + b) the attributes of the passive activity participants in terms of their presence and magnitude.""", + "A PlanSpecification that specifies a ResearchActivity.", + "A entity with a certain function used within a scientific activity.", + "A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed.", + "Something that is being evaluated in a scientific process.", + "The environment in which the dataset creating Observation took place (e.g. a lab)." ; + sh:ignoredProperties ( rdf:type ), + ( rdf:type ), + ( rdf:type ), + ( rdf:type ), + ( rdf:type ), + ( nfdi:inchi rdf:type nfdi:iupac_name nfdi:inchikey ) ; + sh:property [ sh:class schema1:DefinedTerm ; + sh:description "The type of PlanSpecification provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path rdf:type ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of Environment provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], [ sh:datatype xsd:anyURI ; - sh:description "A unique identifier for a thing" ; + sh:description "The slot to specify the canonical unique identifier of an entity." ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path nfdi:id ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:title ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; - sh:path schema1:identifier ], - [ sh:description "living or dead status" ; - sh:in ( PATO:0001421 PATO:0001422 "UNKNOWN" ) ; + sh:path dcterms:relation ], + [ sh:class prov:Entity ; + sh:description "The slot to specify parts of a tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path dcterms:hasPart ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path dcterms:relation ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class IAO:0000140 ; + sh:description "The slot to specify the setting of a hardware or software tool." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path nfdi:has_setting ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of PlanSpecification provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path dcterms:hasPart ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path dcterms:relation ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class IAO:0000030 ; + sh:description "The slot to related an attribute to an entity of interest, tool or environment." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 5 ; + sh:path dcterms:relation ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the Tool provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of Environment provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:description ], + [ sh:class schema1:DefinedTerm ; + sh:description "The type of the EntityOfInterest provided as a DefinedTerm." ; sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path rdf:type ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path dcterms:identifier ] ; + sh:targetClass prov:Entity . + +IAO:0000030 a sh:NodeShape ; + sh:closed true ; + sh:description "A piece of information that is attributed to an entity of interest, tool or environment." ; + sh:ignoredProperties ( rdf:type qudt:applicableUnit qudt:hasQuantityKind ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A slot to provide the value of an attribute." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 4 ; + sh:path prov:value ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path dcterms:identifier ], + [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path dcterms:title ], + [ sh:class schema1:DefinedTerm ; + sh:description "The slot to specify the type of Attribute provided as a DefinedTerm." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; sh:order 3 ; - sh:path dcat_4c_ap:vital_status ] ; - sh:targetClass dcat_4c_ap:Dataset . + sh:path rdf:type ], + [ sh:datatype xsd:string ; + sh:description "The slot to provide a free-text account of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path dcterms:description ] ; + sh:targetClass IAO:0000030 . + +schema1:DefinedTerm a sh:NodeShape ; + sh:closed true ; + sh:description "A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "The slot to specify the label, name or title of a thing." ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "The name of the controlled vocabulary." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path schema1:inDefinedTermSet ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context." ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:anyURI ; + sh:description "The slot to specify the canonical unique identifier of an entity." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path nfdi:id ] ; + sh:targetClass schema1:DefinedTerm . diff --git a/project/shex/dcat_4c_ap.shex b/project/shex/dcat_4c_ap.shex index 246bf3d..43d0a67 100644 --- a/project/shex/dcat_4c_ap.shex +++ b/project/shex/dcat_4c_ap.shex @@ -1,9 +1,14 @@ # metamodel_version: 1.7.0 -BASE +BASE +PREFIX dcat: +PREFIX dcterms: +PREFIX prov: PREFIX rdf: PREFIX xsd: PREFIX linkml: PREFIX schema1: +PREFIX qudt: +PREFIX RXNO: linkml:String xsd:string @@ -44,32 +49,232 @@ linkml:Jsonpath xsd:string linkml:Sparqlpath xsd:string - CLOSED { - ( $ ( & ; - rdf:type [ schema1:Thing ] ? ; - schema1:email @linkml:String ? ; - schema1:birthDate @linkml:Date ? ; - @linkml:Integer ? ; - [ - ] ? + ( + CLOSED { + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + dcterms:identifier @linkml:Uriorcurie * ; + rdf:type @ ? ; + prov:value @linkml:String ? + ) ; + rdf:type [ ] ? + ) + } OR @ OR @ OR @ OR @ OR @ +) + + CLOSED { + ( $ rdf:type . * ; + rdf:type [ qudt:QuantityKind ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? ) ; - rdf:type [ ] + rdf:type [ RXNO:0000329 ] ) } + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? ; + @ ? ; + @ ? ; + @ ? + ) ; + rdf:type [ ] + ) +} + + ( + CLOSED { + ( $ ( dcterms:title @linkml:String + ; + dcterms:description @linkml:String + ; + dcterms:identifier @linkml:Uriorcurie * ; + @ ? + ) ; + rdf:type [ dcat:Dataset ] + ) + } OR @ +) + CLOSED { - ( $ @ * ; - rdf:type [ ] ? + ( $ ( & ; + rdf:type [ dcat:Dataset ] ? ; + dcat:dataset @ * ; + dcterms:title @linkml:String + ; + dcterms:description @linkml:String + + ) ; + rdf:type [ dcat:Catalog ] + ) +} + + CLOSED { + ( $ ( schema1:identifier @linkml:Uriorcurie * ; + schema1:name @linkml:String * ; + schema1:inDefinedTermSet @linkml:String ? + ) ; + rdf:type [ schema1:DefinedTerm ] + ) +} + + ( + CLOSED { + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + dcterms:identifier @linkml:Uriorcurie * ; + rdf:type @ ? ; + dcterms:relation @ * ; + dcterms:hasPart @linkml:String ? + ) ; + rdf:type [ prov:Entity ] + ) + } OR @ OR @ +) + + ( + CLOSED { + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + dcterms:identifier @linkml:Uriorcurie * ; + rdf:type @ ? ; + dcterms:relation @ * + ) ; + rdf:type [ prov:Entity ] ? + ) + } OR @ +) + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? + ) ; + rdf:type [ prov:Entity ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Activity ] ? ; + prov:used @ ? ; + rdf:type @ ? + ) ; + rdf:type [ ] ? + ) +} + + ( + CLOSED { + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + rdf:type @ ? + ) ; + rdf:type [ prov:Entity ] ? + ) + } OR @ +) + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + qudt:hasQuantityKind @linkml:String ? ; + qudt:applicableUnit @linkml:String ? + ) ; + rdf:type [ qudt:Quantity ] ? ) } - ( + ( + { + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + dcterms:identifier @linkml:Uriorcurie * ; + rdf:type @ ? ; + prov:used @ ? ; + prov:used @ * ; + prov:used @ * ; + dcterms:hasPart @linkml:String ? + ) ; + rdf:type [ prov:Activity ] ? + ) + } OR @ +) + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? + ) ; + rdf:type [ prov:Entity ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ ] ? + ) ; + rdf:type [ ] ? + ) +} + + CLOSED { + ( $ ( & ; + rdf:type [ prov:Entity ] ? + ) ; + rdf:type [ ] ? + ) +} + + ( CLOSED { - ( $ ( schema1:name @linkml:String ? ; - schema1:description @linkml:String ? + ( $ ( dcterms:title @linkml:String * ; + dcterms:description @linkml:String * ; + dcterms:identifier @linkml:Uriorcurie * ; + rdf:type @ ? ; + dcterms:hasPart @ * ; + dcterms:relation @ * ; + @ * ) ; - rdf:type [ schema1:Thing ] + rdf:type [ prov:Entity ] ? ) - } OR @ + } OR @ OR @ ) + CLOSED { + ( $ rdf:type . * ; + rdf:type [ qudt:Unit ] ? + ) +} + diff --git a/project/sqlschema/dcat_4c_ap.sql b/project/sqlschema/dcat_4c_ap.sql index 5229d02..7e51b36 100644 --- a/project/sqlschema/dcat_4c_ap.sql +++ b/project/sqlschema/dcat_4c_ap.sql @@ -1,38 +1,839 @@ --- # Class: "NamedThing" Description: "A generic grouping for any identifiable entity" --- * Slot: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: description Description: A human-readable description for a thing --- # Class: "Dataset" Description: "Represents a Dataset" --- * 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: id Description: A unique identifier for a thing --- * Slot: name Description: A human-readable name for a thing --- * Slot: description Description: A human-readable description for a thing +-- # Class: "DefinedTerm" Description: "A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema." +-- * Slot: id Description: The slot to specify the canonical unique identifier of an entity. +-- * Slot: from_CV Description: The name of the controlled vocabulary. +-- # Class: "Dataset" Description: "A collection of data, published or curated by a single agent, and available for access or download in one or more representations." +-- * Slot: id Description: The slot to specify the canonical unique identifier of an entity. -- * Slot: DatasetCollection_id Description: Autocreated FK slot --- # Class: "DatasetCollection" Description: "A holder for Dataset objects" +-- * Slot: was_generated_by_id Description: The slot to provide the ResearchActivity that created a Dataset. +-- # Class: "DatasetCollection" Description: "A curated collection of metadata about data resources." +-- * Slot: id Description: The unique identifier of a Catalog. +-- * Slot: was_generated_by_id Description: The slot to provide the ResearchActivity that created a Dataset. +-- # Class: "ResearchActivity" Description: "An activity (process) that has the objective to produce information about an entity by evaluating it." -- * Slot: id Description: +-- * Slot: has_part Description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. +-- * Slot: type_id Description: The type of the ResearchActivity provided as a DefinedTerm. +-- * Slot: evaluated_entity_id Description: The slot to specify the entity of interest that was evaluated. +-- # Class: "NMRSpectroscopy" Description: "Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them." +-- * Slot: id Description: +-- * Slot: has_part Description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. +-- * Slot: type_id Description: The type of NMR Spectroscopy according provided as CURIE of a subclass of CHMO:0000613. +-- * Slot: evaluated_entity_id Description: The slot to specify the entity of interest that was evaluated. +-- # Class: "EntityOfInterest" Description: "Something that is being evaluated in a scientific process." +-- * Slot: id Description: The slot to specify the canonical unique identifier of an entity. +-- * Slot: has_part Description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. +-- * Slot: type_id Description: The type of the EntityOfInterest provided as a DefinedTerm. +-- # Class: "ChemicalReaction" Description: "An experimental procedure with the aim of producing a portion of a given compound or mixture." +-- * Slot: id Description: The slot to specify the canonical unique identifier of an entity. +-- * Slot: has_part Description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. +-- * Slot: type_id Description: The type of the EntityOfInterest provided as a DefinedTerm. +-- # Class: "ChemicalSubstance" Description: "A chemical substance that is being evaluated in a scientific process." +-- * Slot: id Description: The slot to specify the canonical unique identifier of an entity. +-- * Slot: has_part Description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. +-- * Slot: inchikey_id Description: +-- * Slot: inchi_id Description: +-- * Slot: iupac_name_id Description: +-- * Slot: type_id Description: The type of the EntityOfInterest provided as a DefinedTerm. +-- # Class: "Tool" Description: "A entity with a certain function used within a scientific activity." +-- * Slot: id Description: +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: type_id Description: The type of the Tool provided as a DefinedTerm. +-- # Class: "HardwareTool" Description: "A hardware with a certain function." +-- * Slot: id Description: +-- * Slot: ResearchActivity_id Description: Autocreated FK slot +-- * Slot: NMRSpectroscopy_id Description: Autocreated FK slot +-- * Slot: type_id Description: The type of the Tool provided as a DefinedTerm. +-- # Class: "SoftwareTool" Description: "A software with a certain function." +-- * Slot: id Description: +-- * Slot: ResearchActivity_id Description: Autocreated FK slot +-- * Slot: NMRSpectroscopy_id Description: Autocreated FK slot +-- * Slot: type_id Description: The type of the Tool provided as a DefinedTerm. +-- # Class: "Environment" Description: "The environment in which the dataset creating Observation took place (e.g. a lab)." +-- * Slot: id Description: +-- * Slot: type_id Description: The type of Environment provided as a DefinedTerm. +-- # Class: "Laboratory" Description: "A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed." +-- * Slot: id Description: +-- * Slot: type_id Description: The type of Environment provided as a DefinedTerm. +-- # Class: "PlanSpecification" Description: ""A piece of information that specifies: a) how an activity has to be carried out by its agents and b) the attributes of the passive activity participants in terms of their presence and magnitude." +-- * Slot: id Description: +-- * Slot: type_id Description: The type of PlanSpecification provided as a DefinedTerm. +-- # Class: "ResearchActivitySpecification" Description: "A PlanSpecification that specifies a ResearchActivity." +-- * Slot: id Description: +-- * Slot: type_id Description: The type of PlanSpecification provided as a DefinedTerm. +-- # Class: "Attribute" Description: "A piece of information that is attributed to an entity of interest, tool or environment." +-- * Slot: id Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: EntityOfInterest_id Description: Autocreated FK slot +-- * Slot: ChemicalReaction_id Description: Autocreated FK slot +-- * Slot: ChemicalSubstance_id Description: Autocreated FK slot +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: Environment_id Description: Autocreated FK slot +-- * Slot: Laboratory_id Description: Autocreated FK slot +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "QuantifiableAttribute" Description: "" +-- * Slot: id Description: +-- * Slot: has_quantity_kind Description: +-- * Slot: applicable_unit Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "AttributeKind" Description: "" +-- * Slot: id Description: +-- # Class: "Unit" Description: "A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension)." +-- * Slot: id Description: +-- # Class: "SettingDatum" Description: "An attribute that specifies the configuration of a tool." +-- * Slot: id Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "InChIKey" Description: "" +-- * Slot: id Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "InChi" Description: "A structure descriptor which conforms to the InChI format specification." +-- * Slot: id Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "IUPACName" Description: "An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC)." +-- * Slot: id Description: +-- * Slot: has_value Description: A slot to provide the value of an attribute. +-- * Slot: type_id Description: The slot to specify the type of Attribute provided as a DefinedTerm. +-- # Class: "DefinedTerm_alternative_id" Description: "" +-- * Slot: DefinedTerm_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "DefinedTerm_name" Description: "" +-- * Slot: DefinedTerm_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "Dataset_name" Description: "" +-- * Slot: Dataset_id Description: Autocreated FK slot +-- * Slot: name Description: The label, name or title of a Dataset. +-- # Class: "Dataset_description" Description: "" +-- * Slot: Dataset_id Description: Autocreated FK slot +-- * Slot: description Description: A free-text account of a Dataset. +-- # Class: "Dataset_alternative_id" Description: "" +-- * Slot: Dataset_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "DatasetCollection_name" Description: "" +-- * Slot: DatasetCollection_id Description: Autocreated FK slot +-- * Slot: name Description: The name of a DatasetCollection. +-- # Class: "DatasetCollection_description" Description: "" +-- * Slot: DatasetCollection_id Description: Autocreated FK slot +-- * Slot: description Description: A free-text account of a DatasetCollection. +-- # Class: "DatasetCollection_alternative_id" Description: "" +-- * Slot: DatasetCollection_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "ResearchActivity_name" Description: "" +-- * Slot: ResearchActivity_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "ResearchActivity_description" Description: "" +-- * Slot: ResearchActivity_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "ResearchActivity_alternative_id" Description: "" +-- * Slot: ResearchActivity_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "NMRSpectroscopy_name" Description: "" +-- * Slot: NMRSpectroscopy_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "NMRSpectroscopy_description" Description: "" +-- * Slot: NMRSpectroscopy_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "NMRSpectroscopy_alternative_id" Description: "" +-- * Slot: NMRSpectroscopy_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "EntityOfInterest_name" Description: "" +-- * Slot: EntityOfInterest_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "EntityOfInterest_description" Description: "" +-- * Slot: EntityOfInterest_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "EntityOfInterest_alternative_id" Description: "" +-- * Slot: EntityOfInterest_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "ChemicalReaction_name" Description: "" +-- * Slot: ChemicalReaction_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "ChemicalReaction_description" Description: "" +-- * Slot: ChemicalReaction_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "ChemicalReaction_alternative_id" Description: "" +-- * Slot: ChemicalReaction_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "ChemicalSubstance_name" Description: "" +-- * Slot: ChemicalSubstance_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "ChemicalSubstance_description" Description: "" +-- * Slot: ChemicalSubstance_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "ChemicalSubstance_alternative_id" Description: "" +-- * Slot: ChemicalSubstance_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "Tool_name" Description: "" +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "Tool_description" Description: "" +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "Tool_alternative_id" Description: "" +-- * Slot: Tool_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "HardwareTool_name" Description: "" +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "HardwareTool_description" Description: "" +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "HardwareTool_alternative_id" Description: "" +-- * Slot: HardwareTool_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "SoftwareTool_name" Description: "" +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "SoftwareTool_description" Description: "" +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "SoftwareTool_alternative_id" Description: "" +-- * Slot: SoftwareTool_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "Environment_name" Description: "" +-- * Slot: Environment_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "Environment_description" Description: "" +-- * Slot: Environment_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "Environment_alternative_id" Description: "" +-- * Slot: Environment_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "Laboratory_name" Description: "" +-- * Slot: Laboratory_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "Laboratory_description" Description: "" +-- * Slot: Laboratory_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "Laboratory_alternative_id" Description: "" +-- * Slot: Laboratory_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "PlanSpecification_name" Description: "" +-- * Slot: PlanSpecification_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "PlanSpecification_description" Description: "" +-- * Slot: PlanSpecification_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "ResearchActivitySpecification_name" Description: "" +-- * Slot: ResearchActivitySpecification_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "ResearchActivitySpecification_description" Description: "" +-- * Slot: ResearchActivitySpecification_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "Attribute_name" Description: "" +-- * Slot: Attribute_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "Attribute_description" Description: "" +-- * Slot: Attribute_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "Attribute_alternative_id" Description: "" +-- * Slot: Attribute_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "QuantifiableAttribute_name" Description: "" +-- * Slot: QuantifiableAttribute_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "QuantifiableAttribute_description" Description: "" +-- * Slot: QuantifiableAttribute_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "QuantifiableAttribute_alternative_id" Description: "" +-- * Slot: QuantifiableAttribute_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "SettingDatum_name" Description: "" +-- * Slot: SettingDatum_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "SettingDatum_description" Description: "" +-- * Slot: SettingDatum_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "SettingDatum_alternative_id" Description: "" +-- * Slot: SettingDatum_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "InChIKey_name" Description: "" +-- * Slot: InChIKey_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "InChIKey_description" Description: "" +-- * Slot: InChIKey_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "InChIKey_alternative_id" Description: "" +-- * Slot: InChIKey_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "InChi_name" Description: "" +-- * Slot: InChi_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "InChi_description" Description: "" +-- * Slot: InChi_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "InChi_alternative_id" Description: "" +-- * Slot: InChi_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. +-- # Class: "IUPACName_name" Description: "" +-- * Slot: IUPACName_id Description: Autocreated FK slot +-- * Slot: name Description: The slot to specify the label, name or title of a thing. +-- # Class: "IUPACName_description" Description: "" +-- * Slot: IUPACName_id Description: Autocreated FK slot +-- * Slot: description Description: The slot to provide a free-text account of a thing. +-- # Class: "IUPACName_alternative_id" Description: "" +-- * Slot: IUPACName_id Description: Autocreated FK slot +-- * Slot: alternative_id Description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. -CREATE TABLE "NamedThing" ( +CREATE TABLE "DefinedTerm" ( + id TEXT NOT NULL, + "from_CV" TEXT, + PRIMARY KEY (id) +); +CREATE TABLE "AttributeKind" ( + id INTEGER NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "Unit" ( + id INTEGER NOT NULL, + PRIMARY KEY (id) +); +CREATE TABLE "EntityOfInterest" ( + id TEXT NOT NULL, + has_part TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "ChemicalReaction" ( + id TEXT NOT NULL, + has_part TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "Environment" ( + id INTEGER NOT NULL, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "Laboratory" ( + id INTEGER NOT NULL, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "PlanSpecification" ( + id INTEGER NOT NULL, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "ResearchActivitySpecification" ( + id INTEGER NOT NULL, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "QuantifiableAttribute" ( + id INTEGER NOT NULL, + has_quantity_kind TEXT, + applicable_unit TEXT, + has_value TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "InChIKey" ( + id INTEGER NOT NULL, + has_value TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "InChi" ( + id INTEGER NOT NULL, + has_value TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "IUPACName" ( + id INTEGER NOT NULL, + has_value TEXT, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "DefinedTerm_alternative_id" ( + "DefinedTerm_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("DefinedTerm_id", alternative_id), + FOREIGN KEY("DefinedTerm_id") REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "DefinedTerm_name" ( + "DefinedTerm_id" TEXT, + name TEXT, + PRIMARY KEY ("DefinedTerm_id", name), + FOREIGN KEY("DefinedTerm_id") REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "ResearchActivity" ( + id INTEGER NOT NULL, + has_part TEXT, + type_id TEXT, + evaluated_entity_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id), + FOREIGN KEY(evaluated_entity_id) REFERENCES "EntityOfInterest" (id) +); +CREATE TABLE "ChemicalSubstance" ( id TEXT NOT NULL, + has_part TEXT, + inchikey_id INTEGER, + inchi_id INTEGER, + iupac_name_id INTEGER, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(inchikey_id) REFERENCES "InChIKey" (id), + FOREIGN KEY(inchi_id) REFERENCES "InChi" (id), + FOREIGN KEY(iupac_name_id) REFERENCES "IUPACName" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "EntityOfInterest_name" ( + "EntityOfInterest_id" TEXT, name TEXT, + PRIMARY KEY ("EntityOfInterest_id", name), + FOREIGN KEY("EntityOfInterest_id") REFERENCES "EntityOfInterest" (id) +); +CREATE TABLE "EntityOfInterest_description" ( + "EntityOfInterest_id" TEXT, description TEXT, - PRIMARY KEY (id) + PRIMARY KEY ("EntityOfInterest_id", description), + FOREIGN KEY("EntityOfInterest_id") REFERENCES "EntityOfInterest" (id) +); +CREATE TABLE "EntityOfInterest_alternative_id" ( + "EntityOfInterest_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("EntityOfInterest_id", alternative_id), + FOREIGN KEY("EntityOfInterest_id") REFERENCES "EntityOfInterest" (id) +); +CREATE TABLE "ChemicalReaction_name" ( + "ChemicalReaction_id" TEXT, + name TEXT, + PRIMARY KEY ("ChemicalReaction_id", name), + FOREIGN KEY("ChemicalReaction_id") REFERENCES "ChemicalReaction" (id) +); +CREATE TABLE "ChemicalReaction_description" ( + "ChemicalReaction_id" TEXT, + description TEXT, + PRIMARY KEY ("ChemicalReaction_id", description), + FOREIGN KEY("ChemicalReaction_id") REFERENCES "ChemicalReaction" (id) +); +CREATE TABLE "ChemicalReaction_alternative_id" ( + "ChemicalReaction_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("ChemicalReaction_id", alternative_id), + FOREIGN KEY("ChemicalReaction_id") REFERENCES "ChemicalReaction" (id) +); +CREATE TABLE "Environment_name" ( + "Environment_id" INTEGER, + name TEXT, + PRIMARY KEY ("Environment_id", name), + FOREIGN KEY("Environment_id") REFERENCES "Environment" (id) +); +CREATE TABLE "Environment_description" ( + "Environment_id" INTEGER, + description TEXT, + PRIMARY KEY ("Environment_id", description), + FOREIGN KEY("Environment_id") REFERENCES "Environment" (id) +); +CREATE TABLE "Environment_alternative_id" ( + "Environment_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("Environment_id", alternative_id), + FOREIGN KEY("Environment_id") REFERENCES "Environment" (id) +); +CREATE TABLE "Laboratory_name" ( + "Laboratory_id" INTEGER, + name TEXT, + PRIMARY KEY ("Laboratory_id", name), + FOREIGN KEY("Laboratory_id") REFERENCES "Laboratory" (id) +); +CREATE TABLE "Laboratory_description" ( + "Laboratory_id" INTEGER, + description TEXT, + PRIMARY KEY ("Laboratory_id", description), + FOREIGN KEY("Laboratory_id") REFERENCES "Laboratory" (id) +); +CREATE TABLE "Laboratory_alternative_id" ( + "Laboratory_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("Laboratory_id", alternative_id), + FOREIGN KEY("Laboratory_id") REFERENCES "Laboratory" (id) +); +CREATE TABLE "PlanSpecification_name" ( + "PlanSpecification_id" INTEGER, + name TEXT, + PRIMARY KEY ("PlanSpecification_id", name), + FOREIGN KEY("PlanSpecification_id") REFERENCES "PlanSpecification" (id) +); +CREATE TABLE "PlanSpecification_description" ( + "PlanSpecification_id" INTEGER, + description TEXT, + PRIMARY KEY ("PlanSpecification_id", description), + FOREIGN KEY("PlanSpecification_id") REFERENCES "PlanSpecification" (id) +); +CREATE TABLE "ResearchActivitySpecification_name" ( + "ResearchActivitySpecification_id" INTEGER, + name TEXT, + PRIMARY KEY ("ResearchActivitySpecification_id", name), + FOREIGN KEY("ResearchActivitySpecification_id") REFERENCES "ResearchActivitySpecification" (id) +); +CREATE TABLE "ResearchActivitySpecification_description" ( + "ResearchActivitySpecification_id" INTEGER, + description TEXT, + PRIMARY KEY ("ResearchActivitySpecification_id", description), + FOREIGN KEY("ResearchActivitySpecification_id") REFERENCES "ResearchActivitySpecification" (id) +); +CREATE TABLE "QuantifiableAttribute_name" ( + "QuantifiableAttribute_id" INTEGER, + name TEXT, + PRIMARY KEY ("QuantifiableAttribute_id", name), + FOREIGN KEY("QuantifiableAttribute_id") REFERENCES "QuantifiableAttribute" (id) +); +CREATE TABLE "QuantifiableAttribute_description" ( + "QuantifiableAttribute_id" INTEGER, + description TEXT, + PRIMARY KEY ("QuantifiableAttribute_id", description), + FOREIGN KEY("QuantifiableAttribute_id") REFERENCES "QuantifiableAttribute" (id) +); +CREATE TABLE "QuantifiableAttribute_alternative_id" ( + "QuantifiableAttribute_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("QuantifiableAttribute_id", alternative_id), + FOREIGN KEY("QuantifiableAttribute_id") REFERENCES "QuantifiableAttribute" (id) +); +CREATE TABLE "InChIKey_name" ( + "InChIKey_id" INTEGER, + name TEXT, + PRIMARY KEY ("InChIKey_id", name), + FOREIGN KEY("InChIKey_id") REFERENCES "InChIKey" (id) +); +CREATE TABLE "InChIKey_description" ( + "InChIKey_id" INTEGER, + description TEXT, + PRIMARY KEY ("InChIKey_id", description), + FOREIGN KEY("InChIKey_id") REFERENCES "InChIKey" (id) +); +CREATE TABLE "InChIKey_alternative_id" ( + "InChIKey_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("InChIKey_id", alternative_id), + FOREIGN KEY("InChIKey_id") REFERENCES "InChIKey" (id) +); +CREATE TABLE "InChi_name" ( + "InChi_id" INTEGER, + name TEXT, + PRIMARY KEY ("InChi_id", name), + FOREIGN KEY("InChi_id") REFERENCES "InChi" (id) +); +CREATE TABLE "InChi_description" ( + "InChi_id" INTEGER, + description TEXT, + PRIMARY KEY ("InChi_id", description), + FOREIGN KEY("InChi_id") REFERENCES "InChi" (id) +); +CREATE TABLE "InChi_alternative_id" ( + "InChi_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("InChi_id", alternative_id), + FOREIGN KEY("InChi_id") REFERENCES "InChi" (id) +); +CREATE TABLE "IUPACName_name" ( + "IUPACName_id" INTEGER, + name TEXT, + PRIMARY KEY ("IUPACName_id", name), + FOREIGN KEY("IUPACName_id") REFERENCES "IUPACName" (id) +); +CREATE TABLE "IUPACName_description" ( + "IUPACName_id" INTEGER, + description TEXT, + PRIMARY KEY ("IUPACName_id", description), + FOREIGN KEY("IUPACName_id") REFERENCES "IUPACName" (id) +); +CREATE TABLE "IUPACName_alternative_id" ( + "IUPACName_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("IUPACName_id", alternative_id), + FOREIGN KEY("IUPACName_id") REFERENCES "IUPACName" (id) ); CREATE TABLE "DatasetCollection" ( + id TEXT NOT NULL, + was_generated_by_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY(was_generated_by_id) REFERENCES "ResearchActivity" (id) +); +CREATE TABLE "NMRSpectroscopy" ( id INTEGER NOT NULL, - PRIMARY KEY (id) + has_part TEXT, + type_id TEXT, + evaluated_entity_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id), + FOREIGN KEY(evaluated_entity_id) REFERENCES "ChemicalSubstance" (id) +); +CREATE TABLE "ResearchActivity_name" ( + "ResearchActivity_id" INTEGER, + name TEXT, + PRIMARY KEY ("ResearchActivity_id", name), + FOREIGN KEY("ResearchActivity_id") REFERENCES "ResearchActivity" (id) +); +CREATE TABLE "ResearchActivity_description" ( + "ResearchActivity_id" INTEGER, + description TEXT, + PRIMARY KEY ("ResearchActivity_id", description), + FOREIGN KEY("ResearchActivity_id") REFERENCES "ResearchActivity" (id) +); +CREATE TABLE "ResearchActivity_alternative_id" ( + "ResearchActivity_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("ResearchActivity_id", alternative_id), + FOREIGN KEY("ResearchActivity_id") REFERENCES "ResearchActivity" (id) +); +CREATE TABLE "ChemicalSubstance_name" ( + "ChemicalSubstance_id" TEXT, + name TEXT, + PRIMARY KEY ("ChemicalSubstance_id", name), + FOREIGN KEY("ChemicalSubstance_id") REFERENCES "ChemicalSubstance" (id) +); +CREATE TABLE "ChemicalSubstance_description" ( + "ChemicalSubstance_id" TEXT, + description TEXT, + PRIMARY KEY ("ChemicalSubstance_id", description), + FOREIGN KEY("ChemicalSubstance_id") REFERENCES "ChemicalSubstance" (id) +); +CREATE TABLE "ChemicalSubstance_alternative_id" ( + "ChemicalSubstance_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("ChemicalSubstance_id", alternative_id), + FOREIGN KEY("ChemicalSubstance_id") REFERENCES "ChemicalSubstance" (id) ); CREATE TABLE "Dataset" ( - primary_email TEXT, - birth_date DATE, - age_in_years INTEGER, - vital_status VARCHAR(7), id TEXT NOT NULL, + "DatasetCollection_id" TEXT, + was_generated_by_id INTEGER, + PRIMARY KEY (id), + FOREIGN KEY("DatasetCollection_id") REFERENCES "DatasetCollection" (id), + FOREIGN KEY(was_generated_by_id) REFERENCES "ResearchActivity" (id) +); +CREATE TABLE "HardwareTool" ( + id INTEGER NOT NULL, + "ResearchActivity_id" INTEGER, + "NMRSpectroscopy_id" INTEGER, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY("ResearchActivity_id") REFERENCES "ResearchActivity" (id), + FOREIGN KEY("NMRSpectroscopy_id") REFERENCES "NMRSpectroscopy" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "SoftwareTool" ( + id INTEGER NOT NULL, + "ResearchActivity_id" INTEGER, + "NMRSpectroscopy_id" INTEGER, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY("ResearchActivity_id") REFERENCES "ResearchActivity" (id), + FOREIGN KEY("NMRSpectroscopy_id") REFERENCES "NMRSpectroscopy" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "DatasetCollection_name" ( + "DatasetCollection_id" TEXT, + name TEXT NOT NULL, + PRIMARY KEY ("DatasetCollection_id", name), + FOREIGN KEY("DatasetCollection_id") REFERENCES "DatasetCollection" (id) +); +CREATE TABLE "DatasetCollection_description" ( + "DatasetCollection_id" TEXT, + description TEXT NOT NULL, + PRIMARY KEY ("DatasetCollection_id", description), + FOREIGN KEY("DatasetCollection_id") REFERENCES "DatasetCollection" (id) +); +CREATE TABLE "DatasetCollection_alternative_id" ( + "DatasetCollection_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("DatasetCollection_id", alternative_id), + FOREIGN KEY("DatasetCollection_id") REFERENCES "DatasetCollection" (id) +); +CREATE TABLE "NMRSpectroscopy_name" ( + "NMRSpectroscopy_id" INTEGER, name TEXT, + PRIMARY KEY ("NMRSpectroscopy_id", name), + FOREIGN KEY("NMRSpectroscopy_id") REFERENCES "NMRSpectroscopy" (id) +); +CREATE TABLE "NMRSpectroscopy_description" ( + "NMRSpectroscopy_id" INTEGER, description TEXT, - "DatasetCollection_id" INTEGER, + PRIMARY KEY ("NMRSpectroscopy_id", description), + FOREIGN KEY("NMRSpectroscopy_id") REFERENCES "NMRSpectroscopy" (id) +); +CREATE TABLE "NMRSpectroscopy_alternative_id" ( + "NMRSpectroscopy_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("NMRSpectroscopy_id", alternative_id), + FOREIGN KEY("NMRSpectroscopy_id") REFERENCES "NMRSpectroscopy" (id) +); +CREATE TABLE "Tool" ( + id INTEGER NOT NULL, + "Tool_id" INTEGER, + "HardwareTool_id" INTEGER, + "SoftwareTool_id" INTEGER, + type_id TEXT, PRIMARY KEY (id), - FOREIGN KEY("DatasetCollection_id") REFERENCES "DatasetCollection" (id) + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "Dataset_name" ( + "Dataset_id" TEXT, + name TEXT NOT NULL, + PRIMARY KEY ("Dataset_id", name), + FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id) +); +CREATE TABLE "Dataset_description" ( + "Dataset_id" TEXT, + description TEXT NOT NULL, + PRIMARY KEY ("Dataset_id", description), + FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id) +); +CREATE TABLE "Dataset_alternative_id" ( + "Dataset_id" TEXT, + alternative_id TEXT, + PRIMARY KEY ("Dataset_id", alternative_id), + FOREIGN KEY("Dataset_id") REFERENCES "Dataset" (id) +); +CREATE TABLE "HardwareTool_name" ( + "HardwareTool_id" INTEGER, + name TEXT, + PRIMARY KEY ("HardwareTool_id", name), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id) +); +CREATE TABLE "HardwareTool_description" ( + "HardwareTool_id" INTEGER, + description TEXT, + PRIMARY KEY ("HardwareTool_id", description), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id) +); +CREATE TABLE "HardwareTool_alternative_id" ( + "HardwareTool_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("HardwareTool_id", alternative_id), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id) +); +CREATE TABLE "SoftwareTool_name" ( + "SoftwareTool_id" INTEGER, + name TEXT, + PRIMARY KEY ("SoftwareTool_id", name), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id) +); +CREATE TABLE "SoftwareTool_description" ( + "SoftwareTool_id" INTEGER, + description TEXT, + PRIMARY KEY ("SoftwareTool_id", description), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id) +); +CREATE TABLE "SoftwareTool_alternative_id" ( + "SoftwareTool_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("SoftwareTool_id", alternative_id), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id) +); +CREATE TABLE "Attribute" ( + id INTEGER NOT NULL, + has_value TEXT, + "EntityOfInterest_id" TEXT, + "ChemicalReaction_id" TEXT, + "ChemicalSubstance_id" TEXT, + "Tool_id" INTEGER, + "HardwareTool_id" INTEGER, + "SoftwareTool_id" INTEGER, + "Environment_id" INTEGER, + "Laboratory_id" INTEGER, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY("EntityOfInterest_id") REFERENCES "EntityOfInterest" (id), + FOREIGN KEY("ChemicalReaction_id") REFERENCES "ChemicalReaction" (id), + FOREIGN KEY("ChemicalSubstance_id") REFERENCES "ChemicalSubstance" (id), + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id), + FOREIGN KEY("Environment_id") REFERENCES "Environment" (id), + FOREIGN KEY("Laboratory_id") REFERENCES "Laboratory" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "SettingDatum" ( + id INTEGER NOT NULL, + has_value TEXT, + "Tool_id" INTEGER, + "HardwareTool_id" INTEGER, + "SoftwareTool_id" INTEGER, + type_id TEXT, + PRIMARY KEY (id), + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id), + FOREIGN KEY("HardwareTool_id") REFERENCES "HardwareTool" (id), + FOREIGN KEY("SoftwareTool_id") REFERENCES "SoftwareTool" (id), + FOREIGN KEY(type_id) REFERENCES "DefinedTerm" (id) +); +CREATE TABLE "Tool_name" ( + "Tool_id" INTEGER, + name TEXT, + PRIMARY KEY ("Tool_id", name), + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id) +); +CREATE TABLE "Tool_description" ( + "Tool_id" INTEGER, + description TEXT, + PRIMARY KEY ("Tool_id", description), + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id) +); +CREATE TABLE "Tool_alternative_id" ( + "Tool_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("Tool_id", alternative_id), + FOREIGN KEY("Tool_id") REFERENCES "Tool" (id) +); +CREATE TABLE "Attribute_name" ( + "Attribute_id" INTEGER, + name TEXT, + PRIMARY KEY ("Attribute_id", name), + FOREIGN KEY("Attribute_id") REFERENCES "Attribute" (id) +); +CREATE TABLE "Attribute_description" ( + "Attribute_id" INTEGER, + description TEXT, + PRIMARY KEY ("Attribute_id", description), + FOREIGN KEY("Attribute_id") REFERENCES "Attribute" (id) +); +CREATE TABLE "Attribute_alternative_id" ( + "Attribute_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("Attribute_id", alternative_id), + FOREIGN KEY("Attribute_id") REFERENCES "Attribute" (id) +); +CREATE TABLE "SettingDatum_name" ( + "SettingDatum_id" INTEGER, + name TEXT, + PRIMARY KEY ("SettingDatum_id", name), + FOREIGN KEY("SettingDatum_id") REFERENCES "SettingDatum" (id) +); +CREATE TABLE "SettingDatum_description" ( + "SettingDatum_id" INTEGER, + description TEXT, + PRIMARY KEY ("SettingDatum_id", description), + FOREIGN KEY("SettingDatum_id") REFERENCES "SettingDatum" (id) +); +CREATE TABLE "SettingDatum_alternative_id" ( + "SettingDatum_id" INTEGER, + alternative_id TEXT, + PRIMARY KEY ("SettingDatum_id", alternative_id), + FOREIGN KEY("SettingDatum_id") REFERENCES "SettingDatum" (id) ); \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 18f1a6e..1cdefbe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "dcat_4c_ap" -version = "0.1.0" +version = "0.0.0.post2.dev0+cd63f19" description = "This is an extension of the DCAT Application Profile in LinkML. It is intended to be used by NFDI4Chem & NFDI 4Cat as a core that can further be extended in profiles to provide domain specific metadata for a dataset." authors = ["Philip Strömert "] license = "MIT" diff --git a/src/data/examples/Dataset-001.yaml b/src/data/examples/Dataset-001.yaml index d4b3d6c..4808e65 100644 --- a/src/data/examples/Dataset-001.yaml +++ b/src/data/examples/Dataset-001.yaml @@ -1,7 +1,30 @@ -# Example data object +# Example Dataset object --- -entries: - - id: example:Dataset001 - name: foo bar - primary_email: foo.bar@example.com - age_in_years: 33 +id: 10-14272-kvoivnbynqxcny-bochjotcsa-n-chmo0000595 +alternative_id: + - doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595 + - https://www.chemotion-repository.net/pid/37012 +name: "13C nuclear magnetic resonance spectroscopy (13C NMR)" +description: "Dataset for 13C nuclear magnetic resonance spectroscopy (13C NMR)" +was_generated_by: + #id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595/spectroscopy + type: + id: CHMO:0000595 + name: "13C nuclear magnetic resonance spectroscopy" + evaluated_entity: + type: + id: CHEBI:59999 + name: "Chemical Substance" + id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N.1 + name: "CRS-37013" + alternative_id: + - https://www.chemotion-repository.net/pid/37013 + inchikey: + has_value: KVOIVNBYNQXCNY-BOCHJOTCSA-N + used_tool: + - #id: doi:10.14272/KVOIVNBYNQXCNY-BOCHJOTCSA-N/CHMO0000595/spectrometer + type: + id: OBI:0000566 + name: "NMR instrument" + #has_setting: + \ No newline at end of file diff --git a/src/dcat_4c_ap/datamodel/dcat_4c_ap.py b/src/dcat_4c_ap/datamodel/dcat_4c_ap.py index 93dd8c4..2f3af25 100644 --- a/src/dcat_4c_ap/datamodel/dcat_4c_ap.py +++ b/src/dcat_4c_ap/datamodel/dcat_4c_ap.py @@ -1,10 +1,10 @@ # Auto generated from dcat_4c_ap.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-10-25T15:40:14 +# Generation date: 2024-10-25T15:45:58 # Schema: dcat-4C-ap # # id: https://w3id.org/StroemPhi/dcat-4C-ap # description: This is an extension of the DCAT Application Profile in LinkML. It is intended to be used by NFDI4Chem & NFDI 4Cat as a core that can further be extended in profiles to provide domain specific metadata for a dataset. -# license: MIT +# license: CC-BY 4.0 import dataclasses import re @@ -57,8 +57,8 @@ URIRef ) -from linkml_runtime.linkml_model.types import Date, Integer, String, Uriorcurie -from linkml_runtime.utils.metamodelcore import URIorCURIE, XSDDate +from linkml_runtime.linkml_model.types import String, Uriorcurie +from linkml_runtime.utils.metamodelcore import URIorCURIE metamodel_version = "1.7.0" version = None @@ -67,74 +67,122 @@ dataclasses._init_fn = dataclasses_init_fn_with_kwargs # Namespaces +BFO = CurieNamespace('BFO', 'http://purl.obolibrary.org/obo/BFO_') +CHEBI = CurieNamespace('CHEBI', 'http://purl.obolibrary.org/obo/CHEBI_') +CHEMINF = CurieNamespace('CHEMINF', 'http://semanticscience.org/resource/CHEMINF_') +CHMO = CurieNamespace('CHMO', 'http://purl.obolibrary.org/obo/CHMO_') +FOODON = CurieNamespace('FOODON', 'http://purl.obolibrary.org/obo/FOODON_') +IAO = CurieNamespace('IAO', 'http://purl.obolibrary.org/obo/IAO_') +NCIT = CurieNamespace('NCIT', 'http://purl.obolibrary.org/obo/NCIT_') +OBI = CurieNamespace('OBI', 'http://purl.obolibrary.org/obo/OBI_') PATO = CurieNamespace('PATO', 'http://purl.obolibrary.org/obo/PATO_') -BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/') -DCAT_4C_AP = CurieNamespace('dcat_4c_ap', 'https://w3id.org/StroemPhi/dcat-4C-ap/') -EXAMPLE = CurieNamespace('example', 'https://example.org/') +RO = CurieNamespace('RO', 'http://purl.obolibrary.org/obo/RO_') +RXNO = CurieNamespace('RXNO', 'http://example.org/UNKNOWN/RXNO/') +SIO = CurieNamespace('SIO', 'http://semanticscience.org/resource/SIO_') +T4FS = CurieNamespace('T4FS', 'http://purl.obolibrary.org/obo/T4FS_') +BIOLINK = CurieNamespace('biolink', 'https://w3id.org/biolink/vocab/') +DCAT = CurieNamespace('dcat', 'http://www.w3.org/ns/dcat#') +DCTERMS = CurieNamespace('dcterms', 'http://purl.org/dc/terms/') +DOI = CurieNamespace('doi', 'https://doi.org/') +EX = CurieNamespace('ex', 'http://example.org/') +FOAF = CurieNamespace('foaf', 'http://xmlns.com/foaf/0.1/') LINKML = CurieNamespace('linkml', 'https://w3id.org/linkml/') +NFDI = CurieNamespace('nfdi', 'https://w3id.org/StroemPhi/dcat_4C_ap/') +OWL = CurieNamespace('owl', 'http://www.w3.org/2002/07/owl#') +PROV = CurieNamespace('prov', 'http://www.w3.org/ns/prov#') +QUDT = CurieNamespace('qudt', 'http://qudt.org/schema/qudt/') +RDF = CurieNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#') +RDFS = CurieNamespace('rdfs', 'http://www.w3.org/2000/01/rdf-schema#') SCHEMA = CurieNamespace('schema', 'http://schema.org/') -DEFAULT_ = DCAT_4C_AP +SKOS = CurieNamespace('skos', 'http://www.w3.org/2004/02/skos/core#') +SOSA = CurieNamespace('sosa', 'http://www.w3.org/ns/sosa/') +VCARD = CurieNamespace('vcard', 'http://www.w3.org/2006/vcard/ns#') +DEFAULT_ = NFDI # Types # Class references -class NamedThingId(URIorCURIE): +class DefinedTermId(URIorCURIE): pass -class DatasetId(NamedThingId): +class DatasetId(URIorCURIE): + pass + + +class DatasetCollectionId(DatasetId): + pass + + +class EntityOfInterestId(URIorCURIE): + pass + + +class ChemicalReactionId(EntityOfInterestId): + pass + + +class ChemicalSubstanceId(EntityOfInterestId): pass @dataclass(repr=False) -class NamedThing(YAMLRoot): +class DefinedTerm(YAMLRoot): """ - A generic grouping for any identifiable entity + A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the + rdf:type of an entity within this schema. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = SCHEMA["Thing"] - class_class_curie: ClassVar[str] = "schema:Thing" - class_name: ClassVar[str] = "NamedThing" - class_model_uri: ClassVar[URIRef] = DCAT_4C_AP.NamedThing + class_class_uri: ClassVar[URIRef] = SCHEMA["DefinedTerm"] + class_class_curie: ClassVar[str] = "schema:DefinedTerm" + class_name: ClassVar[str] = "DefinedTerm" + class_model_uri: ClassVar[URIRef] = NFDI.DefinedTerm - id: Union[str, NamedThingId] = None - name: Optional[str] = None - description: Optional[str] = None + id: Union[str, DefinedTermId] = None + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + name: Optional[Union[str, List[str]]] = empty_list() + from_CV: 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, NamedThingId): - self.id = NamedThingId(self.id) + if not isinstance(self.id, DefinedTermId): + self.id = DefinedTermId(self.id) + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] - if self.name is not None and not isinstance(self.name, str): - self.name = str(self.name) + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] - if self.description is not None and not isinstance(self.description, str): - self.description = str(self.description) + if self.from_CV is not None and not isinstance(self.from_CV, str): + self.from_CV = str(self.from_CV) super().__post_init__(**kwargs) @dataclass(repr=False) -class Dataset(NamedThing): +class Dataset(YAMLRoot): """ - Represents a Dataset + A collection of data, published or curated by a single agent, and available for access or download in one or more + representations. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = DCAT_4C_AP["Dataset"] - class_class_curie: ClassVar[str] = "dcat_4c_ap:Dataset" + class_class_uri: ClassVar[URIRef] = DCAT["Dataset"] + class_class_curie: ClassVar[str] = "dcat:Dataset" class_name: ClassVar[str] = "Dataset" - class_model_uri: ClassVar[URIRef] = DCAT_4C_AP.Dataset + class_model_uri: ClassVar[URIRef] = NFDI.Dataset id: Union[str, DatasetId] = 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 + name: Union[str, List[str]] = None + description: Union[str, List[str]] = None + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + was_generated_by: Optional[Union[dict, "ResearchActivity"]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -142,88 +190,702 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, DatasetId): self.id = DatasetId(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._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] - if self.birth_date is not None and not isinstance(self.birth_date, XSDDate): - self.birth_date = XSDDate(self.birth_date) + if self._is_empty(self.description): + self.MissingRequiredField("description") + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] - 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 not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] - if self.vital_status is not None and not isinstance(self.vital_status, PersonStatus): - self.vital_status = PersonStatus(self.vital_status) + if self.was_generated_by is not None and not isinstance(self.was_generated_by, ResearchActivity): + self.was_generated_by = ResearchActivity(**as_dict(self.was_generated_by)) super().__post_init__(**kwargs) @dataclass(repr=False) -class DatasetCollection(YAMLRoot): +class DatasetCollection(Dataset): """ - A holder for Dataset objects + A curated collection of metadata about data resources. """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = DCAT_4C_AP["DatasetCollection"] - class_class_curie: ClassVar[str] = "dcat_4c_ap:DatasetCollection" + class_class_uri: ClassVar[URIRef] = DCAT["Catalog"] + class_class_curie: ClassVar[str] = "dcat:Catalog" class_name: ClassVar[str] = "DatasetCollection" - class_model_uri: ClassVar[URIRef] = DCAT_4C_AP.DatasetCollection + class_model_uri: ClassVar[URIRef] = NFDI.DatasetCollection + + id: Union[str, DatasetCollectionId] = None + name: Union[str, List[str]] = None + description: Union[str, List[str]] = None + has_dataset: Optional[Union[Dict[Union[str, DatasetId], Union[dict, Dataset]], List[Union[dict, Dataset]]]] = empty_dict() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self._is_empty(self.id): + self.MissingRequiredField("id") + if not isinstance(self.id, DatasetCollectionId): + self.id = DatasetCollectionId(self.id) + + if self._is_empty(self.name): + self.MissingRequiredField("name") + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if self._is_empty(self.description): + self.MissingRequiredField("description") + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + self._normalize_inlined_as_list(slot_name="has_dataset", slot_type=Dataset, key_name="id", keyed=True) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ResearchActivity(YAMLRoot): + """ + An activity (process) that has the objective to produce information about an entity by evaluating it. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Activity"] + class_class_curie: ClassVar[str] = "prov:Activity" + class_name: ClassVar[str] = "ResearchActivity" + class_model_uri: ClassVar[URIRef] = NFDI.ResearchActivity + + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + evaluated_entity: Optional[Union[dict, "EntityOfInterest"]] = None + used_hardware: Optional[Union[Union[dict, "HardwareTool"], List[Union[dict, "HardwareTool"]]]] = empty_list() + used_software: Optional[Union[Union[dict, "SoftwareTool"], List[Union[dict, "SoftwareTool"]]]] = empty_list() + has_part: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.evaluated_entity is not None and not isinstance(self.evaluated_entity, EntityOfInterest): + self.evaluated_entity = EntityOfInterest(**as_dict(self.evaluated_entity)) + + if not isinstance(self.used_hardware, list): + self.used_hardware = [self.used_hardware] if self.used_hardware is not None else [] + self.used_hardware = [v if isinstance(v, HardwareTool) else HardwareTool(**as_dict(v)) for v in self.used_hardware] + + if not isinstance(self.used_software, list): + self.used_software = [self.used_software] if self.used_software is not None else [] + self.used_software = [v if isinstance(v, SoftwareTool) else SoftwareTool(**as_dict(v)) for v in self.used_software] + + if self.has_part is not None and not isinstance(self.has_part, str): + self.has_part = str(self.has_part) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class NMRSpectroscopy(ResearchActivity): + """ + Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by + inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of + radio frequency pulses with delay periods in between them. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHMO["0000613"] + class_class_curie: ClassVar[str] = "CHMO:0000613" + class_name: ClassVar[str] = "NMRSpectroscopy" + class_model_uri: ClassVar[URIRef] = NFDI.NMRSpectroscopy + + evaluated_entity: Optional[Union[dict, "ChemicalSubstance"]] = None + type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if self.evaluated_entity is not None and not isinstance(self.evaluated_entity, ChemicalSubstance): + self.evaluated_entity = ChemicalSubstance(**as_dict(self.evaluated_entity)) + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class EntityOfInterest(YAMLRoot): + """ + Something that is being evaluated in a scientific process. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "EntityOfInterest" + class_model_uri: ClassVar[URIRef] = NFDI.EntityOfInterest + + id: Union[str, EntityOfInterestId] = None + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + has_attribute: Optional[Union[Union[dict, "Attribute"], List[Union[dict, "Attribute"]]]] = empty_list() + has_part: 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, EntityOfInterestId): + self.id = EntityOfInterestId(self.id) + + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if not isinstance(self.has_attribute, list): + self.has_attribute = [self.has_attribute] if self.has_attribute is not None else [] + self.has_attribute = [v if isinstance(v, Attribute) else Attribute(**as_dict(v)) for v in self.has_attribute] + + if self.has_part is not None and not isinstance(self.has_part, str): + self.has_part = str(self.has_part) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChemicalReaction(EntityOfInterest): + """ + An experimental procedure with the aim of producing a portion of a given compound or mixture. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = RXNO["0000329"] + class_class_curie: ClassVar[str] = "RXNO:0000329" + class_name: ClassVar[str] = "ChemicalReaction" + class_model_uri: ClassVar[URIRef] = NFDI.ChemicalReaction + + id: Union[str, ChemicalReactionId] = 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, ChemicalReactionId): + self.id = ChemicalReactionId(self.id) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class ChemicalSubstance(EntityOfInterest): + """ + A chemical substance that is being evaluated in a scientific process. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEBI["59999"] + class_class_curie: ClassVar[str] = "CHEBI:59999" + class_name: ClassVar[str] = "ChemicalSubstance" + class_model_uri: ClassVar[URIRef] = NFDI.ChemicalSubstance + + id: Union[str, ChemicalSubstanceId] = None + inchikey: Optional[Union[dict, "InChIKey"]] = None + inchi: Optional[Union[dict, "InChi"]] = None + iupac_name: Optional[Union[dict, "IUPACName"]] = 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, ChemicalSubstanceId): + self.id = ChemicalSubstanceId(self.id) + + if self.inchikey is not None and not isinstance(self.inchikey, InChIKey): + self.inchikey = InChIKey(**as_dict(self.inchikey)) + + if self.inchi is not None and not isinstance(self.inchi, InChi): + self.inchi = InChi(**as_dict(self.inchi)) + + if self.iupac_name is not None and not isinstance(self.iupac_name, IUPACName): + self.iupac_name = IUPACName(**as_dict(self.iupac_name)) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class Tool(YAMLRoot): + """ + A entity with a certain function used within a scientific activity. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "Tool" + class_model_uri: ClassVar[URIRef] = NFDI.Tool + + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + has_part: Optional[Union[Union[dict, "Tool"], List[Union[dict, "Tool"]]]] = empty_list() + has_attribute: Optional[Union[Union[dict, "Attribute"], List[Union[dict, "Attribute"]]]] = empty_list() + has_setting: Optional[Union[Union[dict, "SettingDatum"], List[Union[dict, "SettingDatum"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if not isinstance(self.has_part, list): + self.has_part = [self.has_part] if self.has_part is not None else [] + self.has_part = [v if isinstance(v, Tool) else Tool(**as_dict(v)) for v in self.has_part] + + if not isinstance(self.has_attribute, list): + self.has_attribute = [self.has_attribute] if self.has_attribute is not None else [] + self.has_attribute = [v if isinstance(v, Attribute) else Attribute(**as_dict(v)) for v in self.has_attribute] + + if not isinstance(self.has_setting, list): + self.has_setting = [self.has_setting] if self.has_setting is not None else [] + self.has_setting = [v if isinstance(v, SettingDatum) else SettingDatum(**as_dict(v)) for v in self.has_setting] + + super().__post_init__(**kwargs) + + +class HardwareTool(Tool): + """ + A hardware with a certain function. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = NFDI["HardwareTool"] + class_class_curie: ClassVar[str] = "nfdi:HardwareTool" + class_name: ClassVar[str] = "HardwareTool" + class_model_uri: ClassVar[URIRef] = NFDI.HardwareTool + + +class SoftwareTool(Tool): + """ + A software with a certain function. + """ + _inherited_slots: ClassVar[List[str]] = [] - entries: Optional[Union[Dict[Union[str, DatasetId], Union[dict, Dataset]], List[Union[dict, Dataset]]]] = empty_dict() + class_class_uri: ClassVar[URIRef] = NFDI["SoftwareTool"] + class_class_curie: ClassVar[str] = "nfdi:SoftwareTool" + class_name: ClassVar[str] = "SoftwareTool" + class_model_uri: ClassVar[URIRef] = NFDI.SoftwareTool + + +@dataclass(repr=False) +class Environment(YAMLRoot): + """ + The environment in which the dataset creating Observation took place (e.g. a lab). + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "Environment" + class_model_uri: ClassVar[URIRef] = NFDI.Environment + + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + has_attribute: Optional[Union[Union[dict, "Attribute"], List[Union[dict, "Attribute"]]]] = empty_list() + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if not isinstance(self.has_attribute, list): + self.has_attribute = [self.has_attribute] if self.has_attribute is not None else [] + self.has_attribute = [v if isinstance(v, Attribute) else Attribute(**as_dict(v)) for v in self.has_attribute] + + super().__post_init__(**kwargs) + + +class Laboratory(Environment): + """ + A facility that provides controlled conditions in which scientific or technological research, experiments, and + measurement may be performed. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "Laboratory" + class_model_uri: ClassVar[URIRef] = NFDI.Laboratory + + +@dataclass(repr=False) +class PlanSpecification(YAMLRoot): + """ + "A piece of information that specifies: + a) how an activity has to be carried out by its agents and + b) the attributes of the passive activity participants in terms of their presence and magnitude. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "PlanSpecification" + class_model_uri: ClassVar[URIRef] = NFDI.PlanSpecification + + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + super().__post_init__(**kwargs) + + +class ResearchActivitySpecification(PlanSpecification): + """ + A PlanSpecification that specifies a ResearchActivity. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = PROV["Entity"] + class_class_curie: ClassVar[str] = "prov:Entity" + class_name: ClassVar[str] = "ResearchActivitySpecification" + class_model_uri: ClassVar[URIRef] = NFDI.ResearchActivitySpecification + + +@dataclass(repr=False) +class Attribute(YAMLRoot): + """ + A piece of information that is attributed to an entity of interest, tool or environment. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = IAO["0000030"] + class_class_curie: ClassVar[str] = "IAO:0000030" + class_name: ClassVar[str] = "Attribute" + class_model_uri: ClassVar[URIRef] = NFDI.Attribute + + name: Optional[Union[str, List[str]]] = empty_list() + description: Optional[Union[str, List[str]]] = empty_list() + alternative_id: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() + type: Optional[Union[dict, DefinedTerm]] = None + has_value: Optional[str] = None + + def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): + if not isinstance(self.name, list): + self.name = [self.name] if self.name is not None else [] + self.name = [v if isinstance(v, str) else str(v) for v in self.name] + + if not isinstance(self.description, list): + self.description = [self.description] if self.description is not None else [] + self.description = [v if isinstance(v, str) else str(v) for v in self.description] + + if not isinstance(self.alternative_id, list): + self.alternative_id = [self.alternative_id] if self.alternative_id is not None else [] + self.alternative_id = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.alternative_id] + + if self.type is not None and not isinstance(self.type, DefinedTerm): + self.type = DefinedTerm(**as_dict(self.type)) + + if self.has_value is not None and not isinstance(self.has_value, str): + self.has_value = str(self.has_value) + + super().__post_init__(**kwargs) + + +@dataclass(repr=False) +class QuantifiableAttribute(Attribute): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Quantity"] + class_class_curie: ClassVar[str] = "qudt:Quantity" + class_name: ClassVar[str] = "QuantifiableAttribute" + class_model_uri: ClassVar[URIRef] = NFDI.QuantifiableAttribute + + has_quantity_kind: Optional[str] = None + applicable_unit: Optional[str] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - self._normalize_inlined_as_dict(slot_name="entries", slot_type=Dataset, key_name="id", keyed=True) + if self.has_quantity_kind is not None and not isinstance(self.has_quantity_kind, str): + self.has_quantity_kind = str(self.has_quantity_kind) + + if self.applicable_unit is not None and not isinstance(self.applicable_unit, str): + self.applicable_unit = str(self.applicable_unit) super().__post_init__(**kwargs) +class AttributeKind(YAMLRoot): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["QuantityKind"] + class_class_curie: ClassVar[str] = "qudt:QuantityKind" + class_name: ClassVar[str] = "AttributeKind" + class_model_uri: ClassVar[URIRef] = NFDI.AttributeKind + + +class Unit(YAMLRoot): + """ + A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other + quantities the same kind (more generally of equivalent dimension). + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = QUDT["Unit"] + class_class_curie: ClassVar[str] = "qudt:Unit" + class_name: ClassVar[str] = "Unit" + class_model_uri: ClassVar[URIRef] = NFDI.Unit + + +class SettingDatum(Attribute): + """ + An attribute that specifies the configuration of a tool. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = IAO["0000140"] + class_class_curie: ClassVar[str] = "IAO:0000140" + class_name: ClassVar[str] = "SettingDatum" + class_model_uri: ClassVar[URIRef] = NFDI.SettingDatum + + +class InChIKey(Attribute): + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000059"] + class_class_curie: ClassVar[str] = "CHEMINF:000059" + class_name: ClassVar[str] = "InChIKey" + class_model_uri: ClassVar[URIRef] = NFDI.InChIKey + + +class InChi(Attribute): + """ + A structure descriptor which conforms to the InChI format specification. + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000113"] + class_class_curie: ClassVar[str] = "CHEMINF:000113" + class_name: ClassVar[str] = "InChi" + class_model_uri: ClassVar[URIRef] = NFDI.InChi + + +class IUPACName(Attribute): + """ + An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical + nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC). + """ + _inherited_slots: ClassVar[List[str]] = [] + + class_class_uri: ClassVar[URIRef] = CHEMINF["000107"] + class_class_curie: ClassVar[str] = "CHEMINF:000107" + class_name: ClassVar[str] = "IUPACName" + class_model_uri: ClassVar[URIRef] = NFDI.IUPACName + + # Enumerations -class PersonStatus(EnumDefinitionImpl): - - ALIVE = PermissibleValue( - text="ALIVE", - description="the person is living", - meaning=PATO["0001421"]) - DEAD = PermissibleValue( - text="DEAD", - description="the person is deceased", - meaning=PATO["0001422"]) - UNKNOWN = PermissibleValue( - text="UNKNOWN", - description="the vital status is not known") +class NMRSpectroscopyEnum(EnumDefinitionImpl): + + _defn = EnumDefinition( + name="NMRSpectroscopyEnum", + ) + +class EntityOfInterestTypeEnum(EnumDefinitionImpl): _defn = EnumDefinition( - name="PersonStatus", + name="EntityOfInterestTypeEnum", + ) + + @classmethod + def _addvals(cls): + setattr(cls, "Chemical Substance", + PermissibleValue( + text="Chemical Substance", + meaning=CHEBI["59999"])) + +class ResearchActivityTypeEnum(EnumDefinitionImpl): + + _defn = EnumDefinition( + name="ResearchActivityTypeEnum", ) # Slots class slots: pass -slots.id = Slot(uri=SCHEMA.identifier, name="id", curie=SCHEMA.curie('identifier'), - model_uri=DCAT_4C_AP.id, domain=None, range=URIRef) +slots.type = Slot(uri=RDF.type, name="type", curie=RDF.curie('type'), + model_uri=NFDI.type, domain=None, range=Optional[str]) + +slots.alternative_id = Slot(uri=DCTERMS.identifier, name="alternative_id", curie=DCTERMS.curie('identifier'), + model_uri=NFDI.alternative_id, domain=None, range=Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]]) + +slots.id = Slot(uri=NFDI.id, name="id", curie=NFDI.curie('id'), + model_uri=NFDI.id, domain=None, range=URIRef) + +slots.description = Slot(uri=DCTERMS.description, name="description", curie=DCTERMS.curie('description'), + model_uri=NFDI.description, domain=None, range=Optional[Union[str, List[str]]]) + +slots.name = Slot(uri=DCTERMS.title, name="name", curie=DCTERMS.curie('title'), + model_uri=NFDI.name, domain=None, range=Optional[Union[str, List[str]]]) + +slots.was_generated_by = Slot(uri=NFDI.was_generated_by, name="was_generated_by", curie=NFDI.curie('was_generated_by'), + model_uri=NFDI.was_generated_by, domain=None, range=Optional[Union[dict, ResearchActivity]]) + +slots.has_dataset = Slot(uri=DCAT.dataset, name="has_dataset", curie=DCAT.curie('dataset'), + model_uri=NFDI.has_dataset, domain=None, range=Optional[Union[Dict[Union[str, DatasetId], Union[dict, Dataset]], List[Union[dict, Dataset]]]]) + +slots.evaluated_entity = Slot(uri=PROV.used, name="evaluated_entity", curie=PROV.curie('used'), + model_uri=NFDI.evaluated_entity, domain=None, range=Optional[Union[dict, EntityOfInterest]]) + +slots.used_hardware = Slot(uri=PROV.used, name="used_hardware", curie=PROV.curie('used'), + model_uri=NFDI.used_hardware, domain=None, range=Optional[Union[Union[dict, HardwareTool], List[Union[dict, HardwareTool]]]]) + +slots.used_software = Slot(uri=PROV.used, name="used_software", curie=PROV.curie('used'), + model_uri=NFDI.used_software, domain=None, range=Optional[Union[Union[dict, SoftwareTool], List[Union[dict, SoftwareTool]]]]) + +slots.has_part = Slot(uri=DCTERMS.hasPart, name="has_part", curie=DCTERMS.curie('hasPart'), + model_uri=NFDI.has_part, domain=None, range=Optional[str]) + +slots.has_attribute = Slot(uri=DCTERMS.relation, name="has_attribute", curie=DCTERMS.curie('relation'), + model_uri=NFDI.has_attribute, domain=None, range=Optional[Union[Union[dict, Attribute], List[Union[dict, Attribute]]]]) + +slots.has_setting = Slot(uri=NFDI.has_setting, name="has_setting", curie=NFDI.curie('has_setting'), + model_uri=NFDI.has_setting, domain=None, range=Optional[Union[Union[dict, SettingDatum], List[Union[dict, SettingDatum]]]]) + +slots.has_value = Slot(uri=PROV.value, name="has_value", curie=PROV.curie('value'), + model_uri=NFDI.has_value, domain=None, range=Optional[str]) + +slots.has_unit = Slot(uri=NFDI.has_unit, name="has_unit", curie=NFDI.curie('has_unit'), + model_uri=NFDI.has_unit, domain=None, range=Optional[str]) + +slots.definedTerm__from_CV = Slot(uri=SCHEMA.inDefinedTermSet, name="definedTerm__from_CV", curie=SCHEMA.curie('inDefinedTermSet'), + model_uri=NFDI.definedTerm__from_CV, domain=None, range=Optional[str]) + +slots.chemicalSubstance__inchikey = Slot(uri=NFDI.inchikey, name="chemicalSubstance__inchikey", curie=NFDI.curie('inchikey'), + model_uri=NFDI.chemicalSubstance__inchikey, domain=None, range=Optional[Union[dict, InChIKey]]) + +slots.chemicalSubstance__inchi = Slot(uri=NFDI.inchi, name="chemicalSubstance__inchi", curie=NFDI.curie('inchi'), + model_uri=NFDI.chemicalSubstance__inchi, domain=None, range=Optional[Union[dict, InChi]]) + +slots.chemicalSubstance__iupac_name = Slot(uri=NFDI.iupac_name, name="chemicalSubstance__iupac_name", curie=NFDI.curie('iupac_name'), + model_uri=NFDI.chemicalSubstance__iupac_name, domain=None, range=Optional[Union[dict, IUPACName]]) + +slots.quantifiableAttribute__has_quantity_kind = Slot(uri=QUDT.hasQuantityKind, name="quantifiableAttribute__has_quantity_kind", curie=QUDT.curie('hasQuantityKind'), + model_uri=NFDI.quantifiableAttribute__has_quantity_kind, domain=None, range=Optional[str]) + +slots.quantifiableAttribute__applicable_unit = Slot(uri=QUDT.applicableUnit, name="quantifiableAttribute__applicable_unit", curie=QUDT.curie('applicableUnit'), + model_uri=NFDI.quantifiableAttribute__applicable_unit, domain=None, range=Optional[str]) + +slots.DefinedTerm_name = Slot(uri=SCHEMA.name, name="DefinedTerm_name", curie=SCHEMA.curie('name'), + model_uri=NFDI.DefinedTerm_name, domain=DefinedTerm, range=Optional[Union[str, List[str]]]) + +slots.DefinedTerm_alternative_id = Slot(uri=SCHEMA.identifier, name="DefinedTerm_alternative_id", curie=SCHEMA.curie('identifier'), + model_uri=NFDI.DefinedTerm_alternative_id, domain=DefinedTerm, range=Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]]) + +slots.Dataset_name = Slot(uri=DCTERMS.title, name="Dataset_name", curie=DCTERMS.curie('title'), + model_uri=NFDI.Dataset_name, domain=Dataset, range=Union[str, List[str]]) + +slots.Dataset_description = Slot(uri=DCTERMS.description, name="Dataset_description", curie=DCTERMS.curie('description'), + model_uri=NFDI.Dataset_description, domain=Dataset, range=Union[str, List[str]]) + +slots.Dataset_was_generated_by = Slot(uri=NFDI.was_generated_by, name="Dataset_was_generated_by", curie=NFDI.curie('was_generated_by'), + model_uri=NFDI.Dataset_was_generated_by, domain=Dataset, range=Optional[Union[dict, "ResearchActivity"]]) + +slots.DatasetCollection_id = Slot(uri=NFDI.id, name="DatasetCollection_id", curie=NFDI.curie('id'), + model_uri=NFDI.DatasetCollection_id, domain=DatasetCollection, range=Union[str, DatasetCollectionId]) + +slots.DatasetCollection_name = Slot(uri=DCTERMS.title, name="DatasetCollection_name", curie=DCTERMS.curie('title'), + model_uri=NFDI.DatasetCollection_name, domain=DatasetCollection, range=Union[str, List[str]]) + +slots.DatasetCollection_description = Slot(uri=DCTERMS.description, name="DatasetCollection_description", curie=DCTERMS.curie('description'), + model_uri=NFDI.DatasetCollection_description, domain=DatasetCollection, range=Union[str, List[str]]) + +slots.ResearchActivity_type = Slot(uri=RDF.type, name="ResearchActivity_type", curie=RDF.curie('type'), + model_uri=NFDI.ResearchActivity_type, domain=ResearchActivity, range=Optional[Union[dict, DefinedTerm]]) -slots.name = Slot(uri=SCHEMA.name, name="name", curie=SCHEMA.curie('name'), - model_uri=DCAT_4C_AP.name, domain=None, range=Optional[str]) +slots.NMRSpectroscopy_evaluated_entity = Slot(uri=PROV.used, name="NMRSpectroscopy_evaluated_entity", curie=PROV.curie('used'), + model_uri=NFDI.NMRSpectroscopy_evaluated_entity, domain=NMRSpectroscopy, range=Optional[Union[dict, "ChemicalSubstance"]]) -slots.description = Slot(uri=SCHEMA.description, name="description", curie=SCHEMA.curie('description'), - model_uri=DCAT_4C_AP.description, domain=None, range=Optional[str]) +slots.NMRSpectroscopy_type = Slot(uri=RDF.type, name="NMRSpectroscopy_type", curie=RDF.curie('type'), + model_uri=NFDI.NMRSpectroscopy_type, domain=NMRSpectroscopy, range=Optional[Union[dict, DefinedTerm]]) -slots.primary_email = Slot(uri=SCHEMA.email, name="primary_email", curie=SCHEMA.curie('email'), - model_uri=DCAT_4C_AP.primary_email, domain=None, range=Optional[str]) +slots.EntityOfInterest_type = Slot(uri=RDF.type, name="EntityOfInterest_type", curie=RDF.curie('type'), + model_uri=NFDI.EntityOfInterest_type, domain=EntityOfInterest, range=Optional[Union[dict, DefinedTerm]]) -slots.birth_date = Slot(uri=SCHEMA.birthDate, name="birth_date", curie=SCHEMA.curie('birthDate'), - model_uri=DCAT_4C_AP.birth_date, domain=None, range=Optional[Union[str, XSDDate]]) +slots.Tool_type = Slot(uri=RDF.type, name="Tool_type", curie=RDF.curie('type'), + model_uri=NFDI.Tool_type, domain=Tool, range=Optional[Union[dict, DefinedTerm]]) -slots.age_in_years = Slot(uri=DCAT_4C_AP.age_in_years, name="age_in_years", curie=DCAT_4C_AP.curie('age_in_years'), - model_uri=DCAT_4C_AP.age_in_years, domain=None, range=Optional[int]) +slots.Tool_has_part = Slot(uri=DCTERMS.hasPart, name="Tool_has_part", curie=DCTERMS.curie('hasPart'), + model_uri=NFDI.Tool_has_part, domain=Tool, range=Optional[Union[Union[dict, "Tool"], List[Union[dict, "Tool"]]]]) -slots.vital_status = Slot(uri=DCAT_4C_AP.vital_status, name="vital_status", curie=DCAT_4C_AP.curie('vital_status'), - model_uri=DCAT_4C_AP.vital_status, domain=None, range=Optional[Union[str, "PersonStatus"]]) +slots.Environment_type = Slot(uri=RDF.type, name="Environment_type", curie=RDF.curie('type'), + model_uri=NFDI.Environment_type, domain=Environment, range=Optional[Union[dict, DefinedTerm]]) -slots.datasetCollection__entries = Slot(uri=DCAT_4C_AP.entries, name="datasetCollection__entries", curie=DCAT_4C_AP.curie('entries'), - model_uri=DCAT_4C_AP.datasetCollection__entries, domain=None, range=Optional[Union[Dict[Union[str, DatasetId], Union[dict, Dataset]], List[Union[dict, Dataset]]]]) +slots.PlanSpecification_type = Slot(uri=RDF.type, name="PlanSpecification_type", curie=RDF.curie('type'), + model_uri=NFDI.PlanSpecification_type, domain=PlanSpecification, range=Optional[Union[dict, DefinedTerm]]) -slots.Dataset_primary_email = Slot(uri=SCHEMA.email, name="Dataset_primary_email", curie=SCHEMA.curie('email'), - model_uri=DCAT_4C_AP.Dataset_primary_email, domain=Dataset, range=Optional[str], - pattern=re.compile(r'^\S+@[\S+\.]+\S+')) \ No newline at end of file +slots.Attribute_type = Slot(uri=RDF.type, name="Attribute_type", curie=RDF.curie('type'), + model_uri=NFDI.Attribute_type, domain=Attribute, range=Optional[Union[dict, DefinedTerm]]) \ No newline at end of file diff --git a/src/dcat_4c_ap/schema/dcat_4c_ap.yaml b/src/dcat_4c_ap/schema/dcat_4c_ap.yaml index a242d72..e8de947 100644 --- a/src/dcat_4c_ap/schema/dcat_4c_ap.yaml +++ b/src/dcat_4c_ap/schema/dcat_4c_ap.yaml @@ -1,96 +1,438 @@ --- id: https://w3id.org/StroemPhi/dcat-4C-ap name: dcat-4C-ap -title: dcat-4C-ap +title: DCAT-4C-AP description: |- This is an extension of the DCAT Application Profile in LinkML. It is intended to be used by NFDI4Chem & NFDI 4Cat as a core that can further be extended in profiles to provide domain specific metadata for a dataset. -license: MIT +license: CC-BY 4.0 see_also: - - https://StroemPhi.github.io/dcat-4C-ap - + - https://StroemPhi.github.io/dcat-NFDI-ap + - https://github.com/HendrikBorgelt/DCAT-ap_as_LinkML_template/blob/main/src/dcatlinkml/schema/dcatlinkml.yaml + - https://gitlab.com/opensourcelab/scientificdata/scidats/-/blob/feature/linkml-schemata/schemata/metadata_model_scidats_dcat_ap.yaml?ref_type=heads prefixes: - dcat_4c_ap: https://w3id.org/StroemPhi/dcat-4C-ap/ + nfdi: https://w3id.org/StroemPhi/dcat_4C_ap/ linkml: https://w3id.org/linkml/ - biolink: https://w3id.org/biolink/ + biolink: https://w3id.org/biolink/vocab/ schema: http://schema.org/ + dcterms: http://purl.org/dc/terms/ + dcat: http://www.w3.org/ns/dcat# + prov: http://www.w3.org/ns/prov# + sosa: http://www.w3.org/ns/sosa/ + vcard: http://www.w3.org/2006/vcard/ns# + rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# + rdfs: http://www.w3.org/2000/01/rdf-schema# + owl: http://www.w3.org/2002/07/owl# + skos: http://www.w3.org/2004/02/skos/core# + foaf: http://xmlns.com/foaf/0.1/ + qudt: http://qudt.org/schema/qudt/ + RO: http://purl.obolibrary.org/obo/RO_ PATO: http://purl.obolibrary.org/obo/PATO_ - example: https://example.org/ -default_prefix: dcat_4c_ap + OBI: http://purl.obolibrary.org/obo/OBI_ + IAO: http://purl.obolibrary.org/obo/IAO_ + CHEBI: http://purl.obolibrary.org/obo/CHEBI_ + CHMO: http://purl.obolibrary.org/obo/CHMO_ + BFO: http://purl.obolibrary.org/obo/BFO_ + T4FS: http://purl.obolibrary.org/obo/T4FS_ + FOODON: http://purl.obolibrary.org/obo/FOODON_ + CHEMINF: http://semanticscience.org/resource/CHEMINF_ + ex: http://example.org/ + NCIT: http://purl.obolibrary.org/obo/NCIT_ + SIO: http://semanticscience.org/resource/SIO_ + doi: https://doi.org/ +default_prefix: nfdi default_range: string - imports: - linkml:types classes: - NamedThing: - description: >- - A generic grouping for any identifiable entity + DefinedTerm: + class_uri: schema:DefinedTerm + description: A word, name, acronym, phrase that is defined in a controlled vocabulary (CV) and that is used to provide the rdf:type of an entity within this schema. + attributes: + from_CV: + slot_uri: schema:inDefinedTermSet + description: The name of the controlled vocabulary. slots: - id + - alternative_id - name - - description - class_uri: schema:Thing - + slot_usage: + name: + slot_uri: schema:name + alternative_id: + slot_uri: schema:identifier + + ################# + # Dataset Types # + ################# Dataset: - is_a: NamedThing + tree_root: true + class_uri: dcat:Dataset + implements: + - dcat:Dataset description: >- - Represents a Dataset + A collection of data, published or curated by a single agent, and available for access or download in one or more representations. slots: - - primary_email - - birth_date - - age_in_years - - vital_status + - id + - name + - description + - alternative_id + - was_generated_by slot_usage: - primary_email: - pattern: "^\\S+@[\\S+\\.]+\\S+" - + # required according to DCAT-AP specs + name: + description: The label, name or title of a Dataset. + required: true + description: + description: A free-text account of a Dataset. + required: true + was_generated_by: + ## the range will be changed with regard to the profile. + range: ResearchActivity + DatasetCollection: - tree_root: true - description: >- - A holder for Dataset objects + class_uri: dcat:Catalog + is_a: Dataset + description: A curated collection of metadata about data resources. + slots: + - has_dataset + slot_usage: + id: + description: The unique identifier of a Catalog. + name: + description: The name of a DatasetCollection. + description: + description: A free-text account of a DatasetCollection. + + + ############################# + # Research Activity Types # + ############################# + ResearchActivity: + abstract: true + class_uri: prov:Activity + description: An activity (process) that has the objective to produce information about an entity by evaluating it. + slots: + - name + - description + - alternative_id + - type + - evaluated_entity + - used_hardware + - used_software + # - used_plan + - has_part + slot_usage: + type: + description: The type of the ResearchActivity provided as a DefinedTerm. + range: DefinedTerm + inlined: true + narrow_mappings: + - NCIT:C25598 + - sosa:Observation + - OBI:0000070 + + NMRSpectroscopy: + is_a: ResearchActivity + class_uri: CHMO:0000613 + description: Spectroscopy where the energy states of spin-active nuclei placed in a static magnetic field are interrogated by inducing transitions between the states via radio frequency irradiation. Each experiment consists of a sequence of radio frequency pulses with delay periods in between them. + slot_usage: + evaluated_entity: + range: ChemicalSubstance + type: + description: The type of NMR Spectroscopy according provided as CURIE of a subclass of CHMO:0000613. + + + ############################## + # Entities of Interest Types # + ############################## + EntityOfInterest: + class_uri: prov:Entity + description: Something that is being evaluated in a scientific process. + slots: + - id + - name + - description + - alternative_id + - type + - has_attribute + - has_part + slot_usage: + type: + description: The type of the EntityOfInterest provided as a DefinedTerm. + range: DefinedTerm + inlined: true + + ChemicalReaction: + is_a: EntityOfInterest + class_uri: RXNO:0000329 + description: An experimental procedure with the aim of producing a portion of a given compound or mixture. + ChemicalSubstance: + is_a: EntityOfInterest + class_uri: CHEBI:59999 + description: A chemical substance that is being evaluated in a scientific process. attributes: - entries: - range: Dataset + inchikey: + range: InChIKey + #required: true + inlined: true + inchi: + range: InChi + iupac_name: + range: IUPACName + + + + ############## + # Tool Types # + ############## + Tool: + class_uri: prov:Entity + description: A entity with a certain function used within a scientific activity. + slots: + - name + - description + - alternative_id + - type + - has_part + - has_attribute + - has_setting + slot_usage: + type: + description: The type of the Tool provided as a DefinedTerm. + range: DefinedTerm + inlined: true + has_part: + description: The slot to specify parts of a tool. + range: Tool + inlined: true multivalued: true + inlined_as_list: true + broad_mappings: + - prov:Entity + + HardwareTool: + is_a: Tool + aliases: + - Device + description: A hardware with a certain function. + + SoftwareTool: + is_a: Tool + description: A software with a certain function. + ##################### + # Environment Types # + ##################### + Environment: + class_uri: prov:Entity + description: The environment in which the dataset creating Observation took place (e.g. a lab). + slots: + - name + - description + - alternative_id + - type + - has_attribute + slot_usage: + type: + description: The type of Environment provided as a DefinedTerm. + range: DefinedTerm + inlined: true + + Laboratory: + is_a: Environment + class_uri: prov:Entity + description: A facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed. + + ############################ + # Plan Specification Types # + ############################ + PlanSpecification: + class_uri: prov:Entity + description: |- + "A piece of information that specifies: + a) how an activity has to be carried out by its agents and + b) the attributes of the passive activity participants in terms of their presence and magnitude. + slots: + - name + - description + - type + slot_usage: + type: + description: The type of PlanSpecification provided as a DefinedTerm. + range: DefinedTerm + inlined: true + + ResearchActivitySpecification: + class_uri: prov:Entity + is_a: PlanSpecification + description: A PlanSpecification that specifies a ResearchActivity. + + ################### + # Attribute Types # + ################### + Attribute: + class_uri: IAO:0000030 + description: A piece of information that is attributed to an entity of interest, tool or environment. + slots: + - name + - description + - alternative_id + - type + - has_value + slot_usage: + type: + description: The slot to specify the type of Attribute provided as a DefinedTerm. + range: DefinedTerm inlined: true + + QuantifiableAttribute: + is_a: Attribute + class_uri: qudt:Quantity + attributes: + has_quantity_kind: + slot_uri: qudt:hasQuantityKind + applicable_unit: + slot_uri: qudt:applicableUnit + AttributeKind: + class_uri: qudt:QuantityKind + Unit: + class_uri: qudt:Unit + description: A unit of measure, or unit, is a particular quantity value that has been chosen as a scale for measuring other quantities the same kind (more generally of equivalent dimension). + SettingDatum: + class_uri: IAO:0000140 + is_a: Attribute + description: An attribute that specifies the configuration of a tool. + + InChIKey: + class_uri: CHEMINF:000059 + is_a: Attribute + InChi: + class_uri: CHEMINF:000113 + is_a: Attribute + description: A structure descriptor which conforms to the InChI format specification. + IUPACName: + class_uri: CHEMINF:000107 + is_a: Attribute + description: An IUPAC name is a systematic name which is formulated according to the rules and recommendations for chemical nomenclature set out by the International Union of Pure and Applied Chemistry (IUPAC). + +# Slots slots: + type: + slot_uri: rdf:type + description: The slot to specify the rdf:type of an entity according to a controlled vocabulary. + recommended: true + alternative_id: + slot_uri: dcterms:identifier + description: The slot to specify the unique identifier of an entity that is not considered the canonical identifier in the given context. + multivalued: true + inlined_as_list: true + range: uriorcurie id: - identifier: true - slot_uri: schema:identifier range: uriorcurie - description: A unique identifier for a thing - name: - slot_uri: schema:name - description: A human-readable name for a thing + identifier: true + description: The slot to specify the canonical unique identifier of an entity. description: - slot_uri: schema:description - description: A human-readable description for a thing - primary_email: - slot_uri: schema:email - description: The main email address of a person - birth_date: - slot_uri: schema:birthDate - range: date - description: Date on which a person is born - age_in_years: - range: integer - description: Number of years since birth - vital_status: - range: PersonStatus - description: living or dead status + slot_uri: dcterms:description + description: The slot to provide a free-text account of a thing. + multivalued: true + inlined_as_list: true + name: + slot_uri: dcterms:title + description: The slot to specify the label, name or title of a thing. + multivalued: true + inlined_as_list: true + exact_mappings: + - rdfs:label + - skos:title + - schema:name + was_generated_by: + description: The slot to provide the ResearchActivity that created a Dataset. + range: ResearchActivity + recommended: true + inlined: true + exact_mappings: + - prov:wasGeneratedBy + close_mappings: + - schema:measurementTechnique + has_dataset: + slot_uri: dcat:dataset + description: The slot to list the datasets of a catalog. + range: Dataset + multivalued: true + inlined: true + inlined_as_list: true + recommended: true + evaluated_entity: + slot_uri: prov:used + description: The slot to specify the entity of interest that was evaluated. + recommended: true + inlined: true + range: EntityOfInterest + used_hardware: + slot_uri: prov:used + description: The slot to specify the hardware that was used. + recommended: true + multivalued: true + inlined: true + inlined_as_list: true + range: HardwareTool + used_software: + slot_uri: prov:used + description: The slot to specify the hardware that was used. + recommended: true + multivalued: true + inlined: true + inlined_as_list: true + range: SoftwareTool + has_part: + slot_uri: dcterms:hasPart + description: A transitive, reflexive and antisymmetric relation between a whole and itself or a whole and its part. + has_attribute: + slot_uri: dcterms:relation + description: The slot to related an attribute to an entity of interest, tool or environment. + range: Attribute + inlined: true + multivalued: true + inlined_as_list: true + exact_mappings: + - RO:0000053 + - SIO:000223 + has_setting: + is_a: has_attribute + description: The slot to specify the setting of a hardware or software tool. + range: SettingDatum + inlined: true + multivalued: true + inlined_as_list: true + has_value: + slot_uri: prov:value + description: A slot to provide the value of an attribute. + has_unit: + enums: - PersonStatus: + ## Dynamic enums (https://linkml.io/linkml/schemas/enums.html#dynamic-enums) should be used to constrain the range + ## of the type of ResearchActivity instead of using the default DefinedTerm as range. + ## This will be done in profiles of this schema where we define ResearchActivity subclasses, e.g. NMRSpectroscopy. + NMRSpectroscopyEnum: + reachable_from: + source_ontology: bioregistry:chmo + source_nodes: + - CHMO:0000613 # pulsed nuclear magnetic resonance spectroscopy + is_direct: false + relationship_types: + - rdfs:subClassOf + minus: + - permissible_values: + root_node: + meaning: CHMO:0000613 # pulsed nuclear magnetic resonance spectroscopy + + EntityOfInterestTypeEnum: permissible_values: - ALIVE: - description: the person is living - meaning: PATO:0001421 - DEAD: - description: the person is deceased - meaning: PATO:0001422 - UNKNOWN: - description: the vital status is not known - todos: - - map this to an ontology + Chemical Substance: + meaning: CHEBI:59999 + + ResearchActivityTypeEnum: + diff --git a/tests/test_data.py b/tests/test_data.py index 43b8d54..56a4668 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -18,5 +18,5 @@ class TestData(unittest.TestCase): def test_data(self): """Data test.""" for path in EXAMPLE_FILES: - obj = yaml_loader.load(path, target_class=DatasetCollection) + obj = yaml_loader.load(path, target_class=Dataset) assert obj