rdflibを使って日本語を含むRDFを可視化

rdflibはpythonRDFを扱うライブラリの一つ.

実はこのライブラリをインストールすると,RDFからグラフ構造を記述する専用言語であるDOT言語へと変換するプログラムrdf2dotも同時にインストールされる.

DOT言語はGraphvizで多種多様な形式で出力することが出来る. 以下のページを見れば大体のイメージができると思う. Gvizの目次 - Rubyの世界からGraphvizの世界にこんにちは!

まとめると以下の手順でRDFで記述されたグラフを任意のフォーマットへ変換し可視化することが出来る.

  • rdf2dotでRDFをDOT言語へ変換
  • GraphvizでDOT言語からグラフを各種フォーマットに出力

テスト用RDF

以下のhoge.rdfがあったと仮定しよう

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:host="http://localhost/">

<rdf:Description rdf:about="http://localhost/ほげ1">
<host:value>100</host:value>
</rdf:Description>

<rdf:Description rdf:about="http://localhost/ほげ2">
<host:value>200</host:value>
</rdf:Description>

<rdf:Description rdf:about="http://localhost/fuga">
<host:link rdf:resource="http://localhost/ほげ1"></host:link>
<host:link rdf:resource="http://localhost/ほげ2"></host:link>
</rdf:Description>

</rdf:RDF>

RDFからDOT言語へ変換

rdf2dot.py [-f ] files... Read RDF files given on STDOUT, writes a graph of the RDFS schema in DOT language to stdout -f specifies parser to use, if not given,

ヘルプでは標準出力で出力しか対応されていないが,標準出力だと日本語を含む場合はエラーとなってしまう. ただ,ソースコードを読むと,ファイル出力に対応しているし,その場合はユニコード文字列に対応しているようだ. 以下のように-oオプションで出力ファイルを指定することで,日本語を含むRDFも問題なく変換できる.

rdf2dot -o hoge.dot hoge.rdf

DOT言語からpngへ変換

dot -Tpng -o hoge.png hoge.dot

PNGの出力画像

以下の様な日本語を含むグラフがpng画像として出力される

f:id:kg86:20150112011936p:plain