BH12.12/SPARQLthon3/MBGD

提供:TogoWiki

移動: 案内, 検索

SPARQLthon3

目次

MBGDのエンドポイント

取り組み内容

property pathの利用(OWLIM)

PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

select $gtpsId
where {
    $cluster mbgd:gene "rpoB".
    $cluster mbgd:member $domain.
    $domain mbgd:domainOf $gene.
    $gene mbgd:gtpsId $gtpsId.
}

PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

select $gtpsId
where {
    $cluster mbgd:gene "rpoB".
    $cluster mbgd:member/mbgd:domainOf/mbgd:gtpsId $gtpsId .
}

PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

select $gtpsId
where {
    "rpoB" ^mbgd:gene/mbgd:member/mbgd:domainOf/mbgd:gtpsId $gtpsId .
}

様々なgene IDを受け付けるSPARQL

遺伝子として、UniProt IDも、GTPS IDも受け付けて、オーソログを返すには

  • property pathを利用 (OWLIM)
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

construct {
    $cluster $p $o.
} where {
    $gene mbgd:uniprotId|mbgd:gtpsId $ARG0 .
    $cluster mbgd:member/mbgd:domainOf $gene .
    $cluster $p $o.
}
  • 様々な条件を、UNIONでつなぐ(UniProt ID, GTPS ID, MBGD IDを受け付ける)
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

construct {
    $cluster $p $o.
} where {
    {
	$gene mbgd:uniprotId $ARG0 .
	$domain mbgd:domainOf $gene .
    }
    union
    {
	$gene mbgd:gtpsId $ARG0 .
	$domain mbgd:domainOf $gene .
    }
    union
    {
	$domain mbgd:domainOf $ARG0 .
    }
    $cluster mbgd:member $domain .
    $cluster $p $o.
}
  • 様々なgene IDをまとめて扱えるようにスーパープロパティを作って、利用する
define input:inference "http://localhost:8890/DAV/owl/rule_set"
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>

construct {
    $cluster $p $o.
} where {
    $gene mbgd:externalId $ARG0 .
    $domain mbgd:domainOf $gene .
    $cluster mbgd:member $domain .
    $cluster $p $o.
}
  • owl:sameAs で同じものをつなげておいて、推論検索する

Virtuosoの場合は、クエリ先頭に以下を記述して、推論を有効にする

define input:same-as "yes"

Taxonomyの利用

@prefix tax: <http://purl.org/obo/owl/NCBITaxon#> .

<http://mbgd.genome.ad.jp:8036/rdf/genome/eco> a tax:NCBITaxon_511145 .
...
  • 生物種を任意のrankにマップするには
    • taxonomyのオントロジーを利用して、推論させれば、任意のrankにマップできる
define input:inference "http://localhost:8890/DAV/owl/rule_set"
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>
PREFIX tax: <http://purl.org/obo/owl/NCBITaxon#>

select $taxonomy_label
where {
    <http://mbgd.genome.ad.jp:8036/rdf/genome/ath> a $taxonomy .
    
    $taxonomy rdfs:label $taxonomy_label .

    $taxonomy <has_rank> tax:phylum .
}
  • 生物種の頻度分布を取得するSPARQL
    • 遺伝子"rpoB"のオーソログクラスターのメンバーについて、生物種をphylumレベルにマップし、頻度順にソートして出力
define input:inference "http://localhost:8890/DAV/owl/rule_set"
PREFIX mbgd: <http://mbgd.genome.ad.jp:8036/rdf/rdf-schema#>
PREFIX tax: <http://purl.org/obo/owl/NCBITaxon#>

select $taxonomy_label count($taxonomy_label) as $count
where {
    $cluster mbgd:gene "rpoB".
    $cluster mbgd:member $domain.
    $domain mbgd:domainOf $gene.
    $gene mbgd:geneOf $genome .

    $genome a $taxonomy .
    $taxonomy rdfs:label $taxonomy_label .
    $taxonomy <has_rank> tax:phylum .
}
order by desc($count)

http://sparqlbin.com/#bffc2302924fb047cb7ebb11168bd35c

Emacs sparqling-modeの作成

  • shell-script-modeから派生
  •  ?で始まる文字列を変数として認識
  • SPARQLのキーワードを認識

sparqling-mode.el

(define-derived-mode sparqling-mode shell-script-mode "Sparqling")
(font-lock-add-keywords
 'sparqling-mode
 '(

   ("\\?\\(\\w+\\)" . (1 font-lock-variable-name-face nil t))
   ("\\$\\(ARG\\w+\\)" . (1 font-lock-function-name-face nil t))
   ("\\$\\(\\w+\\)" . (1 font-lock-variable-name-face nil t))

   ("select" . font-lock-keyword-face)
   ("construct" . font-lock-keyword-face)
   ("where" . font-lock-keyword-face)
   ("service" . font-lock-keyword-face)

 ))

上記ファイルをEmacs Lispのパスに入れ、下記を.emacsに追加

(autoload 'sparqling-mode "sparqling-mode" "Mode for editing SPARQL files" t)
(setq auto-mode-alist
      (cons (cons "\\.rq$" 'sparqling-mode) auto-mode-alist))
個人用ツール