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>