Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New check to detect loops in definitions #528

Open
gouttegd opened this issue Feb 1, 2022 · 5 comments
Open

New check to detect loops in definitions #528

gouttegd opened this issue Feb 1, 2022 · 5 comments
Assignees

Comments

@gouttegd
Copy link
Contributor

gouttegd commented Feb 1, 2022

In FBbt we recently added a custom check to detect cyclic logical definitions, because one such loop found its way into a release (FlyBase/drosophila-anatomy-developmental-ontology#1366) without being caught beforehand.

Any objection to adding the check directly into the ODK?

@gouttegd gouttegd self-assigned this Feb 1, 2022
@matentzn
Copy link
Contributor

matentzn commented Feb 1, 2022

We should have plenty of protection against this by using

robot reason -i x.owl --allow-equivalent-classes asserted-only

which you recently made mandatory.

Do you want to add this check because of the necessity to catch the problem without using the reasoner?

The much more heavy problem is the thing @dosumis and @anitacaron are (I think?) working on that procludes cycles over object properties like part-of..

@balhoff
Copy link
Member

balhoff commented Feb 1, 2022

Have that implemented here (I think): obophenotype/uberon#2125

Maybe somebody could take it over?

@matentzn
Copy link
Contributor

matentzn commented Feb 1, 2022

Already happening somewhere somehow in relation to single cell atlas with @dosumis

David can you assign whoever was doing work on stitching part of chaings together to the PR that Jim linked above?

@dosumis
Copy link
Contributor

dosumis commented Feb 1, 2022

Seems like multiple issues here:

  1. Detect cycles over subClassOf - A subClassOf B subClassOf A (isn't this logical equivalence?)
  2. Detect any indirect cycle over some relationship (OP restriction) types, where these indicate an error (e.g. part_of - could this be generalised to all transitive, non-symmetric object properties?)
  3. Detect the presence of any cycles at all: foo-basic.obo is meant to be acyclic (DAG). This might be perfectly legal, reasonable OWL (e.g. reciprocal part_of/has_part restrictions), but is required by some legacy users. I think that's what this is about QC: Need cycle detection on basic.owl obophenotype/uberon#1829

@anitacaron can potentially help out, but we need to be clear about which task is which here. Do we need three tickets?

@dosumis
Copy link
Contributor

dosumis commented Feb 1, 2022

Looking at #1829 a bit more, I can noticed Chris covers case 2 in the discussion (but maybe we need 2 versions for the 2 use cases?). Check 1 could be folded into 2 if working in a completely graph-y way with Soufflé. I'll add @anitacaron to the assignees.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants