From b561978390cf32aa8dfe0d384602bdbd4f9e7289 Mon Sep 17 00:00:00 2001 From: Tim Alamenciak Date: Fri, 4 Apr 2025 14:18:54 -0400 Subject: [PATCH 1/3] Added overview-imports.md first draft and image --- docs/howto/overview-imports.md | 72 +++++++++++++++++++++++++++++++++ docs/images/ImportFlow.png | Bin 0 -> 24255 bytes 2 files changed, 72 insertions(+) create mode 100644 docs/howto/overview-imports.md create mode 100644 docs/images/ImportFlow.png diff --git a/docs/howto/overview-imports.md b/docs/howto/overview-imports.md new file mode 100644 index 000000000..fcc605d0e --- /dev/null +++ b/docs/howto/overview-imports.md @@ -0,0 +1,72 @@ +# How to import terms from another ontology - an overview + +## Contributors + +- Tim Alamenciak (@timalamenciak) +- Philip Strömert (@StroemPhi) + +## Summary: + +This is a guide on how to **import terms** from one ontology to another. The OBO Foundry emphasizes reuse between ontologies, yet reusing terms is a very complex process with a lot of caveats and technical nuance. + +This how-to is an addition to some of the more technical tutorials, which can be considered post-requisites: +- [Update Imports Workflow](https://oboacademy.github.io/obook/howto/update-import/?h=import) +- [Managing Dynamic Imports with the Ontology Development Kit](https://oboacademy.github.io/obook/howto/update-import/?h=import) +- [Dealing with huge ontologies in your import chain](https://oboacademy.github.io/obook/howto/deal-with-large-ontologies/?h=import) +- ODK documentation - [Manage your ODK Repository](https://obofoundry.org/COB/odk-workflows/RepoManagement/) + +## To import or create? + +Here's the scene: You need a new term in your ontology, and a similar term exists in another OBO Foundry ontology. In theory, since BFO is at the root of all OBO Foundry ontologies, they are interopable. In practice, there are more things to consider. + +Ontologies are intraconnected beasts. Fully axiomatized ontologies contain lots of orthogonal (i.e. across branches) connections. This means that if you import a term with an axiom that relies on a term in another tree, there may be a need to import the entire other tree, which would be dozens of terms, then the axioms for those terms, which would also be dozens of terms. + +It gets out of hand quickly. + +There are a few questions you can ask yourself to help make this decision: +1. Is the definition and place in the hierarchy suitable for your ontology? +2. Do all of the axioms reflect the meaning of the term as you intend it? + +![A flowchart describing how to decide in which manner a term should be imported](ImportFlow.png) + +## SLME - aka Full firehose import + +Our example: You are making an ontology that has measurements and so you need to import some kind of a tree under which to classify those measurement types. The [measurement datum](http://purl.obolibrary.org/obo/IAO_0000109) (IAO:0000109) class is a good one. You can assign subclasses to an imported class, but you can't change the axioms and description. That should be fine in this case. + +You would use an approach called Syntactic Locality Module Extractor (SLME) which takes a term as a "seed" and extracts all the things related to it. This means it will pull all axioms and superclasses attached to the term. + +You have a choice between using [ROBOT](https://robot.obolibrary.org/) directly or through ODK to do this. ROBOT is a commandline tool whereas ODK is a set of automated methods to manage ontologies. + +There is documentation on how to use [ROBOT merge](https://robot.obolibrary.org/extract) to import terms if you are manually constructing your ontology. Note that some users have reported ROBOT will zealously extract terms unrelated to the seed - you may use `filter` and `remove` to prune the resulting tree. + +You can also add the term to your ontology's import process using ODK - see [Manage your ODK Repository for more technical details](https://obofoundry.org/COB/odk-workflows/RepoManagement/). + +## MIREOT - aka Partial import + +Our example: You are working on an environmental ontology for which you need a class `forest`. The well-developed environment ontology (ENVO) has such a class - [forest](http://purl.obolibrary.org/obo/ENVO_01001243) (ENVO:01001243). You do not need its axioms (e.g. that it is *part of* forest canopy or *has participant* forest fire) and the superclass structure is compatible with your ontology. + +In this case you would use an approach called Minimum Information for Referencing External OnTologies ([MIREOT](https://journals.sagepub.com/doi/abs/10.3233/AO-2011-0087)). Again, you have a choice between ROBOT and ODK. + +There is documentation on the [ROBOT extract page](https://robot.obolibrary.org/extract) for using that tool. You can find documentation on the [ODK site](https://obofoundry.org/COB/odk-workflows/RepoManagement/) for how to import terms in this way - see **Customise an import**. + +### Corner case: Adding axioms + +There may be a case when you have imported a term using SLME or MIREOT where you find a need to add an axiom. If that happens, the best practice is to try to make an issue or PR with the originating ontology to get the axiom added. + +If more urgent action is required, or there are difficulties with that process, a less preferrable but viable alternative is to add an annotation property **on the new axiom** that clearly states the axiom has been added in your ontology and is not in the original ontology. + +## SSSOM - aka Referential import + +Our example: a term has been proposed for inclusion in ENVO with the label `mowing process`. It is proposed as a subclass of `mechanical ecosystem management process` which is a subclass of `active ecosystem management process`. It's clear from this hierarchy that mowing is an act of managing some ecosystem. + +There exists a term for mowing in AGRO — [mowing process](http://purl.obolibrary.org/obo/AGRO_00000220) (AGRO:00000220). + +In this case, the meanings of the term are substantially different. In AGRO, mowing is classified as pest management, but in ecosystem management it can be used to reset the successional state of an ecosystem, which is decidedly not pest management. But there are connections - people are effectively doing the same thing: cutting plants off at the ground. + +Here, the proper approach is to mint your own term and use [Simple Standard for Sharing Ontological Mappings](https://mapping-commons.github.io/sssom/) (SSSOM) to link it with AGRO. A SSSOM file accompanies your ontology and provides matchings with other ontologies. There are five basic levels of precision: `exact`, `close`, `broad`, `narrow` or `related`. Details can be found on the SSSOM doc page [How to use mapping predicates](https://mapping-commons.github.io/sssom/mapping-predicates/). + +The level of precision comes down to use-case and how much "noise" is acceptable. What is noise? Consider if we had two knowledge graph nodes - `mowing process (AGRO)` and `mowing process(ENVO)`. Let's pretend that we ask the computer to merge everything that is related with `skos:exactMatch` and now we have one node called `mowing process`, but we do not know if that is a conservation-focused mowing process or pest control-focused. That lack of clarity is "noise." + +If we wanted those terms to remain separate, we could label them as `skos:closeMatch` which may not allow them to be merged. + +This is just meant to be an introduction - there is a much more fulsome treatment in the [SSSOM documentation](https://mapping-commons.github.io/sssom/mapping-predicates/). \ No newline at end of file diff --git a/docs/images/ImportFlow.png b/docs/images/ImportFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..cd84aad63fc10336c629e80a690604af0f2b093e GIT binary patch literal 24255 zcmeFZc{E%7*Ebw=R#aUrMY*a~HJ2(yMN20XEmB%TdQq(@s0cMBI%=z>HKjGBTJsPT ziBO^gF-J{75G@fzs3C@o&vE_k=lSPZ?^^Hu*Sp@e?ySX0&dK?n?>T3my+8Z&**h<; z*zUovYT2Pt zqE~k+HnEEj>wW&D_Muw50_!ZcPmYxO?3(RL!oy&PPlcZfMOHyWE%e{`>I&$CH`^SA z&?hR6O)W@~ALHVn99`1n(h18)jtWyP+o<;)S6ZClIL zeOjVh%g9{^MYfh^+kg`Ufnt>&UEErpllq_C|3AKTjE(bqA+fkviitdc z$$7mYoD~S>xtuDcb$3eJui!UbcdJ^%P=kEYYM7>qif!KpqzST5>o*$y!s=;uX?T4W zR22fTfaND+kLPh7M8|77=N;$C z{}t*^>F_7gF5?wGG3#!wXr8Vf#lar)j}V9MmvhGj3sg4>Vr@f$ezc&``f!w`yFc;C zGWrlHF*Aq6lpDDeg?wKk%$M&&)|2Ne&rEI9vysk7+KfJwxW2wFMHHi0R6MUo?+L#1 zJNF}u>eJ`}fqZS_JK-dA+M+3l2F*mUZFeT?mF+P$l(wU+-quUF*oR>0;?84)sFd zSk=B3VuWQjoBgN5YxByTkZYgI9b^Pp=AHU6PP0luoxhn;#%pNIG*#v8+D7B^${16e z8&~MWElX;2%8QVcHp#c(x`~pkW*)HYk{5ay@cOZ}pk~A+GHk{U8BbOA94BN z-oE|$k-X$Rr|*3GIBk+c!WPEu$QU|SVKTPV>F#^DuiFLMGUvHzSbC#GifM)c=iQlL zb59H+G1y~4yRSBdu;Q2KB`z^#LxQ(Iz`c{I==FVhTx@la4ZZ!at4A@^CbU4@G)I8` z0ZwF9y>U^>BjqgCAMuW|?+gHTMVY9Sf_u)fR}?ls|VY z*xM1|u2w&$WAYB+9~T(jtLt!BSoBQ`HW>Ut96T}Z(=x1@^xYa=)OYUu-bNlw3wZ==a z-Dh!ns{Dpk{zo0ir9zr6>!5dwR*}w;O1_e-hhOVG%~iq#B%@q0N&0Q=8^dI3b_}?x+e%m%= zxcJQ-ZZ2wZGwvKP3U$7ZJ$L=m-an162^{V@BQ-PzEnf1}ua#n}RvTQT|XMh^1luXd>& zOS$JWyw8#p*FzAgJ^1LN*2o)BV0&9A*7T)c_ZLs=_CGRf#$p%mBV4}ah88A)Q@%BI ztRw7BydkTX1zinLb`SZ8faQqqhbynEk{%o3g5m=2ksmv%eghl$kJvcmcNY7A*Blgn!B5u_DgGdR$7bI)?vwyo8RH=uEuu?jztmFZ&HTih=wvI{C|$kjsx+Lgb=n_EI4st9+f zksGujChFPq)Qk}+o8L_BqiZ>2ubC%<%E@_jBilYx+5>R8>mqt?HOxvl$vyc)xxg`j zQW?TGGTf#8i)xm~7rcvChb5YKe^KX-wWm&QhDi=1ea2!5zy#mceIq3o_t7jqhlo|6 zzEtF9s`zqAtY+DA(0WhrH(N=Z+t#WI4iK!MyTt$}0FE#+kHd)&rNDN1!1`nw2w- zs3NYsfGL-(?{l0!tP0zy^WwI2{9mTNu8|i{=3$vD16NUuBSsUq(#da13ehPF0Rg6Q zZq4ib)AvmIu^Il~dp_HY%&7Ijmy)XpRKv8aCwa&36mh0F>NTvt96P#LVm9Vf{KkS~ z=bM$}&zQ<1EGcz$Q@oVLvwmh0SM|oa6On{dKaGe=y&!Lc9}ei2d6n-QDH8#S{8rB7WZHWx-6W)r-kx04NONnZ z7!C{Md%Kg`;+2EpI(p~)vWo;V&XlCdA9(FlV!rn5Dc#f{y8u^cxF+s(>WJV*2u3PxkoXC{k~oqPLF8hjV{ghF`NoW5;k+E5yY!SQS&R=BbWAYO!54E@D#+0 z6@P21tbF-;T0K^wng-`D4xja;gKREUJa2Bx`cu~P07wro7&$b4dq$oNnn34} zXpqh#yYv5)l07?s7`ECHa0;D-RHri|io)p25{Ig~uA$$BruCby5mLVKOJpBfcy^H5 zYt%xorc@s}?(Fd*CnBXEf2=Eo|B-*DdLd-wZq2QW_^#9#Z9=7HsFu5Bv7IpiX2S)e z?XQGKY6bx(8m4vlkLFPzo>5t07iIR9-%&8X;%3=)4kKU6TT=}`01uan$-d#|Ze1+l zMStXT=qAn0oqs>c6lc8{*!?w4T9ZtnY0UQJwb|y=LltvJvQAB(k=LL++gIkiAh-9> zNdA%8l5h1d9oKEtp_iz*HuK5rJI6o!(??Vv>g!(YAWYv2x8~a5vf|6XzvF}HRgmRF zyOt0j>}$Z#POaKC_rz9CJvl6Y?Ag1|u=ZcUR|dx3f)0zeMFXFllDeoK=8ByTYJ*&hTxL> z;T;lzxJBy`8P8q$Cx#G{rXS|2%#*n8a94-i%TMZ1!+Y2`p!QYw`uTU+?by6KfNl~n9>jKIuxRqX3bjHLkyTCl+hg4 zWWYv1v>Q|vZRye1G`zAG!II(iL`qp<vjxOuE#aZwicY-K+xk2r=g@{sh))4Ms%wNV+)KY6SSUGJ*Db}A`J({T^iSN&Q4 z>4CKz(#kc0*U`28?=+SRU9}qM+~X;UXz{;F`of8hG3pOLJMtJ5z^aNJ?c6C0qLFKH z?w6kC*Et~!#GxTHylueht{}nKzU2G9Jbw1b z+OaH!tJZd-HU{3Y8J+XpAiqR^q`s z7V;kPhC*)p?mBp1Hgx%|X-?GIg6F~=^E$O*BG6L4D!a7Udah1VP?!|$X^rp7Qy6K< zd%g4Ap06qk&+IIofkR|XZ`wf6gx z`XqUbAOoMZGETMkRf6}3+K%D8!V)~Q0slI1Jk<-12 zzR7zA$O_3Qzeh1e`f%&^!(Lb1;oOiyw~YDwE=jm47iY+?C!vx>=*K@gYoG=gCwb#M zo7abP772_gPWTlCuMqFntMpfIOI(XRfCxfgeh;{!1WonAIC+k-NFd;?!+m|4-kH8A z*kPc1I(RRk&J^O))K&w3-VeGp0=49RGJxt*7RCb6wx8;-HaPc7{Z(+3Q)D+UE;p;M zC&m=rb05RG+8$e%FN*W~(fr=U!|w{xvbViy6^9Bz;8yQ90V!q10@@+RB$8m_T4~Z% zmTR}h)2FOE!}F_&cc@3WhTd~X@<7e%8C*z&sLfXDdD`H1rX>~kGnx0UE!Wv(rt|s@ zYrhG_UPfaApr=tb%2H7TnCPUjk>r_mPR;g1O%0Ju8}s&3V8Hweux(4=6nUVrCR^UAvTt|0(luv^kT&94;+(k+W&I3-8woxJvx_Z{+c`@Qk+FF*E@ zy_c_HhH7gHld|%sC(tW56HYUbl?bxg;p-+IQ(!fCD=XQxE|kkSGyZIT{Th@pa%M^{ zMf$61#WujZD4P9)-u6oMab(*QEoVEdj^)l*?|N>ZF6jSZqt7a}LnRicD9?CpYG4FO z&%nL+HX{?-J~`Vz>ix&ZB+!zmIxQ7rKb7!1P*nBFaLJ+_9)DL_(3_`v)4&|<0+YlsbHbOnwToCK%BZekOdBp|CHFuv9_^2^ zGg_H!^Yd$P!Uk4`gix(KsX6)c>!W(N&HYs;U9C3%O^>cys4=k2?(<$zkyNT*jkVqJ z{x>4`@Kgz%@6fUA;ye4Y{IFq?W&S$+njO74VqflwmGvym4a+{7u}?^QTY?!=a}+xV z>CGp!e-44AKE&J$>NK9}CEbB+6lg!IrVd72!KC$1?w>~v2jV}icl2-=90TXLJUKY> z{r4V$l16C4Y^Q4;>+_Mo8XBwi=u@^NTO?Q4o1ZfXbe)W(i@I~~Oa z7UYfu=IyA@!&TXS$+Zv_n@y59^v9Cb4rCI&oanfBpILdiBgLMiaNnqBit9Pz$1JBr zPj{KhW=fTP?^)Gwrs-KTKXUV?ljy`;$d)#*IGD%I~= zq3pgJC8+^;suYH1v#>rIePPG=($0lLz!UZ9&TYky`ZDY!5zptv#aO{c(O=a^@yJ4T z*64fFcZ9ahlt}c|v!&`{U&xa8KxV=cQ-M$uEznttn#G6{nRl^V_$-ROQ<2IE#$3;UbHC{$jt9VxOmbn4b6F)erHhWw`pwj8pw{4c5348#2G$K_ z3rRwinqzZvk?62^KGu5qIs|}a`@L`?Iu8M)d~$W+S~rronB~J?^m6()Gq0MWr|xZ3 zO)ej0ezkFWfA0F-IeWtL6B31xOD@Ynu<32v6WIRZHNM3;+^-oWc15vwo+qsZ7-oEI zTX=($uqrA3_5txqkG=bS9n_P3!r1xQ+I3%4bGx>*M!32)RrwTx>rg4s9bP1uNE$1} zlGj@owmtk? z0Z!BC=3ct;t?9hpsrD}^NgxwQka{L4|Ek257P-j1d7QR_)JMFyU3BPgd9Es@J1IWE zCfVQd0KqlYYEU+XNuzE{k!{9K6_2iB&#zL2?-ZZJNKC7 z+FADA$_qb3QZho1>pCW6xr|3PqEINQeD(M9_M4ekefv(k)$#Qrl>*cA3llvNyI78T zTr*tO%k6VVfL*t448SbK>xX$>k4#cdCr&FUxK007^EYYgN5o*izqyULYU(BP>0OSu zi)wNcVF=lISh6 zY(K}0zner#LLlCWM|LY-EC2TduLU>UZUk|00x!u~a505`HD zS_fd(fDhVhm6GhAaUsDmN-2S^9cZ5aW3B!#9N9WAk)=k)N3=eWavMQUE7zrL&wAF`4z8sTvOcyIM4tySbe~V8*TW7i%yxW<|!wlabEj?x8T@HuLaq zL9U2E<{#{;#HgNjZs<>0V+!P}$`D0-tXKX8j;Ry5->`Bu?)#BiNf#9$AIQeIbjE}< zgbHjXs3%V0`y|sEwX*)&d$`l4c?Umgy#&Vu5SU6}B3~4={`kKnmG9yIqn-SZZuI}G znXS+toK@m~Q)Sk5>x%wqgFxuAB2Bt+#`{1_`4vq4u7gxuDwcW1O7wZJ%-uc%XX6Ob zro5Uh6{mizyId6XRO%UWMaZ2Mz8EHjNHu9t}1zFvDx^0p2<+y3AIEx!+~KO~#n zR)0EmYl71Jx?daywa$Lr1f~@2ar0`$l@Gfn9CpcxXr8|4it8-kp_*|t>WAdauZ|7gKWM#N`bIn8&~fZ zX6%eVi`+ADD?d|9e1Z4_*M+zv>yVR=!R1rR>rs?S`>sm zuWL8ESJo3}|c zl}TikiZm&TtpP zVy4N>vKz>y(h*!LD~u_7**6P-In}TzfqJS94dEWb-!H+k463=+74l`TUbwP7ODw2< z>^S$1FRAS`xCHd4q%Di#$ZTMR)fe6unT#3KJ8g8iG0nBphVgmh_I0%iD(eQ|xuID# zPsENDz+8)%w}4BV=POT)thko3$Obj2S?>HNs2vBFTiFx^X~lJ;EmlCr+ffAZILvVW zeMO3_>7ZB0EaS|M{6L~Xywt&xVw0WMyhMwP!#H_>QUsVNFRIVr@yJ{s*U%ZF%H<1q zraE3knhgYkyf58wBE&{;Miew!Fc!#=wF3M$sgV2;=Bkr9e#o4`=8Yald)%#kFph)a zUPS>j*2{-cS3YG_mfWd}22{F0;WTcY=@{aBdS69i`do-@Iig=kZ90$t$$}|?8*qI% zg813U3FbWa63T()&=>Y96)G?m|VUEqwdh%C3%R! zi!cg9N*;1ZP}a1V_3~!otVzc@3f?**0bw=}&rD@>I8@%Z<+cSfQ0v|gimG#X{2>N~ zF8a4QlDiz>fm;l%carbY9aL&dk#;5S>5MQd%eXMznuhK3YFhIxn27~^mR?8B{J?4MuEIa0H(S)&i{1~oHbGcLwOUsk8? z1etP^ufA|P1TVa_O+T#xp~U$!HHUFs+*~Cj2bLm7?qV=l=BU?6M~;uqE#NBjl+XZ9 zd{B>KpG~H&@CVaLo}L)ndfQ?l#4k&^qWA*n6_mzgmO!^f-$J;f z45sG@M2$EygUwEjl|E^*qMz8ac|&)O-h!{gK9)UdLuwryeV^%{xhEAyEnN9_{LiE0 zoM_|47nQ-1=$Z07ah839@v)=pRK=}{GWN|q?qRHrEEu{tt({A^@m6wf-JJ@P`n%y9 z;>BaXQea4yc-DkX=)zCpwQ+UG1U6r2rp9)$Dn{1X&U;$U?D_35bM(C>xA+1U>d>;c z-K+gN!X2Y_w$ckk#IYl_ne1Cn>f@W#2jxKcPr_4)1@n>sl9o z`?{%{)SZUYv}~ma8`eoPf^XgaNc^`n>8NdgrwsPVq}a+>8v!z_BBJzF*R1KgTgouk zwz$(j*6x>f{&l#=A!Y_Loe)CBeTLJ%SBJ1m?47U1Y?_?m@NYyaO8nw}xPYizi74{Y z?ANU%KYTYyTKBRm%+za9B5s^MYi5=uGwsPeYmI4p*dsO08 zdiW@R=&-`k;=ZWu)A9w@?UJtta=g>Z3i2ghUvDfW*s{udc&YlXGfYbP*19%e1=)0P2fD6Ir;i6a zBxIua<#!H&%XIKeZQ4RPl$gCj5mJ{!*fq06ln@!Xg4Tsb!q!+^4!eZ6f)So&2svVXLU^ zMJTW8&TFWrX*a_*?^f;3U+=I$tdr7u8`rq!h1zYdi827zT!;CjPxIc}!enk8v{t@_ z8xELSr=id&!3susB<(Ym)s2xEEhh>Eu7VYFp(7B7y1)LWQmMut`s!b&1s+vdrUnt) zzJGsguM!j#v}`V90F!0|Ltua*fE@szHudY*ky`B!tDfJ3i2P~iEVVa+QKM9I8gg^_ zqF^Zzwc7sEAQD?M`N>S^XTs-m*B5&cV+2K0+M6G4R^*kiR}_<{z47X%I4uZnI?Hu> zIC4($0;+V>WrpOq`_CRa`_GWy|(I+9_g4I)ve7_i8uZ1^{ zX<)A}(uf$q@%HxW2N)Nv;udQppkgc2LvA*1(2>vZmWdP@{qx4&hIqK!}R(uexn~8YujgN?k znBATd){wd2GGY+s?h|!xc(Dg;W)@S+Eek*GAY%u5M}23!>VEdw9#Hm<7gSc-ZrSd9 za6&P)l;Xd+xxz4Z>Bj(L0-(Ovobr&|rW}8^W$%R2{d>~kahjj^t$%x%L;B`dlO)_o z6i#&iev~>|DL!^HrSouBe^zt9iDoKlm&i8;o5LBQ3hnLfmr=q+;ekW<7er&#TSjjl zbJ_N1w)BSP=Aw{K>_BmYgk9y|EOH;6J|KQjb?J(Rx=s$HNB`VdHO^~B%7zCqJnUqVcdv!g0N!Ma<8hs0yTN757N^I0r3TK3TeQ22}6 zOEM=mAAeBwb*RH;WbPD*^LKTUz(@{-++#) zJ!*am&=CMihMsK=tGCU*20-WUzb0g5se$-j9Bb3q=PJAl+0Rciy%ZZoSH7GTzawRv z$n#2)Qd-cQn@^w#m;_Y7QCWk!c5|JW%ssEUVRjP~1}?R84Q$(ansM%gWkqc;P)6rY zQBKPP-=X9y&+w6CaZAy(=-w)}U;6PV(VYvB*~!AZ*?E&k7bgTh6IG#GI9OP;vRlCo zsEC0;VrIk?MrY&E1`oPnnguMNGOyK_TU^|2BvU#T2$WZ0@oskXAA`Tbb{#A)G&TD@ zVLmSiCu)U$eomi6N2vNbS>58Fi|c)sHXFi4VUAZ{MRRF3eH`yfVcd`QeN`|mTM8oN zjN(V8MF)V+S)8Oupf1L?FVlW*>)&cqdH(9cM_XBIe{?y;|Ix+UUp>8U`z<8h!g?}o zT0DeNKJRM@n9N6|>MJh*i22WGQ2O+D1-*JK_oUj;;=1yqmVVp_1_-Ij(|-Z~zfS0e zdF8;U;}ZKvmA?Ky5L$5AirxLXA+m3WQq-T0RlkJny>)#D^rD(c)8#^ZwHr6+RhMO7 zoR88i<@(W}AbZcE$oARXDeez+PU4v-BcC>1k?#ksnEOoHra3icEHQ0p-wAC?X5e~6 zG3v`TPJd)Zey(n+BYj zRJ=wS|Wbdux>0cip~tf1=eL@?0rlC3Ll%A?*E*SESEHbGu@tkBxgc5^!_b| z4fslnsAAB}uU}tvIjUyn=E}f}|9f(&dSP?Zn9#ZAsG)mcWIPalMlmviv&A0OjW4r* ze&Mg-zK}>H4|%e(0sy8NA@jn-{HtZ3${l^)FDAbMHc7E0*%?7`i<(66pm|sZux2F^ zI{h;*k$w-qMCFDZJ__4RjmgIe+K~cY1n@YK*pV#f?Zc}~HfLjnVUL-br_!j0{q`mJz+xNM#=Z`Ju7m^r?Ilq3VHZBp_8(D?-y6e#=CSyV+5hW2zZw zvhKwd=Uce0Pgv%ZJAg;X?7n3fxX~;})7iMPR=1F@5#njVRs$!vP#j z7iH`&4FQ{@AUgeML)&mp0*GeZ-0-tLDldE^fP+S(r;g^@7Z6_*_+so(f>>hmPOXfD zuVJsGx-2btay}@^(olE2#jGPd9ynt7;t0;HpvEiIkGn5pJW-gPu#!{%=5<816K4Fg z12sQ)Zfc#>gPSw~o|$vzv3bfTg}>TFh!Wo{HKYWVfcFj9(OUNH*Xmo@;~A{s=npz29}{hc}_^&vZ8 z`eXRh)q>UUX?unOkWnkD4F5`J5mz`{`}jehqS46mYAME>VyYs$m7OO%42p%?8ZB{y z2WHieo14q)+fhMQx}$-H87tezjzriFWO`hX0aW8i2Hw_eEH!;{CTp-~bX&*yiU;1D zU!Rqggy)xu1y8UoPjKtd50ZJ(GG{h!8>Wp{saXtUD~&zRO7UD>vN9_gq35g($=LeF zIL=RIc(xxh85*j4#!*}KDW=;Gj$o2n$?@#G3%z2X;Ka~ZRg-uDEfHl25D7P@Wev}K zW;fhv`l~qH&(3RcS6Tpb(V)G^7Kxk&ZseFzt>U9*O`k6169Y!jxt*8QxOIU*<%;=9 za15fZ*BhT$iMSGT@0zmiiMCTe2Jc02>P?GeF22GIQ2N#%1|@nd$-AOzh69r5DHSnA zYCn(g`wU(KbU3oph59k^`IWzkJyvFe=>5iDfvJ_Rarto(oj{5`#$Wb=CnS)kS&t4Nl&-Ib6F1Oz%!hKMo?~th>D4%PtXT2fGeDqv4tW{c}q_Y#M-<&+Q`A13pOUDh<^^Q1|fL@?&4 zyc@Ll(uZBQXMt*^tq-&5q0|!b?0Nz!p4Rq29$cAo}?fOeZ3#fzt zOj{(=%BKB|LHX}Afg^8^57{GU{Ew(y3BZF{C6Vetqv8^Bz=dapbtvv?x*eJ0c43Oo zj|us3!iLlB`MlBL7L@G=P`n08O)-5h`hNxQlYR>zjF3p*gXdKM{KGH@z{rEMsmA+a zfvdct%eBd|tFkdp7ejG5x#Zu2{tDO|tv8_}Fz0 zM?*ygz?8@XfYHPr(poV6Pv;2r=>JbTOBQ+~8`6OADhn{Tpm%Nm(X;+-g25>KHx->< z_V*?x%@H?{f;TE8_0nKi)rwk_gg;L|LS z5Z!6;0Jv~qyAe>mQ&JHw0~h(^4h@mr53Fk90i{o;9>^vDxYa|NH5yI1Gkzg>HC^Rs*DRp6Tw zRVpq&28JhW#ac$)FV>Imd>@u2#c`m{awrt%g?~GUBxyH)3_KM*#dW_(1QJORjC&eq zMG4GzkLJklYFW_W zEFPTx(aW4H4>JQc#hz@edY-YQoBhH}(r@u>+OC+OpF3Z0X8a1z0$V|&H-AVB-_{Ou zzAq_%cI37bH2RdmzO73F76-0(eh5m(QXiFZ|5Z;`OHYOaaI9GJE7SOmP>XQ+h)oIL zdw-+>Pe>-_-qk@zuWlK0ZTMELo6Yukhm9}@@Ok1CaQ5yMG_}1ADVKfv$n)I|Yy-8md#1pKSn?bVa0rR!Jd2520s%MZ?YBiK zzx1vAc`J3MYVaKuiTpKc#PIj;-y;+-9(|2pzO(}G;}F2!P4`Gy|J8&=yZPU3)(W3x zv1|eB0z5GAI7m4e9cRN&;UBA6n^l&QFeAVm=`G43?M!!=GGopfs)7irPbAb zaXETu-2Da*Zu8da<3J^?`|j=WIo?~J@_`wTRet>iJU!tDwr-mE#CD@v8(L#bGCQ*C zzg7`4ZdWo*0BMFHoPU;=#0+c%Zn}6B3L<7ptmg9fx zsODCD6f_DjyxlT|#l^Y4^4$kO3%95^6%~f@HFt{6_E@qV1ME(54-ixh-M;?#f|>DL zmKf;yY@HndLoo*H+y;A5Q2brpBnqO7xAUBImROs5V7jJ{+o*UTka7|xlyly zgqk(zqQSZTzwg)FT53HQTmO%43R7_x$a+Sxuvh~qvtcydFTOZ-vs%r{?hPpacc$os z2M`OSrL&)dPQGvGIK$5T{OwDE=a#v+Z9kF?Q_Mj(@PXhG`;t z5hQyZk_zA?f#g1rR-2o%P^77^*023&QG9Jx>w(iC^j+er1jy!tJ$PpQ6=-7rjgo9xfwg+zqRdeO1v9n40mGR=}S(k0Gt`iG@n0F2+pW8BZ z#_jun_Jq`lX#$7>faT_K1M%Dn-5}js1;0SHMoTIEZLx-cm?MqnV;)GpWh! z*0&{q$=Y0rEaC430c=DWP_Q)P@`*Xnvx1``U(84A4N4seYphsZ@|r=`Z#TP<-$|=^ zZHfQ><)HGG_6x8MeFnV-uUluu%%-*l+W-f56Y`OZ&Zu3-(fP&2x3d-j4UOSdP^>|W ztWHWEcUWiU0oD(+M>RVG3E5(_2ncf#{ov6>$|l>go0`#ecd&AG{}zTOc&VF0jf11Ytb1)f zoE_6?DZmSOE94bMS9#Tzf-Mx7z25=S$uqTm!g4W)1193wh!QGgLiqq3j#YKS#0 z;fv#JM@@LBDv+&a z@)wI%IrYkM)dA*qPtuy(`@M52wbfDz4lmB1DHGx+YqpInFul>-&mrt}A)e|_8{WK7 zsMAR1bFQWDi^?3*hx7F=6=J5GZj_GIy%x}vTpKZ`vj$D8y9|T(Qp1MB{0|ks?mTbF z3qvYXBcH7OvOWACE@v*{!GkkOk~@hT8$4b#@B(;U(&Vq;89ICGGZHDN(3;-d-2A?_ z#ooXyBT9NqFwR&d+~K*UrAqw#uV23`vmBW4XpCP}OcZZXmA!|4c;xu1@Gq8g2EH7V zU&RO5!nHDY<>LCt=;*ylXpQPbUS&>4bWA{Fqgh%xv@kJ$YLQDq7j#4ewqd`RC`%L= z|B1L(xr!6u!0L_4f0!JA_FbBto!wYn4ULY7SSoouZ`h=|0jIdFD$bDeA_c1qU(5m^ z<%Vb1Fgn~gjHWXw@@f_xydi0Y`e-w4%sAta^(0E_wOZI-@fx<=3ID5nc+50@eUl4| z=6L1C6dN?Kq{s#9e8jF-vxdZ>NLpeeCOXC%x5R|eHp5QPNTdrRZ+gIX1712gF&S`l z_`!y?RWnt8pl%C#b+UZlUc{Lg<)6!mF|X(=HAH-Y=?T`X#??Z8w(Vk{q3zN7F(6RE zmQ7z~MTB15yf1d?1{aQCMUzR+@3%hX=MV!cYYYR{-UE`+^g&G`;k zEs$z;+lw?1iI|Rox?y9NV!IJL^SC8ADC+Dp+}oyjO&Fo^bxxR#r{pZd=|-S(!Q6eD za0RWAENN~ zv`pNN85Dr?+`XRYfcL`et#yP8tA)*~=Cax4_T4?JvCi^ZqU%_oUG7PpX~Q3SwsxKX zEvEoqsWx^i7CIox{!^L(1Q`>E>h$ORK9;AKn()zjz^394h63DW{k3 zMLhfvQ+TbxvctlHuX`#0m|@abpllZzW6&@ZrZ+EDFTslga&zs0P~@MibN9MULoLe$kybE`G? zPFXi|J{kNi(WS?Km+comGxYWmESh%Zt^$A-C!$Xn#Z^l#xM@SA z-k=~BzZavNFJoR~?ZQhe=IYYMW=$j0!%C0PpZSlDD6GwIg01U@m|>Yzv_SxZHLt4>d>f&ImD0(jj%vgKbRm z^SjF^`75uIRs?b;NSIoqZ7(?@tbT05*m^fKp*G?cV$Xxnm;mHm(%RVU?z&0~xFeLT z$Isz3LU0a;+n6kp_)X{Qf0E{MpgFB=i(J_|k=$DX zbKF7L4{$GQytg#_^H9Gkk8*&srhm5y+)4$uy_o|tldUXy4v9JWgEtMc$mUNz zEK~l9TKXvz(1fl}NY_N%4khM@)|zsbpZf0%3}G%A|48^b z6asRQ2NL9s&<9_;7}E7sg^e-XaVg?pa$=HU(#Z!Xp@7qmd+I_E?E$( zHC^+=e6k1OzAUF+1hDDC2iF&D*{%lbfX(zBRnlK5O%pE|C4UjJIkFM8B zQNUoJD0}G{PhGzeUMa= zS)_j~>6Y3mX2UYa!HuZ^o@ZZ&K(?5U_@wj57{ zk8wH~Nff>z+ENW(8*D`~ouP!N3l$HSdfAjux#+B{EjL zED_L{GX6$ zR*Xpj#R^5t5#8=y9v}SD*IuNw480?NWPHEZT%8ke4?d!t1FMFkU9ifS^nApMmY- z+}q4vE^g$qZCzjL-}e#KzA=1@jua>*OUd=k6+y^cIWYEk!PufxprrH20eG2$>56cg&?iYF1(dQ-@S^{A@ zknT)mT8iz_gG-vHJ;gcZRG!KMB*+JayazL+2^VAJC?39j?6_0-?vx{U?f$w|9^(a6 z#pMI$+z~Q@*8X3v&2LZav zR3;1izokHfYzziKhKb5)W?=9R^p-FP;K!xlGsh@Vz-kg8H3;~@XI42p07O~}q@<*j zamJVC=zUK|WG0!vR$c=5bED@5wegzykarH}DIgT+PsUv?}efOOo6%k%#>W%ozE4tpTVZrf034^0VXh&#)+S^iMWY0UBO!s}obG zodb5N1lL$ZaA2Y4RCXgRI^FAoStBydzNAAk&a#{w8garL8a{T}5OXbS-oDh_3`5a_ zU)`+JK3^zdJbKgZT@U17UU=_ndzaz;DD&n(z%(Nx{#Q5W8P!zU?ePGDjUrp2P7axQHP=s5ik(3QbG}8=m86gv5p`e1f_{m6hae%GXn^SbOMG*6C?x(HJF6J zyARI0?uU2Xb=Ui@yVhOn@o;+vo{rms-&CzuZm#TCB(5yHcWY~riR)vUuDx~BAdJPVtygc zFkVdTAwI6%Q}l4`kj4u==1^MzHmJ-u{&P*+n}yKn1*H?Bgt-P|_UkVG@NAM{G<&5L zZFg2}0(tC=Wv{-Z^5BTtnRoj-SSO{0-JJRNGTtBhy;pgXSu&9!@7`mQ(+X9tuDKAr zCwr{U#Olt83=PNL-r`rq$=+V}D^XQ%SO;Ylc1KwDjLToC6-3!CCIz(HplxfHHYWDAd@&>GhECAbY0>i!GU9?hr4HTOY^Up=Pkb|{@YAX*1|B>GQ-)7a zIrGR2Xs{2GT4qxhjD?wmdU5H!Cok$|9#wak*>5NKaQULde#Zw*wQtzQtcAcv=XpwJ9cOpB zMV2!$jv4w}5`nf;_$8;8gFp77|V}#BTqK$gLeqSsQ9HU8J z5ZjaD#2cz4``O?5^i3;;n#*Nq_Aq?O7)Zv=ev4fA2@qExiTK4!Ml z-TwlcWh}H2) zUg*`5w|B~2QnI0z`yJb@e~Dj?S>sW(zLHKl(HO?5`~p?8AW{?ue0CFmfRktP4s=DU z%KHr+bN2OV$gKi<6WWI6gJqe9i-Mh3EWM(HNIxp=vH73?GI=Q-gEUXuuD8^J)|Xkc zOKkYazhXzEqK7ml3qDT!EH?^O;Hy9QdOYhdVGj&<^td{tK)7jw7TpZADnAuEn3?z9_pE>i7s{=m1#~>%T#)YU90-1yQIr zvGt$`d`Lm2&m|-I@+MiWdRCArm?QRpIRaQ9WBf>prbyo@s43^NOCE{$slqU9vATLS z4u74`x?1)bR$G51v8q=HGPDPhi0$C9R-$4X+Ko;=-Jo?EYgV-ie;Oy)nOOPdz)|3if$uHu?RQ$j#3za# zM_F^5IFo5wD4MALlI*_ubJ8n}pl=lBDEL>dhSRhQzT;a)m(63&_pC-BDKIq!IOcrI z%5CC_8cOSyr9_;V$mITnMzh_jOlci(Q@(k|F}`x zzjoOB3+IqWf8&%VbU_BZkGHHN+=BeS&v)?Czc=OumgL!LkUE)KlF?8es>_=Q2nmS> zFtdD12E2BN!eQ-dlFZIl1J;D?@bO$upbnG4NB}V*AObk61mMJtTu&Emd?EY9gfa3b zvFP`zxktokw)x+=TyFoA4QxXdgCRU;due%A!--196|siY8czi11aErRCt(L_!a(U& z5RYJj(Np8&;|r=vG)op0)Ad9BH+?QHy*FG^JW?Sxq8>r3n4Q4kUXC%1(IwsGcT=k@ z#2T&3eh?+c-B!OaSb8aB7KH?RhBe*Pr_=@zcOq5rZPu)M~)b#T#Fdf?4>b0)nOe6$EmsuO>`2P`^M(xu#jo`gqrGX zXzu1HM0B1|{ZQy~cq?))%yqM#n;~0uxH#jBwA=Cyoa$CV)du*)NC|kL+BJH!1PO2x zW$~};MuOPv(A$rfVV^l*%*HN`Hekw6hiNh9%}6`Ns6j$j$#$tuoo8zcysU)0nM`Mc z*vb{P5|OC~(viEIvYE7Ligj~BXL?!@e(h63tcK)cjc2uaBRgS(HwSbY{xNGdrB9B( zgx{+!n*t=m)2!qJx8DzyX(7vOVECAfNIJq|5ohRVX%+}Bhvs@AKh*Unka%Qc37Pt(rZxdpngD?NP%_4i!ktr7xG($m-^zkNM7Brm8)LRP@SNQo4I!Tr&X47(F9gvxa zFZuBz6Fo7*<*Gw<1EdU@nHq3Hz=7a~1Msb?x-30KI&TYnXI+nGYtW?XHKZ zXB21FW8Yp|jkxA^pkk}tiUy{x!AV6n`CJB+b@ixhm01S}tjZCZJM9^I`Ejk4$XN>J zZaov8TiCm0pWSh=^O0qws;Z|x0M|AuO~6FFBp*tEcZTi=FCvBsfBKcFbLPSy5`CXb z4vM2t)_?%hCYf7McAz2mZ-KdK6b=jzN9UQLyibBE7=k3i-_b$x;x$)^i&<=m5&QUlu&3qXP88}$5I%&NYm9P`4Spf6^*p+l%-e7wjHg^J2iZ0*d=2uX9Lp;i;axEI(FF?@^*9dbGA!J|HDYz6tLMr)goRF z1|LxlQ}gPH_Bf}8P6`@hGD(TV5KU+2nC86~1r~yuZ}#<`Il{E1 z;vvRjQEkL@NZ-7(hoPfGGH17-JW-`?j^|i8v7?Z4oMnbi$Xo3FlB!kE?GY%1l_zZV zg9EdZlYMgH%F?$7;RkWs0Xy|XYI_N!^renU5jh_GjpD2 zUuMa671ZY%N^sMca4|e?U@D&<9F>$aRQKlFIE)bdZOxg&Nq3IFdD= zuT+12K371REUZkg_02L!)%Ph4(D_6UHwFjJ1%C3LLsRO`sKO@Rmi?*tEghm?Yl z)H_;+v5N2wKeZaI^?miU0m$;7s3;Z|rVxy9t#)O!2oE*!@K8^od@1L>>tvqcmq*+H zh2V6_x*+q?-MFt`X6U)_6c+34k|&a1v2S0rgbktZf#=;&Lv5j>&pFE`y{WRk3!UjlUFBN-!xLr^+m>C66g@{#9I}09CC$LpTvBt^xXc&h%4m zMFx8>DV(5KW;2=2N~mIZk1uUo=gpr>t{BV?4ytHgd~9P+#GUXBRO)y-&W;|Ke>*fY zM=WBy2&2n=-FQaL#rCRlQqsfX)~STQl#b%wCv}~1;xF}Z;f84X%Ds093iN%x*zfhL z5O=`+!wY(ApUKiQf3P__vD?IpI46KLsNE4lA#Qv(xyqqOLNwXc}uG7IzE5N_98KsSNt%sZc_7qXNW#Z97` zFkbLnlNaBz9uA&K;R_XiV*5rjRNyj(Dt~A=cfrcL?Dsx7``}SZ*1$A1Q@`xDc5(=2 zozw4IYWqR2D-3mx+5{ohTZ9#C8&kVmq7t&<(Xsh&&q!uMwSwYHoNMqJ#H*0dTBB+= zwmr;0hvE8EZF%@+V3Bo#^c2)T$vfbTvE59=hMk>cA&tDRBU_WyvI9hwV%a!@a zh`tkXP;z$IX!r+(8iaiIhXMxj+1Ok*WO*pmnq}FG z`+z76(I^gHs>^KxAg853+z_9!9O?8yuG_xakwFD<=11_cshGe!SB>3L5qat;{O11`jn9{48kOY6)qArpAs2Pb%+fU17=QgADK0JD literal 0 HcmV?d00001 From ffaf77a20ef9c4342f233d4440a3e19acb9fdfca Mon Sep 17 00:00:00 2001 From: Tim Alamenciak Date: Sun, 6 Apr 2025 06:57:24 -0400 Subject: [PATCH 2/3] Added caveat about project ontology vs. domain ontology --- docs/howto/overview-imports.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/howto/overview-imports.md b/docs/howto/overview-imports.md index fcc605d0e..a2c60bae1 100644 --- a/docs/howto/overview-imports.md +++ b/docs/howto/overview-imports.md @@ -23,6 +23,8 @@ Ontologies are intraconnected beasts. Fully axiomatized ontologies contain lots It gets out of hand quickly. +There is a major caveat for all of this: Your decision on import process depends on whether you are working on a domain ontology or a [project ontology](../tutorial/project-ontology-development/). If you are working on a domain ontology, there is a strict requirement to maintain logical validity. The domain ontology itself may have already developed import workflows that suit it. If you are working on a project ontology, you have more freedom to decide how you import terms. + There are a few questions you can ask yourself to help make this decision: 1. Is the definition and place in the hierarchy suitable for your ontology? 2. Do all of the axioms reflect the meaning of the term as you intend it? From ad5e07419fc8dca2d556b303643adfd6f09bdbb5 Mon Sep 17 00:00:00 2001 From: Tim Alamenciak Date: Sun, 6 Apr 2025 07:03:37 -0400 Subject: [PATCH 3/3] Amended internal links to be relative --- docs/howto/overview-imports.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/howto/overview-imports.md b/docs/howto/overview-imports.md index a2c60bae1..bbbfa50ec 100644 --- a/docs/howto/overview-imports.md +++ b/docs/howto/overview-imports.md @@ -10,9 +10,9 @@ This is a guide on how to **import terms** from one ontology to another. The OBO Foundry emphasizes reuse between ontologies, yet reusing terms is a very complex process with a lot of caveats and technical nuance. This how-to is an addition to some of the more technical tutorials, which can be considered post-requisites: -- [Update Imports Workflow](https://oboacademy.github.io/obook/howto/update-import/?h=import) -- [Managing Dynamic Imports with the Ontology Development Kit](https://oboacademy.github.io/obook/howto/update-import/?h=import) -- [Dealing with huge ontologies in your import chain](https://oboacademy.github.io/obook/howto/deal-with-large-ontologies/?h=import) +- [Update Imports Workflow](../howto/update-import/) +- [Managing Dynamic Imports with the Ontology Development Kit](../howto/update-import/) +- [Dealing with huge ontologies in your import chain](../howto/deal-with-large-ontologies/) - ODK documentation - [Manage your ODK Repository](https://obofoundry.org/COB/odk-workflows/RepoManagement/) ## To import or create?