Difference between revisions of "Queries to be implemented in the future"

From phenoscape
(Strategy #1)
(Replacing page with ' Category:Database')
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page discusses the requirements of the various data access modules of the Phenoscape application to be demonstrated at the ASIH workshop, and documents the performance of the various [[Queries#Proposed_querying_strategies_for_the_ASIH_prototype|querying strategies]] being tested for these modules.
 
  
= Anatomy data services =
 
 
Given a specific anatomical entity A, the requirements of the anatomy data service module are as follows:
 
 
# Identify ALL unique phenotypes {P} that are composed of the entity A or any of its subtypes.
 
# For each identified phenotype P which is of the form inheres_in(Q, E)
 
## Identify the quality Q.
 
### In addition, identify the character C which subsumes Q. This requires navigating the PATO hierarchy recursively in some cases
 
## Identify the entity E. E may be the same as A, or any valid subtype of A.
 
## Identify the set of taxa {T} or genotypes {GT} that exhibit the phenotype P.
 
### For a genotype GT, identify the gene G that encodes it.
 
 
The result should be a list in the format shown below
 
 
<javascript>
 
<Search-Anatomical-Entity>        <Phenotype>            <Entity>        <Quality>    <Character>      <List of taxa>OR<List of genes>
 
</javascript>
 
 
 
==Strategy #1==
 
 
This strategy is the [[Queries#Strategy_#1:_Simple_table_joins|simplest way]] to try and get all the necessary information related to the anatomical entity being searched for. Below is the actual query which attempts to do this. This query returns the unique phenotypes associated with the anatomical entity, and the qualities and specific anatomical entities associated with the phenotype, as well as the list of taxa that exhibit each of these phenotypes in one fell table join (uh, swoop).
 
 
===Query===
 
<sql>
 
SELECT DISTINCT
 
taxon_node.uid AS taxon,
 
phenotype_node.uid AS phenotype,
 
anatomy_node.uid AS anatomy,
 
quality_node.uid AS quality,
 
slim_node.uid AS slim
 
FROM
 
link AS inheres_link, link AS is_a_link, link AS subset_link,
 
link AS exhibits_link,
 
node AS phenotype_node, node AS anatomy_node, node AS inheres_pred_node,
 
node AS is_a_pred_node, node AS quality_node,
 
node AS slim_node, node AS subset_pred_node,
 
node AS taxon_node, node AS exhibits_pred_node
 
WHERE
 
exhibits_pred_node.uid = 'PHENOSCAPE:exhibits' AND
 
subset_pred_node.uid = 'oboInOwl:inSubset' AND
 
is_a_pred_node.uid = 'OBO_REL:is_a' AND
 
is_a_link.is_inferred = 'f' AND
 
inheres_pred_node.uid = 'OBO_REL:inheres_in' AND
 
anatomy_node.uid = 'TAO:0000108' AND
 
slim_node.uid IN ('attribute_slim', 'value_slim') AND
 
exhibits_link.node_id = taxon_node.node_id AND
 
exhibits_link.predicate_id = exhibits_pred_node.node_id AND
 
exhibits_link.object_id = phenotype_node.node_id AND
 
subset_link.node_id = quality_node.node_id AND
 
subset_link.predicate_id = subset_pred_node.node_id AND
 
subset_link.object_id = slim_node.node_id AND
 
is_a_link.node_id = phenotype_node.node_id AND
 
is_a_link.predicate_id = is_a_pred_node.node_id AND
 
is_a_link.object_id = quality_node.node_id AND
 
inheres_link.node_id = phenotype_node.node_id AND
 
inheres_link.predicate_id = inheres_pred_node.node_id AND
 
inheres_link.object_id = anatomy_node.node_id;
 
</sql>
 
 
===Query Execution Plan===
 
 
 
===Execution Details===
 
* Rows returned: 2070
 
* Time: 0.6 ~ 17 s
 
 
===Discussion===
 
 
==Strategy #2==
 
 
==Strategy #3==
 
 
==Strategy #4==
 
 
==Strategy #5==
 
  
 
[[Category:Database]]
 
[[Category:Database]]

Latest revision as of 18:19, 12 February 2009