BH13.13/TogoStanza
提供:TogoWiki
目次 |
ハンズオン(2014/1/29)
環境構築
- Windows の場合
Heroku Toolbelt をインストールするのが簡単だそう。
- Mac の場合
Ruby 拡張ライブラリのコンパイルで下記のようなエラーが出た方は xcode を追加してください
mkmf.rb can't find header files for ruby
http://qiita.com/yuku_t/items/30015dba2b6497b80074
xcode-select --install
このあと一度 XCode を起動してライセンスに同意する必要があるようです(もしくはターミナルで sudo gcc -v などを実行すると agree と入力させられて OK になります)。
TogoStanza server のインストール
sudo gem install togostanza
エンドポイントURL
http://ep.dbcls.jp/sparql-bh1313
サンプルコード
- stanza.rb
1行目は作成したスタンザ名に依存するので、2行目からコピペしてください
class NanogenomesizeStanza < TogoStanza::Stanza::Base property :tax_info do |tax_id| query('http://ep.dbcls.jp/sparql-bh1313', <<-SPARQL.strip_heredoc) SELECT ?predicate ?obj FROM <http://togogenome.org/graph/taxonomy/> WHERE { <http://identifiers.org/taxonomy/#{tax_id}> ?predicate ?obj } SPARQL end end
- template.hbs
<!DOCTYPE html> <html> <head> <title>Nanogenomesize</title> {{#each css_uri}} <link rel="stylesheet" href="{{this}}" /> {{/each}} <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.2.2/bootstrap.min.js"></script> {{adjust_iframe_height_script}} </head> <body> <table class='table'> <tbody> <tr> <th>predicate</th> <th>object</th> </tr> {{#each tax_info}} <tr> <td>{{predicate}}</td> <td>{{obj}}</td> </tr> {{/each}} </tbody> </table> </body> </html>
チュートリアルコード(訂正)
SPARQLを記載する例の訂正。
class MyAwesomeStanza < TogoStanza::Stanza::Base property :features do |gene_id| query('http://ep.dbcls.jp/sparql-bh1313', <<-SPARQL.strip_heredoc) PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX insdc: <http://ddbj.nig.ac.jp/ontologies/sequence#> SELECT DISTINCT ?feature_product ?feature_gene ?feature_gene_synonym WHERE { ?s rdfs:label "#{gene_id}" . ?s insdc:product ?feature_product . OPTIONAL { ?s insdc:gene ?feature_gene . ?s insdc:gene_synonym ?feature_gene_synonym . } } SPARQL end end
ナノスタンザ
nano_genome_size_stanza
- SPARQL
PREFIX ddbj:<http://ddbj.nig.ac.jp/ontologies/sequence#> PREFIX obo:<http://purl.obolibrary.org/obo/> PREFIX taxid:<http://identifiers.org/taxonomy/> SELECT (SUM(?length) AS ?genome_length) FROM <http://togogenome.org/graph/refseq/> WHERE { ?seq ddbj:sequence_length ?length . ?seq a ?type FILTER ( ?type IN(obo:SO_0000155, obo:SO_0000340)) . ?seq rdfs:seeAlso taxid:103690 . }
nano_gene_number_stanza
- SPARQL
PREFIX tgstat:<http://togogenome.org/stats/> PREFIX taxid:<http://identifiers.org/taxonomy/> SELECT ?gene_num ?rrna_num ?trna_num FROM <http://togogenome.org/graph/stats/> WHERE { taxid:103690 tgstat:gene ?gene_num ; tgstat:rrna ?rrna_num ; tgstat:trna ?trna_num . }
Tips? / Bad Know How ?
- グラフ名や、URIのPREFIX指定の際のURI記述は正確に。ブラウザではないので、一文字違っても動かない。-skwsm
- SPARQL の変数名で、?p を使うと(しばしばpredicateの変数として使う気がしますが)、どうもうまくいかない気がします(テンプレートでは p という表記になるあら、Ruby の予約語とぶつかる?)。要調査。-skwsm
- query メソッドの変数を、SPARQLヒアドキュメントで参照するとき、"#{gene_id}" のように、引用符で囲むとうまくいきません。-skwsm
- 開発時は、http://server_name:9292/stanza/stanza_name?param1=aaa¶m2=bbb でアクセスできるが、実際に埋め込むdivタグには 「data-stanza-param1=" aaa" 」「data-stanza-param2=" bbb" 」の形で渡してやる必要がある。help.mdファイル参照 - Hiroyo
- 埋め込み時のウィンドウサイズを決めているのは、template.hbs の adjust_iframe_height_script プロパティ -Hiroyo
- 埋め込み時には某.jsファイルを呼んでおく必要がある?? 要確認 -Hiroyo
- 結果がカラな時のエラーは Input/output error - <STDERR>