このドキュメントは
Rules and facts: Inference engines and the Semantic Web
http://www.w3.org/DesignIssues/Rules.html
の和訳です。
この文書には和訳上の誤りがありえます。
内容の保証はいたしかねますので、必ずW3C Webサイトの正式版文書を参照して下さい。

-- ウェブアーキテクチャの原理
Tim Berners-Lee

ティム・バーナーズ=リー

Date:
1998, last change:
$Date:
2000/01/16 23:11:17 $

Status:
personal view only.
Editing status:
first draft.
 

Up to Design Issues

Axioms of Web Architecture:


ルールとファクト:
推論エンジン対ウェブ

これは、セマンティックWebと(既存または過去の)推論エンジンとの関係を述べ、推論ルールと論理的なファクトとの関係を議論しようとしたものである。セマンティックWebには、古典論理で言い表すあらゆることが含まれる。知識表現(KR)の世界には多くの異なるシステムがあるが、以下ではそれらを一般化して考えよう。

どのシステムも通常データとルールを区別している。データは1つの言語(しばしば基本的なRDFのように否定のない非常に簡単なもの)における情報の集まりである。ルールは推論エンジンの推論ステップをコントロールするものである。ルールは、何らかの計算可能性を保証するために制限された言語で記述される。アルジャーノン(訳注:Access-limited Logicの提唱者)はルールを前向き推論に制限したが、ソクラテスの言う完全性は保証される。

ルールとセマンティックWebとを統合しようとするとき、ルールは2種類の情報を含んでいることに気づく。ある推論システムのルールを見てみよう。
g(a,c) |=d(a,b) & d(b,c)
 

これは次を意味する。
「aに対して、aを子供とするbがいて、bに対してbを子供に持つcがいたならば、aはcの孫であると結論できる」
ここで、「結論できる」とは、その情報をデータベースに加えることを意味する。これは手続き的な命令である。

すると次に、全ての「孫」関係をその関係が生じた時点でデータベースに加えるのか、それとも質問がされたときだけに孫関係を使えばよいのか、ということを決めなければならない。このルールは同じタイプの二つの推論エンジンの間で交換可能である。しかしどのエンジンでもそれを理解できるとは限らない。

実際、もちろん、この規則は古典論理で言うところのファクトがなければ、意味をもたないことになってしまう。

Va,b,c g(a,c) <= d(a,b) & d(b,c)

ファクトは、ルールと違ってセマンティックWebで直接表現することができる。このルールが何か推論するのに使われる場合、証明の入力として与えられるのはこのファクトである。セマンティックWebのあらゆる証明チェッカは、ファクトを扱うことができる。
 

ルールを古典論理で言うところのファクトに展開すれば、実際の推論エンジンで推論順序を制御する情報が不要となる。すべての推論エンジンの、すべてのルールに対応するファクトがWebにあるとすると、全ての知識が同じ空間に表現されていることになる。しかし問題は、どんな質問にも答えることのできる推論エンジンは一つではないということである。しかし、それはセマンティックWebの設計ゴールではないでない。
そのゴールは、古典論理(さらには関連する数学)で表現されるすべてのものを制限なく統一することである。我々の世界、希望、ニーズ、および条件について説明できなければならない。表現力に制約をかけようというシステムは普遍的ではあり得ない。
 

非単調な「論理」

現在、あるシステムは直接古典論理を使用しており、別のシステムは非単調論理を用いている。非単調論理では、あるファクトを加えると、以前には「真と信じられていた」ことが「偽とされる」ことがある。(それらを論理とみなすのは、疑わしいという人もいる。) 例えば、「鳥は飛ぶ」とあって、ピングーはペンギンで、ペンギンは鳥だとすると、そのシステムではペンギンが飛ばないと言われない限りは、ピングーが飛ぶと思う。

そして、次にペンギン以外のすべての鳥は飛べると仮定する。そのようなシステムは「デフォルト」つまり、ある事柄をそれが違うと言われない限りは仮定すること、を利用している。それらが基本的に閉世界システムである。つまり、「信念」の概念は、常に閉じた事実の集合に制限されているものに対して適用される。

そのような情報をセマンティックWebに導入する2つの方法がある。一つは次のような文をルールシステムに加えることである。
「鳥は飛ぶという言明は、それを鳥やペンギンのほかの上位クラスに適用した場合に矛盾がおこらなかった場合にのみ、コーパスxxxに対して適用できる」

これは非単調システムの具体化、それはペンギンのことではなく推論システムの分析においては効果的である。しかし、これは同じ推論システムにしか使えないというのが問題である。

2番目の方法は、推論エンジンの出力として古典論理の言明を出すことである。
「xxxxシステムはPinguが飛ぶという出力を出す」
ある場合、システムにとっては、そのような言明を古典的な推論システムに組み入れるのは危険かもしれない。これは次のような宣言と論理的に同等である
「私はそのような本は存在しないと思う。なぜならそれはブラックウェルのカタログになかったから」
我々はつねにそのようなことを行うが、安全なシステムは、あまりそのような情報を扱うことができない。(例えば、出版社と年が与えられたら、より安全なシステムなら、出版社からその年に発行されたもっとも信頼のおける本の一覧を見つけ、その本がないことを確認するだろう)

セマンティックWebで古典論理を採用するのは、いくつかある選択肢の中の一つというわけではない。古典論理は推論をウェブのスケールに拡大する唯一の方法である。無矛盾な公理の集合を持っていない論理体系は多い、例えば、ファジー論理では、多くの場合、どれくらいの頻度で提示されたかに関する関数として信念を扱っている。

閉世界システムは、デフォルトのスコープが暗黙にあるため、Webレベルのスケールに拡大するのには向かない。
あるファクトが事実として提示されたとき、その正当性は汎用言語による証明でしか満足されない。非古典的なシステムは、証明を見つけるのに使えるかもしれない。しかし、一旦証明が見つかったらその正当性のチェックはセマンティックWebシステムで行うことができる。

本図式では、そのようなヒューリスティックシステムをセマンティックWebの上位に、そして古典的システムを下位に置くことにした。以下の章で、両方のタイプのシステムをサポートすることが重要であることを示そうと思う。


[非単調論理の問題を取り上げ、多くの解答をくれたLCSのLynn Steinに感謝する]

矛盾したデータ

この巨大な量の古典論理システムに矛盾があったら何が起こるだろうか。あなたはAであると言って、別の人がAでないと言った場合、それは別々のものになってしまうのか。そのような状態で、何か推論できるのか?

もちろん、この恐れはかなりあるし、全世界の言明がすべて等しく扱われればそうなるだろう。ある人は、単にRDFパーサがWebの全XML文書の特定のファクトを検索して、それらを信念の集合として加えればよいと思うかもしれない。しかし、これは現実のシステムが実際にどのように動くかという話ではない。

ウェブでは、ファクトはある表現の中で述べられるかもしれない。その表現は式の一部かもしれない。その式は、否定や引用を含むかもしれない。全ての式は文書を解析することで得られるが、Web中の全文書が信用できるという保証はない。文書が信用できるかどうかの手がかりは、その文書についての情報(メタデータ)の中にあるだろう。そのメタデータはドキュメントを保証するかもしれないし、別のRDF文によって別の文書が次々と見つかるかもしれない。

実システムは後ろ向き、前向きかあるいはその両方に動作するものである。設定ページが与えられると、順番に別のページをポイントしていき順に正しいデータとして使えることのできるシステムを前向き動作と呼ぶことにしよう。また、質問に対する答えを探すのに、グローバルなインデックスを検索して、与えられた用語を指す全文書を探していくシステムを後ろ向き動作と呼ぶことにする。
後者では得られた文書を探して、質問に対する答を作成する。答が見つかった場合のみ、そのデータが信頼できる情報ソースから直接または間接に得られたものであるかをチェックする。デジタル署名(信用を見る)は、もちろん全プロセスにセキュリティの概念を加える。最初のステップでは、文書に対し、それが信じられるというチェックサムがないものは信頼できないとするものである。次のステップでは、次のようなフォームの強力なルールによるものである。

「57832498437キーで署名されている、文書で言っていることは...」
実際には、特定の目的には特定のオーソリティだけが信用できる。セマンティックWebはこれをサポートしなければならない。あなたは信じられる情報を次のような方向で制限できなければならない。
「どんなドキュメントでも形式xxxxで言われているものは、キー32457934759432で署名されている限り、W3Cメンバーである。」
例えば
どんなドキュメントでも「aはIBMの従業員である」という形式で言われていることは、キー213123098129で署名されていれば信用できる。
ここで以下のような選択肢があるが、現時点ではどれがも最も良いかはわからない。一つは詳細に言う場合である。
「どんなドキュメントでもxxxxという形式で言われていることは、キー32457934759432で署名されている場合に限り、W3Cのメンバーである。」
もう片方は次のように言う場合である。
「xxxxという形式で書かれ、キー32457934759432で署名された情報から推論できるもの」
最初の方法では、言明を特定の方法で述べる時の要件を記述している。これは過度にお役所的で、常に扱っていくには難しい。普通、式の集合を、それから演繹される別の式集合と交換したい場合はしばしばある。しかし、この方法では、パターンでマッチしたい場合であっても、実際の式を適用しなければならない。これは非常に面倒である。

2番目の方法は、矛盾の罠に陥る。一旦、与えられたキーで署名された情報から矛盾する言明が引き出された場合、あらゆる情報が署名された情報から演繹されてしまう。キーが完全に壊れてしまう。
もちろん、そのキーだけが壊れているので、それを取り除けばよいだけである。しかし、そのシステムがアタックされた時、そのシステムで矛盾が起こったことがわからない限りアタックされたこともわからないかもしれない。

システムの中で情報を無矛盾に処理することを許しつつ、信頼できるドメインを制限するという方法はあるのだろうか?

はい、おそらく沢山ある。論理を限定して用いている知識表現システムでは、その問題を解くために(そのためだけではないが)そのようなことを行っている。使われる推論ルールのタイプを、「推論することができる」というものに限定することもある。それには、一般化した証明エンジンが具体化したルールに対して動くか、個々の証明エンジンの集合を統合することになる。多分、我々にはそれが必要だろう。


Up to Design Issues

Tim BL