NCIEVS / nci-protege5

evs umbrella project for protege 5-based editing software
BSD 3-Clause "New" or "Revised" License
2 stars 2 forks source link

Ensure all role fillers are of correct type at classification time #480

Closed bdionne closed 3 years ago

bdionne commented 4 years ago

Curator currently does not check this, assuming that the typing was controlled by edit checks. Recently (#470) modelers retree a class incorrectly which created thousands of inconsistencies. These errors will be now caught at edit time by the new curator checks (#474) but the checks shold also additionally be performed during classification and any errors logged.

bdionne commented 3 years ago

Investigate computing role filler type checks during the stated phase. If errors found, abort classification and report in inference panel to allow modelers to edit and repair.

safrant commented 3 years ago

How to reproduce (I think) Open Entities tab and go to Object Properties Select an Object Property - example "R123 Chemotherapy Regimen Has Component" On the right Select "Edit" on the Ranges Using the Class hierarchy, change the range to something completely different - example "C61092 Archae" Classify You will get the (very terse and undetailed) error "Issues with role domains and ranges". Check the protege log and you will see lots of lines saying "Role X has domain foo and can't be used in class Y" and similar

safrant commented 3 years ago

Note: changing the range back to the original will still result in tons of errors on roles that were never touched, so maybe this isn't the best test.

safrant commented 3 years ago

Example error: 2021-07-07 18:16:39.807 [Classification Thread] INFO RolesVisitor Role: R173 has domain C2950 and can't be used on class C99418

C99418 is a great-grandchild of C2950 so this should be a valid domain. It is a false positive.


2021-07-07 18:16:39.576 [Classification Thread] INFO RolesVisitor Role: R108 has range C7057 and can't be used with filler C54635 on class: http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C4979

R108 has range of C7057, but C54635 belongs to the disjoint root of C20181 so this is a true violation.

singhik commented 3 years ago

@bdionne : Hi, initializing 'Inference Results' Tab is causing Protege to hang everytime ?

image

logs.log

bdionne commented 3 years ago

I'll look at this example. If you totally mess the ontology up and there are a lot of issues I can see where that panel would take a lot of time coming up

bdionne commented 3 years ago

ok, so part of this is a null pointer error in the new additions to the inferred panel, and part of this is more substantive. My understanding of domains/ranges was that they would be root nodes. We can discuss at status.