QC: Need cycle detection on basic.owl
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 > $@
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 .
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.
Hi @matentzn , Could you comment, please? Cheers.
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..
@cmungall Any idea which downstream users still require this? IIRC this is an issue for MGI. Maybe also for some GO enrichment tools?
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
sedto 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.
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
I think the end product should be 2 checks:
- 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?
- One that looks for any cycles across all relation types - this only needs to be applied to -basic.owl product (if there is one).
Agreed on both. And starting with your rule makes sense.
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.
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.