Skip to content

Commit

Permalink
Add documentation on subset to module extraction docs (#526)
Browse files Browse the repository at this point in the history
  • Loading branch information
cmungall authored Dec 19, 2024
1 parent 5734d99 commit 6aa9c2a
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions docs/tutorial/project-ontology-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,13 @@ Module extraction is the process for selecting an appropriate subset from an ont
1. Using logical modules (SLME, pronounced 'slime'): this will allow you to extract not only all the terms in your seed, but furthermore _all logical axioms that could theoretically impact reasoning_. [SLME modules](https://robot.obolibrary.org/extract#syntactic-locality-module-extractor-slme) are typically much larger than what you would expect from a 'relevant' subset.
2. Using [ROBOT filter](https://robot.obolibrary.org/filter), a system to first select entities in your seed, then selectively including or excluding descendants, annotations.
3. Using [MIREOT](https://robot.obolibrary.org/extract#mireot), a technique that will extract terms and their subClass relationships, without any attempt to include other kinds of axioms.
4. Using [ROBOT subset](https://robot.obolibrary.org/extract#subset), which extract a sub-ontology that contains only the seed terms and the relationships between them.

You can consult the [ROBOT documentation](https://robot.obolibrary.org/extract) for some details on module extraction.

Let's be honest - none of these module extraction techniques are really ideal for project ontologies. SLME modules are typically used for domain ontology development to ensure logical consistency with imported ontologies, but otherwise contain too much information (for most project ontology use cases). ROBOT filter has a hard time with dealing with closures of existential restrictions: for example you cant be sure that, if you import "endocardial endothelium" and "heart" using filter, that the one former is still part of the latter (it is only indirectly a part) - a lot of research and work has being going on to make this easier. The next version of ROBOT (1.8.5) is going to [contain a new module extraction command](https://github.com/ontodev/robot/pull/1000) which will ensure that such links are not broken.
Let's be honest - none of these module extraction techniques are really ideal for project ontologies. SLME modules are typically used for domain ontology development to ensure logical consistency with imported ontologies, but otherwise contain too much information (for most project ontology use cases). ROBOT filter has a hard time with dealing with closures of existential restrictions: for example you cant be sure that, if you import "endocardial endothelium" and "heart" using filter, that the one former is still part of the latter (it is only indirectly a part). For most purposes, the newer ROBOT subset command best matches most requirements, as it essentially walks up the graph from the provided seed terms (using customizable object properties). While this is not guaranteed to be "entailment preserving", it should suffice for most reasoning purposes.

One of the design confusions in this part of the process is that most use cases of application ontologies really do not care _at all_ about OWL. Remember, OWL really only matters for the design of domain ontologies, to ensure a consistent representation of the domain and enable reasoning-based classification. So it is, at least slightly, unsatisfactory that we have to use OWL tools to do something that may as well be done by something simpler, more akin to "graph-walking".
One of the design confusions in this part of the process is that most use cases of application ontologies really do not care _at all_ about OWL. Remember, OWL really only matters for the design of domain ontologies, to ensure a consistent representation of the domain and enable reasoning-based classification.

<a id="metadata"></a>

Expand Down

0 comments on commit 6aa9c2a

Please sign in to comment.