Often, a user will want to see a version of the ontology that is filtered to show a single relationship type. But when the user tries to apply a simple link filter to do the job, the user often finds himself facing a highly fragmented mess of an ontology with many orphaned branches.
This happens because most well-designed ontologies do not have complete paths to the root for every relationship type (except is_a). A well-designed ontology specifies relationships where they're needed, but leaves a great many relationships implicit. For example, consider this small ontology.
cat -is_a-> animal
There's no need to include a heart -part_of-> cat link, because it is implied by the other two relationships. It would be redundant, and many such links would make the ontology very hard to maintain.
But, if we were to apply a link filter to only show part_of relationships, we would not be able to tell that heart -part_of-> cat. Cat would become a root node because the filter would hide its is_a link to animal.
Reasoner prefilters solve this problem by querying the reasoner for the complete, reasoned graph for a relationship type. As long as there is a complete is_a heirarchy in an ontology, a reasoned prefilter can show a complete, connected graph for any relationship type in the ontology.
Filters in OBO-Edit are applied in the following way:
For now, reasoner prefilters only filter by relationship type. More complex reasoner prefiltering is not yet supported.
Reasoner prefilters are specified using the button
under an ontology editor panel. Each ontology editor panel can have a different
reasoner prefilter. See The
Ontology Editor Panel
for more information.
It is possible to apply a reasoner prefilter to an ontology before saving it to disk. See The OBO Adapter and obo2obo for more information.