https://wiki.geneontology.org/index.php?title=Working_with_XPs&feed=atom&action=historyWorking with XPs - Revision history2024-03-29T09:58:37ZRevision history for this page on the wikiMediaWiki 1.40.0https://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=54129&oldid=prevGail at 22:18, 16 July 20142014-07-16T22:18:56Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 18:18, 16 July 2014</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">[[Category:Cross Products]]</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology =</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology =</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
</table>Gailhttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17017&oldid=prevDosumis: /* Practicalities */2008-12-09T17:11:11Z<p><span dir="auto"><span class="autocomment">Practicalities</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:11, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l67">Line 67:</td>
<td colspan="2" class="diff-lineno">Line 67:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontology. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. <del style="font-weight: bold; text-decoration: none;">There is a further </del>[https://sourceforge.net/tracker/index.php?func=detail&aid=2412063&group_id=36855&atid=418257 <del style="font-weight: bold; text-decoration: none;">problem with displaying </del>disjoint root terms <del style="font-weight: bold; text-decoration: none;">in the OTE</del>]<del style="font-weight: bold; text-decoration: none;">.</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontology. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. <ins style="font-weight: bold; text-decoration: none;">Related bug: </ins>[https://sourceforge.net/tracker/index.php?func=detail&aid=2412063&group_id=36855&atid=418257 <ins style="font-weight: bold; text-decoration: none;">The way the OTE displays </ins>disjoint root terms <ins style="font-weight: bold; text-decoration: none;">currently makes it impractical to assert disjointness between roots.</ins>]</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17016&oldid=prevDosumis: /* Balancing efficiency with the dangers of hidden inheritance: */2008-12-09T17:07:59Z<p><span dir="auto"><span class="autocomment">Balancing efficiency with the dangers of hidden inheritance:</span></span></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:07, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l148">Line 148:</td>
<td colspan="2" class="diff-lineno">Line 148:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This is the strategy I have used to classify all eo-neurons as sensory neurons. It is extremely efficient: We currently have 146 eo-neuron classes. Furhter, there are 429 eo-type sensillar subclasses in the ontology and all of these have at least one neuron as a part. As these missing neuronal classes are named and added to the ontology, this approach ensures they will automatically be classified as eo neurons and sensory neurons.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>This is the strategy I have used to classify all eo-neurons as sensory neurons. It is extremely efficient: We currently have 146 eo-neuron classes. Furhter, there are 429 eo-type sensillar subclasses in the ontology and all of these have at least one neuron as a part. As these missing neuronal classes are named and added to the ontology, this approach ensures they will automatically be classified as eo neurons and sensory neurons.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>However, given the dangers of this, I think that it should be used sparingly and well documented. A filter for these classes would be useful. It could be used within the verification manager to provide warnings.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>However, given the dangers of this, I think that it should be used sparingly and well documented. A filter for these classes would be useful. It could be used within the verification manager to provide warnings. <ins style="font-weight: bold; text-decoration: none;"> [https://sourceforge.net/tracker/index.php?func=detail&aid=2338989&group_id=36855&atid=418260 Feature request here.]</ins></div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17015&oldid=prevDosumis at 17:02, 9 December 20082008-12-09T17:02:37Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:02, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology =</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>= Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology =</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>This page assumes a basic understanding of how to make and use necessary and sufficient definitions (AKA XP, genus and differentia or intersection definitions.) <del style="font-weight: bold; text-decoration: none;">Fore </del>more information on these please see: [[Logical_Definitions]].</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>This page assumes a basic understanding of how to make and use necessary and sufficient definitions (AKA XP, genus and differentia or intersection definitions.) <ins style="font-weight: bold; text-decoration: none;">For </ins>more information on these please see: [[Logical_Definitions]].</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== <del style="font-weight: bold; text-decoration: none;">AIMS </del>==</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== <ins style="font-weight: bold; text-decoration: none;">Background </ins>==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Until recently, most terms in the Drosophila anatomy ontology had no is_a parent, but some had many i.e.- the ontology contained lots of very incomplete multiple inheritance, making it hard to maintain and poor at grouping annotations. In the current version, in some systems at least, multiple asserted inheritance has been reduced - replaced by inheritance inferred from XP definitions using a reasoner. For many differentia (e.g.- sensory function) this task requires using foreign terms in both regular relationships and intersections to define Drosophila anatomy terms. <del style="font-weight: bold; text-decoration: none;">Note, formalizing some axes of classification is extremely challenging </del>and <del style="font-weight: bold; text-decoration: none;">will certainly require expressivity we don</del>'<del style="font-weight: bold; text-decoration: none;">t yet have in OBO </del>(<del style="font-weight: bold; text-decoration: none;">at least not via the current OE2</del>).</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Until recently, most terms in the Drosophila anatomy ontology had no is_a parent, but some had many i.e.- the ontology contained lots of very incomplete multiple inheritance, making it hard to maintain and poor at grouping annotations. In the current version, in some systems at least, multiple asserted inheritance has been reduced - replaced by inheritance inferred from XP definitions using a reasoner. For many differentia (e.g.- sensory function) this task requires using foreign terms in both regular relationships and intersections to define Drosophila anatomy terms. <ins style="font-weight: bold; text-decoration: none;">This page outlines how I've used OE2 to change the ontology in this way </ins>and <ins style="font-weight: bold; text-decoration: none;">the problems I</ins>'<ins style="font-weight: bold; text-decoration: none;">ve encountered while doing so </ins>(<ins style="font-weight: bold; text-decoration: none;">with links to OE tickets</ins>).</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l11">Line 11:</td>
<td colspan="2" class="diff-lineno">Line 11:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Rather than use repair mode - where each inferred is_a is assessed prior to assertion<del style="font-weight: bold; text-decoration: none;">, </del>two versions are released. In the edited copy no links are asserted. <del style="font-weight: bold; text-decoration: none;">In </del>the <del style="font-weight: bold; text-decoration: none;">second version </del>all inferred links are asserted. The aim here is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to foreign terms, as I suspect these will cause problems for some end users.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Rather than use repair mode - where each inferred is_a is assessed prior to assertion <ins style="font-weight: bold; text-decoration: none;">- </ins>two versions are released. In the edited copy no links are asserted. <ins style="font-weight: bold; text-decoration: none;">A pre-reasoned version is produced from </ins>the <ins style="font-weight: bold; text-decoration: none;">edited copy in which </ins>all inferred links are asserted. The aim here is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to foreign terms, as I suspect these will cause problems for some end users.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17012&oldid=prevDosumis at 16:45, 9 December 20082008-12-09T16:45:48Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:45, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l84">Line 84:</td>
<td colspan="2" class="diff-lineno">Line 84:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>(*Note - [https://sourceforge.net/tracker/index.php?func=detail&aid=2184288&group_id=36855&atid=418257 the descendant clause here does not currently work] in filtered saves.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>(*Note - [https://sourceforge.net/tracker/index.php?func=detail&aid=2184288&group_id=36855&atid=418257 the descendant clause here does not currently work] in filtered saves.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>=== <del style="font-weight: bold; text-decoration: none;">Efficiency vs </del>the dangers of hidden inheritance: ===</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>=== <ins style="font-weight: bold; text-decoration: none;">Balancing efficiency with </ins>the dangers of hidden inheritance: ===</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Multiple asserted inheritance is hard to manage - if it is not kept under control, one can all too easily get lost in the resulting tangle, producing an ontology riddled with TPV and with many inheritance groups incomplete.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Multiple asserted inheritance is hard to manage - if it is not kept under control, one can all too easily get lost in the resulting tangle, producing an ontology riddled with TPV and with many inheritance groups incomplete.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l90">Line 90:</td>
<td colspan="2" class="diff-lineno">Line 90:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>XPs provide a way to reduce multiple asserted inheritance. They also have the advantage of pushing assertions down to a much lower level of granularity. The biology literature is full of generalizing assertions about classes based on quite limited knowledge of the properties of subclasses. Capturing such assertions directly in high level class terms can be dangerous. As details are added, conflicts with these generalization begin to show up. Using XPs forces us to attach properties to individual classes. These can be recorded along with references providing evidence for the assertion. Classification on the basis of these assertions is safer than working from very general statements.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>XPs provide a way to reduce multiple asserted inheritance. They also have the advantage of pushing assertions down to a much lower level of granularity. The biology literature is full of generalizing assertions about classes based on quite limited knowledge of the properties of subclasses. Capturing such assertions directly in high level class terms can be dangerous. As details are added, conflicts with these generalization begin to show up. Using XPs forces us to attach properties to individual classes. These can be recorded along with references providing evidence for the assertion. Classification on the basis of these assertions is safer than working from very general statements.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">In the old system - generalizing </del>assertions may be buried in the text of a definition, but may also be made using regular relationships. Now, this has the advantage of being efficient. I can record that everything of class X is part_of the head, or has a function in sensory perception and this will be inherited by all subclasses. This is less work than recording that the property for all the individual subclasses (assuming you can keep track of the asserted is_a relations required.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Generalizing </ins>assertions may be buried in the text of a definition, but may also be made using regular relationships. Now, this has the advantage of being efficient. I can record that everything of class X is part_of the head, or has a function in sensory perception and this will be inherited by all subclasses. This is less work than recording that the property for all the individual subclasses (assuming you can keep track of the asserted is_a relations required.<ins style="font-weight: bold; text-decoration: none;">)</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is possible, although rather dangerous, to combine the two strategies. A class having an XP definition can also have regular relationships. These record properties that will be inherited by all autoclassified subclasses. The danger of this strategy is obvious - simply by recording properties which fulfill the conditions of the XP class, one is asserting that the other properties of that class apply.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is possible, although rather dangerous, to combine the two strategies. A class having an XP definition can also have regular relationships. These record properties that will be inherited by all autoclassified subclasses. The danger of this strategy is obvious - simply by recording properties which fulfill the conditions of the XP class, one is asserting that the other properties of that class apply.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l141">Line 141:</td>
<td colspan="2" class="diff-lineno">Line 141:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>(In fact this will be represented in a tree as </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>(In fact this will be represented in a tree as </div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> sensory neuron</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> sensory neuron</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> . is_a eo neuron<del style="font-weight: bold; text-decoration: none;">[[BR]]</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> . is_a eo neuron</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> . . is_a prothoracic desB neuron</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> . . is_a prothoracic desB neuron</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17010&oldid=prevDosumis at 16:42, 9 December 20082008-12-09T16:42:58Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:42, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9">Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. <del style="font-weight: bold; text-decoration: none;"> </del>This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. <ins style="font-weight: bold; text-decoration: none;"> </ins>This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">Prior </del>to <del style="font-weight: bold; text-decoration: none;">release</del>, <del style="font-weight: bold; text-decoration: none;">a </del>second version <del style="font-weight: bold; text-decoration: none;">is produced</del>. The aim is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to foreign terms, as I suspect these will cause problems for some end users.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">Rather than use repair mode - where each inferred is_a is assessed prior </ins>to <ins style="font-weight: bold; text-decoration: none;">assertion</ins>, <ins style="font-weight: bold; text-decoration: none;">two versions are released. In the edited copy no links are asserted. In the </ins>second version <ins style="font-weight: bold; text-decoration: none;">all inferred links are asserted</ins>. The aim <ins style="font-weight: bold; text-decoration: none;">here </ins>is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to foreign terms, as I suspect these will cause problems for some end users.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=17008&oldid=prevDosumis at 16:31, 9 December 20082008-12-09T16:31:40Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:31, 9 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l5">Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== AIMS ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== AIMS ==</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Until recently, most terms in the Drosophila anatomy ontology had no is_a parent, but some had many i.e.- the ontology contained lots of very incomplete multiple inheritance, making it hard to maintain and poor at grouping annotations. In the current version, in some systems at least, multiple asserted inheritance has been reduced - replaced by inheritance inferred from XP <del style="font-weight: bold; text-decoration: none;">defintions </del>using a <del style="font-weight: bold; text-decoration: none;">reaosner</del>. For many differentia (e.g.- sensory function) this task requires using foreign terms in both regular relationships and intersections to define Drosophila anatomy terms. Note, <del style="font-weight: bold; text-decoration: none;">this is not a dogmatic insistence on single asserted inheritance - it is simply an effort to reduce multiple inheritance wherever there is a clear strategy for expressing differentia formally. Formalising </del>some axes of <del style="font-weight: bold; text-decoration: none;">classication </del>is extremely challenging and will certainly require expressivity we don't yet have in OBO (at least not via the current OE2).</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Until recently, most terms in the Drosophila anatomy ontology had no is_a parent, but some had many i.e.- the ontology contained lots of very incomplete multiple inheritance, making it hard to maintain and poor at grouping annotations. In the current version, in some systems at least, multiple asserted inheritance has been reduced - replaced by inheritance inferred from XP <ins style="font-weight: bold; text-decoration: none;">definitions </ins>using a <ins style="font-weight: bold; text-decoration: none;">reasoner</ins>. For many differentia (e.g.- sensory function) this task requires using foreign terms in both regular relationships and intersections to define Drosophila anatomy terms. Note, <ins style="font-weight: bold; text-decoration: none;">formalizing </ins>some axes of <ins style="font-weight: bold; text-decoration: none;">classification </ins>is extremely challenging and will certainly require expressivity we don't yet have in OBO (at least not via the current OE2).</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Overall Strategy ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l11">Line 11:</td>
<td colspan="2" class="diff-lineno">Line 11:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Prior to release, a second version is produced. The aim is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to <del style="font-weight: bold; text-decoration: none;">foriegn </del>terms, as I suspect these will cause problems for some end users.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Prior to release, a second version is produced. The aim is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to <ins style="font-weight: bold; text-decoration: none;">foreign </ins>terms, as I suspect these will cause problems for some end users.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* To make this second version:</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l63">Line 63:</td>
<td colspan="2" class="diff-lineno">Line 63:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>3. Working with existing terms in the tree:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>3. Working with existing terms in the tree:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections (the option is there but [https://sourceforge.net/tracker/index.php?func=detail&aid=2221607&group_id=36855&atid=418257</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections (the option is there but [https://sourceforge.net/tracker/index.php?func=detail&aid=2221607&group_id=36855&atid=418257 doesn't work]<ins style="font-weight: bold; text-decoration: none;">) </ins>- or to be able to choose individual elements (also doesn't work?)</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"> </del>doesn't work] - or to be able to choose individual elements (also doesn't work?)</div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontology. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE <del style="font-weight: bold; text-decoration: none;">(see ticket ***)</del>.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontology. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further <ins style="font-weight: bold; text-decoration: none;">[https://sourceforge.net/tracker/index.php?func=detail&aid=2412063&group_id=36855&atid=418257 </ins>problem with displaying disjoint root terms in the OTE<ins style="font-weight: bold; text-decoration: none;">]</ins>.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=16980&oldid=prevDosumis at 14:22, 8 December 20082008-12-08T14:22:38Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:22, 8 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l63">Line 63:</td>
<td colspan="2" class="diff-lineno">Line 63:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>3. Working with existing terms in the tree:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>3. Working with existing terms in the tree:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections (the option is there but <del style="font-weight: bold; text-decoration: none;">[ </del>[https://sourceforge.net/tracker/index.php?func=detail&aid=2221607&group_id=36855&atid=418257</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections (the option is there but [https://sourceforge.net/tracker/index.php?func=detail&aid=2221607&group_id=36855&atid=418257</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> doesn't work] - or to be able to choose individual elements (also doesn't work?)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> doesn't work] - or to be able to choose individual elements (also doesn't work?)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>4. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong (See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your <del style="font-weight: bold; text-decoration: none;">ontoloyg</del>. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE (see ticket ***).</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>5. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your <ins style="font-weight: bold; text-decoration: none;">ontology</ins>. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE (see ticket ***).</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>6. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often [https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 see this ticket]). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l89">Line 89:</td>
<td colspan="2" class="diff-lineno">Line 89:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Multiple asserted inheritance is hard to manage - if it is not kept under control, one can all too easily get lost in the resulting tangle, producing an ontology riddled with TPV and with many inheritance groups incomplete.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Multiple asserted inheritance is hard to manage - if it is not kept under control, one can all too easily get lost in the resulting tangle, producing an ontology riddled with TPV and with many inheritance groups incomplete.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>XPs provide a way to reduce multiple asserted inheritance. They also have the advantage of pushing assertions down to a much lower level of granularity. The biology literature is full of <del style="font-weight: bold; text-decoration: none;">generalising </del>assertions about classes based on quite limited knowledge of the properties of subclasses. Capturing such assertions directly in high level class terms can be dangerous. As details are added, conflicts with these <del style="font-weight: bold; text-decoration: none;">generalisation </del>begin to show up. Using XPs forces us to attach properties to individual classes. These can be recorded along with references providing evidence for the assertion. Classification on the basis of these assertions is safer than working from very general statements.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>XPs provide a way to reduce multiple asserted inheritance. They also have the advantage of pushing assertions down to a much lower level of granularity. The biology literature is full of <ins style="font-weight: bold; text-decoration: none;">generalizing </ins>assertions about classes based on quite limited knowledge of the properties of subclasses. Capturing such assertions directly in high level class terms can be dangerous. As details are added, conflicts with these <ins style="font-weight: bold; text-decoration: none;">generalization </ins>begin to show up. Using XPs forces us to attach properties to individual classes. These can be recorded along with references providing evidence for the assertion. Classification on the basis of these assertions is safer than working from very general statements.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In the old system - <del style="font-weight: bold; text-decoration: none;">generalising </del>assertions may be buried in the text of a definition, but may also be made using regular relationships. Now, this has the advantage of being efficient. I can record that everything of class X is part_of the head, or has a function in sensory perception and this will be inherited by all subclasses. This is less work than recording that the property for all the individual subclasses (assuming you can keep track of the asserted is_a relations required.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In the old system - <ins style="font-weight: bold; text-decoration: none;">generalizing </ins>assertions may be buried in the text of a definition, but may also be made using regular relationships. Now, this has the advantage of being efficient. I can record that everything of class X is part_of the head, or has a function in sensory perception and this will be inherited by all subclasses. This is less work than recording that the property for all the individual subclasses (assuming you can keep track of the asserted is_a relations required.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is possible, although rather dangerous, to combine the two strategies. A class having an XP definition can also have regular relationships. These record properties that will be inherited by all autoclassified subclasses. The danger of this strategy is obvious - simply by recording properties which fulfill the conditions of the XP class, one is asserting that the other properties of that class apply.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>It is possible, although rather dangerous, to combine the two strategies. A class having an XP definition can also have regular relationships. These record properties that will be inherited by all autoclassified subclasses. The danger of this strategy is obvious - simply by recording properties which fulfill the conditions of the XP class, one is asserting that the other properties of that class apply.</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=16979&oldid=prevDosumis at 14:19, 8 December 20082008-12-08T14:19:15Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:19, 8 December 2008</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l16">Line 16:</td>
<td colspan="2" class="diff-lineno">Line 16:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** all implied relationships are instantiated (non-redundantly);</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** all implied relationships are instantiated (non-redundantly);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** XP defs are auto-converted to textual definitions;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** XP defs are auto-converted to textual definitions;</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>** Some XP differentia are converted to regular relationships (in order that information is not lost - see <del style="font-weight: bold; text-decoration: none;">bug report ***</del>);</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>** Some XP differentia are converted to regular relationships (in order that information is not lost - see <ins style="font-weight: bold; text-decoration: none;">[https://sourceforge.net/tracker/index.php?func=detail&aid=2305594&group_id=36855&atid=418257 this ticket]</ins>);</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** XP genus lines are stripped;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** XP genus lines are stripped;</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Foreign terms are stripped out;</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Foreign terms are stripped out;</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l23">Line 23:</td>
<td colspan="2" class="diff-lineno">Line 23:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>For more details see [[Making_a_release_version]].</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>For more details see [[Making_a_release_version]].</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Note - this approach ensures that the resulting ontology can be used with efficiently with a reasoner and so will be usable for searching/querying in OE and <del style="font-weight: bold; text-decoration: none;">Protege</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Note - this approach ensures that the resulting ontology can be used with efficiently with a reasoner and so will be usable for searching/querying in OE and <ins style="font-weight: bold; text-decoration: none;">Protege4.</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Plan of attack ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Plan of attack ==</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l61">Line 61:</td>
<td colspan="2" class="diff-lineno">Line 61:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>2. New terms with XP defs: Add a new root term. Then add the XP def to the new term using the XP editor tab in the text editor.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>2. New terms with XP defs: Add a new root term. Then add the XP def to the new term using the XP editor tab in the text editor.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">2</del>. Working with existing terms in the tree:</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">3</ins>. Working with existing terms in the tree:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections - or to be able to choose individual elements<del style="font-weight: bold; text-decoration: none;">. Neither of these approaches currently works. </del>(<del style="font-weight: bold; text-decoration: none;">see ticket </del>)</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>A more straightforward way would be to convert all regular relationships to intersections <ins style="font-weight: bold; text-decoration: none;">(the option is there but [ [https://sourceforge.net/tracker/index.php?func=detail&aid=2221607&group_id=36855&atid=418257</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> doesn't work] </ins>- or to be able to choose individual elements (<ins style="font-weight: bold; text-decoration: none;">also doesn't work?</ins>)</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">3</del>. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong. Unfortunately that means you can't filter out redundant relations <del style="font-weight: bold; text-decoration: none;">(see ticket: ) </del>- or tell what relations are really redundant without investigating each one carefully.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">4</ins>. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong <ins style="font-weight: bold; text-decoration: none;">(See [https://sourceforge.net/tracker/index.php?func=detail&aid=2263348&group_id=36855&atid=418257 this ticket]</ins>. Unfortunately that means you can't filter out redundant relations - or tell what relations are really redundant without investigating each one carefully.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">4</del>. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontoloyg. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE (see ticket ***).</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">5</ins>. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontoloyg. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE (see ticket ***).</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">5</del>. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often <del style="font-weight: bold; text-decoration: none;">(</del>see ticket <del style="font-weight: bold; text-decoration: none;">****</del>). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">6</ins>. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often <ins style="font-weight: bold; text-decoration: none;">[https://sourceforge.net/tracker/index.php?func=detail&aid=2225310&group_id=36855&atid=418257 </ins>see <ins style="font-weight: bold; text-decoration: none;">this </ins>ticket<ins style="font-weight: bold; text-decoration: none;">]</ins>). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Using foreign terms: ===</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Using foreign terms: ===</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l82">Line 82:</td>
<td colspan="2" class="diff-lineno">Line 83:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> term has name equal to X in ancestor that can be reach via is_a</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> term has name equal to X in ancestor that can be reach via is_a</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>(*Note - <del style="font-weight: bold; text-decoration: none;">saving descendants </del>does not currently work <del style="font-weight: bold; text-decoration: none;"> ***)</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>(*Note - <ins style="font-weight: bold; text-decoration: none;">[https://sourceforge.net/tracker/index.php?func=detail&aid=2184288&group_id=36855&atid=418257 the descendant clause here </ins>does not currently work<ins style="font-weight: bold; text-decoration: none;">] in filtered saves.</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Efficiency vs the dangers of hidden inheritance: ===</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Efficiency vs the dangers of hidden inheritance: ===</div></td></tr>
</table>Dosumishttps://wiki.geneontology.org/index.php?title=Working_with_XPs&diff=16972&oldid=prevDosumis: New page: = Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology = This page assumes a basic understanding of how to make and use necessary and sufficient definitions ...2008-12-08T13:47:39Z<p>New page: = Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology = This page assumes a basic understanding of how to make and use necessary and sufficient definitions ...</p>
<p><b>New page</b></p><div>= Notes on Working with XPs in OE- illustrated using the Drosophila anatomy ontology =<br />
<br />
This page assumes a basic understanding of how to make and use necessary and sufficient definitions (AKA XP, genus and differentia or intersection definitions.) Fore more information on these please see: [[Logical_Definitions]].<br />
<br />
== AIMS ==<br />
<br />
Until recently, most terms in the Drosophila anatomy ontology had no is_a parent, but some had many i.e.- the ontology contained lots of very incomplete multiple inheritance, making it hard to maintain and poor at grouping annotations. In the current version, in some systems at least, multiple asserted inheritance has been reduced - replaced by inheritance inferred from XP defintions using a reaosner. For many differentia (e.g.- sensory function) this task requires using foreign terms in both regular relationships and intersections to define Drosophila anatomy terms. Note, this is not a dogmatic insistence on single asserted inheritance - it is simply an effort to reduce multiple inheritance wherever there is a clear strategy for expressing differentia formally. Formalising some axes of classication is extremely challenging and will certainly require expressivity we don't yet have in OBO (at least not via the current OE2).<br />
<br />
== Overall Strategy ==<br />
<br />
In most cases, terms are defined using either intersections or regular relationships (although see below for a case for combining them) - no attempt is made to keep parallel, redundant regular relationships for terms with intersections. This means that, once many XP definitions are in place, the ontology is quite flat and difficult to work with without a reasoner on. Foreign terms in this ontology are selectively imported using filters that save is_a parents and children of key terms. They remain in the ontology indefinitely - but will need to be periodically updated. Right now, the only way to keep track of versions used for importation is via comments saved in the header.<br />
<br />
Prior to release, a second version is produced. The aim is to produce a version that can be used in the same way as versions of the ontology prior to the introduction of XP definitions. Most importantly, it needs to be usable for grouping annotations using is_a and part_of children of any given term. This version also lacks relationships to foriegn terms, as I suspect these will cause problems for some end users.<br />
<br />
* To make this second version:<br />
** all implied relationships are instantiated (non-redundantly);<br />
** XP defs are auto-converted to textual definitions;<br />
** Some XP differentia are converted to regular relationships (in order that information is not lost - see bug report ***);<br />
** XP genus lines are stripped;<br />
** Foreign terms are stripped out;<br />
** Redundancy is removed;<br />
<br />
For more details see [[Making_a_release_version]].<br />
<br />
Note - this approach ensures that the resulting ontology can be used with efficiently with a reasoner and so will be usable for searching/querying in OE and Protege<br />
<br />
== Plan of attack ==<br />
<br />
Working from an ontology with multiple inheritance, it is best to attack some convenient subdivision of the ontology at at time (for anatomy, organ systems work well) and to start by making a list of all the major differentia used. From this list, one can devise a strategy for expressing at least some of these differenatia using existing relations or plausible new ones + internal or external terms.<br />
<br />
1. differentia using existing relations and existing terms:<br />
<br />
name: 'larval head sensillum' <br />
intersection_of: sensillum<br />
intersection_of: part_of larval head<br />
<br />
2. Differentia using existing terms, but requiring new relations<br />
<br />
name: anterior fascicle sensory neuron<br />
intersection_of: sensory neuron<br />
intersection_of: fasciculates_with anterior fascicle<br />
<br />
3. Differentia using foreign terms <br />
<br />
name: sensory neuron <br />
intersection_of: neuron<br />
intersection_of: has_function GO:0050906 ! detection of stimulus involved in sensory perception<br />
<br />
(Note the example in 2 would be better with 2 differentia, one being intersection_of: has_function GO:0050906 ! detection of stimulus involved in sensory perception. It can then be autoclassified as a sensory neuron.)<br />
<br />
In every case, many regular relationships will also need to be made in order to completely classify - including to foreign terms. In the case of partonomy, this often means moving many terms from an asserted is_a parent to a suitable part_of parent.<br />
<br />
== Practicalities ==<br />
<br />
1. Useful term renders to use while doing this: <br />
* "terms that have is_intersection"<br />
* "terms that don't have is_isa complete"<br />
* "terms that have isa_parent count >=2"<br />
* "terms that don't have id contains <ID prefix for terms internal to this ontology>"<br />
<br />
2. New terms with XP defs: Add a new root term. Then add the XP def to the new term using the XP editor tab in the text editor.<br />
<br />
2. Working with existing terms in the tree:<br />
Add XP defs by hand using XP editor tab in text editor. Keep the parent editor visible and delete relationships as necessary.<br />
A more straightforward way would be to convert all regular relationships to intersections - or to be able to choose individual elements. Neither of these approaches currently works. (see ticket )<br />
<br />
3. Don't be fooled by the redundancy flags that show up everywhere when using the "link pile reasoner", they're just wrong. Unfortunately that means you can't filter out redundant relations (see ticket: ) - or tell what relations are really redundant without investigating each one carefully.<br />
<br />
4. If you are sure that two siblings are disjoint (ask yourself if any instance could ever be both), then it is worth adding a disjoint_from 'relation'. With these in place, the reasoner can flag inconsitencies in your ontoloyg. Note, you only have to make the relationship in one direction - it doesn't matter which. This can get confusing when many siblings are involved. Better tools for this would be good. There is a further problem with displaying disjoint root terms in the OTE (see ticket ***).<br />
<br />
5. Incremental reasoning only partly works and tends to get confused. It is therefore important to re-reason periodically. However, this gets slower each time during a session where many XP terms are made, so it is also necessary to re-start OE every so often (see ticket ****). Particularly frustrating is a tendency to flag disjoint violations where there are none, as this makes saving difficult.<br />
<br />
=== Using foreign terms: ===<br />
<br />
Importing a whole foreign ontology is likely to be impractical. Certainly it's unlikely the reasoner will function when multiple large ontologies are loaded. Instead, one can import terms as needed. Often, one may want a whole set of related terms - for example, those for various sensory functions. In such cases, there are often key terms which can be specified in a filtered save along with all parent and child classes and the is_a relations between them:<br />
<br />
SAVE FILTER:<br />
term has name equal to X<br />
OR<br />
term has name equal to X in descendant that can be reach via is_a *<br />
OR<br />
term has name equal to X in ancestor that can be reach via is_a<br />
<br />
(*Note - saving descendants does not currently work ***)<br />
<br />
=== Efficiency vs the dangers of hidden inheritance: ===<br />
<br />
Multiple asserted inheritance is hard to manage - if it is not kept under control, one can all too easily get lost in the resulting tangle, producing an ontology riddled with TPV and with many inheritance groups incomplete.<br />
<br />
XPs provide a way to reduce multiple asserted inheritance. They also have the advantage of pushing assertions down to a much lower level of granularity. The biology literature is full of generalising assertions about classes based on quite limited knowledge of the properties of subclasses. Capturing such assertions directly in high level class terms can be dangerous. As details are added, conflicts with these generalisation begin to show up. Using XPs forces us to attach properties to individual classes. These can be recorded along with references providing evidence for the assertion. Classification on the basis of these assertions is safer than working from very general statements.<br />
<br />
In the old system - generalising assertions may be buried in the text of a definition, but may also be made using regular relationships. Now, this has the advantage of being efficient. I can record that everything of class X is part_of the head, or has a function in sensory perception and this will be inherited by all subclasses. This is less work than recording that the property for all the individual subclasses (assuming you can keep track of the asserted is_a relations required.<br />
<br />
It is possible, although rather dangerous, to combine the two strategies. A class having an XP definition can also have regular relationships. These record properties that will be inherited by all autoclassified subclasses. The danger of this strategy is obvious - simply by recording properties which fulfill the conditions of the XP class, one is asserting that the other properties of that class apply.<br />
<br />
However, this strategy can be useful.<br />
<br />
Here's an example<br />
<br />
I can record that all eo-neurons are part_of some eo-type sensillum:<br />
eo-type sensillum<br />
part_of eo-neuron<br />
. is_a prothoracic desB neuron<br />
. is_a prothoracic desA neuron<br />
<br />
From this, a reasoner can conclude that desB is part_of some eo-type sensillum.<br />
<br />
or I can use an XP def:<br />
<br />
eo neuron<br />
intersection_of: neuron<br />
intersection_of: part_of eo-type sensillum<br />
<br />
name: prothoracic desB neuron<br />
is_a: neuron<br />
relationship: part_of prothoracic dorsal sensillum trichodeum dh1<br />
<br />
name: prothoracic dorsal sensillum trichodeum dh1<br />
is_a: eo-type sensillum<br />
<br />
=> implied classification<br />
<br />
prothoracic desB neuron is_a eo-neuron<br />
<br />
If I can expand the defintion of eo-neuron with regular relationships:<br />
<br />
name: eo neuron<br />
intersection_of: neuron<br />
intersection_of: part_of eo-type sensillum<br />
relationship: develops_from FBbt:00006022 ! external sensory organ precursor cell IIIb<br />
relationship: has_function GO:0050906 ! detection of stimulus involved in sensory perception<br />
<br />
name: sensory neuron<br />
intersection_of: neuron<br />
intersection_of: has_function GO:0050906 ! detection of stimulus involved in sensory perception <br />
<br />
Now the reasoner can imply:<br />
<br />
prothoracic desB neuron develops_from external sensory organ precursor cell IIIb AND prothoracic desB neuron is_a sensory neuron<br />
<br />
(In fact this will be represented in a tree as <br />
sensory neuron<br />
. is_a eo neuron[[BR]]<br />
. . is_a prothoracic desB neuron<br />
<br />
The other advantage of computing the tree is that it avoids the addition of redundant terms.)<br />
<br />
This is the strategy I have used to classify all eo-neurons as sensory neurons. It is extremely efficient: We currently have 146 eo-neuron classes. Furhter, there are 429 eo-type sensillar subclasses in the ontology and all of these have at least one neuron as a part. As these missing neuronal classes are named and added to the ontology, this approach ensures they will automatically be classified as eo neurons and sensory neurons.<br />
<br />
However, given the dangers of this, I think that it should be used sparingly and well documented. A filter for these classes would be useful. It could be used within the verification manager to provide warnings.</div>Dosumis