※ 本記事はnote投稿の転載です。
※ https://note.com/super_crow2005/n/n380bf007c031
(15)クラスや個物のグラフ表示もできる
クラスや個物の関係を「グラフの」図で表現したくなることは無いだろうか。筆者はある。noteのようなSNSの記事を作る時に、関係をグラフで書くと、わかりやすいと思うし、印象がいい。筆者はよくTeXを利用するが、protegeにはクラスや個物(インディビデュアル)をウィンドウでグラフを描く機能がある。
例えば、protegeを起動し、[File]->[Open...]としてファイル選択ダイアログでfood_material.rdfを選択して、ファイルを開く。[Windows]メニューをクリックし、[Tabs ▶]にカーソルを当てると、メニューが開くので、そこから[OntoGraf]を選ぶ。チェックマーク✓が付いている状態となる。これで画面上部のタブにOntoGrafのタブが追加されただろう。
OntoGrafタブを選択すると、左側にクラスのツリーの枠、右にOntoGrafとタイトルのある枠となる。この状態で、ツリーを展開し、食材クラスを選択すると、OntoGraf枠に食材が現れるだろう。
その食材(のノード)を右クリックすると、メニューが現れるので、expandを選択してみよう。次のようなクラスの親子(継承)関係になる。
なお、OntoGrafの枠の内部にカーソルを置いてマウスホイールを操作すると、OntoGrafの表示を拡大・縮小できる。ドラッグして領域の移動もできる。
ノードをダブルクリックすると、ノードがexpand(展開)される。肉類をダブルクリックし、更に牛肉をダブルクリックすると次のようになる。
OntoGraf枠の上部にあるツールのとしては、まずSearch欄があって、その右にSearchボタンがある。たとえば、Search欄にサラダ油と記入し、Searchボタンをクリックすれば、油類―▷サラダ油が画面に現れる。
clearボタンは画面をクリアする。
その下に、小さなボタンが並ぶ。一番左の家のボタンは、ホームポジション&サイズといった意味だろうか。クリックすると油類―▷サラダ油が画面いっぱいに全部収まるように表示される。
ボタンの説明は省くが、いろいろ試して欲しい。
このようにして、クラスの構造を様々に表示できる。後はPrintScreenキーにより画面から必要な領域をコピーすれば、画像はクリップボードに入る。ペイントで貼り付けて保存すればよい。なおウィンドウの領域をコピーしたい場合Alt+PrintScreenである。
個物(インディビデュアル、インスタンス)も表示できる。
[File]->[Open...]でchinese_data01.rdfを開こう。[Window]->[Tabs]->[OntoGraf]でOntoGrafに✓がついているので、OntoGrafタブがあるはずだ。OntoGrafタブを選択する。
それでは、青椒牛肉絲の作り方のグラフを作ってみよう。まず、画面左側のツリーを展開し、作り方(全体)をクリックすると、OntoGraph枠にノードが現れる。作り方(のノード)をダブルクリックする。青椒牛肉絲_作り方(全体)が現れるが、これは個物である。クラス、個物や、またエッジの表示は制御でき、そのためには、OntoGraf枠の上部の小さいボタンの、左から13,14個目にある、四角と矢印にチェックボックスが描かれているボタンをクリックする。OntoGraf枠内に、Node TypesとArc Typesのウィンドウが開く。
いまは、このNode TypesとArc Typesのウィンドウは閉じておく。
それでは、青椒牛肉絲の作り方の、ステップの階層構造を表現していく。
まず作り方(全体)をダブルクリックする。青椒牛肉絲step1をダブルクリックする。そして、青椒牛肉絲step1_1、青椒牛肉絲step1_2、青椒牛肉絲step1_3、青椒牛肉絲step1_4、青椒牛肉絲step1_5をダブルクリックする。
次に、青椒牛肉絲step2をダブルクリックする。現れた青椒牛肉絲step3をダブルクリックする。そして青椒牛肉絲step3_1、青椒牛肉絲step3_2、青椒牛肉絲step3_3を次々にダブルクリックする。
後は、ステップの階層構造をノードを移動させて整形すればよい。ノードをドラッグして移動させる。
結果は次のようになった。
ヒントクラスの個物があったと思ったのだが、展開しても現れなかった。どこかで間違えたのだろう。
画面上部のEntitiesタブを選択し、Classesタブのクラスツリーからヒントクラスを選択し青椒牛肉絲_ヒント_1を確認する。このヒントは青椒牛肉絲step1_1に関連があるはずだった。そこで青椒牛肉絲step1_1をIndividualsタブの左側の個物一覧で選択する。右下のProperty assertions欄、Ojbect properties(+)をみると青椒牛肉絲_ヒント_1が無い。そこで(+)をクリックし、左欄has、右欄青椒牛肉絲_ヒント_1と記入しOK。
ここで、保存し、一度このファイルのpretegeを閉じて、再度protegeで開きなおす。OntoGrafで作り方(全体)を選び、ステップを展開していくと、今度は青椒牛肉絲_ヒント_1がちゃんと現れた。グラフ化すると関連付けの状況を確認しやすいので、デバグの役にも立つとわかる。
終わりに
以上で、protégéで料理レシピオントロジーのシリーズは終了する。protégéの使い方、クラスや個物の設定方法については、一通り示しただろう。
記述方法以外にも、推論のことやSPARQL検索のことなど、できることはまだあるが、題材を別に用意しなければならないようだ。
本シリーズは、料理のレシピをゼロからオントロジーを設計していくことで、オントロジーを記述することも併せて説明できるようになっていたのである。
まだ、オントロジーやOWL関係の投稿をしていくつもりです。よろしくお願いします。




