Column (No. 10)

[付録] オントロジーは難しい?

 「オントロジー」という言葉を聞くと、とてつもなく難しい事を言っている様な気がしますよね。実は筆者もそうでした。オントロジーと言う言葉は元々は哲学の言葉なのだそうです。それを応用して情報”科学”でもオントロジーと言う言葉を使っているのだそうです。でも、筆者は(恐らくこのページを読んでいる殆どの皆様も)哲学者でもなければ科学者でもありません。ただのエンジニアです。そこで、エンジニアの視点でオントロジーを噛み砕いてみましょう。オントロジーでは沢山難しい用語が出て来ますが、これも無視してエンジニアが普段使う用語を使って説明を試みてみます。

 オントロジーをエンジニア風に言うと、「コンピューターで情報を活用するための情報の設計図」です。設計図ですから、ホンモノの情報ではなく、情報がどの様な構造でどの様な部材から構築されるのかを示しているものです。

 デジタルツインに関するコラムでも書きましたが、我々の日常の生活や仕事はモノやコトを対象としています。モノとは人であったり建物であったり道路であったり、現実に存在するものです1。コトとは、事象や操作などです。例えば「不具合の発生」「気温の測定」「銀行口座への入金」などですね。なぜモノやコトを対象とするかというと、人間の各種活動がこれらのモノやコトに基づいていたり、モノやコトに作用するものだからです。従って、もしモノやコトが持っている情報をそのままコンピュータに登録する事が出来れば、我々は汎用的な情報を手に入れる事が出来たことになります。このことから、オントロジーとはモノやコトの情報の設計図という事もできます。

 モノやコトの情報と言ってもモヤっとしていて意味が分かりません。そこで、具体例を頭に浮かべて考えてみましょう。

 まずは、「人」というモノについて考えてみます。佐藤さんや鈴木さんなど沢山の「人」が居ますが、今考えたいのは情報の設計図ですから佐藤さんや鈴木さんなどの具体的な人々ではなく、「人」とひとまとめにします。設計図では「人」には「氏名」「生年月日」「身長」「居住地」「勤務先」などの情報が付属していると表現します。これらの付属している情報の事を技術的には属性(Attribute)と言います。例えば「佐藤さん」という「人」の属性の「氏名」は佐藤太郎で「生年月日」は2023年10月1日で「身長」は170センチであると表現します。オントロジーとはモノやコトに付属している情報の設計図ですから、この場合のオントロジーは「人というモノには氏名・生年月日・身長・居住地・勤務先という属性がある」という事になります。なんだか話がグルグル回っているみたいですが、要するにここまでをまとめると情報の設計図は、

  • 設計図(オントロジー)にはモノやコトが定義されている
  • 各モノやコトに属性(Attribute)が定義されている

という事になります。

 さて次に、「人」の属性を見ると「氏名」「生年月日」「身長」「体重」は文字や数字の組み合わせて表現できますが、「勤務先」の様に属性がモノである場合があります。属性がモノである場合、この属性の表現方法には二つあります。ひとつは「○○株式会社」の様にやはり文字や数字の組み合わせて表現する方法です。もう一つは「会社」というモノの属性には「会社名「法人番号」「代表電話」「所在地」等があると考え、「人」の「勤務先」には会社を識別する何らかの情報、例えば法人番号を代わりに登録しておく方法です。実は前者の方法には問題があります。例えば、何か緊急に佐藤さんに連絡する必要が出た場合、会社の名前は分かっても場所や電話番号が分からないという事態が発生します。人の属性に会社の電話番号や所在地も登録しておけば良いという議論もあるかもしれませんが、本来別のモノである「会社」の属性を沢山「人」の属性として入れ込むには無理があります。例えば会社に関する情報が変化すると人の属性を一つひとつ変更していかなくてはならなくなります。これを避けるためにはモノは分けておいた方が良さそうです。そうすると、オントロジー、つまり情報の設計図には、

  • 属性(Attribute)には、文字や数字の組み合わせで表現できる属性(Property2)と、他のモノやコトとの関係(Relationship)が定義されている

という説明が追加されます。前記の例では、「人」には「勤務先」という関係を通じて「会社」との間にはがあるという事になります。他にも「株式所有」などの関係も考えられるかもしれません。

 次に生年月日を考えてみましょう。年月日の書き方は平成20年10月1日、2018年10月1日、H20.10.1、Oct. 1,2018、2018/10/1などと多様なものがありますが、ISOやJISでは、2018-10-01と書く事になっています。コンピューターでデータ処理をするためには書き方は統一した方が良く、ルールを決めた方が良さそうです。そうすると、オントロジー、つまり情報の設計図には、

  • 属性を具体的に登録する際のルールが定義されている

と言う説明も追加されます。ルールとしては具体的に登録しても良い用語を限定する方法や、数字の場合は精度や桁数、更には属性を省略してもいいのかどうかなど多様なものがあります。

 なんだオントロジーはデータモデルと同じではないかと思われた方がいらっしゃるかと思われるので、最後にデータモデルとオントロジーの違いも記述しておきます。

  • オントロジーはモノやコトに基づいて記載されている。一方、データモデルは複数のモノやコトを組み合わせても構わない
  • 実際に策定されるデータモデルはオントロジーを端折って、業務やアプリに必要な内容に簡略化されている。従って、現実世界のモノやコトは変わらなくても、利用目的や利用方法など変化すると、データモデルは変化していく
  • データモデルは例えばNGSI V2に準拠しているなど、ソフトウェアなどで使える事を前提に設計している
  1. 簡単のために現実に存在すると書きましたが、将来建築するビルの様な存在しないモノであっても構いませんし、メタバースに存在する仮想的なモノであっても構いません。これはコトについても同様です ↩︎
  2. AttributeとPorprtyはNGSI V2では明確に区別されていませんが、NGSI V2の後継規格であるNGSI-LDではAttributeはPropertyとRelationshipの両方を束ねたイメージと区別されています。デジタル庁の推奨モジュールはNGSI V2に準拠していますが、将来的にNGSI-LDやその更に後継規格に変わっていく可能性があるので、本サイトではNGSI-LDの定義になるべく準拠しています ↩︎