From f73c536e70b41e43fc2c71e2e81b7d1ee668feb7 Mon Sep 17 00:00:00 2001 From: Dragon-AI Agent Date: Fri, 6 Jun 2025 06:58:48 +0000 Subject: [PATCH 1/2] Relax all cardinality restrictions in UBERON ontology MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed 60 cardinality restrictions from intersection_of and relationship statements - Types removed: exact cardinality (49), min cardinality (7), min_cardinality underscore variant (2), exactly constraints (2) - Affects anatomical connections, organ membership, structural composition, and spatial adjacency relationships - Added systematic script src/scripts/relax-cardinality-restrictions.pl for future use - Reasoners will now process these axioms instead of ignoring them due to cardinality constraints Addresses issue #3551 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/ontology/uberon-edit.obo | 120 +++++++------- src/scripts/relax-cardinality-restrictions.pl | 148 ++++++++++++++++++ 2 files changed, 208 insertions(+), 60 deletions(-) create mode 100755 src/scripts/relax-cardinality-restrictions.pl diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index e4a1ef5284..2f88b435bc 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -1161,7 +1161,7 @@ xref: MA:0002907 xref: SCTID:258665002 is_a: UBERON:0001305 ! ovarian follicle intersection_of: UBERON:0001305 ! ovarian follicle -intersection_of: has_component UBERON:0005170 {cardinality="1"} ! granulosa cell layer +intersection_of: has_component UBERON:0005170 ! granulosa cell layer relationship: develops_from UBERON:0003981 ! primordial ovarian follicle [Term] @@ -1183,7 +1183,7 @@ xref: FMA:18637 xref: MA:0002908 is_a: UBERON:0001305 ! ovarian follicle intersection_of: UBERON:0001305 ! ovarian follicle -intersection_of: has_component UBERON:0005170 {minCardinality="2"} ! granulosa cell layer +intersection_of: has_component UBERON:0005170 ! granulosa cell layer intersection_of: has_potential_to_develop_into UBERON:0000037 ! tertiary ovarian follicle relationship: develops_from UBERON:0000035 ! primary ovarian follicle property_value: editor_note "consider adopting distinction in MA" xsd:string @@ -1214,7 +1214,7 @@ xref: SCTID:362261008 xref: UMLS:C0600225 {source="ncithesaurus:Graafian_Follicle"} is_a: UBERON:0001305 ! ovarian follicle intersection_of: UBERON:0001305 ! ovarian follicle -intersection_of: has_component UBERON:0005170 {minCardinality="2"} ! granulosa cell layer +intersection_of: has_component UBERON:0005170 ! granulosa cell layer intersection_of: has_part UBERON:0000039 ! follicular antrum relationship: develops_from UBERON:0000036 ! secondary ovarian follicle property_value: depiction "https://upload.wikimedia.org/wikipedia/commons/e/e6/Primary_follicle-4.JPG" xsd:anyURI @@ -1525,7 +1525,7 @@ subset: grouping_class subset: uberon_slim xref: Wikipedia:Eye#Multiple_lenses is_a: UBERON:0000047 ! simple eye -relationship: has_component UBERON:0005389 {min_cardinality="2"} ! transparent eye structure +relationship: has_component UBERON:0005389 ! transparent eye structure relationship: never_in_taxon NCBITaxon:7742 ! Vertebrata [Term] @@ -3722,8 +3722,8 @@ xref: FMA:68877 intersection_of: UBERON:0034925 ! anatomical collection intersection_of: has_member UBERON:0002167 ! right lung intersection_of: has_member UBERON:0002168 ! left lung -relationship: has_member UBERON:0002167 {cardinality="1"} ! right lung -relationship: has_member UBERON:0002168 {cardinality="1"} ! left lung +relationship: has_member UBERON:0002167 ! right lung +relationship: has_member UBERON:0002168 ! left lung relationship: located_in UBERON:0002224 ! thoracic cavity relationship: part_of UBERON:0001558 {source="FMA-abduced"} ! lower respiratory tract @@ -22526,7 +22526,7 @@ xref: SCTID:244512000 xref: UMLS:C1182940 {source="ncithesaurus:Vertebral_Joint"} is_a: UBERON:0002216 {source="FMA"} ! symphysis intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0001075 {cardinality="2"} ! bony vertebral centrum +intersection_of: connects UBERON:0001075 ! bony vertebral centrum relationship: connects UBERON:0001075 {notes="connects successive pairs of centra"} ! bony vertebral centrum relationship: part_of UBERON:0001130 {source="FMA"} ! vertebral column property_value: external_ontology_notes "FMA has 'intervertebral joint' as a GAT, and has two distinct classes 'intervertebral symphysis' and 'intervertebral syndesmosis', but note that the latter do not connect the centra" xsd:string {external_ontology="FMA"} @@ -38090,7 +38090,7 @@ xref: Wikipedia:Interchondral_articulations is_a: UBERON:0002001 {source="MA"} ! joint of rib is_a: UBERON:0002210 {source="FMA"} ! syndesmosis relationship: connects UBERON:0002228 {notes="connects two adjacent ribs"} ! rib -relationship: connects UBERON:0002228 {cardinality="2"} ! rib +relationship: connects UBERON:0002228 ! rib property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/c/cc/Gray315.png" xsd:anyURI property_value: editor_note "Consider creating logical definition after obo2owl cardinality tests" xsd:string property_value: external_ontology_notes "FMA has both synovial and syndesmosis subtypes - consider adding separate class for FMA:7955 Synovial interchondral joint" xsd:string {external_ontology="FMA"} @@ -41368,7 +41368,7 @@ synonym: "set of nares" RELATED [FMA:72005] xref: FMA:72005 xref: Wikipedia:Nares intersection_of: UBERON:0034925 ! anatomical collection -intersection_of: has_member UBERON:0000003 {cardinality="2"} ! naris +intersection_of: has_member UBERON:0000003 ! naris relationship: has_part UBERON:0000003 ! naris relationship: never_in_taxon NCBITaxon:7745 {source="http://webs.lander.edu/rsfox/invertebrates/ammocoetes.html"} ! Petromyzontiformes relationship: part_of UBERON:0000004 ! nose @@ -52432,7 +52432,7 @@ xref: SCTID:136854008 xref: Wikipedia:Frontal_suture is_a: UBERON:0003685 ! cranial suture intersection_of: UBERON:0003685 ! cranial suture -intersection_of: connects UBERON:0000209 {cardinality="2"} ! tetrapod frontal bone +intersection_of: connects UBERON:0000209 ! tetrapod frontal bone relationship: connects UBERON:0000209 {notes="two halves of the frontal bone"} ! tetrapod frontal bone property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/1/17/Gray134.png" xsd:anyURI property_value: depiction "https://upload.wikimedia.org/wikipedia/commons/d/d1/Frontal_suture.png" xsd:anyURI @@ -52475,7 +52475,7 @@ xref: SCTID:244511007 xref: Wikipedia:Sagittal_suture is_a: UBERON:0003685 ! cranial suture intersection_of: UBERON:0003685 ! cranial suture -intersection_of: connects UBERON:0000210 {cardinality="2"} ! tetrapod parietal bone +intersection_of: connects UBERON:0000210 ! tetrapod parietal bone relationship: connects UBERON:0000210 {notes="both parietals"} ! tetrapod parietal bone relationship: part_of UBERON:0004339 ! vault of skull property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/2/24/Kort-lang-skalle.gif" xsd:anyURI @@ -81918,7 +81918,7 @@ xref: Wikipedia:Foramen intersection_of: UBERON:0010000 ! multicellular anatomical structure intersection_of: conduit_for UBERON:0000061 ! anatomical structure intersection_of: has_part UBERON:0013686 ! anatomical conduit space -relationship: connects UBERON:0000464 {cardinality="2"} ! anatomical space +relationship: connects UBERON:0000464 ! anatomical space relationship: present_in_taxon NCBITaxon:33090 ! Viridiplantae relationship: present_in_taxon NCBITaxon:33208 ! Metazoa relationship: present_in_taxon NCBITaxon:4751 ! Fungi @@ -107643,7 +107643,7 @@ xref: EMAPA:32618 xref: MA:0003012 xref: XAO:0004316 is_a: UBERON:0010858 ! inter limb-segment region -relationship: connects UBERON:0002544 {cardinality="2"} ! digit +relationship: connects UBERON:0002544 ! digit relationship: part_of UBERON:0002470 ! autopod region property_value: external_ontology_notes "MA and EMAPA mapping from TH" xsd:string {external_ontology="MA"} @@ -107660,7 +107660,7 @@ xref: MA:0000627 xref: VHOG:0000991 intersection_of: UBERON:0006012 ! interdigital region intersection_of: part_of UBERON:0002398 ! manus -relationship: adjacent_to UBERON:0002389 {cardinality="2"} ! manual digit +relationship: adjacent_to UBERON:0002389 ! manual digit [Term] id: UBERON:0006014 @@ -107675,7 +107675,7 @@ xref: MA:0000651 xref: VHOG:0000992 intersection_of: UBERON:0006012 ! interdigital region intersection_of: part_of UBERON:0002387 ! pes -relationship: adjacent_to UBERON:0001466 {cardinality="2"} ! pedal digit +relationship: adjacent_to UBERON:0001466 ! pedal digit [Term] id: UBERON:0006015 @@ -111551,7 +111551,7 @@ xref: NCIT:C52851 xref: UMLS:C1707451 {source="ncithesaurus:Communicating_Artery"} is_a: UBERON:0001637 ! artery intersection_of: UBERON:0001637 ! artery -intersection_of: connects UBERON:0001637 {cardinality="2"} ! artery +intersection_of: connects UBERON:0001637 ! artery [Term] id: UBERON:0006349 @@ -113713,7 +113713,7 @@ xref: Wikipedia:Symphysis_menti xref: ZFA:0005488 is_a: UBERON:0002216 {source="FMA"} ! symphysis intersection_of: UBERON:0002213 ! cartilaginous joint -intersection_of: connects UBERON:0004742 {cardinality="2"} ! dentary +intersection_of: connects UBERON:0004742 ! dentary relationship: connects UBERON:0004742 {notes="connects adjacent mandibles"} ! dentary relationship: part_of UBERON:0001710 ! lower jaw region property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/6/64/Gray176.png" xsd:anyURI @@ -114425,7 +114425,7 @@ xref: galen:InterphalangealJoint xref: NCIT:C101527 is_a: UBERON:0002217 ! synovial joint intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0003221 {cardinality="2"} ! phalanx +intersection_of: connects UBERON:0003221 ! phalanx relationship: connects UBERON:0003221 {notes="two phalanges in series"} ! phalanx relationship: part_of UBERON:0002544 {source="cjm"} ! digit property_value: external_definition "Hinge joints between the phalanges of the hand or foot[ncithesaurus:Interphalangeal_Joint]." xsd:string {source="ncithesaurus:Interphalangeal_Joint"} @@ -122270,7 +122270,7 @@ synonym: "junction" BROAD [] xref: FMA:5898 xref: SCTID:91833003 is_a: UBERON:0000061 {source="FMA"} ! anatomical structure -relationship: connects UBERON:0000061 {minCardinality="2"} ! anatomical structure +relationship: connects UBERON:0000061 ! anatomical structure relationship: present_in_taxon NCBITaxon:33090 ! Viridiplantae relationship: present_in_taxon NCBITaxon:33208 ! Metazoa relationship: present_in_taxon NCBITaxon:4751 ! Fungi @@ -122718,7 +122718,7 @@ xref: Wikipedia:Interphalangeal_articulations_of_the_foot intersection_of: UBERON:0006658 ! interphalangeal joint intersection_of: part_of UBERON:0001466 ! pedal digit relationship: connects UBERON:0001449 {notes="two in series"} ! phalanx of pes -relationship: connects UBERON:0001449 {cardinality="2"} ! phalanx of pes +relationship: connects UBERON:0001449 ! phalanx of pes [Term] id: UBERON:0007722 @@ -122742,7 +122742,7 @@ xref: Wikipedia:Interphalangeal_articulations_of_the_hand intersection_of: UBERON:0006658 ! interphalangeal joint intersection_of: part_of UBERON:0002389 ! manual digit relationship: connects UBERON:0001436 {notes="two in series"} ! phalanx of manus -relationship: connects UBERON:0001436 {cardinality="2"} ! phalanx of manus +relationship: connects UBERON:0001436 ! phalanx of manus property_value: editor_note "consider renaming: 'finger' is ambiguous as the term in some usages excludes the thumb (we include it)" xsd:string [Term] @@ -122762,7 +122762,7 @@ xref: NCIT:C102306 xref: SCTID:182192008 intersection_of: UBERON:0007722 ! interphalangeal joint of manus intersection_of: part_of UBERON:0001463 ! manual digit 1 -relationship: connects UBERON:0003620 {cardinality="2"} ! manual digit 1 phalanx +relationship: connects UBERON:0003620 ! manual digit 1 phalanx property_value: taxon_notes "in humans, this connects proximal and distal phalanges of the thumb, so there is only a single inter-phalangeal joint - i.e. there is no distinct proximal and distal joints" xsd:string [Term] @@ -122783,7 +122783,7 @@ xref: FMA:35353 xref: SCTID:363671008 intersection_of: UBERON:0007721 ! interphalangeal joint of pes intersection_of: part_of UBERON:0003631 ! pedal digit 1 -relationship: connects UBERON:0003640 {cardinality="2"} ! pedal digit 1 phalanx +relationship: connects UBERON:0003640 ! pedal digit 1 phalanx [Term] id: UBERON:0007725 @@ -122796,7 +122796,7 @@ xref: EMAPA:26448 xref: FMA:35356 intersection_of: UBERON:0007721 ! interphalangeal joint of pes intersection_of: part_of UBERON:0003632 ! pedal digit 2 -relationship: connects UBERON:0003641 {cardinality="2"} ! pedal digit 2 phalanx +relationship: connects UBERON:0003641 ! pedal digit 2 phalanx [Term] id: UBERON:0007726 @@ -122809,7 +122809,7 @@ xref: EMAPA:26454 xref: FMA:35359 intersection_of: UBERON:0007721 ! interphalangeal joint of pes intersection_of: part_of UBERON:0003633 ! pedal digit 3 -relationship: connects UBERON:0003642 {cardinality="2"} ! pedal digit 3 phalanx +relationship: connects UBERON:0003642 ! pedal digit 3 phalanx [Term] id: UBERON:0007727 @@ -122822,7 +122822,7 @@ xref: EMAPA:26466 xref: FMA:35362 intersection_of: UBERON:0007721 ! interphalangeal joint of pes intersection_of: part_of UBERON:0003634 ! pedal digit 4 -relationship: connects UBERON:0003862 {cardinality="2"} ! pedal digit 4 phalanx +relationship: connects UBERON:0003862 ! pedal digit 4 phalanx [Term] id: UBERON:0007728 @@ -122836,7 +122836,7 @@ xref: EMAPA:26478 xref: FMA:35365 intersection_of: UBERON:0007721 ! interphalangeal joint of pes intersection_of: part_of UBERON:0003635 ! pedal digit 5 -relationship: connects UBERON:0003863 {cardinality="2"} ! pedal digit 5 phalanx +relationship: connects UBERON:0003863 ! pedal digit 5 phalanx [Term] id: UBERON:0007729 @@ -122850,7 +122850,7 @@ xref: EMAPA:25061 xref: FMA:35397 intersection_of: UBERON:0007722 ! interphalangeal joint of manus intersection_of: part_of UBERON:0003622 ! manual digit 2 -relationship: connects UBERON:0003641 {cardinality="2"} ! pedal digit 2 phalanx +relationship: connects UBERON:0003641 ! pedal digit 2 phalanx relationship: part_of UBERON:0003622 {source="EMAPA"} ! manual digit 2 [Term] @@ -122865,7 +122865,7 @@ xref: EMAPA:25064 xref: FMA:35400 intersection_of: UBERON:0007722 ! interphalangeal joint of manus intersection_of: part_of UBERON:0003623 ! manual digit 3 -relationship: connects UBERON:0003642 {cardinality="2"} ! pedal digit 3 phalanx +relationship: connects UBERON:0003642 ! pedal digit 3 phalanx [Term] id: UBERON:0007731 @@ -122879,7 +122879,7 @@ xref: EMAPA:25067 xref: FMA:35403 intersection_of: UBERON:0007722 ! interphalangeal joint of manus intersection_of: part_of UBERON:0003624 ! manual digit 4 -relationship: connects UBERON:0003862 {cardinality="2"} ! pedal digit 4 phalanx +relationship: connects UBERON:0003862 ! pedal digit 4 phalanx [Term] id: UBERON:0007732 @@ -122893,7 +122893,7 @@ xref: EMAPA:25070 xref: FMA:35407 intersection_of: UBERON:0007722 ! interphalangeal joint of manus intersection_of: part_of UBERON:0003625 ! manual digit 5 -relationship: connects UBERON:0003863 {cardinality="2"} ! pedal digit 5 phalanx +relationship: connects UBERON:0003863 ! pedal digit 5 phalanx [Term] id: UBERON:0007735 @@ -125656,7 +125656,7 @@ xref: UMLS:C1527245 {source="ncithesaurus:Tarsal_Joint"} xref: Wikipedia:Intertarsal_articulations is_a: UBERON:0002217 {source="FMA"} ! synovial joint intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0001447 {cardinality="2"} ! tarsal bone +intersection_of: connects UBERON:0001447 ! tarsal bone relationship: connects UBERON:0001447 {notes="two adjacent tarsals"} ! tarsal bone relationship: part_of UBERON:0004454 ! tarsal region property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/5/5f/Gray360.png" xsd:anyURI @@ -129238,7 +129238,7 @@ xref: SCTID:181772008 xref: UMLS:C0015641 {source="ncithesaurus:Fascia"} xref: Wikipedia:Fascia is_a: UBERON:0007846 {source="Wikipedia"} ! dense regular connective tissue -relationship: connects UBERON:0001630 {cardinality="2"} ! muscle organ +relationship: connects UBERON:0001630 ! muscle organ relationship: connects UBERON:0001630 {notes="fasciae connect muscles to other muscles"} ! muscle organ relationship: part_of UBERON:0002204 ! musculoskeletal system @@ -130619,7 +130619,7 @@ def: "Any suture between cranial and/or facial bones." [GO:0097094] synonym: "articulation of skull bones" RELATED [OBOL:automatic] synonym: "joint of the skull bones" EXACT [OBOL:automatic] intersection_of: UBERON:0002209 ! fibrous joint -intersection_of: connects UBERON:0003457 {minCardinality="2"} ! head bone +intersection_of: connects UBERON:0003457 ! head bone relationship: part_of UBERON:0010323 ! cranial skeletal system property_value: editor_note "we follow GO in dividing sutures into cranial and facial and making a grouping class, but this is not consistent with FMA" xsd:string @@ -130629,7 +130629,7 @@ name: facial suture def: "Any suture between facial bones." [GO:0097096] is_a: UBERON:0009198 ! craniofacial suture intersection_of: UBERON:0009198 ! craniofacial suture -intersection_of: connects UBERON:0003462 {minCardinality="2"} ! facial bone +intersection_of: connects UBERON:0003462 ! facial bone relationship: connects UBERON:0003462 {notes="between two adjacent facial bones"} ! facial bone relationship: part_of UBERON:0011156 ! facial skeleton @@ -130676,7 +130676,7 @@ xref: SCTID:368990004 xref: Wikipedia:Internasal_suture is_a: UBERON:0011160 ! nasal suture intersection_of: UBERON:0009199 ! facial suture -intersection_of: connects UBERON:0001681 {cardinality="2"} ! nasal bone +intersection_of: connects UBERON:0001681 ! nasal bone relationship: connects UBERON:0001681 {notes="between both nasal bones"} ! nasal bone [Term] @@ -141472,7 +141472,7 @@ name: inter limb-segment region comment: Examples - region between digits in a human embryo; segments of a bat's patagium synonym: "interlimb" RELATED [] is_a: UBERON:0034929 ! external soft tissue zone -relationship: connects UBERON:0002529 {cardinality="2"} ! limb segment +relationship: connects UBERON:0002529 ! limb segment [Term] id: UBERON:0010861 @@ -143421,7 +143421,7 @@ xref: SCTID:303065007 xref: Wikipedia:Intermetacarpal_articulations is_a: UBERON:0002217 {source="FMA"} ! synovial joint intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0002374 {cardinality="2"} ! metacarpal bone +intersection_of: connects UBERON:0002374 ! metacarpal bone relationship: connects UBERON:0002374 {notes="two adjacent metacarpals"} ! metacarpal bone relationship: part_of UBERON:0004453 ! metacarpus region @@ -143440,7 +143440,7 @@ xref: UMLS:C1262468 {source="ncithesaurus:Carpal_Joint"} xref: Wikipedia:Intercarpal_articulations is_a: UBERON:0002217 {source="FMA"} ! synovial joint intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0001435 {cardinality="2"} ! carpal bone +intersection_of: connects UBERON:0001435 ! carpal bone relationship: connects UBERON:0001435 {notes="two adjacent carpals"} ! carpal bone relationship: part_of UBERON:0004452 {source="FMA"} ! carpal region property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/3/37/Gray336.png" xsd:anyURI @@ -143454,7 +143454,7 @@ xref: SCTID:361868009 xref: Wikipedia:Intermetatarsal_articulations is_a: UBERON:0002217 {source="FMA"} ! synovial joint intersection_of: UBERON:0000982 ! skeletal joint -intersection_of: connects UBERON:0001448 {cardinality="2"} ! metatarsal bone +intersection_of: connects UBERON:0001448 ! metatarsal bone relationship: connects UBERON:0001448 {notes="two adjacent metatarsals"} ! metatarsal bone relationship: part_of UBERON:0000983 ! metatarsus region property_value: depiction "http://upload.wikimedia.org/wikipedia/commons/d/dc/Gray358.png" xsd:anyURI @@ -143475,7 +143475,7 @@ def: "A cartilage element that lies between two successive vertebral centra." [I xref: AAO:0000795 is_a: UBERON:0007844 ! cartilage element intersection_of: UBERON:0007844 ! cartilage element -intersection_of: adjacent_to UBERON:0001075 {cardinality="2"} ! bony vertebral centrum +intersection_of: adjacent_to UBERON:0001075 ! bony vertebral centrum relationship: adjacent_to UBERON:0001075 {notes="between two centra"} ! bony vertebral centrum relationship: part_of UBERON:0001468 {source="FMA", source="MA"} ! intervertebral joint property_value: external_definition "Block of cartilage, which usually ossifies, that lies between successive vertebral centra.[AAO]" xsd:string {date_retrieved="2012-06-20", external_class="AAO:0000795", ontology="AAO", source="AAO:Trueb_1973"} @@ -150207,7 +150207,7 @@ xref: SCTID:410003009 xref: Wikipedia:Diastema_(dentistry) is_a: UBERON:0000464 ! anatomical space relationship: adjacent_to UBERON:0001091 ! calcareous tooth -relationship: adjacent_to UBERON:0001091 {cardinality="2"} ! calcareous tooth +relationship: adjacent_to UBERON:0001091 ! calcareous tooth relationship: part_of UBERON:0001708 ! jaw skeleton relationship: part_of UBERON:0003672 ! dentition property_value: taxon_notes "Many species of mammals have diastemata as a normal feature, most commonly between the incisors and molars" xsd:string @@ -150442,7 +150442,7 @@ synonym: "intercuneiform joints" RELATED [Wikipedia:Intercuneiform_articulations xref: FMA:35213 xref: Wikipedia:Intercuneiform_articulations is_a: UBERON:0000982 ! skeletal joint -relationship: connects UBERON:0010721 {cardinality="2"} ! distal tarsal bone +relationship: connects UBERON:0010721 ! distal tarsal bone relationship: connects UBERON:0010721 ! distal tarsal bone property_value: terminology_notes "The term 'cuneocuboid articulation' is sometimes used to describe the joint between the cuboid and lateral cuneiform, but this term isn't recognized by Terminologia Anatomica" xsd:string {source="WP"} @@ -154735,7 +154735,7 @@ def: "A large pendulous organ consisting of two or more mammary glands enclosed xref: SCTID:27528008 xref: Wikipedia:Udder is_a: UBERON:0000481 ! multi-tissue structure -relationship: has_component UBERON:0001911 {minCardinality="2"} ! mammary gland +relationship: has_component UBERON:0001911 ! mammary gland relationship: has_component UBERON:0002030 {cardonality="1"} ! nipple relationship: has_part UBERON:0001911 ! mammary gland relationship: has_part UBERON:0002030 ! nipple @@ -154782,7 +154782,7 @@ def: "A hole with that connects the left and right aorta in animals of the order xref: Wikipedia:Foramen_of_Panizza is_a: UBERON:0000464 ! anatomical space relationship: connects UBERON:0000947 ! aorta -relationship: connects UBERON:0000947 {cardinality="2"} ! aorta +relationship: connects UBERON:0000947 ! aorta relationship: in_taxon NCBITaxon:8493 {source="Wikipedia"} ! Crocodylidae relationship: part_of UBERON:0000948 ! heart relationship: part_of UBERON:0004535 {source="Wikipedia"} ! cardiovascular system @@ -157531,7 +157531,7 @@ subset: common_anatomy synonym: "foramen space" NARROW [] xref: FMA:9338 is_a: UBERON:0000464 {source="FMA"} ! anatomical space -relationship: connects UBERON:0000464 {cardinality="2"} ! anatomical space +relationship: connects UBERON:0000464 ! anatomical space relationship: luminal_space_of UBERON:0004111 ! anatomical conduit relationship: present_in_taxon NCBITaxon:33090 ! Viridiplantae relationship: present_in_taxon NCBITaxon:33208 ! Metazoa @@ -161988,7 +161988,7 @@ subset: upper_level xref: CARO:0010002 is_a: UBERON:0000062 ! organ relationship: composed_primarily_of UBERON:0010001 ! cell cluster organ -relationship: has_component UBERON:0010001 {min_cardinality="2"} ! cell cluster organ +relationship: has_component UBERON:0010001 ! cell cluster organ [Term] id: UBERON:0014733 @@ -166630,7 +166630,7 @@ def: "An anatomical line that connects two successive vertebral pedicles. The le synonym: "inter-vertebral-pedicle line" EXACT [] synonym: "interpedicular distance" RELATED [HP:0008450] intersection_of: UBERON:0006800 ! anatomical line -intersection_of: connects UBERON:0001078 {cardinality="2"} ! pedicle of vertebra +intersection_of: connects UBERON:0001078 ! pedicle of vertebra relationship: connects UBERON:0001078 ! pedicle of vertebra relationship: part_of UBERON:0001130 ! vertebral column @@ -167404,7 +167404,7 @@ xref: FMA:52851 xref: FMA:57136 xref: SCTID:137561005 intersection_of: UBERON:0005913 ! zone of bone organ -intersection_of: connects UBERON:0011576 {cardinality="2"} ! supraorbital ridge +intersection_of: connects UBERON:0011576 ! supraorbital ridge relationship: connects UBERON:0011576 ! supraorbital ridge relationship: part_of UBERON:0000209 ! tetrapod frontal bone relationship: part_of UBERON:0034766 ! glabella region @@ -167420,7 +167420,7 @@ synonym: "midpalatal suture of skull" EXACT [FMA:52966] xref: FMA:52966 is_a: UBERON:0035127 ! suture of hard palate intersection_of: UBERON:0035127 ! suture of hard palate -intersection_of: connects UBERON:0001682 {cardinality="2"} ! palatine bone +intersection_of: connects UBERON:0001682 ! palatine bone [Term] id: UBERON:0016446 @@ -180909,7 +180909,7 @@ synonym: "intermaxillary suture of skull" EXACT [FMA:52963] xref: FMA:52963 is_a: UBERON:0009199 ! facial suture intersection_of: UBERON:0003685 ! cranial suture -intersection_of: connects UBERON:0002397 {cardinality="2"} ! maxilla +intersection_of: connects UBERON:0002397 ! maxilla relationship: part_of UBERON:0001709 ! upper jaw region [Term] @@ -180991,7 +180991,7 @@ subset: common_anatomy xref: CARO:0020000 is_a: UBERON:0000465 {source="CARO"} ! material anatomical entity relationship: composed_primarily_of UBERON:0000061 ! anatomical structure -relationship: has_component UBERON:0000061 {minCardinality="2"} ! anatomical structure +relationship: has_component UBERON:0000061 ! anatomical structure relationship: has_quality PATO:0010001 ! disconnected relationship: present_in_taxon NCBITaxon:33090 ! Viridiplantae relationship: present_in_taxon NCBITaxon:33208 ! Metazoa @@ -182326,7 +182326,7 @@ synonym: "scrotal sac" EXACT [FMA:18251] synonym: "testis comartment" EXACT [] xref: FMA:18251 is_a: UBERON:0000063 ! organ subunit -relationship: has_component UBERON:0000473 {cardinality="1"} ! testis +relationship: has_component UBERON:0000473 ! testis relationship: part_of UBERON:0001300 ! scrotum [Term] @@ -182433,7 +182433,7 @@ synonym: "interdental space, central incisors" EXACT [] synonym: "midline diastema" EXACT [] is_a: UBERON:0012111 ! diastema intersection_of: UBERON:0035119 ! diastema between incisors -intersection_of: adjacent_to UBERON:0018551 {cardinality="2"} ! incisor tooth 1 +intersection_of: adjacent_to UBERON:0018551 ! incisor tooth 1 relationship: intersects_midsagittal_plane_of UBERON:0001708 ! jaw skeleton [Term] @@ -182445,7 +182445,7 @@ synonym: "interdental space, upper central incisors" EXACT [] synonym: "midline maxillary diastema" EXACT [] intersection_of: UBERON:0035115 ! diastema between central incisors intersection_of: part_of UBERON:0001709 ! upper jaw region -relationship: adjacent_to UBERON:0018603 {cardinality="2"} ! upper central incisor tooth +relationship: adjacent_to UBERON:0018603 ! upper central incisor tooth relationship: intersects_midsagittal_plane_of UBERON:0003277 ! skeleton of upper jaw [Term] @@ -182457,7 +182457,7 @@ synonym: "interdental space, lower central incisors" EXACT [] synonym: "midline mandibular diastema" EXACT [] intersection_of: UBERON:0035115 ! diastema between central incisors intersection_of: part_of UBERON:0001710 ! lower jaw region -relationship: adjacent_to UBERON:0018601 {cardinality="2"} ! lower central incisor tooth +relationship: adjacent_to UBERON:0018601 ! lower central incisor tooth relationship: intersects_midsagittal_plane_of UBERON:0003278 ! skeleton of lower jaw [Term] @@ -182478,7 +182478,7 @@ synonym: "incisor diastema" EXACT [] synonym: "interdental space, incisors" EXACT [] is_a: UBERON:0012111 ! diastema intersection_of: UBERON:0012111 ! diastema -intersection_of: adjacent_to UBERON:0001098 {cardinality="2"} ! incisor tooth +intersection_of: adjacent_to UBERON:0001098 ! incisor tooth relationship: intersects_midsagittal_plane_of UBERON:0001708 ! jaw skeleton [Term] @@ -186812,8 +186812,8 @@ synonym: "crena interglutealis" EXACT OMO:0003011 [FMA:TA] synonym: "intergluteal crease" EXACT [FMA:20234] synonym: "natal cleft" EXACT [FMA:20234] xref: FMA:20234 -intersection_of: UBERON:0006800 {exactly="2"} ! anatomical line -intersection_of: adjacent_to UBERON:0013691 {exactly="2"} ! buttock +intersection_of: UBERON:0006800 ! anatomical line +intersection_of: adjacent_to UBERON:0013691 ! buttock relationship: adjacent_to UBERON:0013691 ! buttock relationship: part_of UBERON:0001137 ! dorsum relationship: part_of UBERON:0002355 ! pelvic region of trunk @@ -187485,7 +187485,7 @@ name: interdigital space def: "The space between the digits of the hand or foot." [NCIT:C106201] xref: NCIT:C106201 is_a: UBERON:0000464 ! anatomical space -relationship: adjacent_to UBERON:0002544 {cardinality="2"} ! digit +relationship: adjacent_to UBERON:0002544 ! digit [Term] id: UBERON:0036253 diff --git a/src/scripts/relax-cardinality-restrictions.pl b/src/scripts/relax-cardinality-restrictions.pl new file mode 100755 index 0000000000..4d0b841d5c --- /dev/null +++ b/src/scripts/relax-cardinality-restrictions.pl @@ -0,0 +1,148 @@ +#!/usr/bin/perl +# Script to relax all cardinality restrictions in OBO format +# Removes cardinality, minCardinality, min_cardinality, and exactly constraints +# from relationship statements + +use strict; +use warnings; + +sub relax_cardinality_restrictions { + my ($input_file, $output_file) = @_; + + open my $input_fh, '<', $input_file or die "Cannot open $input_file: $!"; + open my $output_fh, '>', $output_file or die "Cannot open $output_file: $!"; + + my $changes_made = 0; + my @removed_restrictions = (); + + while (my $line = <$input_fh>) { + chomp $line; + my $original_line = $line; + + # Handle various cardinality restriction patterns + # Pattern 1: min_cardinality="n" (underscore variant) - check this first + if ($line =~ s/\s*\{min_cardinality="(\d+)"\}// || + $line =~ s/\s*\{min_cardinality=(\d+)\}// || + $line =~ s/\s*min_cardinality="(\d+)"// || + $line =~ s/\s*min_cardinality=(\d+)//) { + + my $min_cardinality_value = $1; + push @removed_restrictions, { + type => 'min_cardinality_underscore', + value => $min_cardinality_value, + original => $original_line, + modified => $line + }; + $changes_made++; + } + + # Pattern 2: minCardinality="n" + elsif ($line =~ s/\s*\{minCardinality="(\d+)"\}// || + $line =~ s/\s*\{minCardinality=(\d+)\}// || + $line =~ s/\s*minCardinality="(\d+)"// || + $line =~ s/\s*minCardinality=(\d+)//) { + + my $min_cardinality_value = $1; + push @removed_restrictions, { + type => 'min_cardinality', + value => $min_cardinality_value, + original => $original_line, + modified => $line + }; + $changes_made++; + } + + # Pattern 3: cardinality="n" + elsif ($line =~ s/\s*\{cardinality="(\d+)"\}// || + $line =~ s/\s*\{cardinality=(\d+)\}// || + $line =~ s/\s*cardinality="(\d+)"// || + $line =~ s/\s*cardinality=(\d+)//) { + + my $cardinality_value = $1; + push @removed_restrictions, { + type => 'exact_cardinality', + value => $cardinality_value, + original => $original_line, + modified => $line + }; + $changes_made++; + } + + # Pattern 4: exactly="n" + elsif ($line =~ s/\s*\{exactly="(\d+)"\}// || + $line =~ s/\s*\{exactly=(\d+)\}// || + $line =~ s/\s*exactly="(\d+)"// || + $line =~ s/\s*exactly=(\d+)//) { + + my $exactly_value = $1; + push @removed_restrictions, { + type => 'exactly', + value => $exactly_value, + original => $original_line, + modified => $line + }; + $changes_made++; + } + + # Pattern 5: maxCardinality="n" (for completeness, though not found in current data) + elsif ($line =~ s/\s*\{maxCardinality="(\d+)"\}// || + $line =~ s/\s*\{maxCardinality=(\d+)\}// || + $line =~ s/\s*maxCardinality="(\d+)"// || + $line =~ s/\s*maxCardinality=(\d+)//) { + + my $max_cardinality_value = $1; + push @removed_restrictions, { + type => 'max_cardinality', + value => $max_cardinality_value, + original => $original_line, + modified => $line + }; + $changes_made++; + } + + print $output_fh "$line\n"; + } + + close $input_fh; + close $output_fh; + + # Print summary of changes + print STDERR "=== CARDINALITY RESTRICTION RELAXATION SUMMARY ===\n"; + print STDERR "Total restrictions removed: $changes_made\n"; + + if (@removed_restrictions) { + print STDERR "\nDetailed changes:\n"; + + my %type_counts = (); + for my $restriction (@removed_restrictions) { + $type_counts{$restriction->{type}}++; + print STDERR " $restriction->{type} ($restriction->{value}): $restriction->{original}\n"; + print STDERR " -> $restriction->{modified}\n\n"; + } + + print STDERR "Summary by type:\n"; + for my $type (sort keys %type_counts) { + print STDERR " $type: $type_counts{$type} restrictions removed\n"; + } + } + + return $changes_made; +} + +# Main execution +if (@ARGV != 2) { + die "Usage: $0 \n"; +} + +my ($input_file, $output_file) = @ARGV; + +print STDERR "Relaxing cardinality restrictions in $input_file -> $output_file\n"; +my $changes = relax_cardinality_restrictions($input_file, $output_file); + +if ($changes > 0) { + print STDERR "Successfully relaxed $changes cardinality restrictions.\n"; +} else { + print STDERR "No cardinality restrictions found to relax.\n"; +} + +exit 0; \ No newline at end of file From 8716a95be0d64d397eb633759d3ce8a35d89d8ad Mon Sep 17 00:00:00 2001 From: dosumis Date: Sat, 26 Jul 2025 16:44:22 +0100 Subject: [PATCH 2/2] Update uberon-edit.obo Fixes named class equiivalence by removing EC def on 'intranasal suture' and manually classifying --- src/ontology/uberon-edit.obo | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/ontology/uberon-edit.obo b/src/ontology/uberon-edit.obo index 90dc103235..6ba32ce06c 100644 --- a/src/ontology/uberon-edit.obo +++ b/src/ontology/uberon-edit.obo @@ -130676,9 +130676,6 @@ xref: FMA:52959 xref: SCTID:368990004 xref: Wikipedia:Internasal_suture is_a: UBERON:0011160 ! nasal suture -intersection_of: UBERON:0009199 ! facial suture -intersection_of: connects UBERON:0001681 ! nasal bone -relationship: connects UBERON:0001681 {notes="between both nasal bones"} ! nasal bone [Term] id: UBERON:0009204 @@ -150208,7 +150205,6 @@ xref: SCTID:410003009 xref: Wikipedia:Diastema_(dentistry) is_a: UBERON:0000464 ! anatomical space relationship: adjacent_to UBERON:0001091 ! calcareous tooth -relationship: adjacent_to UBERON:0001091 ! calcareous tooth relationship: part_of UBERON:0001708 ! jaw skeleton relationship: part_of UBERON:0003672 ! dentition property_value: taxon_notes "Many species of mammals have diastemata as a normal feature, most commonly between the incisors and molars" xsd:string @@ -150444,7 +150440,6 @@ xref: FMA:35213 xref: Wikipedia:Intercuneiform_articulations is_a: UBERON:0000982 ! skeletal joint relationship: connects UBERON:0010721 ! distal tarsal bone -relationship: connects UBERON:0010721 ! distal tarsal bone property_value: terminology_notes "The term 'cuneocuboid articulation' is sometimes used to describe the joint between the cuboid and lateral cuneiform, but this term isn't recognized by Terminologia Anatomica" xsd:string {source="WP"} [Term] @@ -154783,7 +154778,6 @@ def: "A hole with that connects the left and right aorta in animals of the order xref: Wikipedia:Foramen_of_Panizza is_a: UBERON:0000464 ! anatomical space relationship: connects UBERON:0000947 ! aorta -relationship: connects UBERON:0000947 ! aorta relationship: in_taxon NCBITaxon:8493 {source="Wikipedia"} ! Crocodylidae relationship: part_of UBERON:0000948 ! heart relationship: part_of UBERON:0004535 {source="Wikipedia"} ! cardiovascular system @@ -225213,8 +225207,8 @@ id: UBERON:8910024 name: airway hillock def: "A region of squamous epithelium found in the tracheobronchial tree - continuous with the tracheobronchial epithelium." [DOI:10.1038/s41586-024-07377-1] is_a: UBERON:0006914 ! squamous epithelium -relationship: part_of UBERON:0007196 ! tracheobronchial tree relationship: has_part CL:4030023 ! respiratory tract hillock cell +relationship: part_of UBERON:0007196 ! tracheobronchial tree [Typedef] id: aboral_to