BH16.12/SuperFastRDFSearch

提供:TogoWiki

2016年12月28日 (水) 15:58時点におけるYayamamo (トーク | 投稿記録)による版
移動: 案内, 検索

目次

高速RDF検索サービス

背景

RDFデータの検索にはSPARQLが利用できるが、SPARQLエンドポイントの所在が所与である必要がある。 また、あるURIが与えられたときに、当該URIの示す概念に関する情報を取得するには、Linked Dataの原則に従って情報提供がなされていれば、HTTP GETすることで得られる。 しかし、当該URIを含むデータセットの提供主体以外の第三者によるデータセット内から当該URIが参照されているときに、その情報を取得することはできない。 そこで、URIやリテラルをキーとして、それを含むエンドポイントの一覧が得られるサービスを提供することで、これらの問題に対応する。

準備

以下のリソースを使用する。

  • N-Triple形式のRDFデータセット
  • Perl (RDF::Trineモジュールを利用)
  • Sedueflex (超高速検索エンジン)

結果例

AllieのRDFデータセットを対象として試験的に立ち上げ。

以下のように動作する。

$ echo 'Specific pathogen' | ./search_allieRDF.pl
allieRDF        O       pLiteral        Specific pathogen Free
allieRDF        O       pLiteral        Specific pathogen free
allieRDF        O       pLiteral        Specific pathogen-free
allieRDF        O       pLiteral        Specific pathogene-free
$ echo '2980434' | ./search_allieRDF.rb 
allieRDF        S       URI     http://purl.org/allie/id/pair/2980434   
allieRDF        S       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
allieRDF        S       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/2980434
allieRDF        O       URI     http://purl.org/allie/id/pair/2980434   
allieRDF        O       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
allieRDF        O       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/2980434
$ echo '2980434' | ./search_allieRDF.pl 
allieRDF        S       URI     http://purl.org/allie/id/pair/2980434
allieRDF        S       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
allieRDF        S       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/2980434
allieRDF        O       URI     http://purl.org/allie/id/pair/2980434
allieRDF        O       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
allieRDF        O       URI     http://togows.dbcls.jp/entry/ncbi-pubmed/2980434

現時点ではPerlの低レベルファイルIOの問題(utf8周り)?がありそうです。回避方法は他の言語での実装か? → 問題ないことを確認( 12/28 )

$ grep 2980434 allie_rdf_so_unique.txt
        0       1       http://purl.org/allie/id/pair/2980434
        0       1       http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
        0       1       http://togows.dbcls.jp/entry/ncbi-pubmed/2980434
        2       1       http://purl.org/allie/id/pair/2980434
        2       1       http://togows.dbcls.jp/entry/ncbi-pubmed/22980434
        2       1       http://togows.dbcls.jp/entry/ncbi-pubmed/2980434

結果はタブ区切りの行志向で、第一列はエンドポイントを示すラベルで、続いて、トリプルのどの位置であるかを示す文字(S:主語、P:述語、O:目的語、ただし今回は述語は検索対象外)、URIかリテラル(型付きリテラル/プレインリテラルの違いを含む)、そして実際にマッチしたRDFタームの順で表示される。

検索対象のRDFターム数は33,460,464で、「レセプター」をキーとして初めて検索した場合、結果は813あり、timeコマンドで得られる値は以下の通り。

0.235u 0.033s 0:00.28 92.8%     0+0k 0+0io 0pf+0w

なお、現時点ではUTF8へ未対応のため、一部文字化けが生じる場合がある。

個人用ツール