BH12.12/StanzaQuerySpecificGraph

提供:TogoWiki

移動: 案内, 検索

目次

Graphキーワードでのグラフ指定クエリ調査

FROM句で複数のグラフを指定していたクエリを、Graphキーワードを用いたクエリに書き換えて問題がないか確認した。

結果


genome information スタンザ

元のクエリ

DEFINE sql:select-option "order"
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX insdc: <http://insdc.org/owl/>
PREFIX idorg: <http://rdf.identifiers.org/database/>
PREFIX idtax: <http://identifiers.org/taxonomy/>

SELECT  ?bioproject ?bioproject_id ?refseq_version ?desc ?replicon_type ?sequence_length
 count(?gene_locus_tag) as ?gene_cnt 
 count(?trna_locus_tag) as ?trna_cnt 
 count(?rrna_locus_tag) as ?rrna_cnt
 count(?other_locus_tag) as ?other_cnt 
WHERE 
{ 
  {
    GRAPH <http://togogenome.org/refseq/>
    {
      ?seq rdfs:seeAlso idtax:1148 ;
        rdfs:label ?desc ;
        rdfs:seeAlso ?bioproject ;
        insdc:sequence_version ?refseq_version ;
        insdc:sequence_length ?sequence_length ;
        rdfs:seeAlso ?refseq_link ;
        a ?so FILTER (?so =  obo:SO_0000340 || ?so = obo:SO_0000155) .
      ?bioproject a idorg:BioProject ;
        rdfs:label ?bioproject_id .
      ?refseq_link a idorg:RefSeq .
      {
        ?gene obo:so_part_of ?seq;
          a obo:SO_0000704 ;
          insdc:feature_locus_tag ?gene_locus_tag .
      }
      UNION
      {
        ?trna obo:so_part_of ?seq;
        a obo:SO_0000253 ;
        insdc:feature_locus_tag ?trna_locus_tag .
      }
      UNION
      {
        ?rrna obo:so_part_of ?seq;
          a obo:SO_0000252 ;
          insdc:feature_locus_tag ?rrna_locus_tag .
      }
      UNION
      {
        ?other obo:so_part_of ?seq;
          a ?obotype;
          insdc:feature_locus_tag ?other_locus_tag 
           FILTER (?obotype != obo:SO_0000704 &&  ?obotype != obo:SO_0000253 && ?obotype != obo:SO_0000252)  .
      }
    }
  }
  {
    GRAPH <http://togogenome.org/so/>
    {
      ?so rdfs:label ?replicon_type .
    }
  }
}

gene_attributes スタンザ

元のクエリ

DEFINE sql:select-option "order"
PREFIX obo:    <http://purl.obolibrary.org/obo/>
PREFIX faldo:  <http://biohackathon.org/resource/faldo#>
PREFIX idorg:  <http://rdf.identifiers.org/database/>
PREFIX insdc:  <http://insdc.org/owl/>
 
SELECT distinct ?locus_tag ?gene_type_label ?gene_symbol ?seq_label ?seq_type_label ?refseq_label ?organism ?ncbi_taxid 
  ?faldo_begin_position ?faldo_end_position ?stand
  concat("http://togows.dbcls.jp/entry/nucleotide/", replace(?refseq_label,"RefSeq:",""),"/seq/", ?insdc_location) as ?seqence
WHERE 
{
  values ?locus_tag {"slr0473"}
  values ?seq_type  { obo:SO_0000340 obo:SO_0000155 }
  values ?gene_type { obo:SO_0000704 obo:SO_0000252 obo:SO_0000253}
  values ?faldo_stand_type {faldo:ForwardStrandPosition faldo:ReverseStrandPosition}
  {
    GRAPH <http://togogenome.org/refseq/>
    {
      ?gene insdc:feature_locus_tag ?locus_tag ;
        a ?gene_type ;
        obo:so_part_of ?seq .
      OPTIONAL {?gene insdc:feature_gene ?gene_symbol.}
      ?seq rdfs:label ?seq_label ;
        a ?seq_type ;
        rdfs:seeAlso ?refseq ;
        insdc:source_organism ?organism ;
        rdfs:seeAlso ?taxonomy .
      ?refseq a idorg:RefSeq ;
        rdfs:label ?refseq_label .
      ?taxonomy a idorg:Taxonomy ;
        rdfs:label ?ncbi_taxid .
      ?gene faldo:location ?faldo .
      ?faldo insdc:location ?insdc_location ;
        faldo:begin ?faldo_begin ;
        faldo:end ?faldo_end .
      ?faldo_begin faldo:position ?faldo_begin_position ;
        rdf:type ?faldo_stand_type .
      ?faldo_end faldo:position ?faldo_end_position.
    }
  }
  {
    GRAPH <http://togogenome.org/faldo/>
    {
      ?faldo_stand_type rdfs:label ?stand
    }
  }
  {
    GRAPH <http://togogenome.org/so/>
    {
      ?seq_type rdfs:label ?seq_type_label .
      ?gene_type rdfs:label ?gene_type_label .
    }
  }
}

gene_sequence スタンザ

元のクエリ

PREFIX obo:    <http://purl.obolibrary.org/obo/>
PREFIX faldo:  <http://biohackathon.org/resource/faldo#>
PREFIX idorg:  <http://rdf.identifiers.org/database/>
PREFIX insdc:  <http://insdc.org/owl/>
 
SELECT distinct ?locus_tag 
  concat("http://togows.dbcls.jp/entry/nucleotide/", replace(?refseq_label,"RefSeq:",""),"/seq/", ?insdc_location) as ?seqence
WHERE
{
  values ?locus_tag {"all1455"}
  values ?seq_type  { obo:SO_0000340 obo:SO_0000155 }
  values ?gene_type { obo:SO_0000704 obo:SO_0000252 obo:SO_0000253}
  
  {
    GRAPH <http://togogenome.org/refseq/>
    {
      ?gene insdc:feature_locus_tag ?locus_tag ;
        a ?gene_type ;
        obo:so_part_of ?seq .
      ?seq a ?seq_type ;
        rdfs:seeAlso ?refseq .
      ?refseq a idorg:RefSeq ;
        rdfs:label ?refseq_label .
      ?gene faldo:location ?faldo .
      ?faldo insdc:location ?insdc_location .
    }
  }
}

taxon_cross_referencee スタンザ

元のクエリ

PREFIX mccv: <http://purl.jp/bio/01/mccv#>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX  insdc: <http://insdc.org/owl/>
PREFIX  idtax: <http://identifiers.org/taxonomy/>

SELECT ?label ?link

WHERE
{
  {
    GRAPH <http://togogenome.org/gold/>
    {
      SELECT REPLACE(str(?gold),"http://genomesonline.org/cgi-bin/GOLD/GOLDCards.cgi\\?goldstamp=", "GOLD:" ) as ?label ?gold as ?link 
      WHERE 
      {
        ?gold mccv:MCCV_000020 idtax:1148 .
      }
    }
  }
  UNION
  { 
    GRAPH <http://togogenome.org/refseq/>
    {
      SELECT DISTINCT ?label ?xref as ?link
      WHERE
      {
        values ?tax_id { idtax:1148 }
        values ?so { obo:SO_0000340 obo:SO_0000155 }
        ?seq rdfs:seeAlso ?tax_id .
        ?seq a ?so .
        ?seq rdfs:seeAlso ?xref .
        ?xref rdfs:label ?label .
      } ORDER BY ?label
    }
  }
}

metagenome_sample_list スタンザ

元のクエリ

※置き換えに成功していない

副問い合わせ内でのGRAPH指定はエラーになる

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX srs: <http://www.ncbi.nlm.nih.gov/sra/>
PREFIX meo: <http://purl.jp/bio/11/meo/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT ?meo_id ?srs_id

WHERE
{
  {
    SELECT DISTINCT ?srs_id
    WHERE
    {
      {
        GRAPH <http://togogenome.org/meov0_5test/>
        {
          ?meo_id rdfs:subClassOf* meo:MEO_0000054 .
        }
      }
      {
        GRAPH <http://microbedb.jp/metagenome_mapping/>
        {
          ?srs_id meo:MEO_0000441 "metagenome" .
          ?srs_id meo:MEO_0000437 ?meo_id .
        }
      }
    }
  }
}

グラフ名でフィルタを掛けると、何故か値が返ってこない

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX srs: <http://www.ncbi.nlm.nih.gov/sra/>
PREFIX meo: <http://purl.jp/bio/11/meo/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

SELECT ?srs_id 
WHERE
{
 {
    GRAPH ?g 
    {
      ?meo_id rdfs:subClassOf meo:MEO_0000031 .
      ?srs_id meo:MEO_0000441 "metagenome" .
      ?srs_id meo:MEO_0000437 ?meo_id .
    }
    FILTER (?g = <http://togogenome.org/meov0_5test/> || ?g = <http://microbedb.jp/metagenome_mapping/>) 
 }
}

pathogen_info スタンザ

元のクエリ

PREFIX pdo: <http://purl.jp/bio/11/pdo/> 
PREFIX ncbitaxon: <http://purl.obolibrary.org/obo/>

SELECT ?tax_id ?bacterialName (GROUP_CONCAT(?diseaseName; SEPARATOR = ", ") AS ?diseaseNameSet) ?infectiousType ?strainType 
WHERE
{
  {
    GRAPH <http://togogenome.org/ncbitaxon/>
    {
      { ?tax_id rdfs:subClassOf+ ncbitaxon:NCBITaxon_1763 }
      UNION
      { ?tax_id rdfs:label ?o FILTER (?tax_id = ncbitaxon:NCBITaxon_1763) }
      ?tax_id rdfs:label ?bacterialName .
    }
  }
  {
    GRAPH <http://microbedb.jp/pdo_csso_mapping/>
    {
      ?tax_id pdo:isAssociatedTo ?blank .
      ?blank ?p ?disease FILTER (?p IN(pdo:mayCaused, pdo:isRelatedTo)).
      OPTIONAL { ?tax_id pdo:isAssociatedTo/pdo:infectiousType ?infectiousType . }
      OPTIONAL { ?tax_id pdo:isAssociatedTo/pdo:strainType ?strainType . }
    }
  }
  {
    GRAPH <http://microbedb.jp/pdo/>
    {
      ?disease rdfs:label ?diseaseName .
    }
  }
}

organism plot スタンザ

元のクエリ

元クエリに比べて検索速度が著しく低下(2秒→80秒)
このケースではmpoのOPTIONALキーワードがボトルネックになっている
FROM NAMEDキーワードやDEFINE sql:select-option "order"の有無では速度改善はみられない

DEFINE sql:select-option "order"
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX meo: <http://purl.jp/bio/11/meo/>
PREFIX mccv: <http://purl.jp/bio/01/mccv#>
PREFIX mpo:<http://purl.jp/bio/01/mpo#>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX insdc: <http://insdc.org/owl/>
PREFIX idorg:<http://rdf.identifiers.org/database/>

SELECT  
  ?tax ?organism_name ?bioProject ?genome_length 
  (sql:GROUP_DIGEST (?cell_shape_label, ', ', 1000, 1)) AS ?cell_shape_label
  (sql:GROUP_DIGEST (?temp_range_label, ', ', 1000, 1)) AS ?temp_range_label
  (sql:GROUP_DIGEST (?oxy_req_label, ', ', 1000, 1)) AS ?oxy_req_label
  ?opt_temp ?min_temp ?max_temp ?opt_ph ?min_ph ?max_ph
{
  {
    GRAPH <http://togogenome.org/refseq/>
    {
      SELECT  ?tax ?bioProject SUM(?seq_len) AS ?genome_length IRI(REPLACE(str(?tax),"http://identifiers.org/taxonomy/","http://purl.obolibrary.org/obo/NCBITaxon_")) AS ?taxon
      FROM <http://togogenome.org/refseq/>
      WHERE
      {
        ?tax rdf:type idorg:Taxonomy .
        ?seq rdfs:seeAlso ?tax ;
        rdf:type ?obo_type FILTER(?obo_type IN (obo:SO_0000340, obo:SO_0000155 )).
        ?seq insdc:sequence_length ?seq_len ;
          rdfs:seeAlso ?bioProject.
        ?bioProject rdf:type idorg:BioProject .
      } GROUP BY ?tax  ?bioProject
    }
  }
  {
    GRAPH <http://togogenome.org/mpo/>
    {
      OPTIONAL { ?tax mpo:MPO_10001/rdfs:label ?cell_shape_label  FILTER (lang(?cell_shape_label) = "en") .}
      OPTIONAL { ?tax mpo:MPO_10003/rdfs:label ?temp_range_label  FILTER (lang(?temp_range_label) = "en") .}
      OPTIONAL { ?tax mpo:MPO_10002/rdfs:label ?oxy_req_label FILTER (lang(?oxy_req_label) = "en") .}
      OPTIONAL { ?tax mpo:MPO_10009 ?opt_temp .}
      OPTIONAL { ?tax mpo:MPO_10010 ?min_temp .}
      OPTIONAL { ?tax mpo:MPO_10011 ?max_temp .}
      OPTIONAL { ?tax mpo:MPO_10005 ?opt_ph .}
      OPTIONAL { ?tax mpo:MPO_10006 ?min_ph .}
      OPTIONAL { ?tax mpo:MPO_10007 ?max_ph .}
    }
  }
  {
    GRAPH <http://togogenome.org/ncbitaxon/>
    {
      ?taxon rdfs:label ?organism_name
    }
  }
} GROUP BY ?tax ?organism_name ?genome_length  ?bioProject  ?opt_temp ?min_temp ?max_temp ?opt_ph ?min_ph ?max_ph
個人用ツール