uberon icon indicating copy to clipboard operation
uberon copied to clipboard

QC: Need cycle detection on basic.owl

Open matentzn opened this issue 4 years ago • 11 comments

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 > $@

matentzn avatar Apr 06 '21 20:04 matentzn

How about using relation-graph? Already in odk. We should make materialized inferred triple files for the relation set in basic anyway

On Tue, Apr 6, 2021, 13:48 Nico Matentzoglu @.***> wrote:

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 > $@

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/obophenotype/uberon/issues/1829, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGZRCDZ37WG2U7RACDOUOTTHNXR3ANCNFSM42PO7YMA .

uberon avatar Apr 07 '21 04:04 uberon

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[bot] avatar Oct 22 '21 02:10 github-actions[bot]

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

paolaroncaglia avatar Oct 22 '21 10:10 paolaroncaglia

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..

matentzn avatar Oct 22 '21 10:10 matentzn

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

dosumis avatar Oct 22 '21 10:10 dosumis

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 avatar Oct 22 '21 14:10 balhoff

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

cmungall avatar Oct 22 '21 15:10 cmungall

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).

dosumis avatar Feb 01 '22 18:02 dosumis

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

cmungall avatar Feb 01 '22 18:02 cmungall

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[bot] avatar Feb 17 '23 02:02 github-actions[bot]

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[bot] avatar Nov 16 '23 01:11 github-actions[bot]