Contenu connexe Similaire à RDF/OWLの概要及びOSS実装、及び活用イメージについて (20) Plus de Masayuki Isobe (20) RDF/OWLの概要及びOSS実装、及び活用イメージについて2. 0111010001010101011101…
(1) LinkedOpenData 勃興の確かな兆し
(2) スマホファーストとネイティブアプリ化
(3) 次なるITの開拓地 「Internet Of Things」
今後セマンティックWeb技術が不可欠となる3つの根拠
2014/8/30現在
2007/9
20011/9
Cloud
Servers
not HTML but JSON
not Browser but Apps
アプリが扱うJSON
のデータ形式の数
>> DBのテーブル数
??
「データ自体が
社会インフラ」
になるという
パラダイムシフト
0111010001010101011101 …
0111010001010101011101 …
raw data
infinite online sensor devices
DB
?
enables various
IoT applications
to make sense
生データと
アプリケーションを
つなぐ柔軟な
中間データ形式
の必要性
IoT Apps 3. 「非構造データ」
「構造化データ」
「LinkedData」
非構造と構造の間をカバーするLinkedData
利点
・データ生成コストが低い
・1次情報としての完全性
欠点
・データ量が多い
・アプリケーションで
直接使えない
利点
・アプリケーションで直接使える
・必要なデータのみ保持する
欠点
・想定用途でしか使えない
・アプリケーション間での
相互利用は通常困難
・データ作成にコストが掛かる
利点
・想定してない用途をカバーできる
・アプリケーション間で相互利用可能
・生データより量が少ない
欠点
・データ作成にコストが掛かる
・作り方によってアプリケーション
のカバー範囲が変わる
(柔軟性があるという長所でもある)
LinkedDataを支える実装技術 = セマンティックWeb(RDF,OWL,etc.)
0111010001010101011101…
0111010001010101011101 …
0111010001010101011101 …
raw data
Image,
Audio/Movie,
Text, (HTML)..
media data 4. LinkedData と LinkedOpenData
非構造データ
構造化データ
LinkedData
LinkedData
LinkedOpenData
社外にも公開
非公開
① アプリケーションを横断してデータを利用可能にする形式としてLinkedDataを採用
エクセル表
RDB
NoSQL
Wordドキュメント
PDF
生ログ
POSデータ
Webページ, REST-API(JSON/XML)
② 経営戦略上のメリット・デメリットを勘案した上で、一部をLinkedOpenDataとして公開
「LinkedCloseData」としてデータを蓄積しておくことで
後々の社内外における様々な利活用が見込める
LinkedCloseData
アプリケーションとデータの間が疎結合になることで大きなメリットがある 5. RDFとは何か(1)
・リソースを記述するフォーマット(Resource Description Format)
RSS = RDF Site Script : RSSはRDFで記述したWebサイトのメタデータ
・有向グラフのノードとエッジに型と名前が付いたようなもの
例) ドラえもんワールド
機能
空中 飛行
ひみつ道具
ドラえもん
ロボット
どこでもドア
タケコプター
のび太
ジャイアン
しずかちゃん
スネ夫
男
女
性別
性別
性別
性別
友達
友達・同級生
友達・同級生
友達・同級生
小学生
is-a
is-a
is-a
is-a
搭載
瞬間
移動
搭載
搭載 6. RDFとは何か(2)
・ノード – エッジ – ノード という3つ組のことをRDFトリプル(Triple)と呼ぶ
例)
のび太
小学生
is-a
= 「のび太は小学生である」
(人間の言葉でいうところの「文」に相当する)
・グラフ全体(=RDF文書)は、RDFトリプルの集合(=文の集合)として表現できる
機 能
空 中 飛 行
ひみつ 道具
ドラえも ん
ロボット
どこでも ドア
タケコプ ター
のび太
ジャイア ン
しずか ちゃん
スネ 夫
男
女
性別
性別
性別
性別
友達
友達・同級生
友達・同級生
友達・同級生
小学 生
is-a
is-a
is-a
is-a
搭載
瞬 間
移 動
搭載
搭載
例)
のび太
小学生
is-a
のび太
ドラえもん
友達
…
・RDFは文と文書に相当する。
- トリプルだけで記述するため、人間の言葉のような複雑な文法が無い。
さて、ノード名「のび太」「ドラえもん」「ひみつ道具」や、エッジ名「友達」「性別」等 の「用語」をどう定義するか? → 次のスライド
文の集合
文書 7. RDFとは何か(3)
・ノード名、エッジ名はURIとして記述する
例)
のび太
小学生
is-a
実際のRDFの例)
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:doraemon=“http://dora-world.com/#” />
<rdf:Description rdf:about=“http://dora-world.com/#のび太">
<doraemon:isa>
<rdf:Description rdf:about="http://dora-world.com/#小学生">
</doraemon:isa>
</rdf:Description>
</rdf:RDF>
・上の例では、「のび太」や「小学生」は http://dora-world.com/# という名前空間で
ローカルに一意な用語として定義している。
・したがって、同じ用語は名前空間の数だけ存在しうる。(A社の佐藤さんとB社の佐藤さん、みたいに)
→ よく使う用語の意味はなるべくグローバルに定義して共通に使いたい!
(次スライドへ)
参考) IRIについて
URIが日本語を含む場合、URIエンコーディングが必要となる。
(URI文字列自体はAscii文字列である必要があるため)
そのためXMLで日本語を使った場合、URIがXMLの文字コードに依存してしまい
仕様外の利用になってしまう。
→ そこで、RDFでは実際にはURIではなく、
IRI (= URIを国際化対応文字をエンコーディング可能にしたもの)
という形式でノード名、エッジ名を記述することになっている。 8. 定義済みの用語とメタ情報階層
・FOAF : ソーシャルグラフを記述するための用語
・DublinCore : 文書のメタ情報を記述するための用語
・RDFS: クラス継承関係、プロパティなどの構造を記述するための用語
・OWL: 用語の意味構造をRDFSよりも柔軟に定義するための用語
このように、RDFでデータを記述することにより、実体とメタ情報、メタ情報の
メタ情報、といったメタ情報の階層を自由に行き来する情報表現を行うことが
可能になる。
上の例ではFOAFやDCは「意味を定義済みの用語」に相当するが、RDFSやOWLは
「用語(すなわちボキャブラリ)の意味構造を定義可能にする」目的で定義されている。
RDFS, OWL
個々の
実体データ
を記述する
RDF文書
(個体)
用語の意味を
記述する
RDF文書
(ボキャブラリ)
ボキャブラリ
個体・ファクト
それぞれ
URI名前空間が
定義されている 9. RDFS : RDFスキーマ
・いわゆる「オブジェクト指向言語」のクラスとプロパティのような構造を
記述するための用語
(RDFスキーマの使用例)
のび太
小学生
rdf:type
ドラえもん
ロボット
rdf:type
友達
rdf:Property
友達
rdf:type
rdfs:Class
友愛対象
人間
rdfs:subClassOf
rdfs:subClassOf
rdf:type
rdfs:domains, rdfs:range
(エッジの始点と終点に取りうるクラスを制約できる)
ボキャブラリ
個体 / ファクト
RDFS内で定義済
このようにボキャブラリと個体・ファクトは一つのRDF文書で一緒に記述することも可能だが
ボキャブラリを独立したRDF文書として予め定義して使いまわすことにより、意味が定義済の
用語を使って対象データを簡潔に表現できるようになる
ボキャブラリのおかげで個体・ファクトの記述は簡潔
ちなみにRDFSは多重継承が可能
rdfs:subClassOf 10. RDFスキーマにおける推論
・RDFSで記述したボキャブラリ及び個体・ファクトのデータには、
RDFS向けに作られている「推論エンジン(ReasonerとかInference Engineとか呼ばれる)」
を使って、知識を推論できる
推論 = 「記述していないRDFトリプルを自動的に追加する」タスク
例えば前スライドのRDF文書には、「のび太は人間である」を意味する以下のRDFトリプルが
記述されていないが、のび太は小学生のインスタンスで、小学生は人間のサブクラスである
ことから推論可能。
オブジェクト指向をサポートするプログラミング言語では当たり前にできることなので、
一見あまり便利な気がしない。しかしこの推論機能があるおかげで、ボキャブラリ ・
個体・ファクト共に「必要最小限のこと」だけを簡潔に記述できるようになる。
(実際に知識記述をしてみると、このメリットは思いのほか大きい。)
のび太
人間
rdf:type
参考) forward chaining と backward chaining について
上記のように、推論タスクは明示的に記述されていないRDFトリプルをシステムが追加するタスクに相当する。
その際、追加のタイミングについて2つの考え方がある。
一つ目は、「のび太は人間か?」と聞かれる前に予めそのRDFトリプルをRDF文書内に追加しておく方法で、
forward chainingと呼ばれる。
二つめは、その逆で、「のび太は人間か?」と聞かれたときに推論エンジンで該当部分の推論を行う方法で、
backward chainingと呼ばれる。
前者は実行効率は良いがメモリ・ストレージの効率が悪く、後者はその逆となる。 11. OWL : Webオントロジー言語
・RDFSのクラスとプロパティの機能に加えて、さらに以下を可能にしたもの
- クラスの集合演算(and or not)
- 2つのクラスが一致する、全く共通部分なし、などの記述
- enum型のように個体を集めて一つのクラスとすること
- プロパティの値制約(RDFSはクラス制約までしかできない)
- 個体・ファクトどうしが別実体であることの記述
例)
ロボット
猫
猫型
ロボット
ロボット owl:and 猫
rdfs:subClassOf
rdfs:subClassOf
owl:equivalentClass
多重継承との違いに注意。
「猫であってロボットでないもの」は
「猫型ロボット」に属さない。
ドラえもん
ドラミちゃん
RDFSと同様に、OWLも予めボキャブラリを定義しそれを再利用することで、
複雑なドメイン知識を簡潔に記述できるようになる。
また、推論エンジンもOWLの記述力に合わせて「あるクラスのインスタンスが
存在しうるか?(充足可能性判定)」や「このインスタンスはこのクラスに所属
するか?」といった推論(=RDFトリプルの存在判定タスク)が可能。 12. RDF / OWL関連の補足
・RDFはXMLでシリアライズされるが、互換性のあるシリアライズ形式がいくつかある
- Turtle, N-Triples, JSON-LD, N3 / Notation3
- とくにOWL文書の場合も、常にRDF記述できるのでRDFシリアライザを利用可能だが
OWL専用のシリアライズフォーマットも 関数構文、マンチェスター構文 などいくつかある
→ 発表者は人間が読み書きしやすい Turtle が一番好きで使っている。
・リテラル(文字列や数値といったオブジェクトじゃないプリミティブな値)は
XMLSchemaDefinition(xsd)という名前空間で定義された用語を用いて記述する
・OWL 1と2の違い
OWLはバージョン1と2がある。2は1の上位互換で、以下の機能が追加される。
- プロパティ連鎖 (母の兄弟は叔父、とか)
- プロパティの条件付きカーディナリティ宣言
(タイヤの数はバイクは2でクルマは4、とか)
- 反射的プロパティや素のプロパティ
(相手が婚約者ならば相手からみても婚約者、とか、
母であることと父であることは両立しない、とか)
・OWLはバージョンごとに目的別サブセットが存在 (主に記述力と実行効率のバランス目的)
- OWL1 Lite, DL, Full
DL=厳密な記述、Full=クラスを個体にできたりと少しゆるい、Lite=DLの簡易版
- OWL2 EL, QL, RL
EL: 大規模オントロジー向け、QL: SQL/RDB連携向け、RL: ルールエンジン連携向け 13. SPARQL : RDFクエリ言語
・RDF文書(=RDFトリプルの集合)から、RDFトリプル(の集合)を検索したり
挿入/書き換えしたりするためのクエリ言語
・SPARQLでRDFトリプルの挿入クエリとして使う場合の推論エンジンとの違いは、
論理的な整合性など関係なく単純な条件一致でRDFトリプルを生成すること。
・公開されているRDFデータベースにSPARQLインタフェースが付いたものは
SPARQLエンドポイントと呼ばれ、 http://ja.dbpedia.org/sparql などが代表的。
【SPARQLクエリの例】 :アフリカ諸国の首都のリストを返す
独自に定義したボキャブラリ(クラスやプロパティ)を使って検索できるため、
SQLでいうところのJOINの連鎖を何段も重ねるような処理を簡潔に記述できる
PREFIX abc: <http://mynamespace.com/exampleOntologie#> SELECT ?capital ?country
WHERE { ?x abc:cityname ?capital.
?y abc:countryname ?country.
?x abc:isCapitalOf ?y.
?y abc:isInContinent abc:africa. }
詳細はWikipediaを参照 14. SWRL : セマンティックWebルール言語
・SPARQLで実行出来るのはサブクエリでネストは出来るが基本は単発のクエリ式。
・しかし、サブルーチン的にクエリを組み合わせたい。
例)風が吹けば桶屋が儲かる
例) 「同級生」プロパティは同値関係で、所属する学年度が同じ、と定義
RDFS/OWL一般の推論エンジンではサポートできないドメイン固有の推論規則を記述
することでボキャブラリの意味定義を深め、さらにRDF文書を簡潔に記述可能に。
詳細はWikipediaを参照
# 反射律。OWLのボキャブラリでも記述可能
True → (?a 同級生 ?a)
# 対称律。OWLでも記述可能
(?a 同級生 ?b) → (?b 同級生 ?a)
# 推移律。OWLでも記述可能
(?a 同級生 ?b) (?b 同級生 ?c) → (?a 同級生 ?c)
# ドメイン固有のルールのためOWL一般の推論だけでは実現不可能
(?x 同級生 ?a) (?a is-a ?b) (?b subClassOf 学年度) → (?x is-a ?b)
(PrologやDatalogのクエリのようなイメージ) 15. OSS紹介(1): Apache Jena
・HP研究所からのOSSスピンアウト
・Javaで実装されている
・Maven Central Repositoryに登録済
・RDFデータベースをサポート
- TDBという独自の永続化方式
- RDBバックエンド方式もサポート
・OWL 1 をサポート
・OWL 2 の推論はサポートしない
(RDFストアとして読み書きは可能)
・RDFS 推論エンジンを搭載
・一般ルールエンジンを搭載
・ Fuseki : REST-APIインタフェースを搭載
・ SPARQL をサポート
- ARQというグラフDB的な機能強化版
https://jena.apache.org/
【発表者の所感】
・企業での使用実績もあり、安定動作するようだ
・ドキュメントがきちんと整備されていて、ハマりにくい。最初に試すにはおススメ。
・RDFトリプルストア(RDFデータベース)としての性能も結構よさそう
(ただし、後述のVirtuossoのほうがより採用されている) 16. OSS紹介(2): Virtuosso
・OpenLinkSoftware社の製品
・サポート付きは有償、サポートなしは無 償のデュアルライセンス
・Dbpedia(後述)などSPARQLエンドポイン トでの採用数は恐らくトップ
・RDFトリプルDBとしての性能、スケーラビ リティもネット上を見る限り評判が良い
・OWLサポートは限定的
・推論エンジンも簡単なところしか実装
されてない
http://virtuoso.openlinksw.com/
【発表者の所感】
・なんといってもDbpediaでの採用実績が大きい。SPARQLエンドポイント立てるときは
なにも考えずにこれ、で問題ない。
・RDFS/OWLでの推論エンジンには期待できない。別途forward-chainingで
RDFトリプルを用意しておき安定動作するRDFトリプルストア+SPARQLエンド
ポイントとして使うのがよさそう。 17. OSS紹介(3):protege
・スタンフォード大学の研究プロジェクト
・OWLのGUIエディタとして定番
・Javaで実装されている
・OWLサポートはOWL1,2仕様に対する
リファレンス実装であるOWLAPIライブラリ (後述)を利用している
・推論エンジンやGUIウィジェットなどが
プラガブルに追加できるようになっている
- 推論エンジン: FaCT++, Helmit, Pellet
- その他、数々のプラグイン
・Web版も提供され、複数人での
コラボレーション開発が可能
http://protege.stanford.edu/
【発表者の所感】
・GUIが便利で対応している推論エンジンも多く、人手でオントロジーを作成する
際には不可欠。
・リリース環境向けのサーバ機能は提供されていないので、作成したオントロジーを
自分の製品に組み込む際は、OWLAPIライブラリまたはそのProtégéラッパーを使って
自身で永続化等を行う必要がある。OWLAPIはファイル読み書きはサポートするが、
トリプルストアに格納したい場合は別途JenaやVirtuossoと組み合わせるのがよさそう。 18. OSS紹介(4):OWLAPI
・OWL1,2の仕様に対するリファレンス実装
・RDF/OWLの様々なシリアライズ形式に対 応(ファイル読み書き)
・推論エンジン向けインタフェース
- FaCT++, HermiT, Pellet , Racer が対応
・LGPL
・Javaで実装されている
・Maven Central Repositoryに登録済
・OWLの仕様の実装を追及したライブラリ
なので機能が豊富
http://owlapi.sourceforge.net/
【発表者の所感】
・自分のサービス内部でOWL2を使った処理を行いたい場合に使う感じ。
RDFトリプルストアなどは提供されないが、色々なRDF/OWLファイル形式の
読み書きに対応しているのでプロトタイプ開発時にはこれ単体でも十分。
・JavaDoc読めばわかるけどドキュメントはApacheJena程は整備されてない。 19. OSS紹介(5):Sesami
・セマンティックWeb技術全部入り
・RDFトリプルストアからOWLサポートまで
・これ一つで全ユースケースをカバーする ことを指向
・Virtuosso等、他のシステムとの相互運用
も結構サポートしている
・Javaで実装されている
・Mavenリポジトリに登録されている
http://www.openrdf.org/
【発表者の所感】
・サンプルコードを書いて試してみたが、完結したシステムとして使える万能選手
という感じ。
・ライブラリとして見たときに、OWLAPIと比べてオーバースペック感があり、発表者
はまだsesamiはあまり使おうと思わない。
・独自の機能追加をしたりせずRDFやOWLの仕様の通りにSPARQLや推論エンジン
を使う場合は便利かもしれない。 20. OSS紹介(6):GoogleRefine / OpenRefine
・RDF/OWL仕様を実装したものではなく、
データの加工に特化したツール
・元はGoogleのプロダクトだったが、
OpenRefineという名前に変えてOSSとして
スピンアウトした。
・欠損データの処理や名寄せ、形式の
統一などのクレンジングを効率的に行える
・RDFエクステンションが提供されていて
CSVファイルからRDFに半自動で大量に一 括変換が可能
【発表者の所感】
・このソフトは本日のこの勉強会のテーマ「非構造データの前処理」にもっとも
適うOSSの紹介かと思います。RDF/OWLに限らず様々なデータのクレンジング
を効率的に半自動でやるツールとして便利です。
・LinkedData/セマンティックWebの観点では定義済のボキャブラリを使って
RDFを大量に生成する場合のツールとして不可欠。
https://code.google.com/p/google-refine/ 21. OSS紹介(7):SUMO 上位オントロジー
・システムではなく公開されているオントロ ジー(ボキャブラリの部分)の紹介です。
・Wordnetというシソーラス(類義語ツリー)
をベースにしたオントロジー。
・元データはOWLではないがOWLバージョ ンがダウンロードできる。ただしデカい。
・こうしたグローバルに使えるボキャブラリ を定義したオントロジーを上位オントロジー
(UpperOntology)と呼ぶ。
【発表者の所感】
・上位オントロジーの中で最も有名と思われる
・Wordnetの出来が良いためSUMOの出来もかなり良い
・ただし元データがOWLじゃないので微妙に使いづらい(ファイル1つなので
メモリに読み込めない)
http://www.ontologyportal.org/ 22. OSS紹介(8):YAGO 上位オントロジー
・これもOSSの上位オントロジーです。
・マックスプランク研究所という物理学ゆる ふわ勢たちが開発したもの。
・クイズ番組Jeopardyで世界チャンピョン
になったあのIBM Watsonで使われている
オントロジーがこれ。
・RDF/OWLで記述されているので LinkedData向き
・WordNetからDbpedia、ほか、あらゆる情 報ソースから概念を取り込んで高いカバ レッジを持たせつつ知識の精度も落とさな いという高品質オントロジー。
【発表者の所感】
・本気で上位オントロジー使うなら事実上これしかない。
・Q&Aシステムとして商用ローンチされたIBMのWatsonには搭載されているので、
そういう方面の活用は性能が担保されているし、非構造データを構造化する際の
関連付け先としてこれを使うというのも良さそう。
・ただしデータ量がデカい。また英語なので日本語との対応付けなど追加の
データが必要。
YAGO: Yet Another Great Ontology 23. OSS紹介(9):gist7.0 上位オントロジー
・ミニマリストのための上位オントロジー
・SemanticArts社によるCreativeCommons
ライセンスのプロダクト
・軽いのでProtégéにさくっと読み込める
・ボキャブラリを作るためのボキャブラリ
でしかなく、具体的なデータについては
なにも言及がない。
・ドキュメントは動画が結構アップされてい る。
【発表者の所感】
・使っている概念がシンプルで、出来るだけMECEに近くなるように概念構成が
組み立てられているので把握しやすく、使いやすい。
・軽量で直観的な上位オントロジー。全部の概念を把握するのも簡単。
(実際、発表者はgist7.0をprotégéで全部読みました)
・知識のカバレッジよりもドメイン特化でセマンティックに動作する
エンタープライズナレッジDBをスクラッチから作るような場合に向きそう。
・あとはオントロジーを自分で独自に作ってみたいときにこれは出発点
とするのは良いかもしれない。
http://semanticarts.com/gist/ 24. ソフトウェアアーキテクチャとの関係
※ 発表者の個人的な見解です。
・設定ファイル駆動からDSL駆動、そしてRDF/OWL駆動へ
システム
設定ファイル
① 設定ファイル駆動。主に設定 変数を注入することでシステムの 振る舞いをカスタマイズ。
システム
DSL
② DSL(ドメイン特化言語)駆動。
システム内部の部品を組み合わ せるドメインロジックを注入。
システム
RDF/OWL
③ RDF/OWL駆動。システム内部
の機能をRDF/OWLで記述された ナレッジを見て動くように作ってお き、ナレッジ追加とともにシステム
を賢くしていくことが可能に。
DB
DB
DB
機能
機能
部品
部品
部品
ロジック
パラメータ
機能
機能
機能
ナレッジ
例) Webクローラ (口頭で説明) 25. 機械学習・データマイニングとの関係
※ 発表者の個人的な見解です。
・「①処理対象のデータに関する知識」と、「②適用可能なアルゴリズム
に関する知識」 をRDF/OWLで記述する。(他にも、「可視化手法の知識」など)
0111010001010101011101…
0111010001010101011101 …
0111010001010101011101 …
raw data
Image,
Audio/Movie,
Text, (HTML)..
media data
①処理対象の非構造データ
②アルゴリズムに関する知識
非線形
回帰
教師あり
分類
rdfs:subClassOf
rdfs:subClassOf
ボキャブラリ
rdfs:subClassOf
アルゴリズムの性質を表すボキャブラリ
RDF/OWL
文書
RDF/OWL
文書
教師なし
システム
参照
参照
参照
適用可能な分析手法をシステムが自動的に判断し、加工、分析、レポーティング
までをある程度まで人手を介すことなく実行できる可能性がある。
記述
記述