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

QC: Need cycle detection on basic.owl #1829

Open
matentzn opened this issue Apr 6, 2021 · 11 comments · May be fixed by #2125
Open

QC: Need cycle detection on basic.owl #1829

matentzn opened this issue Apr 6, 2021 · 11 comments · May be fixed by #2125
Assignees

Comments

@matentzn
Copy link
Contributor

matentzn commented Apr 6, 2021

We need to check basic for cycles ideally in basic file. High priority. Maybe ontobio. The old command is deprecated:

$(REPORTDIR)/%-cycles: %.obo
	echo "STRONG WARNING: $@ skipped, because there is no more blip." && touch $@
#	owltools --no-debug $< --list-cycles -f > $@
	#blip-findall -i $< "subclass_cycle/2" -label > $@
@uberon
Copy link

uberon commented Apr 7, 2021 via email

@github-actions
Copy link

This issue has not seen activity any in the past 6 months; it will be closed automatically in one year from now if no action is taken.

@github-actions github-actions bot added the Stale label Oct 22, 2021
@paolaroncaglia
Copy link
Contributor

Hi @matentzn ,
Could you comment, please? Cheers.

@matentzn
Copy link
Contributor Author

We need this but it's difficult and I won't have time; it's basically up to @cmungall or @dosumis to find someone to do this..

@dosumis
Copy link
Contributor

dosumis commented Oct 22, 2021

@cmungall Any idea which downstream users still require this? IIRC this is an issue for MGI. Maybe also for some GO enrichment tools?

@balhoff
Copy link
Member

balhoff commented Oct 22, 2021

Now that we have Soufflé in ODK, it seems like it would be a good fit for this task:

  • Convert the basic.owl to N-triples, run a quick sed to turn that into a TSV.
  • Write some rules for inferring cycles (I can work with somebody on this who knows what we're trying to avoid)
  • Run soufflé and check to see if there is any output.

@balhoff balhoff self-assigned this Oct 22, 2021
@balhoff balhoff linked a pull request Oct 22, 2021 that will close this issue
@cmungall
Copy link
Member

I am not sure who all uses the basic file, but this is an important check for overall integrity of the ontology. If we have cycles in the is-a/part-of/develops-from graph it is a sign something has gone wrong somewhere.

This is something we need for all our ontologies IMO.

We should first investigate if the check can be done purely in OWL. Cycle checks in ABoxes are easy with transitivity, reflexivity, and anti-symmetry, but how this transfers to a TBox is (to me) unintuitive and a simple rule is the easiest thing to maintain.

Jim: I think having a general purpose rule toolkit in souffle is a good idea. I don't think any sed hacking is necessary - just use rdftab.

But in this case I think it may be simple to roll with existing tools

  • run relation-graph (with a subset of properties that includes at least the basic relations)
  • sparql query for ?x ?r1 ?y . ?y ?r2 ?z . FILTER ?x != ?y != ?z (any values for r1 r2 in basic)

It is more elegant to do this all in a single datalog framework but this can be rolled using familiar existing odk components.

We absolutely should be running relation-graph on our main ontologies at least for the basic relations, this gives an incredibly useful lookup table for all kinds of purposes

It's of course pretty trivial to do this kind of thing in python too use ontobio or anything else many people do this already, but I think it best to avoid ad-hoc procedural code here

@dosumis
Copy link
Contributor

dosumis commented Feb 1, 2022

I think the end product should be 2 checks:

  1. that applies to subClassOf + a limited set of relations. @cmungall - do you think we can we apply this to any transitive relation not marked symmetric? Or do we need to enumerate which relations it applies to?
  2. One that looks for any cycles across all relation types - this only needs to be applied to -basic.owl product (if there is one).

@cmungall
Copy link
Member

cmungall commented Feb 1, 2022

Agreed on both. And starting with your rule makes sense.

@github-actions
Copy link

This issue has not seen any activity in the past 6 months; it will be closed automatically one year from now if no action is taken.

@github-actions github-actions bot added the Stale label Feb 17, 2023
@matentzn matentzn removed the Stale label Feb 17, 2023
Copy link

This issue has not seen any activity in the past 6 months; it will be closed automatically one year from now if no action is taken.

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

Successfully merging a pull request may close this issue.

7 participants