「RDF意味論」の和訳を国立情報学研究所の私のホームページにアップしましたが,日本語で読んでもやっぱり難しいという方もきっといらっしゃると思い,和訳した「RDF意味論」を読むための連載記事をここに書きました.コメント,質問などを歓迎いたします.

2008年11月28日金曜日

「RDF意味論」を読むために 第0章

形式意味論(formal semantics) では,統語論と意味論という言語の二大側面のうちの,意味論を数学的に厳密に扱おうとします.その御利益として,
  1. 自然言語で意味記述したときにどうしても持ち込まれる曖昧さを極力排除することができる.
  2. 計算機処理可能な言語にすることができる.
ということがあるのですが,一方で
  1. 人間の持つ融通さがない.
  2. 集合論や論理などをベースにしているために,その方面の素養がないとわからない.
などという欠点もあるわけです.

そもそも,計算機に意味なんて分かるはずがないという方も必ずいらっしゃるわけで,そういう方にはここで扱おうとしている意味(semantics) というのは,通常に使われる意味(meaning) とは違いますよ,とまず言いたい.本文中でもこういう文があります.
「こういった意味のおおくは機械処理によるアクセスは不可能であり,本文書において記述される形式意味論がこの広義の意味で '意味' の完全な分析を提供することは意図されていない」
で,ここで意図するところの意味論(semantics) には,操作的意味論(operational semantics) と,表示的意味論(denotational semantics) と,公理的意味論(axiomatic semantics) があるのですが,このへんの説明はちょっとググッてもらえば,一杯でてきますから,ここではあまり説明しませんが,このRDF意味論は,表示的意味論に基づいて書かれています.表示的意味論では人が書いた文面,テキスト,プログラムコード,論理的宣言文における構成物が,それぞれ一体意味として何を指すものなのかということを考えます.たとえば,簡単に"1"と書いたときに,テキストにある文字"1"と我々が誰でも共通に知っている(と思っている)あの数である 1 は別物である,ということを常に意識します.通常の(計算機科学ではない)言語学でもシニフィアン「意味するもの」とシニフィエ「意味されるもの」として両者を区別しますが,それと似ていますね.

意味(meaning) と言ったときには,テキストが意味するところのものが人にとって,その時々の置かれた状況に応じて圧倒的な存在感や内実でもって我々に迫ってくるのですが,そんなものは計算機のあずかりえぬところですので,意味(semantics)と言った時には,とりあえず人にとってのなんちゃらなどとは一切考えずに,語彙の表示するところのものを,語彙と語彙の関係を,そして文の表示するところのものを数学的に考えます.でも,この表示されるものは数学的なものではありますが,よくよく学べば万人が共通に理解できるあるものを,共有できるあるものを示すはずだ,ということは前提となっているのでしょうね.つまり誰でもが思うところのあの1はみんな同じ1のはずだと.このへんはプラトンのイデア論と似ていますね.それが数学的,集合論的,論理的な装いをしていると考えられます.

まあこの辺は,じゃあ私の思っている 1 と君の思っている 1 がはたして同じものなのか,それとも本当は違うものなのかを見分ける方法があるのかないのかとか,アイデンティティの問題になってくるわけで,等しいという場合にももう随分とたくさんの「等しさ」があります.Lispではeq, eql, equal, equalp, = などとありますが,論理の世界でも色々あるのは同じですね.

で,等しいとか等しくないと言った場合には,何かそれを背景で支えるある世界があるのでしょうね.eqだとこれはLispのポインタとして等しいということですから,計算機のメモリとCのポインタみたいなのが頭に浮かんでくるし,eqlでは定義として等しいことですから,定義式とその表示するものが頭に浮かんできます.= は数の世界だけです.それでこういう世界を考えたときに頭に浮かんでくる世界を「モデル」というわけです.世界のモデルです.RDF意味論における世界のモデルはラベルつき有向グラフです.でもそれを記述するのはテキストとしてサブジェクト・プレディケイト・オブジェクトの三つ組み(の集合)ですからね.このテキストとしての記述(統語論)とモデルとしてのラベルつき有向グラフの間に,ものすごいギャップがあるのです.そういうわけで,もうこのRDF意味論の記述全体が,ほとんどこのギャップを埋めることに費やされているといってもいいぐらいの感じです.ですから,何か難しそうなことが書いてあると思っても,グラフをモデルとしてよくよく読めば,ほとんどはすぐに了解できるあたりまえのことばかりです.

テキストとしての三つ組みとグラフモデルの間のギャップで最大のものが,ブランクノードです.難しい議論の半分以上はこのブランクノードに費やされている.たとえば,内部にブランクノードを含むグラフ(テキスト表現は三つ組みの集合)を別のブランクノードを含むグラフと一緒にしたとき(これをマージという),ただ単に二つの三つ組みのファイルを連結するわけにはいきません.何故ならばブランクノードを示す識別子がたまたま一致する場合のことを考慮しなければならない.

というわけでこのへんで止めますが,第1章から順番にこんな調子で進めますので,よろしくお願いいたします.

「表示的意味論」でググッて,こんなものを見つけましたので,紹介しておきます.これ私にとってはとっても面白かったです.

読者

自己紹介