セマンテックウェブとRDFDB
  株式会社ホットリンク 浅野弘輔
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
浅野 弘輔とは(自己紹介)          使いまわし




株式会社ホットリンクでWeb開発者やってます。




              http://www.hottolink.co.jp/
 趣味:イラスト描き
 自作のアイコン→    http://twitter.com/hirosuke_asano
浅野 弘輔とは(自己紹介)                     発表は2回目




株式会社ホットリンクでWeb開発者やってます。
ブログ分析ツール        の開発を担当。
  アプリケーション / フレームワーク開発(主にJava)
  WebUI開発(jQueryでゴリゴリと。「プロの分析を直感操作で」)
  メンバーを幸せにする開発管理(方式設計、プロジェクトマネジメント)




                         http://www.hottolink.co.jp/
 趣味:イラスト描き
 自作のアイコン→                http://twitter.com/hirosuke_asano
浅野 弘輔とは(自己紹介)                     さぁ、いってみよう!




株式会社ホットリンクでWeb開発者やってます。
ブログ分析ツール        の開発を担当。
  アプリケーション / フレームワーク開発(主にJava)
  WebUI開発(jQueryでゴリゴリと。「プロの分析を直感操作で」)
  メンバーを幸せにする開発管理(方式設計、プロジェクトマネジメント)
大学・大学院では統計工学を専攻、データマーケティ
ングの研究をしてました(Rもその時出会った)。

                         http://www.hottolink.co.jp/
 趣味:イラスト描き
 自作のアイコン→                http://twitter.com/hirosuke_asano
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
本セクションの目的

セマンテックウェブをなんとなく理解する
データ構想についてなんとなく理解する
RDFがなんとなく読めるようになる
RDFDBの存在を覚える
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
セマンテックウェブとは

ウェブにセマンテック(意味)を持たせる
 情報と情報をつなぐリンクに意味を持たせる
 解釈がブレないように意味の定義する
例)今までのウェブ

  DocA             href

                             DocB


  href      href

                      href
         DocC                   DocD
例)セマンテックウェブ

     asano           type

                                    Preson


webmaster     homepage

                            title
    http://www....                     hogehoge
セマンテックウェブのレイヤーケーキ
URI, XML, Unicodeといった蓄積を基盤
に
セマンテックウェブのレイヤーケーキ
URI, XML, Unicodeといった蓄積を基盤
に
マシンが読める形でデータや知識を共有
    RDFによるマシンに理解できるデー
    タ形式
    RDFS 、オントロジーによる語彙と知
    識の記述
セマンテックウェブのレイヤーケーキ
URI, XML, Unicodeといった蓄積を基盤
に
マシンが読める形でデータや知識を共有
    RDFによるマシンに理解できるデー
    タ形式
    RDFS 、オントロジーによる語彙と知
    識の記述
推論規則と論理フレームワーク
    述語論理、記述論理を用いた推論、
    高度な検索
    結果をエージェントが判断して更に処
    理を継続
セマンテックウェブのレイヤーケーキ
URI, XML, Unicodeといった蓄積を基盤
に
マシンが読める形でデータや知識を共有
    RDFによるマシンに理解できるデー
    タ形式
    RDFS 、オントロジーによる語彙と知
    識の記述
推論規則と論理フレームワーク
    述語論理、記述論理を用いた推論、
    高度な検索
    結果をエージェントが判断して更に処
    理を継続
署名と証明と信頼
    なぜこの判断をしたかの論理的な証
    明
    電子署名と暗号化によるデータの保
    証
セマンテックウェブのレイヤーケーキ
コトバが通じる
URI, XML, Unicodeといった蓄積を基盤
に

意味が分かる・伝わる
マシンが読める形でデータや知識を共有
    RDFによるマシンに理解できるデー
    タ形式
    RDFS 、オントロジーによる語彙と知
    識の記述
考えられる・連想できる
推論規則と論理フレームワーク
    述語論理、記述論理を用いた推論、
    高度な検索
    結果をエージェントが判断して更に処
    理を継続
信頼できる
署名と証明と信頼
    なぜこの判断をしたかの論理的な証
    明
    電子署名と暗号化によるデータの保
    証
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
セマンテックウェブとRDF

RDF(Resource Description Framework)はセマンテック
ウェブを構成する技術のひとつ
知識や概念をモデル化する仕組み
  リソースを誰でも読める形で記述する
    フォーマット定義書とか要らない
  コトバに一意な意味を与えられる
    会話の内容で解釈が変わるとかが無い
身近なRDF
RSS1.0
 RDF Site Summary(RDFで記述されたサイトの要約)
 複雑
 コンテンツの更新情報を含む、汎用的な定義。
 難しく、拡張が面倒なので廃れた。
RSS2.0
 Really Simple Syndication
 シンプル
 いろいろ独自拡張されてきたもの(RSS
 0.91,0.92,0.93,0.94)をまとめた
 コンテンツの更新情報の配信に特化
身近なRDF
RSS1.0
 RDF Site Summary(RDFで記述されたサイトの要約)
 複雑
 コンテンツの更新情報を含む、汎用的な定義。
 難しく、拡張が面倒なので廃れた。
RSS2.0
 Really Simple Syndication
 シンプル
 いろいろ独自拡張されてきたもの(RSS
 0.91,0.92,0.93,0.94)をまとめた
 コンテンツの更新情報の配信に特化
 現在最も多く使われているRSS
身近なRDF
RSS1.0
 RDF Site Summary(RDFで記述されたサイトの要約)
 複雑
 コンテンツの更新情報を含む、汎用的な定義。
 難しく、拡張が面倒なので廃れた。
RSS2.0
 Really Simple Syndication
 シンプル
 いろいろ独自拡張されてきたもの(RSS
 0.91,0.92,0.93,0.94)をまとめた
 コンテンツの更新情報の配信に特化
 現在最も多く使われているRSS
RDFトリプル
主語(subject)-述語(predicate)-目的語(object)の組み合
わせを1トリプルとする。
主語と目的語はノード、述語はアークで表現
英文法ならSVOの「誰が」「何の」「何だ」という意味
オブジェクト指向でいえば「主語」はクラス、「述語」はプロパ
ティ、「目的語」は値。メソッドに相当する表現は無い
RDBで言えば、「主語」は主キー,「述語」はカラム、「目的語
」はデータ

               homepage
    Asano                  http://www....


     主語          述語           目的語
RDFのグラフ

       asano           type

                                      Preson


  webmaster     homepage

                              title
      http://www....                     hogehoge
URIとリソース
URI
  インターネット上に存在する情報資源の場所を指し示す記
  述方式
  URIが同じということは同じ意味ということ
述語はURIで表現する
  Titleが「ホームページの題名」なのか「人の肩書き」なのか
  分からないと処理できない
ノードもURIで表現する
  「ホットリンク」の浅野弘輔と「武蔵工業大学 横山研究室O
  B」の浅野弘輔が同一人物であることを保証する
空白ノード
    asano                               name
               type
                                            asano

              Preson               type

   homepage                               Preson
                            homepage
  http://www....

                       http://www....
「asano」ってなんなの?

                        ある人の名前がasano
リテラル
                 name
                             「asano」という
                     asano
                             文字列以上の意味はない
            type             →リテラル

                             Personは何かの概念を
                   Preson
                             示している→リソース
     homepage


http://www....          「http;//www…」という
                        文字列以上の意味はない→リテラル
各要素が持ちうる型

主語
 リソース
 空白ノード
述語
 URI
目的語
 リソース
 リテラル
RDFの構文

  ベースはXML

<rdf:Description rdf:about=“{主語のリソースを指すURI}”>
   <述語>
        <rdf:Description rdf:about=“{目的語のリソースを指すURI}”>
        </rdf:Description >
 </述語>
</rdf:Description >
問題1:トリプル1個

  以下のRDFをグラフにしてください。

<rdf:Description rdf:about=“file://c/temp/hogehoge.doc”>
          <comp:filetype>
                     <rdf:Description rdf:about=“filetype:microsoft.com/WordDocument”>
                     </rdf:Description >
 </ comp:filetype >
</rdf:Description >
回答1:トリプル1個


      file://c/temp/hogehoge.doc



                      comp:filetype



  filetype:microsoft.com/WordDocument
問題2:リテラルノード

以下のRDFをグラフにしてください。

<rdf:Description
rdf:about=“person://hottolink.com/menber#105011”>
       <ex:name>浅野弘輔</ex:name>
       <ex:homepage>
              <rdf:Description rdf:about=“http://www....” />
       </ex:homepage>
</rdf:Description >
回答2:リテラルノード


  person://hottolink.com/menber#105011



           ex:name                ex:homepage

  浅野弘輔                        http://www....
問題3:空白ノード

以下のRDFをグラフにしてください。

<rdf:Description>
       <ex:name>浅野弘輔</ex:name>
       <ex:homepage rdf:resource=“http://www....” />
</rdf:Description >
回答3:空白ノード




         ex:name      ex:homepage

  浅野弘輔             http://www....
問題4:相対URI

以下のRDFをグラフにしてください。

<rdf:RDF ….
 xml:base=“person://hottolink.com/menber”>
<rdf:Description rdf:id=“105011”
       ex:name=“浅野弘輔”
       ex:homepage=“http://www....” />
</rdf:RDF>
回答4:相対URI


            #105011



         ex:name         ex:homepage

  浅野弘輔                http://www....
問題5:連結グラフ
 •以下のRDFをグラフにしてください。
<rdf:RDF ….
 xml:base=“person://hottolink.com/menber”>
<rdf:Description rdf:id=“105011”
       ex:name=“浅野弘輔”
       ex:homepage=“http://www....”>
       <ex:boss>
          <rdf:Description rdf:id=“105003”
               ex:name=“高橋和也” />
          </rdf:Description>
       </ex:boss>
</rdf:Description>
</rdf:RDF>
回答5:連結グラフ


   #105011        ex:homepage

                       http://www....

        ex:name

                  #105003
 浅野弘輔
                             ex:name

                            高橋和也
別表記5:連結グラフ

<rdf:RDF ….
 xml:base=“person://hottolink.com/menber”>
<rdf:Description rdf:id=“105011”
       ex:name=“浅野弘輔”
       ex:homepage=“http://www....”>
       <ex:boss rdf:resource=“#105003”>
</rdf:Description>
<rdf:Description rdf:id=“105003”
       ex:name=“高橋和也” />
</rdf:RDF>
問題6:空白ノードの識別
  •以下のRDFをグラフにしてください。
<rdf:Description rdf:nodeId=“p1”>
       <ex:name>浅野弘輔</ex:name>
       <ex:homepage rdf:about=“http://www....” />
       <ex:boss rdf:nodeId=“p2”/>
</rdf:Description>

         <rdf:Description rdf:nodeId=“p2”>
             <ex:name>高橋和也<ex:name>
         </rdf:Description>
回答6:空白ノードの識別


   _:p1             ex:homepage

                         http://www....

          ex:name

                      _:p2
 浅野弘輔
                               ex:name

                             高橋和也
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
RDFDBとは

データはRDFで扱う。
スキーマ(情報)が無い
クエリ言語として標準化されたSPARQLがあ
る
推論が(一応)出来るが、実装はRDFDBによ
って異なる
未だ未成熟(特に利用者少ない)
他のDBと比較して特長を見てみる
データベースの種類   RDB          RDFDB       KVS             列志向型DB  XMLDB            ドキュメントDB   グラフDB
スキーマ        あり           なし          なし              あり      あり               なし         なし
データ構造イメージ   表            グラフ         ハッシュ            表       ツリー              ツリー        ネットワーク
データ単位       行            トリプル        Key,Value       列       XMLデータ           ノード        ノードとリンク
                                                             ノード
クエリ言語       SQL          SPARQL      なし              なし      Xquery           なし         なし
                                                             (Xpathの拡張)
スケールアウト     普通           弱い          強い              強い      普通               普通      弱い
トランザクション    得意           苦手          苦手              苦手      苦手               苦手      苦手
得意分野        トランザクション     知識ベース       キャッシュ           大量データ分析 スキーマの変更          スキーマの変更 経路問題
            データの一貫性      推論                                  帳票?                      ソーシャルグラフ
            開発生産性
プロダクト       Oracle       Jena         memcashed      BigTable    BaseX         CouchDB   Neo4j
            SQLServer    Allegrograph TokyoCabinet   Hbase       NeoCore XMS MongoDB     HyperGraphDB
            DB2          Sesami       Redis          Cassandra   Xindice                 GraphDB
            MySQL        Oracle 10gr2                Sybase IQ   DB2 9 pureXML
            PostgreSQL                                           Oracle XML DB




                                                 RDBとRDFDB以外まともに触ったことないので
                                                 このいい加減な比較表だけが引用されないように強く望む・・・
RDFDBが向いている分野

知識情報(SVO型の情報)を扱う
 RDFのフォーマットがそのまま使える
スキーマが事前に決められない
 「どういう情報が必要になるか」に依存しない
情報のルート(根)が無いデータ
 「浅野」が主語になったり目的語になったり
RDFDBが(現状)苦手なこと

並列処理
 抽出に全体の走査が必要で、マルチスレッド化が難しい。
並び替えや集計
 ノードの型に対する情報が乏しいのでコストが掛かる
ホットバックアップ
 バックアップは停止してファイルコピー
 ログや差分バックアップとかが無い
Allegrograph

 (米)Franz社の商用プロダクト(フリー版あり)
 「アレグログラフ」と読む
 同社のLispの処理系(Allegro Common Lisp
 )がベース
 Lispは人工知能分野でよく用いられていて、
 RDFとは相性が良い(推論で使うPrologも)
 いろんな言語でのAPIが揃っている。
デモデータ

全国の路線情報
 株式会社コードプラス様の『駅データ.jp』のデータ
鉄道会社、駅、路線、乗り換え駅等のデータ
鉄道会社                                 rdfs:label
                        http://www.ekidata.jp/rr#rr_cd                              会社名




                                       rdfs:member



こんな感じ                               沿線
                       http://www.ekidata.jp/line#line_cd
                                                                      rdfs:label        沿線名

                                                                        http://www.ekidata.jp/line_sort

                                        rdfs:member                                     ソート順


                                                                rdfs:label         駅名
                                駅
              http://www.ekidata.jp/station#station_cd                 geo:lat     緯度


                                                                     geo:long      経度


   http://www.ekidata.jp/station_g                          vCard:Region           都道府県



                                 駅
               http://www.ekidata.jp/station#station_cd
                                                                              http://www.ekidata.jp/station_sort

                                                                                   ソート順
デモ

Allegrographはサーバーとして動いている
フロントとして、2年くらい前に作った自作のプ
ログラム(TSViewer)を使う。
TSはTriple StoreでRDBにおけるデータベー
スに相当する概念の言葉。
AGENDA

 浅野 弘輔とは(自己紹介)
 本セクションの目的
 セマンテックウェブとそれを支える技術
 RDFの説明と演習をちょろっと
 RDFDBとは何か
 RDFDBの問い合わせ言語SPARQL
SPARQL

 RDF用の問い合わせ言語
  SPARQL Protocol and RDF Query Language
  「スパークル」と読む
 W3Cにより標準化
 SQLが表の中で列の条件にあった行を抽出
 するように、グラフ全体の中で、特定のグラフ
 構造を持つグラフを抽出する。
 推論は含まれない。
SQLのイメージ
 表A

      抽出
                結果表



 表B        結合
      抽出
SPARQLのイメージ


                   SELECT
                   (値で取得)
               ?



         特定の
         グラフ構造を
         持つものを抽出



RDFデータ             CONSTRUCT
                   (グラフで取得)
SPARQLの例
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX line:<http://www.ekidata.jp/line#>
PREFIX eki:<http://www.ekidata.jp/>
PREFIX station:<http://www.ekidata.jp/station#>
SELECT ?lineName ?groupName WHERE {
    station:1130208 rdfs:label ?groupName.
    ?a eki:station_g station:1130208;
     eki:a_station_of ?line.
    ?line rdfs:label ?lineName.
}
SPARQLの例
 PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 PREFIX line:<http://www.ekidata.jp/line#>                  PREFIX句
 PREFIX eki:<http://www.ekidata.jp/>                        (名前宣言)
 PREFIX station:<http://www.ekidata.jp/station#>
 SELECT ?lineName ?groupName WHERE {
     station:1130208 rdfs:label ?groupName.                 SELECT句
     ?a eki:station_g station:1130208;
      eki:a_station_of ?line.                               WHERE句
     ?line rdfs:label ?lineName.
 }



PREFIXとは
     PREFIX station:<http://www.ekidata.jp/station#>
と宣言すると
      http://www.ekidata.jp/station#1130208                     station:1130208
になる。
SPARQLの例
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX line:<http://www.ekidata.jp/line#>                     PREFIX句
PREFIX eki:<http://www.ekidata.jp/>                           (名前宣言)
PREFIX station:<http://www.ekidata.jp/station#>
SELECT ?lineName ?groupName WHERE {
    station:1130208 rdfs:label ?groupName.                    SELECT句
    ?a eki:station_g station:1130208;
     eki:a_station_of ?line.                                   WHERE句
    ?line rdfs:label ?lineName.
}



WHERE句は
                                                                      ?linename ?groupname
                         ラベル
                                         ?groupname
 station:1130208
                                                           この構造を持つ                           が見たい
           駅グループ                                           グラフを抽出して
             路線
      ?a                          ラベル
                        ?line                ?linename
デモ

先ほどのRDFデータに対してTSViewerで
SPARQLをいくつか実行してみる。
ありがとうございました。

セマンテックウェブとRDFDB