From 5f9eaeafd6506971f3066d0f0c36e339b7f8c966 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Fri, 27 Oct 2023 08:23:41 +0100 Subject: [PATCH 01/30] Import NCBITaxon with disjointness axioms. Import the version of the NCBITaxon slim that includes disjointness axioms over taxon siblings. Those axioms are needed for the taxon constraint check to work. --- src/ontology/Makefile | 2 +- src/ontology/uberon-odk.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ontology/Makefile b/src/ontology/Makefile index d650bef1c7..1250db91be 100644 --- a/src/ontology/Makefile +++ b/src/ontology/Makefile @@ -492,7 +492,7 @@ mirror-bfo: | $(TMPDIR) .PHONY: mirror-ncbitaxon .PRECIOUS: $(MIRRORDIR)/ncbitaxon.owl mirror-ncbitaxon: | $(TMPDIR) - if [ $(MIR) = true ] && [ $(IMP) = true ]; then $(ROBOT) convert -I http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl -o $@.tmp.owl &&\ + if [ $(MIR) = true ] && [ $(IMP) = true ]; then $(ROBOT) convert -I http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim-disjoint-over-in-taxon.owl -o $@.tmp.owl &&\ mv $@.tmp.owl $(TMPDIR)/$@.owl; fi diff --git a/src/ontology/uberon-odk.yaml b/src/ontology/uberon-odk.yaml index 2b37c24409..2e1989246b 100644 --- a/src/ontology/uberon-odk.yaml +++ b/src/ontology/uberon-odk.yaml @@ -63,7 +63,7 @@ import_group: use_base: TRUE - id: bfo - id: ncbitaxon - mirror_from: http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl + mirror_from: http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim-disjoint-over-in-taxon.owl - id: nbo use_base: TRUE - id: orcidio From f27ac53d01d9dfdb35f2fd6124807dc84bc19999 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Fri, 27 Oct 2023 08:26:33 +0100 Subject: [PATCH 02/30] Update ncbitaxon_terms based on the -edit file. --- src/ontology/imports/ncbitaxon_terms.txt | 249 ++++++++++++++++++++++- 1 file changed, 248 insertions(+), 1 deletion(-) diff --git a/src/ontology/imports/ncbitaxon_terms.txt b/src/ontology/imports/ncbitaxon_terms.txt index ff6792faf3..6812f79f1c 100644 --- a/src/ontology/imports/ncbitaxon_terms.txt +++ b/src/ontology/imports/ncbitaxon_terms.txt @@ -1,4 +1,251 @@ NCBITaxon:1 +NCBITaxon:10047 +NCBITaxon:10088 +NCBITaxon:10090 +NCBITaxon:10114 +NCBITaxon:10116 +NCBITaxon:10135 +NCBITaxon:10205 +NCBITaxon:10219 +NCBITaxon:10220 +NCBITaxon:110815 +NCBITaxon:117565 +NCBITaxon:117569 +NCBITaxon:117570 +NCBITaxon:117893 +NCBITaxon:118040 +NCBITaxon:118072 +NCBITaxon:119203 +NCBITaxon:119825 +NCBITaxon:120557 +NCBITaxon:1206795 +NCBITaxon:1294634 +NCBITaxon:147099 +NCBITaxon:1476529 +NCBITaxon:181400 +NCBITaxon:186634 +NCBITaxon:189497 +NCBITaxon:207598 +NCBITaxon:261739 +NCBITaxon:264759 +NCBITaxon:270656 +NCBITaxon:27686 +NCBITaxon:28376 +NCBITaxon:29132 +NCBITaxon:30458 +NCBITaxon:30533 +NCBITaxon:30559 +NCBITaxon:30649 +NCBITaxon:31033 +NCBITaxon:311790 +NCBITaxon:314145 +NCBITaxon:314146 +NCBITaxon:314147 +NCBITaxon:314293 +NCBITaxon:314295 +NCBITaxon:32443 +NCBITaxon:32455 +NCBITaxon:32519 +NCBITaxon:32523 +NCBITaxon:32524 +NCBITaxon:32525 +NCBITaxon:32561 +NCBITaxon:32577 +NCBITaxon:33090 +NCBITaxon:33208 +NCBITaxon:33213 +NCBITaxon:33317 +NCBITaxon:33392 +NCBITaxon:33511 +NCBITaxon:33554 +NCBITaxon:337687 +NCBITaxon:338153 +NCBITaxon:35033 +NCBITaxon:35069 +NCBITaxon:35497 +NCBITaxon:37572 +NCBITaxon:376911 +NCBITaxon:376913 +NCBITaxon:377294 +NCBITaxon:37887 +NCBITaxon:379584 +NCBITaxon:38624 +NCBITaxon:38625 +NCBITaxon:39107 +NCBITaxon:399537 +NCBITaxon:40151 +NCBITaxon:40674 +NCBITaxon:41324 +NCBITaxon:41426 +NCBITaxon:41712 +NCBITaxon:43120 +NCBITaxon:43453 +NCBITaxon:436486 +NCBITaxon:436491 +NCBITaxon:436495 +NCBITaxon:4751 +NCBITaxon:50557 +NCBITaxon:51337 +NCBITaxon:569425 +NCBITaxon:57294 +NCBITaxon:6040 +NCBITaxon:6072 +NCBITaxon:6073 +NCBITaxon:6157 +NCBITaxon:6178 +NCBITaxon:6199 +NCBITaxon:6211 +NCBITaxon:6217 +NCBITaxon:6231 +NCBITaxon:6239 +NCBITaxon:63221 +NCBITaxon:6340 +NCBITaxon:6425 +NCBITaxon:6447 +NCBITaxon:6448 +NCBITaxon:6544 +NCBITaxon:65997 +NCBITaxon:6656 +NCBITaxon:6657 +NCBITaxon:6681 +NCBITaxon:6830 +NCBITaxon:6843 +NCBITaxon:70846 +NCBITaxon:7088 +NCBITaxon:7227 +NCBITaxon:7434 +NCBITaxon:7568 +NCBITaxon:7586 +NCBITaxon:7588 +NCBITaxon:7618 +NCBITaxon:7625 +NCBITaxon:7711 +NCBITaxon:7712 +NCBITaxon:7713 +NCBITaxon:7718 +NCBITaxon:7735 +NCBITaxon:7737 +NCBITaxon:7742 +NCBITaxon:7745 +NCBITaxon:7746 +NCBITaxon:7761 +NCBITaxon:7762 +NCBITaxon:7764 +NCBITaxon:7769 +NCBITaxon:7776 +NCBITaxon:7777 +NCBITaxon:7778 +NCBITaxon:7858 +NCBITaxon:7863 +NCBITaxon:7864 +NCBITaxon:7878 +NCBITaxon:7896 +NCBITaxon:7898 +NCBITaxon:7900 +NCBITaxon:7901 +NCBITaxon:7911 +NCBITaxon:7915 +NCBITaxon:7922 +NCBITaxon:7954 +NCBITaxon:7955 +NCBITaxon:79805 +NCBITaxon:8022 +NCBITaxon:8065 +NCBITaxon:8075 +NCBITaxon:80999 +NCBITaxon:8287 +NCBITaxon:8289 +NCBITaxon:8292 +NCBITaxon:8293 +NCBITaxon:8295 +NCBITaxon:8296 +NCBITaxon:8314 +NCBITaxon:8342 +NCBITaxon:8353 +NCBITaxon:8355 +NCBITaxon:8457 +NCBITaxon:8459 +NCBITaxon:8464 +NCBITaxon:8492 +NCBITaxon:8493 +NCBITaxon:8499 +NCBITaxon:8504 +NCBITaxon:8507 +NCBITaxon:8508 +NCBITaxon:8509 +NCBITaxon:8561 +NCBITaxon:8570 +NCBITaxon:8578 +NCBITaxon:8782 +NCBITaxon:8801 +NCBITaxon:8827 +NCBITaxon:88770 +NCBITaxon:8930 +NCBITaxon:89593 +NCBITaxon:9030 +NCBITaxon:9031 +NCBITaxon:9126 +NCBITaxon:91561 +NCBITaxon:9254 +NCBITaxon:9255 +NCBITaxon:9257 +NCBITaxon:9258 +NCBITaxon:9259 +NCBITaxon:9261 +NCBITaxon:9263 +NCBITaxon:9265 +NCBITaxon:9305 +NCBITaxon:9321 +NCBITaxon:9322 +NCBITaxon:9338 +NCBITaxon:9347 +NCBITaxon:9348 +NCBITaxon:9359 +NCBITaxon:9362 +NCBITaxon:9363 +NCBITaxon:9365 +NCBITaxon:9369 +NCBITaxon:9373 +NCBITaxon:9376 +NCBITaxon:9397 +NCBITaxon:9443 +NCBITaxon:9475 +NCBITaxon:9499 NCBITaxon:9539 +NCBITaxon:9590 +NCBITaxon:9596 +NCBITaxon:9599 +NCBITaxon:9604 +NCBITaxon:9605 +NCBITaxon:9606 +NCBITaxon:9608 +NCBITaxon:9611 +NCBITaxon:9632 NCBITaxon:9669 -NCBITaxon:4751 +NCBITaxon:9673 +NCBITaxon:9681 +NCBITaxon:9705 +NCBITaxon:9709 +NCBITaxon:9721 +NCBITaxon:9753 +NCBITaxon:9761 +NCBITaxon:9765 +NCBITaxon:9775 +NCBITaxon:9779 +NCBITaxon:9780 +NCBITaxon:9787 +NCBITaxon:9788 +NCBITaxon:9816 +NCBITaxon:9822 +NCBITaxon:9823 +NCBITaxon:9835 +NCBITaxon:9836 +NCBITaxon:9845 +NCBITaxon:9850 +NCBITaxon:9892 +NCBITaxon:9895 +NCBITaxon:9935 +NCBITaxon:9963 +NCBITaxon:9972 +NCBITaxon:9975 +NCBITaxon:9989 From 2b57baf0b8c860c02ddbef0a3278bb6430164016 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Fri, 27 Oct 2023 08:27:42 +0100 Subject: [PATCH 03/30] Implement taxon constraint check in QC pipeline. We make sure that taxon constraints are checked as part of the QC pipeline (during the "bridge checks"). This is done by two steps. 1. We expand the RO:0002175 macros present in the ontology. This must only be done as part of the QC pipeline to avoid bloating the released artefacts with the "witness classes" created by the expansion of this macro. 2. We merge in the NCBITaxon slim with disjointness axioms. Not just an extracted module (such an extracted module has already been been imported as part of the normal imports pipeline), but the entire slim. Again, this must only be done in the QC pipeline because we do not want the entire NCBITaxon slim to be included in any relaese artefact, not even -full. --- src/ontology/uberon.Makefile | 49 ++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/src/ontology/uberon.Makefile b/src/ontology/uberon.Makefile index e311be5a8f..2d01e275b8 100644 --- a/src/ontology/uberon.Makefile +++ b/src/ontology/uberon.Makefile @@ -109,9 +109,10 @@ quick-qc: $(REPORTDIR)/uberon-edit-obscheck.txt # ---------------------------------------- # BUILDING UBERON ITSELF # ---------------------------------------- + # Step 1: Preprocessing. We Merge the edit file file with imports, -# disjointness axioms, and list of contributors, then expand macros. -# FIXME: Need explanation for not expanding RO:0002175 specifically. +# disjointness axioms, and list of contributors, then expand macros +# (except RO:0002175, which only needs to be expanded for QC purposes). $(OWLSRC): $(SRC) $(COMPONENTSDIR)/disjoint_union_over.ofn $(REPORTDIR)/$(SRC)-gocheck $(REPORTDIR)/$(SRC)-iconv @echo "STRONG WARNING: issues/contributor.owl needs to be manually updated." $(ROBOT) merge -i $< \ @@ -417,7 +418,7 @@ $(TMPDIR)/uberon-taxon-constraints.obo: $(SRC) cat $@.tmp $(COMPONENTSDIR)/taxon_relations.obo > $@ $(TMPDIR)/uberon-taxon-constraints.owl: $(TMPDIR)/uberon-taxon-constraints.obo - $(OWLTOOLS) $< --expand-macros -o $@ + $(ROBOT) expand --input $< -o $@ # %-xf: Product without "non-subclass cross-references"? @@ -636,18 +637,41 @@ $(TMPDIR)/external-disjoints.owl: components/external-disjoints.obo $(ROBOT) convert -i $< -f owl -o $@ .PRECIOUS: $(TMPDIR)/external-disjoints.owl +# All the checks below need the taxslim-disjoint-over-in-taxon.owl, +# which should have been downloaded into mirror/ncbitaxon.owl by the +# standard ODK import pipeline. So ideally, all the checks below should +# just have to depend on mirror/ncbitaxon.owl. But the QC checks are run +# under MIR=false IMP=false, so while the rule would be invoked by Make +# it would not result in the mirror being downloaded if it is not +# already available. +# So instead, we make the checks depend on another file, and here we +# 1. force the download of the mirror if it is not already there; +# 2. create a link to that mirror. +$(TMPDIR)/taxslim-disjoint-over-in-taxon.owl: + if [ ! -f $(MIRRORDIR)/ncbitaxon.owl ]; then \ + $(MAKE) $(MIRRORDIR)/ncbitaxon.owl MIR=true IMP=true ; \ + fi && \ + ln -f -s ../$(MIRRORDIR)/ncbitaxon.owl $@ + # We create a merged ontology consisting of # (1) Uberon itself; # (2) the external-disjoints component; -# (3) all the bridges to Uberon (except the EMAP bridge, which should -# probably be removed entirely from the repo anyway). +# (3) the taxslim including inter-taxon disjointness axioms; +# (4) all the bridges to Uberon (except the EMAP bridge, which should +# probably be removed entirely from the repo anyway); +# and we expand RO:0002175 (which was left unexpanded at the +# preprocessing step, as it is only required for this check). # This can be used to reveal both internal inconsistencies within # Uberon, and the improper linking of a species AO class to an Uberon # class with a taxon constraints. ALL_UBERON_BRIDGES=$(shell ls $(BRIDGEDIR)/uberon-bridge-to-*.owl | grep -v emap.owl) -$(TMPDIR)/uberon-edit-plus-tax-equivs.owl: $(OWLSRC) $(TMPDIR)/external-disjoints.owl $(TMPDIR)/bridges +$(TMPDIR)/uberon-edit-plus-tax-equivs.owl: $(OWLSRC) $(TMPDIR)/external-disjoints.owl \ + $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ + $(TMPDIR)/bridges $(ROBOT) merge -i $< -i $(TMPDIR)/external-disjoints.owl \ + -i $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ $(foreach bridge, $(ALL_UBERON_BRIDGES), -i $(bridge)) \ + expand \ convert -f ofn -o $@ .PRECIOUS: $(TMPDIR)/uberon-edit-plus-tax-equivs.owl @@ -671,8 +695,12 @@ extra-full-bridge-checks: $(foreach ao, $(EXTRA_FULL_CHECK_AO_LIST), $(REPORTDIR # A quick bridge check uses only uberon plus taxon constraints plus # bridging axioms, *not* the axioms in the source ontology itself. -$(REPORTDIR)/quick-bridge-check-%.txt: uberon.owl $(TMPDIR)/external-disjoints.owl $(TMPDIR)/bridges +$(REPORTDIR)/quick-bridge-check-%.txt: uberon.owl \ + $(TMPDIR)/external-disjoints.owl \ + $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ + $(TMPDIR)/bridges $(ROBOT) merge -i $< -i $(TMPDIR)/external-disjoints.owl \ + -i $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ -i $(BRIDGEDIR)/uberon-bridge-to-$*.owl \ reason -r ELK > $@ @@ -682,8 +710,13 @@ $(REPORTDIR)/quick-bridge-check-%.txt: uberon.owl $(TMPDIR)/external-disjoints.o # For this check, we separate the production of the merged ontology # from the production of the report. # 1. The merge -$(REPORTDIR)/bridge-check-%.owl: uberon.owl $(TMPDIR)/external-disjoints.owl $(TMPDIR)/bridges $(IMPORTDIR)/local-%.owl +$(REPORTDIR)/bridge-check-%.owl: uberon.owl \ + $(TMPDIR)/external-disjoints.owl \ + $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ + $(TMPDIR)/bridges \ + $(IMPORTDIR)/local-%.owl $(ROBOT) merge -i $< -i $(TMPDIR)/external-disjoints.owl \ + -i $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl \ -i $(BRIDGEDIR)/uberon-bridge-to-$*.owl \ -i $(IMPORTDIR)/local-$*.owl \ convert -f ofn -o $@ From b71c78684f87a66a44861f17492da8810c010280 Mon Sep 17 00:00:00 2001 From: Anita Caron Date: Tue, 20 Jun 2023 11:48:47 +0100 Subject: [PATCH 04/30] remove wings never_in_taxon Sauropsida --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index a21e372dba..c029d1529f 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -934,7 +934,6 @@ relationship: never_in_taxon NCBITaxon:314147 {source="bgee"} ! Glires relationship: never_in_taxon NCBITaxon:6231 {source="bgee"} ! Nematoda relationship: never_in_taxon NCBITaxon:7878 {source="bgee"} ! Dipnomorpha relationship: never_in_taxon NCBITaxon:8292 {notes="we do not consider flying frogs to have wings", source="bgee"} ! Amphibia -relationship: never_in_taxon NCBITaxon:8457 {source="bgee"} ! Sauropsida relationship: never_in_taxon NCBITaxon:91561 {source="bgee"} ! Artiodactyla relationship: never_in_taxon NCBITaxon:9254 {source="bgee"} ! Prototheria relationship: never_in_taxon NCBITaxon:9263 {source="bgee"} ! Metatheria From c865ba5c6b60c885aaf6f7529a01419e54275578 Mon Sep 17 00:00:00 2001 From: Anita Caron Date: Fri, 21 Jul 2023 11:22:30 +0100 Subject: [PATCH 05/30] Making induction relation between suture and DM mammal-only --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index c029d1529f..19f50226f2 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -76338,7 +76338,7 @@ is_a: UBERON:0009198 {source="GO"} ! craniofacial suture intersection_of: UBERON:0002209 ! fibrous joint intersection_of: part_of UBERON:0003128 ! cranium relationship: contributes_to_morphology_of UBERON:0003128 ! cranium -relationship: developmentally_induced_by UBERON:0002363 {source="PMID:16496288"} ! dura mater +relationship: developmentally_induced_by UBERON:0002363 {gci_relation="part_of", gci_filler="NCBITaxon:40674", source="PMID:16496288"} ! dura mater relationship: fma_set_term FMA:71385 [Term] From 4700c9895c63b053d3d103cef0fe31dd58ac727f Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Tue, 19 Sep 2023 20:10:38 +0100 Subject: [PATCH 06/30] Unsat fix: pterygoid bone NOT part of some suspensorium. 'suspensorium' is explicitly constrained to be 'NOT in mammals', but pterygoid bone has no such restriction and is apparently found (at least) in mice, so presumably pterygoid bone should not be assumed to be part of something that does not exist in mammals. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 19f50226f2..a7a0b1a2be 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -139025,7 +139025,6 @@ xref: SCTID:415639001 xref: Wikipedia:Pterygoid_bone is_a: UBERON:0011164 {source="MA"} ! neurocranium bone relationship: contributes_to_morphology_of UBERON:0004649 ! sphenoid bone pterygoid process -relationship: part_of UBERON:0003108 {source="AAO"} ! suspensorium relationship: part_of UBERON:0004649 {source="MA"} ! sphenoid bone pterygoid process relationship: part_of UBERON:0012072 {source="ISBN:0073040584", source="Paleos"} ! palatal part of dermatocranium property_value: external_definition "In tetrapods, the pterygoid is a complex, but relatively stable, paired palatal bone with a number of parts. For the following discussion, it may be best to refer to the images of tetrapod palates at, for example Ornithosuchus, Therapsida, or Palatines. In many tetrapods, it is the largest palatal bone and serves as the main structural support. Most typically, the pterygoids meet extensively on the mid-line of the palate and jointly send a process, the palatal ramus, anteriorly, which may cover the parasphenoid more or less completely. Sometimes this term is used to include the main body of the pterygoid as well. More variably, there are one or two anterolateral processes which go by various names, such as ectopterygoid ramus. In many amniotes, the pterygoid develops a strong transverse process or transverse flange which forms a bar running laterally across the palate. The pterygoid also articulates with (where present) the dorsoventral supports for the palate: the epipterygoid (dorsal) and the basipterygoid process of the braincase. Finally, the pterygoid sends a long, robust quadrate ramus with complex curvature down (posteroventrally) to grasp the quadrate and support the jaw articulation. Basally, in fishes, the terminology tends to be a little different. Refer to the image of the Frasnian actinistian Diplocercides. The pterygoid bone of tetrapods is, roughly speaking, derived from the middle, entopterygoid (see also entry at entopterygoid for alternative definitions) portion of the palatoquadrate complex. The entopterygoid is not actually a part of the palatoquadrate. It is a dermal bone which has replaced the middle section of the primitively continuous endochondral bone of the palatoquadrate, the original upper jaw. In tetrapods, the pterygoid advances further, and also replaces the central part of the posterior, pterygoquadrate unit. This becomes the quadrate ramus. The upper part of this unit, the portion involved in the dorsal and basipterygoid articulations between jaw and braincase, is referred to as the metapterygoid. In tetrapods, most of this region is incorporated into the pterygoid as well, with the exception of the ascending process of the palatoquadrate, which becomes the epipterygoid. Since the anterior braincase articulation is lost in tetrapods, the only remaining sections of the palatoquadrate are the epipterygoid and the quadrate (or, in mammals, the incus). Everything else is either lost or is replaced by the pterygoid[Palaeos]" xsd:string {source="http://palaeos.com/vertebrates/glossary/glossaryPte.html"} From 79c1edca5c69cb3c6f5164504b87f87c566b98e9 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 21 Sep 2023 12:47:38 +0100 Subject: [PATCH 07/30] Unsat fix: Relax taxon constraint on 'corpus luteum'. The existence of a corpus luteum is documented in some jawless vertebrates, so it cannot be said to only exist in mammals. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index a7a0b1a2be..e5a7385498 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -53058,7 +53058,7 @@ is_a: UBERON:0002368 {source="PMID:20959416"} ! endocrine gland relationship: capable_of GO:0042701 ! progesterone secretion relationship: develops_from UBERON:0001305 ! ovarian follicle relationship: has_part CL:0000175 ! luteal cell -relationship: only_in_taxon NCBITaxon:40674 {source="Wikipedia"} ! Mammalia +relationship: only_in_taxon NCBITaxon:7742 ! Vertebrata relationship: part_of UBERON:0000949 {source="MA"} ! endocrine system relationship: part_of UBERON:0000992 {source="MA"} ! ovary relationship: present_in_taxon NCBITaxon:7762 {source="PMID:20959416"} ! Myxinidae From 1b33f06f8d70e99c99c7dc0b91fd7ed9624d1935 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 21 Sep 2023 17:20:53 +0100 Subject: [PATCH 08/30] Unsat fix: Remove 'pericardial cavity present_in_taxon some Ciona'. The pericardial cavity, like all terms related to 'heart', is strictly defined as vertebrate-specific in Uberon. Ciona do have something that is akin to a pericardium, but since they are not vertebrates, we should either: * broaden our heart-related terms (at least 'pericardium', and all terms connected to it) so that it is no longer vertebrate-specific; * create another term to represent pericardium-like structure in non-vertebrates. Until a decision is made between these two approaches, here we simply remove the statement that the pericardial cavity exists in Ciona, since it directly violates the vertebrate-specific constraint. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index e5a7385498..f88f2569c6 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -12320,7 +12320,6 @@ intersection_of: luminal_space_of UBERON:0002406 ! pericardial sac relationship: develops_from UBERON:0003887 {source="Wikipedia"} ! intraembryonic coelom relationship: location_of UBERON:0002409 ! pericardial fluid relationship: part_of UBERON:0002406 {source="FMA"} ! pericardial sac -relationship: present_in_taxon NCBITaxon:7718 {source="PMID:20959416"} ! Ciona relationship: surrounded_by UBERON:0002357 ! serous pericardium property_value: external_definition "Anatomical space in which the heart is located and is surrounded by the pericardium.[TAO]" xsd:string {date_retrieved="2012-08-14", external_class="TAO:0002220", ontology="TAO", source="ZFIN:curator"} property_value: external_ontology_notes "check ZFA, should actually be thoracic cavity. Note that Hyman defines the cavity as the space between the heart and the sac (but defines the sac as parietal)" xsd:string {external_ontology="ZFA"} From feb14d09c7b2dd67db8c65f2ae30e896df90c955 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Fri, 22 Sep 2023 20:01:10 +0100 Subject: [PATCH 09/30] Unsat fix: Detach 'vertebral element' from 'vertebral column'. Some hagfish may have vertebral elements without having a full vertebral column, so the existence of vertebral elements should not imply the existence of a vertebral column. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index f88f2569c6..e8ec9053d9 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -142291,7 +142291,6 @@ xref: VHOG:0001143 xref: VSAO:0000184 is_a: UBERON:0004765 {source="VSAO", source="https://github.com/obophenotype/uberon/issues/82"} ! skeletal element relationship: develops_from UBERON:0003089 {source="cjm"} ! sclerotome -relationship: part_of UBERON:0001130 {source="VSAO"} ! vertebral column property_value: curator_notes "we include a distinct subclass for bony vertebra" xsd:string property_value: has_relational_adjective "vertebral" xsd:string property_value: homology_notes "In contrast to lampreys and jawed vertebrates, hagfishes were thought to lack vertebrae. Now, long overlooked vertebral rudiments have been analysed in hagfish, suggesting that vertebrae existed in the last common ancestor of all vertebrates.[well established][VHOG]" xsd:string {date_retrieved="2012-09-17", external_class="VHOG:0001143", ontology="VHOG", source="DOI:10.1016/j.cub.2011.07.014 Janvier P, Comparative anatomy: all vertebrates do have vertebrae. Current Biology (2011)", source="http://bgee.unil.ch/"} From 151f02acd02698e375e119bb6e42c8d722f70f65 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 18:45:42 +0100 Subject: [PATCH 10/30] Unsat fix: philtrum NOT part_of some rhinarium. The philtrum (UBERON:0005402) exists in species that do not have a rhinarium (UBERON:0011256), so it should not be said to be part_of some rhinarium. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index e8ec9053d9..b4288d0ddd 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -101006,7 +101006,6 @@ relationship: develops_from UBERON:0004068 {source="Wikipedia"} ! medial nasal p relationship: has_quality PATO:0000588 {gci_relation="part_of", gci_filler="NCBITaxon:9606"} ! vestigial relationship: only_in_taxon NCBITaxon:40674 ! Mammalia relationship: part_of UBERON:0001834 {source="EMAPA"} ! upper lip -relationship: part_of UBERON:0011256 ! rhinarium property_value: seeAlso "https://github.com/obophenotype/uberon/pull/2691" xsd:string property_value: taxon_notes "vestigial in humans. In humans, the philtrum is formed where the nasomedial and maxillary processes meet during embryonic development (colloquially known as Hulse lines). When these processes fail to fuse fully in humans, a cleft lip (sometimes called a 'hare lip') can result. A flattened or smooth philtrum can be a symptom of fetal alcohol syndrome or Prader-Willi syndrome" xsd:string From c6edd6a82b4f15f8ef54efbdcd7e17b59293cb78 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 18:55:00 +0100 Subject: [PATCH 11/30] Unsat fix: Relax taxon constraint on 'neocortex'. Hagfishes are reported to "have independently evolved a highly laminated cerebral cortex, comparable in many ways to the cerebral cortex of mammals". So we relax the taxon constraint on 'neocortex' from mammals up to vertebrates, so as to cover fishes. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index b4288d0ddd..91cda33c26 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -36707,7 +36707,7 @@ xref: Wikipedia:Neocortex is_a: UBERON:0002616 ! regional part of brain relationship: contributes_to_morphology_of UBERON:0000956 ! cerebral cortex relationship: mutually_spatially_disjoint_with UBERON:0002264 {source="ABA"} ! olfactory bulb -relationship: only_in_taxon NCBITaxon:40674 {source="Wikipedia"} ! Mammalia +relationship: only_in_taxon NCBITaxon:7742 {source="Wikipedia"} ! Vertebrata relationship: part_of UBERON:0000956 ! cerebral cortex property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/7/77/Neocortex.jpg" xsd:anyURI property_value: homology_notes "The 6-layer neocortex is well conserved in all extant mammals, but not present in birds or reptils" xsd:string {source="PMID:23027930"} From 33b9221cfe317bd3daa9834e1b5b63e266b5612b Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 18:59:17 +0100 Subject: [PATCH 12/30] Remove mapping between UBERON:0006334 and HBA:4413. The mapping between UBERON:0006334 and HBA:4413 is most likely bogus. The Uberon term refers to a 'posterior lateral line' that is not supposed to exist in amniotes, whereas the HBA term refers to a 'lateral nucleus of the pulvinar, left', a regional part of the brain. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 91cda33c26..079ce417b4 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -111686,7 +111686,6 @@ subset: efo_slim synonym: "pll" EXACT [ZFA:0000944] xref: AAO:0011024 xref: EFO:0003595 -xref: HBA:4413 xref: TAO:0000944 xref: XAO:0000465 xref: ZFA:0000944 From 91c0fa7a5e7918eabc640cb6f393e368a32d8f9d Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:03:59 +0100 Subject: [PATCH 13/30] Unsat fix: Remove undesired taxon specifity on 'axial skeletal system'. 'axial skeletal system' is intended to apply to chordates, but is said to have as part some 'axial skeleton plus cranial skeleton', which is vertebrate-specific. We remove the offending has_part axiom. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 079ce417b4..2d6c0cfe20 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -143850,7 +143850,6 @@ def: "Subdivision of the skeletal system which consists of the axial skeleton pl xref: FMA:7483 is_a: UBERON:0000075 {source="FMA"} ! subdivision of skeletal system relationship: has_part UBERON:0000982 ! skeletal joint -relationship: has_part UBERON:0005944 ! axial skeleton plus cranial skeleton relationship: only_in_taxon NCBITaxon:7711 ! Chordata property_value: seeAlso "http://purl.obolibrary.org/obo/uberon/docs/The-axial-skeleton" xsd:anyURI From f25f8a2ceaa314f85d93bb5742b84beb8084af0f Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:10:58 +0100 Subject: [PATCH 14/30] Unsat fix: Relax taxon constraint on 'dermatocranium'. 'dermatocranium' is taxon-constrained to jawed vertebrates, but is part of the definition of 'nose' (through 'nasal skeleton') which exists throughout vertebrates. So we relax the taxon constraint on 'dermatocranium' up to vertebrates as well. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 2d6c0cfe20..6ed7216ab8 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -67135,7 +67135,7 @@ xref: XAO:0003169 xref: ZFA:0000863 is_a: UBERON:0011159 ! primary subdivision of cranial skeletal system relationship: never_in_taxon NCBITaxon:7777 {source="ISBN:0073040584"} ! Chondrichthyes -relationship: only_in_taxon NCBITaxon:7776 ! Gnathostomata +relationship: only_in_taxon NCBITaxon:7742 ! Vertebrata relationship: part_of UBERON:0010323 {source="ZFA"} ! cranial skeletal system relationship: part_of UBERON:0010364 ! dermal skeleton property_value: editor_note "wikipedia treats skull roof and dermatocranium as synonymous, but some sources treat the roof as being part of the dermatocranium - see UBERONREF:0000007" xsd:string From 88451e16ec5f76cc02dec0dc8f8a061e3bdeb843 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:23:21 +0100 Subject: [PATCH 15/30] Remove mapping between UBERON:0036215 and AEO:0000154. AEO:0000154 is mapped to both UBERON:0036215 (anatomical surface region) and UBERON:0002416 (integumental system), making the two Uberon terms equivalent with each other upon merging the AEO bridge. Based on the definition of the AEO term, the mapping with integumental system should be the correct one; the mapping with 'anatomical surface region' had probably been created on the basis on the lexical similarity between 'organism surface' and 'anatomical surface' (yet another example of how lexical similarity matching is harmful). --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 6ed7216ab8..7c1e6ef8a5 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -187784,7 +187784,6 @@ name: anatomical surface region def: "Material anatomical entity that forms the outermost boundary of an anatomical structure." [https://github.com/obophenotype/uberon/issues/1324] subset: common_anatomy xref: AAO:0010270 -xref: AEO:0000154 xref: ZFA:0005594 is_a: UBERON:0000465 ! material anatomical entity relationship: bounding_layer_of UBERON:0000061 ! anatomical structure From 97ed463a48cfb7293be763afe6670c7b9cd3c4bf Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Fri, 27 Oct 2023 08:47:53 +0100 Subject: [PATCH 16/30] Unsat fix: Relax the taxon constraint on 'epithelium'. 'epithelium' is restricted to Eumatazoa, but "true epithelia" have been reported in some sponges. Besides, the homology notes on 'epithelium' clearly states that epithelial tissues are found in *metazoans*, not *eumetazoans*. So we relax the taxon constraint up to metazoans. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 7c1e6ef8a5..5fd10ce552 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -7452,7 +7452,7 @@ union_of: UBERON:0000486 ! multilaminar epithelium union_of: UBERON:0000490 ! unilaminar epithelium relationship: has_part GO:0005911 ! cell-cell junction relationship: has_part UBERON:0005769 ! basement membrane of epithelium -relationship: only_in_taxon NCBITaxon:6072 ! Eumetazoa +relationship: only_in_taxon NCBITaxon:33208 {source="http://palaeos.com/metazoa/porifera/homoscleromorpha.html"} ! Metazoa property_value: depiction "https://upload.wikimedia.org/wikipedia/commons/8/8f/Illu_epithelium.jpg" xsd:anyURI property_value: has_relational_adjective "epithelial" xsd:string property_value: homology_notes "The two basic types of metazoan tissue are epithelial and connective. The simplest metazoans, and developmental stages of many primitive invertebrates, consist solely of these two layers. Thus, epithelial and connective tissues may be the primary (original) tissues of metazoans, and both are important in the functional organization of animals.[well established][VHOG]" xsd:string {date_retrieved="2012-09-17", external_class="VHOG:0000387", ontology="VHOG", source="ISBN:978-0030259821 Ruppert EE, Fox RS, Barnes RD, Invertebrate zoology: a functional evolutionary approach (2003) p.59", source="http://bgee.unil.ch/"} From 448cc2b38273b17a4d55fc16d7a9256176e6dc6e Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:47:25 +0100 Subject: [PATCH 17/30] Unsat fix: Relax taxon constraint on 'choroidal guanine tapetum'. 'choroidal guanine tapetum' is restricted to elasmobranchs, but that structure seems to exist throughout cartilaginous fishes, so we relax the taxon constraint accordingly. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 5fd10ce552..f3ca971a49 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -137540,7 +137540,7 @@ name: choroidal guanine tapetum def: "A choroid tapetum lucidum that is made of a palisade of cells containing stacks of flat hexagonal crystals of guanine." [https://orcid.org/0000-0002-6601-2165, PMID:14738502, Wikipedia:Tapetum_lucidum#Classification] xref: Wikipedia:Tapetum_lucidum#Classification is_a: UBERON:0010244 ! choroid tapetum lucidum -relationship: only_in_taxon NCBITaxon:7778 ! Elasmobranchii +relationship: only_in_taxon NCBITaxon:7777 {source="doi:10.1017/S0025315400024760"} ! Chondrichthyes relationship: present_in_taxon NCBITaxon:7778 ! Elasmobranchii relationship: present_in_taxon NCBITaxon:7864 ! Chimaeriformes property_value: taxon_notes "A choroidal tapetum of reflecting cells lying immediately outside the choriocapillaris is formed in a few primitive teleosts." xsd:string {source="PMID:14738502", taxon="NCBITaxon:32443"} From 92d4cbee4faf171a73f374af1e6b05c753d29d05 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:37:19 +0100 Subject: [PATCH 18/30] Unsat fix: Move misplace 'present in taxon' assertion. 'skull' is said to be 'present in taxon' some Myxinidae. But Myxinidae are jawless vertebrates while skull, as defined in Uberon, refers to the association of a cranium with a mandible. Without a mandible, Myxinidae have a cranium but no skull. So we move the 'present in taxon' some Myxinidae axiom from 'skull' to 'cranium'. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index f3ca971a49..fade404306 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -67606,6 +67606,7 @@ xref: Wikipedia:Cranium_(anatomy) is_a: UBERON:0000075 {source="FMA-inferred"} ! subdivision of skeletal system relationship: mutually_spatially_disjoint_with UBERON:0003278 ! skeleton of lower jaw relationship: part_of UBERON:0003129 ! skull +relationship: present_in_taxon NCBITaxon:7762 ! Myxinidae property_value: external_ontology_notes "the inclusion of the FMA class here is probably not quite correct, as this class includes as parts sutures, whereas this is not part of the bones of the cranium" xsd:string {external_ontology="FMA"} property_value: has_relational_adjective "cranial" xsd:string property_value: terminology_notes "The term cranium can be ambiguous, in that it can refer to the neurocranium, or the neurocranium and the Facial skeleton" xsd:string {source="WP"} @@ -67637,7 +67638,6 @@ relationship: has_part UBERON:0003278 ! skeleton of lower jaw relationship: only_in_taxon NCBITaxon:89593 ! Craniata relationship: part_of UBERON:0000033 ! head relationship: part_of UBERON:0010323 ! cranial skeletal system -relationship: present_in_taxon NCBITaxon:7762 ! Myxinidae property_value: external_ontology_notes "in FMA the skull is divided into orbit, neurocranium (8 parts), viscerocranium (26 parts). Here we have a separate overlapping division into cranium and mandible." xsd:string {external_ontology="FMA"} property_value: external_ontology_notes "in many ontologies, the structure called the cranium is inclusive of the mandible/lower jaw skeleton" xsd:string property_value: terminology_notes "A skull that is missing a mandible is only a cranium; this is the source of a very commonly made error in terminology. Those animals having skulls are called craniates" xsd:string {source="WP"} From ed434598356c90c759d92f7b48ff9215e5074833 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:51:36 +0100 Subject: [PATCH 19/30] Unsat fix: Remove link between 'mouth' and 'respiratory system'. 'mouth' is said to overlap with 'respiratory system', but the mouth exists throughout the eumatozoans while the respiratory system is restricted to Bilateria. We remove the link to avoid restricting the mouth to Bilateria as well. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index fade404306..be04b2abfe 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -3659,7 +3659,6 @@ intersection_of: UBERON:0004921 ! subdivision of digestive tract intersection_of: proximalmost_part_of UBERON:0001555 ! digestive tract relationship: develops_from UBERON:0035804 ! future mouth relationship: only_in_taxon NCBITaxon:6072 ! Eumetazoa -relationship: overlaps UBERON:0001004 {notes="exceptions in some taxa"} ! respiratory system relationship: part_of UBERON:0000033 ! head property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/0/06/Mouth_illustration-Otis_Archives.jpg" xsd:anyURI property_value: development_notes "some AOs place this as developing from the stomodeum but we weaken this to developmental contribution, as the mouth includes non-ectodermal derivatives" xsd:string From 872bcf93e893759e9c032d8751a1b84994fb14e1 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 19:56:52 +0100 Subject: [PATCH 20/30] Unsat fix: Relax taxon constraint on 'olivary pretectal nucleus'. The 'olivary pretectal nucleus' has been reported to exist in salamanders, so we relax its taxon constraint from Amniota to Tetrapoda, as as to cover both Amniota and Amphibia. --- src/ontology/uberon-edit.obo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index be04b2abfe..528b2eac86 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -54274,7 +54274,7 @@ relationship: contributes_to_morphology_of UBERON:0001944 ! pretectal region relationship: mutually_spatially_disjoint_with UBERON:0002711 {source="ABA"} ! nucleus of posterior commissure relationship: mutually_spatially_disjoint_with UBERON:0002996 {source="ABA"} ! nucleus of optic tract relationship: mutually_spatially_disjoint_with UBERON:0006848 {source="ABA"} ! posterior pretectal nucleus -relationship: only_in_taxon NCBITaxon:32524 ! Amniota +relationship: only_in_taxon NCBITaxon:32523 ! Tetrapoda relationship: part_of UBERON:0001944 ! pretectal region relationship: present_in_taxon NCBITaxon:8293 {source="ISBN:0471888893"} ! Caudata relationship: present_in_taxon NCBITaxon:9347 {source="ISBN:0471888893"} ! Eutheria From c0a1b372fb0dc27436e87934d6969c11e67c244a Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 20:13:58 +0100 Subject: [PATCH 21/30] Unsat fix: Remove link between 'artrhopod tibia' and 'insect leg'. An arthropod structure quite obviously cannot be part of an insect-specific structure, so we remove that link. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 528b2eac86..f70a090845 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -67661,7 +67661,6 @@ xref: TADS:0000281 xref: Wikipedia:Arthropod_leg is_a: UBERON:0000475 ! organism subdivision relationship: only_in_taxon NCBITaxon:6656 ! Arthropoda -relationship: part_of UBERON:0005895 ! insect leg property_value: editor_note "this term should be ceded to the arthropod anatomy ontology." xsd:string {source="3"} property_value: taxon_notes "homology of leg segments between groups are difficult to prove and are the source of much argument. Some authors posit up to eleven segments per leg for the most recent common ancestor of extant arthropods, but modern arthropods have eight or fewer." xsd:string From 844947650f9765151193e8a5b945cd24b464fd04 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 22:07:56 +0100 Subject: [PATCH 22/30] Unsat fix: Remove link between 'cranium' and 'skull'. The 'cranium' exists throughout all craniates, so it should not be said to be part of the 'skull', which only exists in jawed vertebrates. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index f70a090845..912aa96761 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -67604,7 +67604,6 @@ xref: VHOG:0000334 xref: Wikipedia:Cranium_(anatomy) is_a: UBERON:0000075 {source="FMA-inferred"} ! subdivision of skeletal system relationship: mutually_spatially_disjoint_with UBERON:0003278 ! skeleton of lower jaw -relationship: part_of UBERON:0003129 ! skull relationship: present_in_taxon NCBITaxon:7762 ! Myxinidae property_value: external_ontology_notes "the inclusion of the FMA class here is probably not quite correct, as this class includes as parts sutures, whereas this is not part of the bones of the cranium" xsd:string {external_ontology="FMA"} property_value: has_relational_adjective "cranial" xsd:string From adb2596062572b09bd5998f95b241dbfe3ddd0a3 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 22:09:45 +0100 Subject: [PATCH 23/30] Unsat fix: Remove the link between 'nasal skeleton' and 'facial skeleton'. The nose exists throughout vertebrates, but making the 'nasal skeleton' part of the 'facial skeleton' makes it dependent of the 'skull', which is specific to jawed vertebrates. So we break that link. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 912aa96761..14831c1b33 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -116655,7 +116655,6 @@ intersection_of: UBERON:0010912 ! subdivision of skeleton intersection_of: skeleton_of UBERON:0000004 ! nose relationship: part_of UBERON:0000004 {source="FMA"} ! nose relationship: part_of UBERON:0003113 {notes="facial series", source="Kardong-abduced"} ! dermatocranium -relationship: part_of UBERON:0011156 ! facial skeleton [Term] id: UBERON:0006815 From 0fc2148116de01f43ae8ba1f601b0cdfa5366522 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 26 Oct 2023 22:12:50 +0100 Subject: [PATCH 24/30] Unsat fix: Remove the link between 'mouth' and 'head'. Homology notes on 'mouth' suggests the mouth evolved before the head and is therefore present in taxa where the head is not, so 'mouth' should not be dependent on 'head'. --- src/ontology/uberon-edit.obo | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 14831c1b33..dd863d3b2f 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -3659,7 +3659,6 @@ intersection_of: UBERON:0004921 ! subdivision of digestive tract intersection_of: proximalmost_part_of UBERON:0001555 ! digestive tract relationship: develops_from UBERON:0035804 ! future mouth relationship: only_in_taxon NCBITaxon:6072 ! Eumetazoa -relationship: part_of UBERON:0000033 ! head property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/0/06/Mouth_illustration-Otis_Archives.jpg" xsd:anyURI property_value: development_notes "some AOs place this as developing from the stomodeum but we weaken this to developmental contribution, as the mouth includes non-ectodermal derivatives" xsd:string property_value: external_definition "Cavity in which food is initially ingested and generally contains teeth, tongue and glands.[AAO]" xsd:string {date_retrieved="2012-06-20", external_class="AAO:0010355", ontology="AAO", source="AAO:BJB"} From 21fc13fbaa3484e34cd5e25c0efe2e06932ad269 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Mon, 30 Oct 2023 15:16:56 +0000 Subject: [PATCH 25/30] Import both taxslim.owl and taxslim-disjoint-over-in-taxon.owl. The taxslim-disjoint-over-in-taxon.owl subset of NCBITaxon contains *only* the disjointness axioms and nothing else, so we cannot import just that subset. We need to import both the "normal" taxslim.owl subset and the "disjoints" subset. --- src/ontology/Makefile | 10 +++++++++- .../imports/ncbitaxondisjoints_terms.txt | 1 + src/ontology/uberon-odk.yaml | 2 ++ src/ontology/uberon.Makefile | 18 +++++++++--------- 4 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 src/ontology/imports/ncbitaxondisjoints_terms.txt diff --git a/src/ontology/Makefile b/src/ontology/Makefile index 1250db91be..2e82bc90c2 100644 --- a/src/ontology/Makefile +++ b/src/ontology/Makefile @@ -114,7 +114,7 @@ all_main: $(MAIN_FILES) # ---------------------------------------- -IMPORTS = pr cl go envo ro bspo chebi pato bfo ncbitaxon nbo orcidio omo +IMPORTS = pr cl go envo ro bspo chebi pato bfo ncbitaxon ncbitaxondisjoints nbo orcidio omo IMPORT_ROOTS = $(IMPORTDIR)/merged_import IMPORT_OWL_FILES = $(foreach n,$(IMPORT_ROOTS), $(n).owl) @@ -492,6 +492,14 @@ mirror-bfo: | $(TMPDIR) .PHONY: mirror-ncbitaxon .PRECIOUS: $(MIRRORDIR)/ncbitaxon.owl mirror-ncbitaxon: | $(TMPDIR) + if [ $(MIR) = true ] && [ $(IMP) = true ]; then $(ROBOT) convert -I http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl -o $@.tmp.owl &&\ + mv $@.tmp.owl $(TMPDIR)/$@.owl; fi + + +## ONTOLOGY: ncbitaxondisjoints +.PHONY: mirror-ncbitaxondisjoints +.PRECIOUS: $(MIRRORDIR)/ncbitaxondisjoints.owl +mirror-ncbitaxondisjoints: | $(TMPDIR) if [ $(MIR) = true ] && [ $(IMP) = true ]; then $(ROBOT) convert -I http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim-disjoint-over-in-taxon.owl -o $@.tmp.owl &&\ mv $@.tmp.owl $(TMPDIR)/$@.owl; fi diff --git a/src/ontology/imports/ncbitaxondisjoints_terms.txt b/src/ontology/imports/ncbitaxondisjoints_terms.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/src/ontology/imports/ncbitaxondisjoints_terms.txt @@ -0,0 +1 @@ + diff --git a/src/ontology/uberon-odk.yaml b/src/ontology/uberon-odk.yaml index 2e1989246b..335c451189 100644 --- a/src/ontology/uberon-odk.yaml +++ b/src/ontology/uberon-odk.yaml @@ -63,6 +63,8 @@ import_group: use_base: TRUE - id: bfo - id: ncbitaxon + mirror_from: http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl + - id: ncbitaxondisjoints mirror_from: http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim-disjoint-over-in-taxon.owl - id: nbo use_base: TRUE diff --git a/src/ontology/uberon.Makefile b/src/ontology/uberon.Makefile index 2d01e275b8..401f75c27d 100644 --- a/src/ontology/uberon.Makefile +++ b/src/ontology/uberon.Makefile @@ -638,20 +638,20 @@ $(TMPDIR)/external-disjoints.owl: components/external-disjoints.obo .PRECIOUS: $(TMPDIR)/external-disjoints.owl # All the checks below need the taxslim-disjoint-over-in-taxon.owl, -# which should have been downloaded into mirror/ncbitaxon.owl by the -# standard ODK import pipeline. So ideally, all the checks below should -# just have to depend on mirror/ncbitaxon.owl. But the QC checks are run -# under MIR=false IMP=false, so while the rule would be invoked by Make -# it would not result in the mirror being downloaded if it is not -# already available. +# which should have been downloaded into mirror/ncbitaxondisjoints.owl +# by the standard ODK import pipeline. So ideally, all the checks below +# should just have to depend on mirror/ncbitaxondisjoints.owl. But the +# QC checks are run under MIR=false IMP=false, so while the rule would +# be invoked by Make it would not result in the mirror being downloaded +# if it is not already available. # So instead, we make the checks depend on another file, and here we # 1. force the download of the mirror if it is not already there; # 2. create a link to that mirror. $(TMPDIR)/taxslim-disjoint-over-in-taxon.owl: - if [ ! -f $(MIRRORDIR)/ncbitaxon.owl ]; then \ - $(MAKE) $(MIRRORDIR)/ncbitaxon.owl MIR=true IMP=true ; \ + if [ ! -f $(MIRRORDIR)/ncbitaxondisjoints.owl ]; then \ + $(MAKE) $(MIRRORDIR)/ncbitaxondisjoints.owl MIR=true IMP=true ; \ fi && \ - ln -f -s ../$(MIRRORDIR)/ncbitaxon.owl $@ + ln -f -s ../$(MIRRORDIR)/ncbitaxondisjoints.owl $@ # We create a merged ontology consisting of # (1) Uberon itself; From dc3aa6a28753639eb2b3efe9e433c02ede6c628e Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Mon, 30 Oct 2023 20:55:56 +0000 Subject: [PATCH 26/30] Re-generate the AEO bridge. We removed the offending mapping between UBERON:0036215 and AEO:0000154, but we must also re-regenerate the AEO bridge for the change to take effect; otherwise the mapping still causes the QC check to fail since the bridges are not automatically re-regenerated as part of the QC pipeline. --- src/ontology/bridge/uberon-bridge-to-aeo.obo | 7 +------ src/ontology/bridge/uberon-bridge-to-aeo.owl | 10 +--------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/src/ontology/bridge/uberon-bridge-to-aeo.obo b/src/ontology/bridge/uberon-bridge-to-aeo.obo index 49d8262236..38256f5e73 100644 --- a/src/ontology/bridge/uberon-bridge-to-aeo.obo +++ b/src/ontology/bridge/uberon-bridge-to-aeo.obo @@ -1,5 +1,5 @@ ontology: uberon/bridge/uberon-bridge-to-aeo -data-version: 2023-10-27 +data-version: 2023-10-30 property_value: seeAlso "http://purl.obolibrary.org/obo/uberon/references/reference_0000026" xsd:anyURI [Term] @@ -697,11 +697,6 @@ id: AEO:0001010 ! property_value: IAO:0000589 "differentiating neuroepithelium (AEO)" xsd:string equivalent_to: UBERON:0034707 ! differentiating neuroepithelium -[Term] -id: AEO:0000154 ! -property_value: IAO:0000589 "anatomical surface region (AEO)" xsd:string -equivalent_to: UBERON:0036215 ! anatomical surface region - [Typedef] id: part_of xref: BFO:0000050 diff --git a/src/ontology/bridge/uberon-bridge-to-aeo.owl b/src/ontology/bridge/uberon-bridge-to-aeo.owl index 36aab40ff9..d0359e8fb8 100644 --- a/src/ontology/bridge/uberon-bridge-to-aeo.owl +++ b/src/ontology/bridge/uberon-bridge-to-aeo.owl @@ -13,7 +13,7 @@ xmlns:terms="http://purl.org/dc/terms/" xmlns:oboInOwl="http://www.geneontology.org/formats/oboInOwl#"> - + http://purl.obolibrary.org/obo/uberon/references/reference_0000026 @@ -1118,8 +1118,6 @@ - - anatomical surface region (AEO) integumental system (AEO) AEO:0000154 @@ -2531,12 +2529,6 @@ - - - - - - From a9b6d7e498b1d30de699af5d21e38296945c8d33 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Thu, 2 Nov 2023 18:19:37 +0000 Subject: [PATCH 27/30] Post a comment explaining the TC violations. If the online QC check fails, check if the failure is due to violations of the taxon constraints and if it is, post a comment to the PR with the reasoner's explanations for the violations. --- .github/workflows/qc.yml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/.github/workflows/qc.yml b/.github/workflows/qc.yml index 257dad319d..af0237a0e1 100644 --- a/.github/workflows/qc.yml +++ b/.github/workflows/qc.yml @@ -27,10 +27,35 @@ jobs: - uses: actions/checkout@v2 - name: Run ontology QC checks + id: check + continue-on-error: true env: DEFAULT_BRANCH: master ROBOT_JAVA_ARGS: -Xmx6G run: cd src/ontology && mkdir -p tmp reports mirror && make ROBOT_ENV='ROBOT_JAVA_ARGS=-Xmx6G' GH_ACTION=true BRI=false MIR=false IMP=false test > TESTLOG.log + + - name: Reason over taxon constraints + id: explaintc + continue-on-error: true + if: steps.check.outcome == 'failure' + run: | + if [ -s src/ontology/reports/taxon-constraint-check.txt ]; then + robot explain -i src/ontology/tmp/uberon-edit-plus-tax-equivs.owl -M unsatisfiability -u all -r ELK -e taxon-unsats.md + echo "
\nThis PR violates some taxon constraints. Here is what the reasoner has to say:\n" > comment.md + cat taxon-unsats.md >> comment.md + echo "
" >> comment.md + exit 1 + fi + - name: Post explanation for taxon constraint violations + if: steps.explaintc.outcome == 'failure' + uses: NejcZdovc/comment-pr@v2 + with: + github_token: ${{secrets.GITHUB_TOKEN}} + file: "../../comment.md" + identifier: "TAXON_CONSTRAINTS_REASONING" + - name: Last rows of QC report - if: ${{ failure() }} - run: tail -20 src/ontology/TESTLOG.log \ No newline at end of file + if: steps.check.outcome == 'failure' + run: | + tail -20 src/ontology/TESTLOG.log + exit 1 From 49501ee3a2c33dd26a26ac4768275124bcf45a45 Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Wed, 8 Nov 2023 19:15:53 +0000 Subject: [PATCH 28/30] Forcefully fix externally caused TC violations. Remove the mapping between UBERON:0000435 and DMBA:16271 from the DMBA bridge. Remove from the hra_subset component the assertion that UBERON:8440041 is present_in_taxon some NCBITaxon:9606. The mapping and the assertion are bogus and violate the taxon constraints. They need to be fixed upstream (both the DMBA bridge and the HRA subset are maintained elsewhere), but until that happens we remove them from our local copies. --- src/ontology/bridge/uberon-bridge-to-dmba.obo | 7 ----- src/ontology/bridge/uberon-bridge-to-dmba.owl | 31 ------------------- src/ontology/components/hra_subset.owl | 9 ------ 3 files changed, 47 deletions(-) diff --git a/src/ontology/bridge/uberon-bridge-to-dmba.obo b/src/ontology/bridge/uberon-bridge-to-dmba.obo index a6515a46dd..ebbfaf7dfd 100644 --- a/src/ontology/bridge/uberon-bridge-to-dmba.obo +++ b/src/ontology/bridge/uberon-bridge-to-dmba.obo @@ -1319,13 +1319,6 @@ intersection_of: BFO:0000050 NCBITaxon:10090 {name="anterior nucleus of hypothal property_value: IAO:0000589 "posterior part of anterior hypothalamic nucleus" xsd:string property_value: status "Verified" xsd:string {source="https://ror.org/03cpe7c52"} -[Term] -id: DMBA:16271 -intersection_of: UBERON:0000435 {name="lateral tuberal nucleus"} -intersection_of: BFO:0000050 NCBITaxon:10090 {name="lateral tuberal nucleus"} -property_value: IAO:0000589 "lateral tuberal nucleus" xsd:string -property_value: status "Verified" xsd:string {source="https://ror.org/03cpe7c52"} - [Term] id: DMBA:16308 intersection_of: UBERON:0001894 {name="diencephalon"} diff --git a/src/ontology/bridge/uberon-bridge-to-dmba.owl b/src/ontology/bridge/uberon-bridge-to-dmba.owl index 6eca213c5d..efc161812b 100644 --- a/src/ontology/bridge/uberon-bridge-to-dmba.owl +++ b/src/ontology/bridge/uberon-bridge-to-dmba.owl @@ -5723,37 +5723,6 @@ - - - - - lateral tuberal nucleus - Verified - - - - - - - - - - - - - - - lateral tuberal nucleus - - - - - Verified - https://ror.org/03cpe7c52 - - - - diff --git a/src/ontology/components/hra_subset.owl b/src/ontology/components/hra_subset.owl index 1506385305..cc1fd41124 100644 --- a/src/ontology/components/hra_subset.owl +++ b/src/ontology/components/hra_subset.owl @@ -14131,15 +14131,6 @@ - - - - - - - - - From 44421ae34655fbbbf561348ade5eb406a35e676b Mon Sep 17 00:00:00 2001 From: Damien Goutte-Gattat Date: Wed, 8 Nov 2023 22:16:55 +0000 Subject: [PATCH 29/30] Do not update the HRA subset component upon MIR=false. When MIR is set to false, we should not attempt to update the `components/hra_subset.owl` file. --- src/ontology/uberon.Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ontology/uberon.Makefile b/src/ontology/uberon.Makefile index 401f75c27d..24cfc7b863 100644 --- a/src/ontology/uberon.Makefile +++ b/src/ontology/uberon.Makefile @@ -1328,8 +1328,10 @@ HRA_SUBSET_URL="https://raw.githubusercontent.com/hubmapconsortium/ccf-validatio $(TMPDIR)/hra_subset.owl: wget $(HRA_SUBSET_URL) -O $@ +ifeq ($(strip $(MIR)),true) $(COMPONENTSDIR)/hra_subset.owl: $(TMPDIR)/hra_subset.owl $(ROBOT) merge -i $< annotate --ontology-iri $(ONTBASE)/$@ --output $@ +endif 3D_IMAGES_COMP_URL="https://raw.githubusercontent.com/hubmapconsortium/ccf-validation-tools/master/owl/hra_uberon_3d_images.owl" $(TMPDIR)/hra_depiction_3d_images.owl: From c1ca725a989f34188d65ec056a8d72cf328bd917 Mon Sep 17 00:00:00 2001 From: Anita Caron Date: Thu, 9 Nov 2023 10:26:58 +0000 Subject: [PATCH 30/30] update hra_subset component --- src/ontology/components/hra_subset.owl | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/ontology/components/hra_subset.owl b/src/ontology/components/hra_subset.owl index cc1fd41124..45ca962e60 100644 --- a/src/ontology/components/hra_subset.owl +++ b/src/ontology/components/hra_subset.owl @@ -14200,6 +14200,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +