SPARQLthon17/Metabolo Metadata
提供:TogoWiki
目次 |
メタボロミクスの実験メタデータのRDF化
メタボロミクスの実験データ(サンプル内の代謝産物プロファイリングデータ)は、1)生データのレポジトリ、2)プロファイルデータの閲覧・配布DB、3)マスフラグメントのリファレンスライブラリなど、様々な用途に使われる。これらのデータリソースを活用する上で、そのデータを取得した複雑な実験方法・条件の情報(メタデータ)は必須であり、メタデータをいかに使いやすく提供するかは、重要な課題と考える。
メタボロ統合Gでは、メタデータを一元管理し複数サイトでシェアできる、専用のデータベースシステムMetabolonoteを開発してきた。このシステムはSemantic MediaWikiをベースに開発されているので、メタデータをRDFとして提供するための一応の機能は実装されている。今回は、それらの機能がどれだけ実用的に使えるかを調査する。
担当:櫻井
調査結果
出力されるRDFの特徴
主語 | SemanticMediaWikiのページURI |
---|---|
述語 | ページに設定したPropertyページのURI |
目的語 | Propertyの値 |
としてRDFが作成される。
ページ名は、システム上の安全策のため、URIリゾルバーというものを介した表記になる。名前空間を示すコロン「:」は「-3A」と表記される。
例)http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/SE1-3A/
プロパティー情報のほかに、名前空間のID、最終更新日、なども出力される。
RDF/XML形式で出力される。
こんな感じ
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:swivt="http://semantic-mediawiki.org/swivt/1.0#" xmlns:wiki="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/" xmlns:property="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3A"> <owl:Ontology rdf:about="http://***.***.***.***/metabolonote/index.php/特別:RDFエクスポート/SE1:/"> <swivt:creationDate rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2014-02-18T15:08:16 09:00</swivt:creationDate> <owl:imports rdf:resource="http://semantic-mediawiki.org/swivt/1.0"/> </owl:Ontology> <swivt:Subject rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/SE1-3A/"> <rdfs:label>SE1:/</rdfs:label> <swivt:page rdf:resource="http://***.***.***.***/metabolonote/index.php/SE1:/"/> <rdfs:isDefinedBy rdf:resource="http://***.***.***.***/metabolonote/index.php/特別:RDFエクスポート/SE1:/"/> <swivt:wikiNamespace rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">200</swivt:wikiNamespace> <property:SE_Authors rdf:datatype="http://www.w3.org/2001/XMLSchema#string"> Takeshi Ara, Ryosuke Sasaki, Mitsuo Enomoto, Nozomu Sakurai, Hideyuki Suzuki, Daisuke Shibata, Kazusa DNA Research Institute </property:SE_Authors> <property:SE_Comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">version 6</property:SE_Comment> <property:SE_Description rdf:datatype="http://www.w3.org/2001/XMLSchema#string"> Investigation of Arabidopsis thaliana leaf metabolites. 6 replicates data are examined for each sample. </property:SE_Description> <property:SE_ID rdf:datatype="http://www.w3.org/2001/XMLSchema#string">SE1</property:SE_ID> <property:SE_Reference rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Direct Submittion</property:SE_Reference> <property:SE_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Arabidopsis thaliana leaf metabolite analysis</property:SE_Title> <swivt:wikiPageModificationDate rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2014-02-18T02:45:02Z</swivt:wikiPageModificationDate> <property:Modification_date-23aux rdf:datatype="http://www.w3.org/2001/XMLSchema#double">2456706.6146065</property:Modification_date-23aux> <swivt:wikiPageSortKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string">/</swivt:wikiPageSortKey> </swivt:Subject> <owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#creationDate"/> <owl:ObjectProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#page"/> <owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiNamespace"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_Authors"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_Comment"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_Description"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_ID"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_Reference"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3ASE_Title"/> <owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiPageModificationDate"/> <owl:DatatypeProperty rdf:about="http://***.***.***.***/metabolonote/index.php/特別:URIリゾルバー/Property-3AModification_date-23aux"/> <owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiPageSortKey"/> <!-- Created by Semantic MediaWiki, http://semantic-mediawiki.org/ --> </rdf:RDF>
(1)ウェブGUIを介したRDF出力機能
「Special Pages」→「Export pages to RDF」では、ページ名を入力(複数可)すると、そのページに設定されたプロパティーの情報がRDFとして出力される。
(短所)
・全ページを出力するには、全ページ名の一覧表が必要。
・関連するサブページを全部出力することなどはできない。
2)メンテナンスコマンドを使った出力
SemanticMediaWikiのメンテナンスコマンド「SMW_dumpRDF.php」で、コマンドラインベースでRDFを出力できる
(短所)
デフォルトの名前空間以外は出力できないみたい。
(3)Virtuosoとの連携
SemanticMediaWikiのデータストアとして、MySQLと並行してトリプルストアにデータを書き込んでゆくことができる。
こちらを参考に、オープンソース版Virtuoso 6.01.3127を設置したローカルlinuxサーバーでテストした。
セットアップ上の問題
※上記ページでLocalSettings.phpを書き換え後ブラウザでSemanticMediaWikiにアクセスすると、ページの下部に以下のようなエラーが出る。
Unexpected non-MediaWiki exception encountered, of type "SMWSparqlDatabaseError" exception 'SMWSparqlDatabaseError' with message 'A SPARQL query error has occurred Query: PREFIX wiki: <http://***.***.***.***/metabolonote/index.php/%E7%89%B9%E5%88%A5:URI%E3%83%AA%E3%82%BE%E3%83%AB%E3%83%90%E3%83%BC/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX swivt: <http://semantic-mediawiki.org/swivt/1.0#> PREFIX property: <http://***.***.***.***/metabolonote/index.php/%E7%89%B9%E5%88%A5:URI%E3%83%AA%E3%82%BE%E3%83%AB%E3%83%90%E3%83%BC/Property-3A> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> DELETE FROM <http://***.***.***.***:8890/mn> { ?s ?p ?o } WHERE { ?s swivt:masterPage property:D_ID . ?s ?p ?o } Error: Query refused
これはパーミッションの問題。以下のようにすることで「一応」回避はできた。ただしセキュリティーの問題上、公開用エンドポイントに対しては、通常このようなUPDATE権限は与えるべきではない。(by 岡別府さん調べ)
・コンダクター画面の「User Accounts」で「SPARQL」ユーザーを「Edit」。
・「Account Roles」の「Available」から「SPARQL_UPDATE」を選択し、「>>」を押して「Selected」へ移動。
・「Save」ボタンを押して設定保存。
(長所)
リアルタイムでRDFを作ってくれるのでラク
(短所)
エンドポイントにUPDATEの権限を与えるので、つくらせたRDFをそのまま公開するには適さない。もっと細かいユーザー権限管理ができるかどうかについては、今後の調査が必要。
結論
MySQLのデータから使いやすいRDFを書き起こすものを独自に作り、出力したデータを定期的にトリプルストアに入れてゆくのがよさそう。
(理由)
・メタデータの階層関係が出力できない。
・RDFがきれいじゃない。
メタデータを示すURIとして
http://***.***.***.***/metabolonote/SE1:/S01/M01
を使いたいのに、
http://***.***.***.***/metabolonote/Special:URIResolver/SE1-3A/S01/M01
のように書かなければいけない、とか。
・余分な情報がたくさんついてくる。
RDFの構造理解の妨げになりそう。
・細かな拡張書式に対応できない。