BH12.12/SPARQLthon3/MBGD
提供:TogoWiki
(版間での差分)
(→気になること) |
|||
1行: | 1行: | ||
- | |||
- | |||
- | |||
[/mw/index.php/BH12.12/SPARQLthon3 SPARQLthon3] | [/mw/index.php/BH12.12/SPARQLthon3 SPARQLthon3] | ||
2015年6月28日 (日) 19:22時点における最新版
目次 |
MBGDのエンドポイント
- (非公開) OWLIM-Lite/Sesame
- (非公開) 4store
- http://dcluster.nibb.ac.jp:8000/test/ (Webブラウザ)
- http://dcluster.nibb.ac.jp:8000/sparql/ (REST API)
- 動作未確認
取り組み内容
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の利用
- 参照
- taxonomyの階層構造、ncbi_taxonomy.owlをダウンロードしてVirtuosoにロード
- なお、taxonomy IDを、genomeのtypeとして付加しておく
@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))