オントロジーエディタ Protégé を使ってみる
本記事では、デスクトップ版の Protégé のセットアップと、オントロジーの可視化、推論などの使い方を簡単に見ていきます。
【目次】
[1]はじめに
Protégé はスタンフォード大学で開発されているオープンソースのオントロジーエディタです。
- Protégé
- Welcome to the Protégé wiki!
- Protégé Project (GitHub)
Protégé を使えば、Web オントロジー言語である OWL(Web Ontology Language)を対話的かつ視覚的に扱うことができ、HermiT や Pellet などの推論も利用できます。
Protégé は大きくWeb版とデスクトップ版がありますが、本記事ではデスクトップ版を見ていきます。
デスクトップ版には Web版のようなコラボレーション機能はありませんが、オントロジーエディタとしての機能面はWeb版より充実していると思います。
記事『Pythonでオントロジー指向プログラミング(Ontologies with Python: Programming OWL 2.0 Ontologies with Python and Owlready2)』で紹介した本では、Owlready2 の説明の前にデスクトップ版 Protégé を使ってオントロジーを作成するところから始まります。
Protégé を使わず OWL を作成することはできますが(テキストエディタでも作成できますが)、エンティティを様々な観点から見たり、可視化したり、オントロジーをマージしたり、検索したり等々、オントロジーの作成や管理には必須のツールだと思います。
そこで本記事では、デスクトップ版の Protégé のセットアップと、オントロジーの可視化、推論などの使い方を簡単に見ていきます。
[2]Protégé Desktop のセットアップ
Protégé Desktop は Java で作られており、Mac OS X、Windows、Linuxで動作します。
各プラットフォームごとのインストール手順は以下にあります。
本記事では、記事『Owlready2 を Colaboratory と Ubuntu で利用する』に続いて、Ubuntu 環境にインストールする手順を見ておきます。
(1)Ubuntu でのインストール手順
インストールといっても、キットをダウンロードして展開するだけですので簡単です。
以下のページからキットをダウンロードして、ファイルに保存します。
- Protégé Desktop
ダウンロードしたファイルは「Protege-5.X.X-linux.tar.gz」のように、バージョンとプラットフォーム名が入ったファイル名になっていると思います。
これを解凍します。
tar -zxvf Protege-5.X.X-linux.tar.gz
※Xはダウンロードされたファイル名で置き換えてください。
解凍したディレクトリ内に JRE(Java Runtime Environment)が含まれていますので、別途 JRE をインストールする必要はありません。
なお、解凍したディレクトリ内の内容を変更しなければ、配置先やディレクトリ名はお好みのものに変更可能です。
(2)起動確認
まずは起動することを確認します。
キットを展開したディレクトリには、「run.sh」というファイルがあります。これを用いて起動します。
. run.sh
※先頭のドットに注意してください。
起動したら以下のような画面が表示されます。
この状態は新規(空っぽ)のオントロジーです。
既存のオントロジーを利用する場合は、「File」メニューから「Open...」(ローカルファイルを指定)や「Open from URL...」(URIを指定)を利用してオントロジーをロードします。
「Open from URL...」メニューを選択すると、サンプルに利用できるオントロジーの URI も表示されていますので、これを使って動作確認が可能です。
(3)起動用ショートカットの作成
上記のようにターミナルからコマンドを実行して起動しても良いのですが、デスクトップにアイコンを作っておくと便利です。
アイコンを作る最もお手軽な方法は、デスクトップ画面から、「run.sh」ファイルを「Ctrlキー」と「Shiftキー」を押しながら、Desktop ディレクトリにドラッグ&ドロップすることかと思います。(これで Desktop ディレクトリにシンボリックリンクが作成されます。)
すると、デスクトップ画面にアイコンができます。このアイコンをクリックすると Protégé が起動すると思います。
しかし、この方法だとデスクトップに表示されるアイコン名が「run.sh」です。。。
アイコン名をお好みのものにしたい場合は、ドラッグ&ドロップではなく、ターミナルから ln コマンドを使って Desktop ディレクトリに run.sh に対するシンボリックリンクを作成します。
以下は Protege という名前のショートカットを作成する例です。
cd ~/Desktop
ln -s [Protegeのディレクトリ]/run.sh Protege
(参考)デスクトップエントリーファイルを作成する
シンボリックリンクによる方法はお手軽ですが、Ubuntu にプリインストールされているソフトウェアのように「アプリケーションを表示する」の一覧に表示されるわけではありません。
これが問題になる場合は、デスクトップエントリーファイルを作成します。
- Desktop Entry Specification
この仕様は複雑ですが(私も殆ど読んでおりませんが)、ネットで検索すると設定に関する情報が沢山ありますので、これらを参考に設定するとよいと思います。
[3]オントロジーの可視化ツール
小さなオントロジーを扱う場合は Protégé の各エンティティ画面で内容を確認できれば十分なことが多いですが、オントロジーの規模が大きくなるにつれて全体像を把握するのが難しくなります。
このような場合にオントロジーの可視化ツールが役立つことが多いと思います。
また、可視化ツールにもいろいろあり、フォーカスしている内容によって特徴があります。
Protégé はプラグインによって機能を拡張できることが特徴となっており、お好みの可視化ツールをプラグインすることができます。
ここでは簡単で恐縮ですが、オントロジーを可視化するプラグインを3つ紹介します。
(1)OWLViz
指定したクラスの階層を段階的に表示したり、推論結果の階層と比較したりすることができます。
利用方法は簡単で、Protégé の「Window / Tabs」メニューに、OWLViz がありますので、これを選択します。すると、メイン画面に「OWLViz」タブが追加されます。
ところで、OWLViz は Graphviz に依存しています。
- Graphviz
Graphviz がインストールされていない場合、クラスが重なって表示されると思います。この場合は、以下の手順で Graphviz をインストールします。
sudo apt update
sudo apt install graphviz
既存のオントロジーを利用した動作イメージをざっと見ておきます。
Protégé の「File / Open from URL..」を選択して「Enter or select a URI」画面が表示されたら、Bookmarks にある「http://protege.stanford.edu/ontologies/pizza/pizza.owl」を選択(または入力)して OK をクリックします。(よくサンプルで利用されるピザのオントロジです。)
オントロジが読み込まれたら、OWLViz タブをクリックします。そして、左側の Class hierarchy から任意のクラスを指定すると右側にクラス階層が表示されると思います。(以下は Pizza クラスを選択した例です。)
左側の Class hierarchy にあるクラス、または、右側の図のクラスをクリックすると、指定したクラスを中心に再描画されます。
右側の図のエリアには「Asserted hierarch」と「inferred hierarchy」タブがあります。後述の推論を実行しておくと、タブを切り替えることにより、推論前と推論後のクラス階層を見ることができます。
なお、左側の Class hierarchy の表示を推論前と推論後の状態に切り替えるには、プルダウンメニューで「Asserted」か「Inferred」を選択します。
(2)OntoGraf
OntoGraf は OWLViz と同様にインタラクティブにオントロジーのナビゲーションが可能ですが、見た目や動作などは異なります。
OntoGraf は Protégé にバンドルされており、OWLViz と違って外部コンポーネントへの依存もありませんので、とても簡単に利用することができます。
利用手順は「Window / Tabs」メニューに、OntoGraf がありますので、これを選択します。すると、メイン画面に「OntoGraf」タブが追加されます。
OntoGraf の動作イメージや使い方などについては、Yutubeにデモ動画がありますので、こちらを参照して下さい。
- OntoGraf Plugin Demonstration
(3)ProtégéVOWL
オントロジーを公開しているサイトでは、VOWLを利用した可視化をよく見かけます。
- VOWL: Visual Notation for OWL Ontologies
VOWLの主力?は WebVOWL のように思えますが、Protégé プラグインもあります。
- ProtégéVOWL: VOWL Plugin for Protégé
現時点ではベータ版だからかもしれませんが、Protégé にバンドルされていませんので、自分でインストールする必要があります。
とはいっても、インストールは拍子抜けするくらい?簡単です。
上記サイト(ProtégéVOWL: VOWL Plugin for Protégé)にインストール手順が書かれている通りなのですが、やることは、上記サイトからプラグインの JAR ファイルをダウンロードして Protégé の plugins ディレクトリにコピーするだけです。(Protégé が起動している場合は再起動します。)
すると 「Window / Tabs」メニューに、VOWL が表示されますので、これを選択すれば VOWL タブが追加されます。
VOWL は OWLViz や OntoGraf とはアプローチが異なりますので、どちらが用途に合っているかは別として、見た目はなかなか楽しいです(笑)。
以下は OWLViz と同様の手順でピザオントロジーを読み込んだときの VOWL タブの内容です。
[4]推論:Reasoner
OWL で知識表現する面白みの一つは推論にあると思います。推論を用いて新たなトリプルを生成したり、矛盾を検出したりできる知識表現が可能です。
Protégé は HermiT や Pellet などを利用して、記述論理にもとづく推論を簡単に利用できます。
ここでは推論の詳細には深入りしませんが、Protégé の推論機能の利用方法について見ておきます。
(1)推論の実行
Protégé には HermiT が組み込まれています。
推論を開始するには「Reasoner」メニューから Start reasoner を選択します。
実行すると「Reasoner」メニューの Stop reasoner が有効化されていますので、これを選択すると Reasoner が停止します。
と、これだけでは少し寂しいので、簡単な実行例を見ておきます。
以下は、Protégé の「File / Open from URL...」メニューで、「http://owl.man.ac.uk/2006/07/sssw/people.owl」を選択して、People Ontology をロードし、推論を実行した画面例です。
この画面例だと、個体「Daily Mirror」が「tabloid」クラスに属してると推論されていて、また、Nothingクラスに mad_cow クラスがあることから、mad_cow クラスに矛盾があることがわかります。
このオントロジーの推論に関する説明は以下を参考にしてください。
- People Ontology
(2)Pellet の利用
Python ライブラリの Owlready2 には、Reasoner として HermiT と Pellet が組み込まれています。
Protégé 5.5.0 では Pellet が組み込まれていませんので、Pellet を利用したい場合はプラグインのインストールが必要です。
以下の手順で簡単にインストールできます。
- 「File / Check for plugins...」メニューを選択します。
- 「Automatic Update」画面が表示されますので、この中にある「Pellet Reasoner Plug-in」を選択して「Install」ボタンをクリックします。
- Protégé を終了して、再起動します。
- 「Reasoner」メニューに、「Pellet」が表示されますので、これを選択することで HermiT と Pellet を切り替えることができます。
[5]その他
(1)Automatic Update の設定
Protégé を起動すると「Automatic Update」画面が表示されますが、これを止めたい場合は、画面下にある「Always check for Updates on startup.」のチェックを外して、「Not now」ボタンで閉じます。
プラグインをインストールしたい場合など、「Automatic Update」画面を表示したいときは「File / Check for plugins...」メニューを選択します。
(2)オートコンプリートの利用
Protégé ではクラスやプロパティをリストから選択して入力する方法も用意されていますが、クラス制約などの式を入力する(Class expression editorを利用する)ような場合は、既存のクラス名やプロパティ名などを入力する必要があります。
プログラミング言語を扱うエディタ(例えば、VSCode や Eclipseなど)では、タイプしていると自動的に候補が表示されてとても便利です。
Protégé でも、これと同様のオートコンプリート機能が装備されています。
候補を表示させたいとき、「Ctrl-space」で候補のリストが表示されます。
これは、Class expression editor に限らず、個体のプロパティを設定する場合にも利用できます。
- Protege Expression Editor
(3)エンティティのレンダリング設定
これは私がハマったことですが、既存の OWL ファイルを Protégé に読み込んだとき、クラスやプロパティなどのエンティティの表示は、IRI の名前部分ではなく、rdfs:label 等に記載されたアノテーションでした。
これは良い面もあるのですが、既存のエンティティ名を入力する際に IRI の名前部分ではなく、表示に利用される名称(rdfs:labelなど)を入力する必要があるなど、不便な場合もあります。(特に、空白を含んだ名称がある場合。)
エンティティの表示内容の切替は、エンティティのレンダリング設定で行えます。
- 「File / Preferences...」メニューをクリックして Preferences 画面が表示されたら、「Renderer」タブに切り替えます。
- このタブにある「Entity rendeering」の項目で、お好みのオプションを選択します。
- 例えば、Render by entity IRI short name (id) を選択します。この場合、クラスやプロパティの表示には IRI の名前が表示されますが、rdfs:label などは Annotations の項目で引き続き確認できます。
(4)メモリ設定(2022/7/31追記)
大きなオントロジーを読み込むとか、個体数が非常に多いとか、推論で多くのトリプルが生成される場合などでパフォーマンス低下やメモリエラーが発生することがあります(あるいはハングしたり)。
Protégé はJava言語で作られていますので、JVMのメモリ設定を調整すると改善する場合があります。
JVM のメモリ設定には悩むことが多いのですが、以下のサイトは丁寧に説明されていますので、メモリの問題が疑われる場合はご一読をお勧めします。
- Setting Heap Size - Protege Wiki
コメント
コメントを投稿