

 の基礎

武田 英明
国立情報学研究所£
東京大学 人工物工学研究センターÝ    

はじめにといっている．あるいは  %& のセマンティック  は情報交換の手 げて説明している ．
段として広く普及し，もはや  なしの世界をイ
セマンティック  はビジョンである．そ
メージするのが難しくなっている．  のおかげでこでは  上のデータは，単に表示目的でありとあらゆる情報が入手可能になった．その量はの活動ではもう少し人と計算機の共同作業の例を挙日々驚くほど増大しており，いまや情報洪水への対なく，自動化や統合，アプリケーション間

処が真剣に必要となっている．すなわち，でのデータ再利用などに使えるように定義

 は情進んで情報の持つ意味の共有が必要とされている．
現在，事実上唯一の    '         !  #   (     (   ) "( ""           
""$されてリンクされる．

報そのものの共有を可能にしたが，さらにもう一歩 検索手段である   な

どの検索エンジンでは単語などの情報の外形的特徴
でしか検索をすることができない．もし，情報の意
味で検索できれば，より的確にほしい情報を検索で の狙いである．セマンティック  は  の創始者である
では具体的にどのように「意味」を計算機に理解  が提唱している次世代の  のフ させることができるのであろうか？計算機に「意味」
レームワークである．彼の記事  によれば，を理解させるという試みは古くから人工知能の分野で研究されてきたが，決定的な成果があったわけで
セマンティック  は現在の  の拡張はないとても難しい問題である．しかし，  上でであり，そこでは情報には定義された意味の情報共有の促進という観点だけでに注目すれば，が用意され，人と計算機の共同作業がより問題を簡単することができる．セマンティック 
容易にできるようになる．
ではこの問題をメタデータと *+, という二つの仕組       みを軸に解決を図っている．「意味」の同一性の維持       には *+, * + ,! が利用され  !    る．どんな「意味」にも *+, を割り付けることで， "  ""  #  世界中のどんな人がどんなページでも同一の「意味」
"$を指す事ができる．一方，「意味」の定義は構造化さきるであろう．これがセマンティック

れたメタデータとして用意される．メタデータ記述£ 千代田区一ツ橋 Ý 柏市柏の葉 







 

言語（

+-. や /  によってここの「意味」は相互に関係付けられる．この関係性と同一性を元に計算機は上記のような，自動処理や統合処理，データ再利用をすることが可能になる．
以下では，このメタデータ記述言語である+-.

+-. /  についてその概略を入門的に説明を行う．なお，セマンティック  に関してのより詳しい情報は包括的が特集があるので参照されたい 0．


セマンティック  の技術
セマンティック の鍵となる技術は，メタデー

図'  ( &#   1

タ，オントロジー，信頼であろう．

 簡単な例

メタデータは文字通り，「データに関するデータ」を23 で書かれた簡単な例で考えてみよう（図0  ）．我々は簡単にこの情報が何を示しているかがク  での情報には人間あるいは計算機のために意わかる．名前が45# #4 で年齢が4664 で味に関する情報がメタデータとして付加される．そある等々．しかし，これは我々がタグの名前（7"
うすることで，計算機は元々の情報だけは分かりえ4 74 等々）をすでに解釈してしまっている
ないその情報に関する情報を知ることができる．
からできることである．例えば，図 0  は日本人にしかし，メタデータを付加するのは第一歩でしかは  と同一の情報であることがわかるかも知れなない．メタデータに記述される情報をどう計算機が指すものであり，データの内容や，量，条件等データの特徴を記述するデータのことである．セマンティッ

いが，日本語が分からない人には難しいであろう．

容易に理解可能なものとして用意できるかが次の問題である．セマンティック

ここで必要なのは計算機に真の「意味」を理解さ ではメタデータ同士 せることではない．人間の解釈によって補っているを構造化することでその解決を図っている．すなわ

曖昧性や相互利用性を上げることが出来れば十分でち，構造的に概念間の関係を記述する．これがオンある．例えば，

トロジーである．

0  と  は同一であるか？
¯ これは 7"4 に関して十分な記述であるか？
¯ これは 7"4 に関して妥当な記述であるか 8¯ 図

さらには信頼性を考慮する必要がある．それぞれの情報がどれだけ信頼に足るものであるかを判定しないと，統合的利用や自動処理は危険である．しかし，

 の世界における真偽というのは，論理における真偽と違って多様なものである．このような多などの質問に答えられることである．

様な信頼性の処理についてはまだあまり研究が進んでいないの現状である（% 参照）．

しかし，これは

上のような階層を示したのがセマンティックの技術階層と呼ばれるものである（図$23 では難しい．23 は本質的 意味を記述する言語が必要となる．

に構文を規定するためのものだからである．そこで0   "'==




図



#$$$)"= #     
   75# #4

0' 9 " :Creator

http://www-kasm.nii.ac.jp/~takeda

Resource“Hideaki Takeda”

Property

Value+-. + -" .# は%& の勧告  となっている 
図 %' 9 +-. 3 >" 
メタデータ記述ための標準である ;$ +-. を使って，図書のメタデータのようにタイトルや著者といっというステートメントである．このグラフが +-.
たメタデータを  データに付加することができの形式モデルである．とはいえ，グラフだと記述する．ただし，+-. は図書メタデータのように何をメる上で不便なことが多いので，等価な文字列表現
タデータとして書くかを規定するものではなく，メ を使うこともある．" として表現すると，タデータの書き方（記法）を規定するものである．
+-. は極めて簡単なデータモデルである．すなわ
ち，リソース，プロパティ，値の３つ組みである． となる．+-. " は３つの要素と最後に 7$4 をつけたものである．
リソース（ ）メタデータを付与する対象+-. は  ページに限らず，下に挙げるようなであり，*+, * + ,! <
他のもののメタデータ記述にも使うことができる．
またはリテラル（文字列）である$


   

 ¯ ネットワーク上からアクセスできる文書やサービス  ）リソースを記述すためのプロパティ（

特定の属性あるいは関係を示す．プロパティも*+, またはリテラルである．またぷらパティも値

またリソースになりうる．

¯ ネットワーク上からアクセスできる実世界のオ
ブジェクト プロパティが指し示すもので，リソース¯ 著者 といった抽象概念

7 4*+, を持つことである．最後のケース
この % つ組みをステートメント  と呼 からわかるように，プロパティも *+, を持ちうるが，またはリテラルである．

唯一の制限は

ただし必須ではない．

ぶ．ステートメントもまたリソースになりうる．
図% にある簡単な例を使って説明する$ これはステートメントを組み合わせて，もっと複雑なメ    
の プ ロ パ ティ  の 値 は   である．

タデータを書くことができる．

    
は プ ロ パ ティ の 値 が
    Æ!"#$%&で あ り
そ れ は ま た   を プ ロ パ ティの  の 値

    は   を指すもので，      ! と "     " ! からなる

%

 

Creator

http://www-kasm.nii.ac.jp/~takeda

name“Hideaki Takeda”

図  ! "# #$ %&'()   %"# ) *+++$$$% ,  -#.   "#/0  *$1. -#2
%'  % 0/"#  
3      
4
%' 
1 %&'(http://www.nii.ac.jp/staffid/123456
email“takeda@nii.ac.jp”

1' 9 +-. 3 >" 0

図<' 9 +-.=23 ( >"  %'  0/"#
$   % /"#  ) %' Creator

http://www-kasm.nii.ac.jp/~takeda

name“Hideaki Takeda”

 #

  
 # 

 #

email

“takeda@nii.ac.jp”

図;' 9 +-. 3 >" %?' 9 +-.=23 ( >" を分離している．テキスト表現では，先に見たよう"，あるいは 23 を使って表現する．他には@%?
という表現もある．
'  をプロパティ  の
図 < は 図 % に 対 応 す る +-.=23 構 文 に値として持つ．
よ る 表 現 で あ る ． 行 目 は 23 の 宣 言 部 で
こ の 場 合 ，３ つ の ス テ ー ト メ ン ト が 用 い あ る ．0 行 目 は +-. ス テ ー ト メ ン ト の 開 始
 を 示 し て い る ．
ら れ て い る ．こ こ で 注 意 が 必 要 な の は ，（ 終 了 は7"'==$$$)"=Æ=0%1;<4 は  タ グ の 属 性 と し て " が 宣 言 さ れで始まるタグはページを指していないという点である．この *+, て い る ．プ レ フィック ス の機能は人の識別のための ,- としてのみ使われて      "
いる．実際，具体的な情報はこの *+, につけられ の タ グ で あ る こ と を 示 し て! は
たプロパティ74 や 74 の値として記述さ い る ．同 様 に"   "#!$% !
れている．
空白ノード #  を使うともっと構造的な のタグを示している．; 行目から ? 行目が実際の+-. ステートメントの記述である．スタートタグ
メタデータを書くことができる．図 ; は
図な!  の属性  #" がリソースを指示している．タグ !  で囲まれ

    
はプロパティ  ををもち，その値であるリソースは    を値とす
るプロパティ4 4 ' 

た中に，プロパティとその値が記述される．タグ! !  がプロパティを指定し，その値はタグ! !  で囲まれた部分である．

44 を持つ．

23 構文では他の記法も許される．図 ? は同じ+-.
を別の構文で書いたものである．図 < の行 6;+-. は２つの項しか結びつけることが出来ないので，% つ以上を項を結び付けるには空白ノードが必 A 6? は図 ? の行 6 A 6% と同値である．今度は，タを値とするプロパティ

グ ! !  は 

要となる．

"! 属性を使って値を+-. の形式モデルは図 % のよ 指示している．この方が短い表現である．
うなグラフである．+-. ではモデルとテキスト表現
先に述べたように，

1

B

1 の 23 表記である．
この例では，タグ !  がトップレベルであり，その内側 行 61 A 6? に二つ要素があ同様に，図  は図り，それぞれがプロパティとその値を指定している．



!  要 素 の 内 側 の ノ ー ド !&   %'(を一緒にしてしまえば，図C のようなより短い表記にできる．この場合，タグ !  は入れ子になっている．入れ子表現はあまり理解しやすい


$
)
.
2
3
4

表現ではないが，この表記には別の利点がある．この表記をつかえば，空白ノードを書くことができ

6 は図 ; の 23 表記である．前の例との違いは内側の !  タグの  #"属性 行 6% だけである．このような 
#" 属る．図

性の省略は !  要素が一意に決まる

図ときのみ許される．

%'  0/"#    #      %%$).23  %' 
%'  0/"#     %%$).23#          5     %' 

B' 9 +-.=23 ( >" 0 %'  0/"#    #$ )
%'   / " #     %%$).23#.
      
2    5     
3%' 
4 
1 %'  +-.  略して +-. は +-. をモデリン+-. ステートメン

グするために使われる．いわば

トの型を定義するようなものある．実際には，オブジェクト指向風なシンプルなクラス定義とクラス関図係（クラス‐サブクラス関係）などが用意されている．

+-. でのクラスはかなり原始的なもの
で，本格的なオブジェクト指向式のクラス概念は後に述べる /  を使わないと実現できない．
+-. ではまずクラスを定義する．以下の例では
 " が予め用意されているとする．このとき，7:4 がクラスであることを次のよう
ただし， %'  0/"#
$ )
%' 
.
      
2    5     
3%' 
4 
1 %' 

図

に書く．

': '(" '& $ は +-. に予め用意されたある +-. のプロパティである．さらにクラス‐サブクラス関係
は次のように定義する．

 以降，簡略のため，タグ  の内側のみを表記する．

;

C' 9 +-.=23 ( >" 0
 

6' 9 +-.=23 ( >" % # %'  %6'"#7/0  #$%, % /"#% 8#) %' 

'# '("'&$'# '&/ ': $図

この場合， )* というリソースのインスタン
スは常に  +"#!  というリソースのインス

' 9 +-.=23 ( >" 1 % 8

%6'"#7/0  #

タンスであることを示す．このようにクラスの階層
関係をつくっていくことができる．
また，

図 "#+ , を使って，プロパティ

0' 9 +-.=23 ( >" 1

の階層関係を定義することができる．
次にクラスのインスタンスは次のように定義する． の略記である．
知識表現として+-. には注意が必要である．

+-. をオブジェクト指向言語あるいはフレーム言' 2# '(" '# $語としてみると，プロパティの部分で，随分異なっ

クラスはよく属性やスロットと一緒に定義される．例ている．通常クラスの属性はクラスに従属するもの，

えば，「本は人を値とする属性著者をもつ」は以下のすなわちクラスにローカルになるのに対して，

ように定義される．

のプロパティは常にグローバルである．例えば，先の': '(" '& $' '(" ':"( $' '  ': $' ' '#$

例でも，"  は一見クラス )* に従属している+-.

ようにみえるが，実は常にそうではない．"  プ
ロパティはその定義域がクラス )*，値域 +
に束縛されたグローバルなものである．この違いは，別のクラスで同じ "  プロパティを使おうとするときにはっきりする．たとえば，クラス - 行目はクラス + を宣言している．残りの行で も "  プロパティ使いたいとする．このときはプロパティ"  を定義している．0 行目で "  同じ "  プロパティ . をがプロパティであることを宣言している．% 行目は 拡張することになる ．


このプロパティの値がクラス + であることを宣言している．最後の行はこのプロパティのリソー

D/ 

スがクラス )* であることを宣言している．

+-. はオブジェクト指向風の機能を提供してい
して，クラス )* はプロパティ"  を属性とし はない．/  / (    B はよりて持ちうることになる．
オブジェクト指向言語に近い語彙及び機能を提供し+-. も当然，+-.=23 構文で書くことができ ている．クラス間の関係（排他関係等），個数制限
る．図  はクラス定義の例である．+-.=23 構 （  個だけ 等），等価関係，型宣言，プロパティ
文でかくとき，あるリソースが  プロパティ のメタ属性（ 対象 関係など），数え上げクラスをもつことを簡単に書くことができる．図 0 はその などが用意されている．/  も %& の勧告になっ
例である．
ている．
ここで用いた例の全体を図 % に示す．+ とモデルで言い換えれば，述語 "  は )* を主語に，+ を対象に持つということである．結果と)* のインスタンスの宣言は 

るが，オブジェクト指向言語としては決して十分で プロパティ

  <や 

 は度以上用いてよい．


$
)
.
2
3
4
1
+


$
)
.
2
3
4
1
+
$
$
$$
$)
$.
$2

 ! "# #%&'(  %"# ) *+++$$$% ,  -#  % "# ) *$%  -#
% 8

%6'"#7 #% 8

%6'"#7/0  #

0件， 番目は必要十分条件を定義している．

 " は次のいずれかである．

$ クラス識別子
0$ 個体の数え上げ%$ プロパティ制約
1$ クラス記述の積 
;$ クラス記述の和 <$ クラス記述の補集合 "
重 要 な の は % 番 目 で ，こ れ に よって プ ロ

%7, %6'"# /#%   % /"#-9 #
%  * % /"#-7 #%7,;</#9 %6'"#=9 #/ % /"#-9 

& 2  は他のクラスの和として新しいクラスを定義する． 番目は必要条
クラス記述

% 8
%6'"#9 #
%  /08:% % /"#-7/0  #% 8

7  %6'"#

スを定義する．

;<#%&'(%' 9 +-.=23 ( >" ;パ ティを ク ラ ス に 従 属 さ せ る こ と が で きる ．プ ロ パ ティ制 約 は 値 制 約 ，個 数 制 約 の
歴 史 的 に は /  は -93E/,C6 の 後 0 種 類 あ る ．前 者 は ， 3".
継 で あ り，こ れ は さ ら に ，米 国 -9+:9 9   .3".  3" な ど を 使
3#"    -93 プロジェクト で開発さ い，それぞれ全ての値に対する制約，ある値に対すれた -93/@ と，主にヨーロッパで開発された る制約，特定の値であるという制約をつける．後者/, を統合されたものである．/  は記述論 は， ./    ./  理（-"  ）に基づいている．記述論理  !   を使い，値の個数の最小値，最はフレームベースシステム，意味ネットワーク，F 大値，特定の数に制約する．これらのプロパティ制/@> 式の言語の形式化として利用されてきたもの 約は   !  タグを使い， "!
である．記述論理の詳細については 0 を参照され 属性で制約するリソースを指定する．
たい．
図 1 にその例を示す．クラス + は３つのク/  は豊富な記述要素をもっているので，ここで ラスのサブクラスの積として定義されている．つまは +-. との比較で重要な点を中心に取り上げる． り，このクラスは % つのどのクラスの多重継承であ/  については全体像は % を参照されたい． る．一つ目のクラスはクラス 4. で，残りプロ
ま ず，ク ラ ス を 定 義 し よ う．ク ラ ス 定 パティ制約によって作られた名前のないクラスであ義 
! は ク ラ ス 記 述 か ら 構 る．一つは，. プロパティを少なくとも１つ持つ図  "#/,というクラスであり，もう一つはプロパティ が 0"1 /  & 2 を 使 あり，その値がクラス 516 のインスタンスう．  "#/, を 用 い る と ，そ の ク ラ ス であるようなクラスである．この結果，このクラス

成 す る ．ク ラ ス 定 義 はの サ ブ ク ラ ス と し て 新 し い ク ラ ス を 定 義 す る ． + はクラス 4. のサブクラスで，少なくと 0"1 / は他のクラスと同値のクラ も名前を一つ持ち，生物を食べるものである，と定義される．この場合，プロパティ は別のクラス
  

# $ 
 % $#  $

?


$
)
.
2
3
4
1
+


$
)
.
2
3
4
1
+
$
$

 8
%6'"#7 #%  /08:% % /"#-> #
%  /08:% &  7, '  ,7, % 0/"#- # 7,  8  , %  ,"# ) *$=?@A  8  , & 
%  /08:%
%  /08:% &  7, :07, % 0/"#- # 7, B / ( % /"#-@!**#  & 
%  /08:% 8-#

1' 9 /  >" 
記述で自由に使うことができる．この点が +-. と違う点である．
/  の プ ロ パ ティは   +  と,#&! +  に 0 つに大別される．前者は +-.
リテラルあるいは 23  (" を値にとるものであり，後者はクラスのインスタンスを値にとるものである．プロパティは +-. 同様，  
図


$
)
.
2
3
4
1
+





.  "#+ , で関係付ける :07, %6'"# #
%   % /"#-@!**#
%  * % /"#C D*# :07, '  ,7, %6'"# *#%, % /"#C D(/ 7,# 
%   % /"#->
# 
%  * % /"#C D !6*#  '  ,7,図;' 9 /  >" 0

ことができる．さらに，推移性や対称性といった関係の性質を指定することができる．同様なもので， すインスタンスは，上記の条件を満たしているので，
"! +  は関数関係を宣言していて， 妥当なものである．
さて，最初の問題（図値がユニークであることを指示している．

0 に戻って考えてみよう．

; はプロパティ定義の例を示している．最初 図 < は図 0 に相当するものである．この記述におのプロパティ はクラス 6 が値域であるので， いては，クラス + に基づいて，この記述がクラ,#&! +  である．0 番目のものは，整数が ス + のインスタンスとして妥当なものである
図

値域であるので，   +  である．また， かどうかをチェックできる．さらにある種の推論もすることができる．例えば，クラス + はクラその値はユニークであることを要求している．
これらの定義を用いて，図< に示すようにクラ ス 4. のサブクラスであるので，クラス 4.ス + のインスタンスを定義できる．クラス定を定義域であるものはすべてクラス + のイン

義より，クラス + のインスタンスは一つ以上

スタンスにも適用可能である．例えば，医者を探しの . プロパティを持ち， プロパティの値がているエージェントを考えてみよう．もし医者が見516 クラスのインスタンスであるようなイ つからないときに，クラス階層を一つ遡って動物のンスタンスである．さらにプロパティ の定義よ 医者を代わりに推薦することができる．
り，その値は正の整数でユニークである．図< に示 /  には３つの言語，/   /  -B

るリッチクライアントという見方もできる．また，
ルール言語の開発もホットトピックスの一つである．


$
)
.
2
3
4
1
+


/  は基本的に宣言的な記述したできないのに対である．これも 066; 年に初の国際会議が開かれている ．   との統合も期待されている分野である．    という名前で各方して，ルール言語では動的な推論を可能とするもの

7  %6'"# #
%  0   %  0 
%            *  %        * %  ,"#C D !6*#  *7 

図

面で盛んに研究されている．

<' 9 /  >" %まとめ

本稿ではセマンティック  の基礎技術である/  . に分けられている．ここまでの説明は基 +-.
+-. /  について入門的に紹介した．最
本的には /  - に基づいている．/  - は記
後に述べたように，セマンティック  は基本的な述論理の表現力を基本的に持っている．ただし，こ言語開発の段階を終え，第 0 段階に入っている．言のためは計算の複雑性が増大するため，より表現力
語開発においては米国とヨーロッパの研究グループを制限した 軽い バージョンとして /   がで開発が進んできた．言語開発などではなかなか後ある．/   はクラスの積のみであり，個数制
発のグループが関与することは難しいが，今後は応限は０か１のみなどの制限がある．/  . は普用面が注目されるので，日本の研究グループも多い
通の +-. ステートメントを許容するものである．よに活躍可能だと思っているし，期待している．
り表現力があるものの，形式意味論的には問題があり，現時点では実用的な利用には適さない．

参考文献

  $ 5 G$   /$'       
今回紹介した +-. +-. /  といったセマン
066 $
ティック  の記述言語開発は一段落しており，標0 徳田雄洋 栗原聡：特集「セマンティック 
準として徐々に普及を始めている．代わって，現在と計算機科学」 コンピュータソフトウエア
は３つの方面で研究が行われている．まず，これらD$ 00 @$ 1 ""$ 0A<1 066; $の言語を実際に使うアプリケーションを作ろうというもので，様々なシステムが提案されている．顕著
% 武田英明：信頼の  コンピュータソフトウな方向としては， -#" というものが
エア D$ 00 @$ 1 ""$ CA0; 066; $ある．, &066; では同名のワークショップ が開か1  $' 
れ 66 人近く集まり盛況であった．これは自分が使F( " 23 0666 0666
う :& の上で使えるアプリケーションにセマンティ
"'==$%$ =0666= #=06<0#
ック  技術を適用しようというものである．セ=$
マンティック  なので当然ネットワークアプリ
ケーションであるわけで，セマンティック  によ


今後の展開



 

 #%  



C

 $$ ;  /$'  3' 9 3      D$ 0@$ 1 ""$ %6A%? CCB $<  $ . +$  3 $' +.& 0%C<  * + ,
! *+, ' H (  ",> . CCB $?  $  &( -$' :'H  +-. I    @%'"'==$%$ =0666=6="=:$$B 3H -$ $  5  .$'/   / (    /  %& + 6 .( 0661'
"'==$%$ = +==$C &( -$ 5  .$ 5# ,$3H -$ $ : :$ .$  $ 9$' -93E/, 3 066+ -" %& @ B -
 066' "'==$%$ = +=E$6 5# ,$' -93E/,'  -"       
   D$ 0; @$  ""$ 1AC
0660 $
 . -$ 5  .$ 5# ,$3H -$  : :$' /,'9  (        D$ < @$ 0 ""$%BA11 066 $0 兼岩憲：/  の推論とその計算量 コンピュータ
ソフトウエア D$ 00 @$ 1 ""$ 0<A%1 066; $% - 3$   H$' /  / (    +
%&+ 6 .( 0661'
"'==$%$ = +==$
6