セマンティックウェブ・ダイアリー

小出誠二の個人的な業務日誌

本当はいけないことかも知れないけど、以下は人工知能学事典における「RDFとRDFS」の記事です。ここに書いてあることがすべて分かれば、あなたも立派なLOD学者でしょう。みなさん、人工知能学事典買ってください。



 Resource Description Framework (RDF)とRDF Schema (RDFS)はWebの発展を背景に生まれた,事実および知識の記述言語である.その抽象構文は,サブジェクト(subject)(主語),プレディケイト(predicate)(述語),オブジェクト(object)(目的語)の三つ組み(triple)であり,三つ組みの集合はラベル付き有向グラフ(labeled directed graph)を形成する.そのとき主語および目的語がノードであり,述語はエッジとなる.
 知識表現としてのRDFグラフは意味ネットワーク(semantic network)とほぼ同等であるが,両者の違いは,RDFグラフノードはInternationalized Resource Identifier(IRI)かブランクノード(brank node)かリテラル(literal)(文字列)でありエッジは必ずIRIであることである.ただしここでIRIと言ってもそれはWeb上の何かを表すものというわけではなく,計算機用語で言えばエンティティと呼ばれるようなもので,RDFではそれをリソースと呼ぶ.IRIは主語にも目的語にもなるが,リテラルは主語になることはできない.
 RDFおよびRDFSではある定まったIRIのコレクションを語彙(vocabulary)と呼ぶが,XML名前空間の機能を導入することで語彙の集合分割と統合利用が促される.IRIであるためWeb技術を利用した語彙の共有や利用が容易である.
 RDF およびRDFSの仕様はW3Cの勧告として公開され,Turtle,N-Triple,RDF/XML,JSON-LDなどの具体構文に加えて,RDFグラフとしての抽象構文と意味論が規定される.RDF語彙として,rdf:typeおよびrdf:Propertyのほかに,rdf:subject,rdf:predicate,rdf:object,rdf:value,rdf:langString,rdf:PropertyなどのIRIが導入され,W3C勧告文書にはその意味が規定されている.ここで,rdfはプレフィクスとよばれ,たとえばrdf:typeはhttp://www.w3.org/1999/02/22-rdf-syntax-ns#typeを,名前空間を用いて書き換えたものである.
 RDF語彙にはrdf:typeが含まれるが,それは三つ組みのプレディケイトは必ずプロパティであるというRDF伴意レジーム(entailment regime)の説明に導入されたものであり,型あるいはクラスの本格的な導入はRDFSで行われる.RDFS語彙として,rdfs:domain,rdfs:range,rdfs:Resource,rdfs:Literal,rdfs:Datatype,rdfs:Class,rdfs:subClassOf,rdfs:subPropertyOf,rdfs:comment,rdfs:seeAlso,rdfs:isDefinedBy,rdfs:labelなどのIRIが導入され,その意味が規定される.
 プレディケイトをサブジェクトからオブジェクトへの写像としたとき,定義域をそのプロパティのrdfs:domainで指定することができ,値域をrdfs:rangeで指定することができる.何も指定しないときは,すべてのリソースをメンバーとするクラスrdfs:Resourceが定義域および値域となる.RDFSのクラスの意味論は外延的であり,クラス名は集合の名前と捉えられる.rdfs:subClassOfで記述されるクラスの上位下位の関係はクラスの集合としての包含関係である.したがって,下位クラスのメンバーは必ず上位クラスのメンバーでもある.これを包摂(subsumption)と呼ぶ.当然のことながら,ここには推移律(transitivity)が成立する.rdf:type,rdfs:domain,rdfs:rangeの目的語はRDFSにおけるクラスであり,rdfs:subClassOfの主語および目的語となるリソースである.
 プレディケイトとして書かれるIRIはクラスrdf:Propertyのメンバーである.定義によりrdf:Propertyはクラスであり,そのメンバーであるすべてのプロパティはrdf:Propertyのインスタンスであるが,rdfs:subPropertyOfはプロパティの定義域と値域についてのみクラス関係と同様な推移律が成立するようなプロパティ同士の関係である.
 RDFおよびRDFSの論理は単調増加(monotonistic)とされている.すなわち,一旦宣言された表明と伴意が,あとから追加された表明でくつがえることはなく,世界の可能性をより狭く厳しくすることしかできない.たとえば,コワルスキーを鳥と宣言した場合,あとからそれをペンギンということはできても人と言い換えることはできない.ただし,RDFとRDFSの範囲では互いに素(disjoint)であることを表明する手段がないので,実際には上述の表明をすればコワルスキーは鳥でありかつ人であるということになる.
 RDFおよびRDFSでは全部で16個の伴意レジームが規定されている.トリプルのサブジェクトおよびオブジェクトは必ずrdfs:Resourceのメンバーとなるし,プレディケイトは必ずrdf:Propertyのメンバーである.前述のrdfs:domainとrdfs:rangeの伴意ルール,rdfs:subClassOfとrdfs:subPropertyの推移律のほかにそれらの自己反射律(self refrection)もある.
 ブランクノードがない場合を考慮するRDF単純解釈は命題論理に類似であるが,唯一名仮説に立たないすなわち非唯一名仮説(non-unique name assumption)なので,RDFグラフの真偽値を決定するには,命題論理における真偽値の付値よりもさらに各ノードが何を指示するのかの解釈が重要な問題となる.すなわち表示的意味論(denotational semantics)において,名前(IRI)が世界に照らして何を指示(denote)するのかを考慮して,個々のトリプルとRDFグラフ全体を構成しなければならない.XMLデータスキーマを用いなければ,明示的な否定のないRDFと,クラスにdisjoint定義機能のないRDFSでは,推論上クラッシュすることはなく,たとえば現実にはあり得ないRDFグラフを与えても,もし与えたすべてのトリプルが真であるとすると,それは充足可能(satisfiable)となってしまう.充足可能なRDFグラフが世界を正しく反映していることを保証するのはオントロジストの責任である.XMLデータスキーマを用いた場合には,互いに素(disjoint)なデータ型関係があるので,RDFグラフの構成によっては充足不能(unsatisfiable)(実際にはデータタイプクラッシュ)を導くことがあり得る.なお,有限のRDFグラフは決定可能(decidable)である.
 ブランクノードを含むRDFグラフの解釈は,ブランクノードを存在限量(existential quantifier)された論理変数としたときの論理に類似であり,その解釈はRDF単純解釈の拡張であって,ブランクノードなしのRDFグラフ解釈を変更するものではない.ブランクノードについての解釈はそれが世界に存在する何かを指示するということである.ブランクノードを有するRDFグラフからブランクノードを除いたRDFグラフが充足可能であれば,ブランクノードのある元のRDFグラフも充足可能である.SPARQLクエリにおいてブランクノードは任意のノードにマッチできる便利な変数と考えればよく,クエリパターンを上手に書くことでブランクノードを経由してブランクノードではないノードの望みの情報を取り出すことができる.
 RDFとRDFSの勧告のどこにもそのような記述はないが,セマンティックウェブでは世界についてすべてを知ることはできないということから開世界仮説(open world assumption)に立っているとされる.しかし開世界仮説ではある言明が成り立たないことを論理的に言うためには,Negation as Failure (NaF) を用いることができず,積極的にそれを演繹しなければならない.すなわちAが演繹できないからと言って(NOT A)ということにはならない.実用システムではこれが問題となり,多くの推論システムでは密かに一部に,あるいは明示的に全体として,閉世界仮説(closed world assumption)を導入しているというのが実情である.
 RDFとRDFSにおいてrdfs:Resourceはすべてのリソースを含むクラスであり,クラス階層の最上位クラスである.一方,rdfs:Classはすべてのクラスをメンバーとするクラスであり,そのメンバー(外延の要素)にはrdfs:Resourceの指示物もrdfs:Classの指示物自身も含まれる.かつて研究コミュニティの一部にRDF・RDFSはラッセルのパラドックスを引き起こすという議論がされたことがあったが,RDF意味論[RDF Semantics]では「オブジェクトとしての[…]クラスはそれらの外延(extension) – […],そのクラスの『中』に含まれるような事物 – とは区別される」と説明されている.しかしこのような説明だけでは先の疑問を解消することは難しく,さらに深い議論が必要である.ただし,同種の問題は型階層を束(lattice)と捉える計算機言語において起こる問題であるが,それらの計算機言語でこのような議論が起こったことはない.組み込みのメンバーシップ・ループは計算機言語実装において簡単に処理されていて,プログラマーが積極的にクラス・インスタンス関係のメンバーシップ・ループを持ち込まない限り問題は生じない.なお,実用的観点から言えば推論の都合上,RDFグラフではrdfs:Resourceとrdfs:Classを除いてはメンバーシップ・ループを許さないのみならず一般的に非循環グラフ(acyclic graph)でなければならない.これは通常のPrologプログラミングと同様のことである.知識記述への興味は別として,もしシステムにおいて循環グラフを許すとするならそれを可能とする論理的あるいは手続き的システム化が要求される.


[参考文献]

[RDF Concepts] (2014). RDF 1.1 Concepts and Abstract, http://www.w3.org/TR/rdf11-concepts/.

[RDF Schema] (2014). RDF Schema 1.1, http://www.w3.org/TR/rdf-schema/.

[RDF Semantics] (2014). RDF 1.1 Semantics, http://www.w3.org/TR/rdf11-mt/.

[IRI] (2005). Internationalized Resource Identifiers (IRIs), https://www.ietf.org/rfc/rfc3987.txt.

明けましておめでとうございます

何となく毎年1月元旦にご挨拶の代わりに、振り返りのブログ記事を書くようになっていました。計画的にそのようにしたわけではないのですが、今になってあとから読み返すと何がどう変わってきたのかがよく分かるので、今年も自分の振り返りのために元旦のご挨拶を申し上げます。

ちなみに、年末あるいは新年にお届けしたブログ記事のタイトルを眺めてみますと、
2012年のタイトルではよくわかりませんが、記事のなかでは「この1年間の動きを振り返ってみると,[2011年での]見通しがその通りになってきた1年であった」と述べています。これらのタイトルの変遷から分かるように、LODが日本でも着実に発展してきて、オープンデータについては日本政府をはじめとして、あたりまえになってきているし、リンクトデータについても認知が進んできて、一部ではデータをリンクトデータにして出すということも普通に行われるようになってきています。

さて、今年を振り返ってみると、学会レベルでは、実用を前提としたデータ連携の話と、LODを前提とした推論の話が出てきて、確かにLODも次のフェーズに移りつつあるというのが実感できました。LODチャレンジを見ても、私の個人的な印象ですが、にわか勉強では到底到達できないようなレベルの作品が賞を受けるようになってきています。もちろんLOD関係者がそのように主導してきたという側面もありますが、一方で、その内容がどんどん高度化して難しくなってきていて、アーリィマジョリティからさらにマジョリティに浸透して社会基盤に進むためには、ここでもう一度初心者でも容易にLODに取り組めるような、技術の「民主化」が必要になってきているとも思います。個人的にも、これからは一見難しい(実のところ本当にも難しい)推論とかオントロジーなるものを、よりやさしく社会に提供していくことに、注力したいと思っています。

オントロノミー合同会社の活動として、昨年1年間で8回の講習会を開くことができました。その多くは赤字ですが、そんな中で参加された方々や呼んでいただいた方々に感謝いたします。特に年末に中京で行った講習会では参加者お二人でしたが、結局そのお二方とも学会や講習会でそれまでにお会いしていた人たちで、いかに日頃の活動の中での人間関係が重要かということをあらためて認識されられました。身銭をきって会社を休んででも参加していただいたことには、まったく頭が上がりません。一方で、関東地方ではこんなにも盛り上がるのに、中京や関西ではまったくそういうことがなくて、これは一体どうしたことかとも思わざるを得ませんでした。地方での弊社の存在感がない、SNS以外のチャンネルがないということは明らかで、ローカルでのパートナーが必要であると思い、名古屋に限っては三社にメールにてお声架けさせてもらいましたが、何となんの音沙汰もないというのは、一体どういうことでしょうか。SNSはおろか、infoメールも見ない?

オントロノミーも現在3期目なので、これからはコンサルだけでなく、今後のLOD「民主化」に役立つような、何かプラットフォームづくりに注力したいと考えています。具体的な形はまだ絞り切れていませんが、追々アルファ版が出来次第公開していきます。一方、「Common Lisp と人工知能プログラミング」電子書籍も、事例ベース推論の途中までとなっています。この本とCommon Lisp講習会をきっかけとして、Common Lisp界隈で動きが活発になってきているのは望外の喜びですが、残る論理関係の章を早く書きあげて完成させ、次のターゲットに進みたいと思っております。

皆様のこれまでのご厚意に感謝するとともに、今後の益々のご活躍とご発展を願っております。私も各位との関係をさらに密にすると同時に、私は私のやるべきことを追求していきたいと思っています。

本年もどうぞよろしくお願いいたします。





Stemming とは,英単語から語幹(stem)を取りだすことですが,Porter Stemmerは1979年に公開された古典的なステマ―で,各種の言語版が開発されています.Common Lisp 版の porter stemmer は Franz 社の Steven M. Haflickによって移植されたものがあります.使ってみるとすぐ分かりますが,まず第1に品詞の区別なくstemmingしますので,connections から connect が得られます.
cl-user(3): (stem "connections")
"connect"
ここは "connection" が出てきてほしいところです.もともと porter stemmer が情報検索 (IR) を目的に開発されたものらしくって,確かに情報検索用にはこれで問題ないでしょうが,それ以外の目的,たとえばエージェントの対話機能のためとか,英語の自然言語解析に使おうとすると,品詞を区別するとか,もっと精密なステミングがほしいということになります.porter stemmer のアルゴリズムは言ってみればヒューリスティックなもので,軽くて速いという利点はありますが,検索精度や再現率はあまり高くないということになります.porter stemmer の問題点は先の資料やオリジナル論文にもきちんと書いてあります.

IBM の Watson では,stem クラスというものを設けて,この問題に対処しているようです.私は WordNet をLODデータにしていますが,WordNet には synset にその意味の説明文や例文があるにもかかわらず,WordNet 内部での相互リンクはありません.synset の説明文や例文をLOD的にアノテートしようとすると,どうしても stemmer が必要になります.Watson とは異なって,WordNet 用のステミング機能が必要だと考えています.

このページのトップヘ