僕はラーメンが大好きだ。
そして 共通語彙基盤ラーメンデータセット は、僕が昼休みに食べに行った京都市役所近くのラーメン店と、その店のお勧めラーメンを紹介するデータだ。
このラーメンデータ、共通語彙基盤を上手に使った点を評価していただき、オントロジー賞というマニアックな賞をいただいた。
そして、その受賞の講評として、ありがたいお言葉をいただいた。
「次はラーメンそのもののオントロジー構築を望みます」と。
それからというもの、僕はその言葉を、心の片隅でずっと気にしていた。
ラーメンそのもののオントロジーって、一体なんだろう……
………?
……………!
よし、よく分からんが、まずはフィールドワークだ!
そして今日も元気にラーメンを食べに行く。あくまで研究目的のため。日々是研究。
ピザやワインのオントロジーは聞いたことがある。
OWLとかいう小難しい呪文を使うやつだ。
オープンデータ術師の中でも、特に上級の魔導士のみが使う古代の秘法、OWL。
ラーメンのオントロジーに、このOWLを使うべきなのか。
果たして僕にOWLが使いこなせるのか。ちょっと自信ないなぁ・・・
とりあえず、得意のググりで調べてみたところ、フード系オントロジーの定番といえばやはりOWLのようだ。
よし。ラーメンオントロジーはとりあえずOWLでやってみよう。OWLラーメンだ!
そのとき、フクロウがラーメンをすすっている光景が、僕の脳裏に浮かんだ。
僕は手始めに、OWLのピザオントロジーがどういったものか調べるところからスタートした。
同じ食べ物だし、きっとこれが王道だろう。
ピザオントロジーを眺めていて分かったのは、このオントロジーを構成する各クラスは、二つの大分類クラスのいずれかに大別されること。
その大分類の一つは、ピザを構成する部品のクラス。
このクラスはさらに、ベースとなる生地のクラスと、トッピングのクラスに分けられ、それぞれが具体的な生地(パン生地、クリスピー生地)やトッピング(チーズ、ペパロニ、トマト等)のクラスに細分化される。
もう一つの大分類はピザの名称による分類のクラス。
マルゲリータとかシチリアーナとか、ピザの完成品にどんな名前がついているか、という観点での分類だ。
そして、マルゲリータには、必ずモッツァレラチーズとトマトがトッピングされている、という制限がかけられている。
なぜかバジルが条件に入っていないのがツッコミどころか…
OWLクラスの公理を定義するための、各種の論理表現や制約の組み合わせは、なかなか手強くてすぐには理解できなさそう。
しかしまあ、ラーメンを食べているうちに、そのうちきっと分かってくるだろう。
ピザオントロジーがぼんやりと分かったところで、僕は、ラーメンオントロジーのクラス分けの検討に入った。
そしてアレコレ考え抜いた結果、なんとかクラス分けを完成させた。
言葉で説明するとややこしいので、次図を見ていただきたい。
ラーメンのスープは、ベースとなる基本スープ(とんこつや鶏がらを煮出した汁)に、塩分の濃い醤油や味噌などのタレを、提供の直前に混ぜて作られるスタイルがほとんどだ。
このような理由から、基本スープとタレは明確に区分すべきと考え、それぞれ別々のクラスとした。
そしてラーメンメニューのサブクラスは以下の4種類。
1 スープによる分類 (ex.とんこつしょうゆラーメン)
2 固有名称による分類(ex.担担麺)
3 ご当地による分類 (ex.札幌ラーメン)
4 系統による分類 (ex.二郎系ラーメン)
この分類には当然異論はあると思うが、本来、自由であるべきラーメンを強引にクラス分けした結果、ということでご了承いただきたい。
本来、ラーメンはフリーダムな食べ物。
誰かの型にはめられて食べられるほどお利口さんには食べられない、ということ。(ブルーハーツ風に)
オントロジーの本を読んでいると、推論ってワードがよく出てくるが、僕は今まで日常会話の中で一度も使ったことがない。
いまいち馴染めない言葉だな、っていうのが僕のファーストインプレッション。
でも、演繹や帰納なら知っている。高校で習った。
演繹といえば、有名なアリストテレスの三段論法。
大前提 人間は皆、ラーメンを食べる
小前提 ソクラテスは人間である
⇒ 結論 ソクラテスはラーメンを食べる
グーグル先生に聞いてみたところ、オントロジーを用いる推論をざっくり捉えると、演繹を用いて、その対象を特定することっぽい。
さて、オントロジーを用いてラーメンをどう推論するのか。単純化したモデルで考えてみる。
【前提1】
世界には次の4種類のラーメンしかない
・札幌ラーメン
・喜多方ラーメン
・尾道ラーメン
・博多ラーメン
【前提2】
しょうゆが必ず使われているラーメンは次の2種だ
・喜多方ラーメン
・尾道ラーメン
【前提3】
ちぢれ麺が必ず使われているラーメンは次の2種だ
・札幌ラーメン
・喜多方ラーメン
【推論結果】
しょうゆだれ かつ ちぢれ麺のラーメンは喜多方ラーメンだ
ご当地ラーメンは、それぞれ特徴的な要素を持つ。
博多ラーメンなら、とんこつスープにぷりっとしたストレート細麺、替え玉など。
ここで一例として和歌山ラーメンを構成する各要素と、その関係性をじっくり考えてみる。
和歌山ラーメンのスープには、必ずとんこつが含まれている。鶏がらや魚介スープがブレンドされていることもあるが、とんこつはマストだ。
論理学風にいうと、和歌山ラーメンであることの必要条件の一つは、基本スープがとんこつであること。
また、醤油味であること、ストレート麺であることも必要条件だ。
さらに、和歌山ラーメンには、「かまぼこ」か「なると」のいずれかが必ずトッピングされている。
式で表すと次のとおり。
とんこつスープのラーメン ⊃ 和歌山ラーメン
しょうゆだれのラーメン ⊃ 和歌山ラーメン
ストレート麺のラーメン ⊃ 和歌山ラーメン
( かまぼこ入りラーメン ∨ なると入りラーメン )⊃ 和歌山ラーメン
上記4条件の積集合が、和歌山ラーメンの必要条件だ。
さらに、もしこの世界のラーメンが、札幌ラーメン、和歌山ラーメン、博多ラーメンしかなければ、この積集合は、和歌山ラーメンの必要十分条件となる。
OWLっていうのは、このような、ものごとの論理的な関係性を記述する言語だということを、僕は少しずつ理解していった。
もう少しで、OWLラーメンが食べられそうだ。
【 RDF/XMLで記述した和歌山ラーメンのクラス 】
僕は、試行錯誤の末、自由奔放なラーメンたちをなんとか型にはめることに成功した。
続いて、ラーメンメニューと、ラーメンを構成するパーツとの関係性を綿密に記述し、OWLラーメンオントロジーをついに完成させた。
次図は、当オントロジーを、Protegeというオントロジー編集エディタに読み込ませたものだ。
僕のラーメンオントロジー、まだまだ未解決の問題が山積みなのは分かっている。
でも今夜は、OWLラーメンのひとまずの完成を祝して、とりあえず一杯行こうじゃないか。
もちろん、一杯のラーメンにね。