Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RDF/OWLの概要及びOSS実装、及び活用イメージについて

8,011 views

Published on

ゆるふわ 非構造#1 発表資料
非構造データ、構造化データ、LinkedDataの技術概要と
OSS実装、活用イメージについて。

Published in: Technology
  • Be the first to comment

RDF/OWLの概要及びOSS実装、及び活用イメージについて

  1. 1. RDF/OWLの概要とOSS実装、及び活用イメージについて ~非構造データの構造化ゴールとしてのLinkedData~ 礒部 正幸 / アドファイブ株式会社 2014/9/28 ゆるふわ非構造 #1
  2. 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. 3. 「非構造データ」 「構造化データ」 「LinkedData」 非構造と構造の間をカバーするLinkedData 利点 ・データ生成コストが低い ・1次情報としての完全性 欠点 ・データ量が多い ・アプリケーションで 直接使えない 利点 ・アプリケーションで直接使える ・必要なデータのみ保持する 欠点 ・想定用途でしか使えない ・アプリケーション間での 相互利用は通常困難 ・データ作成にコストが掛かる 利点 ・想定してない用途をカバーできる ・アプリケーション間で相互利用可能 ・生データより量が少ない 欠点 ・データ作成にコストが掛かる ・作り方によってアプリケーション のカバー範囲が変わる (柔軟性があるという長所でもある) LinkedDataを支える実装技術 = セマンティックWeb(RDF,OWL,etc.) 0111010001010101011101… 0111010001010101011101 … 0111010001010101011101 … raw data Image, Audio/Movie, Text, (HTML).. media data
  4. 4. LinkedData と LinkedOpenData 非構造データ 構造化データ LinkedData LinkedData LinkedOpenData 社外にも公開 非公開 ① アプリケーションを横断してデータを利用可能にする形式としてLinkedDataを採用 エクセル表 RDB NoSQL Wordドキュメント PDF 生ログ POSデータ Webページ, REST-API(JSON/XML) ② 経営戦略上のメリット・デメリットを勘案した上で、一部をLinkedOpenDataとして公開 「LinkedCloseData」としてデータを蓄積しておくことで 後々の社内外における様々な利活用が見込める LinkedCloseData アプリケーションとデータの間が疎結合になることで大きなメリットがある
  5. 5. RDFとは何か(1) ・リソースを記述するフォーマット(Resource Description Format) RSS = RDF Site Script : RSSはRDFで記述したWebサイトのメタデータ ・有向グラフのノードとエッジに型と名前が付いたようなもの 例) ドラえもんワールド 機能 空中 飛行 ひみつ道具 ドラえもん ロボット どこでもドア タケコプター のび太 ジャイアン しずかちゃん スネ夫 男 女 性別 性別 性別 性別 友達 友達・同級生 友達・同級生 友達・同級生 小学生 is-a is-a is-a is-a 搭載 瞬間 移動 搭載 搭載
  6. 6. RDFとは何か(2) ・ノード – エッジ – ノード という3つ組のことをRDFトリプル(Triple)と呼ぶ 例) のび太 小学生 is-a = 「のび太は小学生である」 (人間の言葉でいうところの「文」に相当する) ・グラフ全体(=RDF文書)は、RDFトリプルの集合(=文の集合)として表現できる 機 能 空 中 飛 行 ひみつ 道具 ドラえも ん ロボット どこでも ドア タケコプ ター のび太 ジャイア ン しずか ちゃん スネ 夫 男 女 性別 性別 性別 性別 友達 友達・同級生 友達・同級生 友達・同級生 小学 生 is-a is-a is-a is-a 搭載 瞬 間 移 動 搭載 搭載 例) のび太 小学生 is-a のび太 ドラえもん 友達 … ・RDFは文と文書に相当する。 - トリプルだけで記述するため、人間の言葉のような複雑な文法が無い。 さて、ノード名「のび太」「ドラえもん」「ひみつ道具」や、エッジ名「友達」「性別」等 の「用語」をどう定義するか? → 次のスライド 文の集合 文書
  7. 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. 8. 定義済みの用語とメタ情報階層 ・FOAF : ソーシャルグラフを記述するための用語 ・DublinCore : 文書のメタ情報を記述するための用語 ・RDFS: クラス継承関係、プロパティなどの構造を記述するための用語 ・OWL: 用語の意味構造をRDFSよりも柔軟に定義するための用語 このように、RDFでデータを記述することにより、実体とメタ情報、メタ情報の メタ情報、といったメタ情報の階層を自由に行き来する情報表現を行うことが 可能になる。 上の例ではFOAFやDCは「意味を定義済みの用語」に相当するが、RDFSやOWLは 「用語(すなわちボキャブラリ)の意味構造を定義可能にする」目的で定義されている。 RDFS, OWL 個々の 実体データ を記述する RDF文書 (個体) 用語の意味を 記述する RDF文書 (ボキャブラリ) ボキャブラリ 個体・ファクト それぞれ URI名前空間が 定義されている
  9. 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. 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. 11. OWL : Webオントロジー言語 ・RDFSのクラスとプロパティの機能に加えて、さらに以下を可能にしたもの - クラスの集合演算(and or not) - 2つのクラスが一致する、全く共通部分なし、などの記述 - enum型のように個体を集めて一つのクラスとすること - プロパティの値制約(RDFSはクラス制約までしかできない) - 個体・ファクトどうしが別実体であることの記述 例) ロボット 猫 猫型 ロボット ロボット owl:and 猫 rdfs:subClassOf rdfs:subClassOf owl:equivalentClass 多重継承との違いに注意。 「猫であってロボットでないもの」は 「猫型ロボット」に属さない。 ドラえもん ドラミちゃん RDFSと同様に、OWLも予めボキャブラリを定義しそれを再利用することで、 複雑なドメイン知識を簡潔に記述できるようになる。 また、推論エンジンもOWLの記述力に合わせて「あるクラスのインスタンスが 存在しうるか?(充足可能性判定)」や「このインスタンスはこのクラスに所属 するか?」といった推論(=RDFトリプルの存在判定タスク)が可能。
  12. 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. 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. 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. 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. 16. OSS紹介(2): Virtuosso ・OpenLinkSoftware社の製品 ・サポート付きは有償、サポートなしは無 償のデュアルライセンス ・Dbpedia(後述)などSPARQLエンドポイン トでの採用数は恐らくトップ ・RDFトリプルDBとしての性能、スケーラビ リティもネット上を見る限り評判が良い ・OWLサポートは限定的 ・推論エンジンも簡単なところしか実装 されてない http://virtuoso.openlinksw.com/ 【発表者の所感】 ・なんといってもDbpediaでの採用実績が大きい。SPARQLエンドポイント立てるときは なにも考えずにこれ、で問題ない。 ・RDFS/OWLでの推論エンジンには期待できない。別途forward-chainingで RDFトリプルを用意しておき安定動作するRDFトリプルストア+SPARQLエンド ポイントとして使うのがよさそう。
  17. 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. 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. 19. OSS紹介(5):Sesami ・セマンティックWeb技術全部入り ・RDFトリプルストアからOWLサポートまで ・これ一つで全ユースケースをカバーする ことを指向 ・Virtuosso等、他のシステムとの相互運用 も結構サポートしている ・Javaで実装されている ・Mavenリポジトリに登録されている http://www.openrdf.org/ 【発表者の所感】 ・サンプルコードを書いて試してみたが、完結したシステムとして使える万能選手 という感じ。 ・ライブラリとして見たときに、OWLAPIと比べてオーバースペック感があり、発表者 はまだsesamiはあまり使おうと思わない。 ・独自の機能追加をしたりせずRDFやOWLの仕様の通りにSPARQLや推論エンジン を使う場合は便利かもしれない。
  20. 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. 21. OSS紹介(7):SUMO 上位オントロジー ・システムではなく公開されているオントロ ジー(ボキャブラリの部分)の紹介です。 ・Wordnetというシソーラス(類義語ツリー) をベースにしたオントロジー。 ・元データはOWLではないがOWLバージョ ンがダウンロードできる。ただしデカい。 ・こうしたグローバルに使えるボキャブラリ を定義したオントロジーを上位オントロジー (UpperOntology)と呼ぶ。 【発表者の所感】 ・上位オントロジーの中で最も有名と思われる ・Wordnetの出来が良いためSUMOの出来もかなり良い ・ただし元データがOWLじゃないので微妙に使いづらい(ファイル1つなので メモリに読み込めない) http://www.ontologyportal.org/
  22. 22. OSS紹介(8):YAGO 上位オントロジー ・これもOSSの上位オントロジーです。 ・マックスプランク研究所という物理学ゆる ふわ勢たちが開発したもの。 ・クイズ番組Jeopardyで世界チャンピョン になったあのIBM Watsonで使われている オントロジーがこれ。 ・RDF/OWLで記述されているので LinkedData向き ・WordNetからDbpedia、ほか、あらゆる情 報ソースから概念を取り込んで高いカバ レッジを持たせつつ知識の精度も落とさな いという高品質オントロジー。 【発表者の所感】 ・本気で上位オントロジー使うなら事実上これしかない。 ・Q&Aシステムとして商用ローンチされたIBMのWatsonには搭載されているので、 そういう方面の活用は性能が担保されているし、非構造データを構造化する際の 関連付け先としてこれを使うというのも良さそう。 ・ただしデータ量がデカい。また英語なので日本語との対応付けなど追加の データが必要。 YAGO: Yet Another Great Ontology
  23. 23. OSS紹介(9):gist7.0 上位オントロジー ・ミニマリストのための上位オントロジー ・SemanticArts社によるCreativeCommons ライセンスのプロダクト ・軽いのでProtégéにさくっと読み込める ・ボキャブラリを作るためのボキャブラリ でしかなく、具体的なデータについては なにも言及がない。 ・ドキュメントは動画が結構アップされてい る。 【発表者の所感】 ・使っている概念がシンプルで、出来るだけMECEに近くなるように概念構成が 組み立てられているので把握しやすく、使いやすい。 ・軽量で直観的な上位オントロジー。全部の概念を把握するのも簡単。 (実際、発表者はgist7.0をprotégéで全部読みました) ・知識のカバレッジよりもドメイン特化でセマンティックに動作する エンタープライズナレッジDBをスクラッチから作るような場合に向きそう。 ・あとはオントロジーを自分で独自に作ってみたいときにこれは出発点 とするのは良いかもしれない。 http://semanticarts.com/gist/
  24. 24. ソフトウェアアーキテクチャとの関係 ※ 発表者の個人的な見解です。 ・設定ファイル駆動からDSL駆動、そしてRDF/OWL駆動へ システム 設定ファイル ① 設定ファイル駆動。主に設定 変数を注入することでシステムの 振る舞いをカスタマイズ。 システム DSL ② DSL(ドメイン特化言語)駆動。 システム内部の部品を組み合わ せるドメインロジックを注入。 システム RDF/OWL ③ RDF/OWL駆動。システム内部 の機能をRDF/OWLで記述された ナレッジを見て動くように作ってお き、ナレッジ追加とともにシステム を賢くしていくことが可能に。 DB DB DB 機能 機能 部品 部品 部品 ロジック パラメータ 機能 機能 機能 ナレッジ 例) Webクローラ (口頭で説明)
  25. 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 文書 教師なし システム 参照 参照 参照 適用可能な分析手法をシステムが自動的に判断し、加工、分析、レポーティング までをある程度まで人手を介すことなく実行できる可能性がある。 記述 記述
  26. 26. まとめ ・セマンティックWeb技術が今後なぜ重要になるか理由を述べた。 ・RDF/OWL関連仕様についての概要説明とOSS実装の紹介をした。 ・RDF/OWLが既存のソフトウェアアーキテクチャやデータマイニング タスクとどう関わるのか、私見を述べた。 一人で会社をやっています。ソフトウェアコンサルティング、受託 開発、アルゴリズム開発、フィージビリティ検討等のご相談は isobe@adfive.net までお気軽にどうぞ。システム開発はスマホ アプリ、Web、データ分析、インフラまで幅広く対応可能です。 ぜひRDF/OWLを活用して、非構造データを Available かつ Useful に蓄積して行きませんか? 最後に宣伝を少し…

×