RDF・FOAF


 2007/03/15 ウノウ株式会社 駒形真幸 <komagata@unoh.net>
FOAFとは?

    Friend Of A Friend
●




 プロフィールや知り合いなど、人に関する情報
●

 を表すためのRDFの語彙の一つ
                           知り合いA




    ...
RDFとは?

    Resource Description Framework
●




 WWW上のリソースとリソースの関係を表現す
●

 るためのモデル

 WWWの提案者、ティム・バーナーズ=リーが
●

 提唱した。
RDFとは?(2)

    身近なところではRSS1.0もRDF(2.0は違う)
●


<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
 xmlns="http://purl.org/rss...
何故RDF?

                どんな関係?



                         文書
    文書

          リンク



 HTMLのリンクは意味が付いてない。
●

 (どういう関係を持って...
何故RDF?(2)


               要約
                        文章
       文章




    RDFでは関係を表現できる
●




 WWWは元々、関係の情報付きの意味ネットワーク
●
...
RDFの基本要素

    リソース
●

    Web上で識別できるもの全て。(URI参照で表現されます)

    ステートメント(文)
●

  リソースの主語、述語、目的語の3つの組み合わせ
 (トリプル)

    グラフ
●

 ...
RDFの基本概念
    ステートメント

                         foaf:weblog
        urn:komagata                   http://p0t.jp/mt/


    ...
RDFの基本概念(2)
    ステートメント
                                            リテラル
                           dc:title
       http:/...
RDFの基本概念(3)

         aaa
     A               bbb   C
                                   aaa
               B            ...
<aaa>
                          <bbb>
    aaa
A                          <ccc>
              bbb   C
                     ...
RDFトリプルのXML表現
                        foaf:weblog
       urn:komagata                   http://p0t.jp/mt/




<rdf:Descrip...
RDFトリプルのXML表現(2)
                            foaf:weblog
       urn:komagata                            http://p0t.jp/mt/
...
RDFトリプルのXML表現(3)
                           foaf:weblog
       urn:komagata                            http://p0t.jp/mt/

...
RDFトリプルのXML表現(4)
                           dc:title
       http://p0t.jp/mt/                     p0t




<rdf:Description...
RDFトリプルのXML表現(5)
                                                     dc:title
                   foaf:weblog
            ...
FOAFの語彙
  FOAFの名前空間は “http://xmlns.com/foaf/0.1/” です
●

● 一般的にfoaf:という接頭辞にマッピングして使います




<rdf:RDF
  xmlns:rdf="http://www...
FOAFの語彙(2)
主な述語(主語はfoaf:Personなど)
FOAFの語彙(3)
    foaf:knowsで知人を表現できるのが面白いところ
●




<foaf:knows>
  <foaf:Person>
    <foaf:nick>kawadu</foaf:nick>
    <foaf:...
RDFパーサーいろいろ
Redland
●

CのRDFパーサー。Java, Perl, PHP, Python, Rubyなど
色んな言語向けのBindingがある。

 RAP – RDF API for PHP
●

 Pure PHPの...
RAPでVOXのFOAFを検索
define('RDFAPI_INCLUDE_DIR', 'lib/rdfapi-php/api/');
include_once RDFAPI_INCLUDE_DIR.'RdfAPI.php';
include...
RDFのパース
    FOAFをパースしようと思っていきなり手を出すと、何故
●

    こんなAPIになってるのかさっぱり理解できない。

    RDFのモデルを知ってると非常にわかりやすい。
●




 XMLのパースじゃなくて、R...
FOAFのこれまで
 (2004年頃)RSSみたいに流行るかと期待されたが流行ら
●

 なかった

 ブログシステムがRSSを吐いてくれたようにFOAFを
●

 吐いてくれるシステムがあまりなかった。

 FOAFはSNSに最適かと思われた...
FOAFの現在~
 VOXなど、権限管理機能を高めつつ、公開するところは
●

 公開してくようなSNSが増え始めた。

    API公開が流行
●




 スクレイピング技術普及で第三者がメタデータを勝手に作っ
●

 て配布したりしやす...
FOAF Client
    Widget(ブログパーツ)はどうだろうか。
●




 丁度Offline/Online問わないWidgetの標準仕様策定が
●

 進んでいる。(Netbives Universal Widget API)...
FOAF Widget
FOAF Widget on ジオシティーズ
参考資料
 セマンティック・ウェブのためのRDF/OWL 入門
●

 http://www.amazon.co.jp/exec/obidos/ASIN/4627829310/p0t-
22/ref=nosim

    Redland
●

...
Upcoming SlideShare
Loading in...5
×

RDF and FOAF

3,188

Published on

RDF and FOAF for Semantic Web.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,188
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

RDF and FOAF

  1. 1. RDF・FOAF 2007/03/15 ウノウ株式会社 駒形真幸 <komagata@unoh.net>
  2. 2. FOAFとは? Friend Of A Friend ● プロフィールや知り合いなど、人に関する情報 ●  を表すためのRDFの語彙の一つ 知り合いA 知り合いB 自分
  3. 3. RDFとは? Resource Description Framework ● WWW上のリソースとリソースの関係を表現す ●  るためのモデル WWWの提案者、ティム・バーナーズ=リーが ●  提唱した。
  4. 4. RDFとは?(2) 身近なところではRSS1.0もRDF(2.0は違う) ● <?xml version="1.0" encoding="utf-8" ?> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja"> <channel rdf:about="http://d.hatena.ne.jp/m-komagata/rss"> <title>m-komagataの日記</title> <link>http://d.hatena.ne.jp/m-komagata/</link> <description>m-komagataの日記</description> <dc:date>2006-11-07T20:35:16+09:00</dc:date> <items> (後略)
  5. 5. 何故RDF? どんな関係? 文書 文書 リンク HTMLのリンクは意味が付いてない。 ●  (どういう関係を持ってるのかわからない)
  6. 6. 何故RDF?(2) 要約 文章 文章 RDFでは関係を表現できる ● WWWは元々、関係の情報付きの意味ネットワーク ●  (セマンティック・ウェブ)として設計された
  7. 7. RDFの基本要素 リソース ● Web上で識別できるもの全て。(URI参照で表現されます) ステートメント(文) ● リソースの主語、述語、目的語の3つの組み合わせ  (トリプル) グラフ ● ステートメントの集合  ※RDFのグラフは様々な構文(XMLやN-Triplesなど)で表現できる
  8. 8. RDFの基本概念 ステートメント foaf:weblog urn:komagata http://p0t.jp/mt/ 主語 述語 目的語 リソースを主語、述語、目的語としてステートメントを作れる ● 目的語は別のステートメントの主語になれる。 ●
  9. 9. RDFの基本概念(2) ステートメント リテラル dc:title http://p0t.jp/mt/ p0t 主語 述語 目的語 目的語はURI参照だけでなく、文字列自身(リテラル)とする ●  ことが可能
  10. 10. RDFの基本概念(3) aaa A bbb C aaa B A bbb C B eee B eee D D 世界のどこで記述されたトリプルでも同じURIを持っていれ ● ばひとつのグラフに併合できる。 意味を機械が理解できるRDFで情報を記述することで ●  Web全体を分散型データベースとして扱おうという野望。
  11. 11. <aaa> <bbb> aaa A <ccc> bbb C </ccc> B </bbb> </aaa> ここまでがRDFのモデルの話。 ここからは具体的なXMLでの記述方法の話です。
  12. 12. RDFトリプルのXML表現 foaf:weblog urn:komagata http://p0t.jp/mt/ <rdf:Description> --- 主語ノード <foaf:weblog> --- 述語ノード <rdf:Description> --- 目的語ノード </rdf:Description> </foaf:weblog> </rdf:Description> XML表現では、主語、述語はrdf:Descriptionで記述します ● 述語はその名前の要素として記述します ●
  13. 13. RDFトリプルのXML表現(2) foaf:weblog urn:komagata http://p0t.jp/mt/ <rdf:Description rdf:about=”urn:komagata”> <foaf:weblog> <rdf:Description rdf:about=”http://p0t.jp/mt/”> </rdf:Description> </foaf:weblog> </rdf:Description> 主語、目的語の参照先はrdf:about要素で記述します ●
  14. 14. RDFトリプルのXML表現(3) foaf:weblog urn:komagata http://p0t.jp/mt/ <rdf:Description rdf:about=”urn:komagata”> <foaf:weblog rdf:resource=”http://p0t.jp/mt/” /> </rdf:Description> 子ノードを持たない要素はrdf:resource属性を使って省略表 ● 記できます
  15. 15. RDFトリプルのXML表現(4) dc:title http://p0t.jp/mt/ p0t <rdf:Description rdf:about=”urn:komagata”> <dc:title>p0t</dc:title> </rdf:Description> 目的語がリテラルの場合はrdf:Description要素を省略して ● 述語ノードのプロパティとして記述できます
  16. 16. RDFトリプルのXML表現(5) dc:title foaf:weblog http://p0t.jp/mt/ p0t urn:komagata <rdf:RDF> <rdf:Description rdf:about=”urn:komagata”> <foaf:weblog> <rdf:Description rdf:about=”http://p0t.jp/mt/”> <dc:title>p0t</dc:title> </rdf:Description> </foaf:weblog> </rdf:Description> </rdf:RDF> 複数のトリプルもこれまでの組み合わせで表現できます。 ● ● RDF文章としてはrdf:RDFノードをrootノードにします
  17. 17. FOAFの語彙 FOAFの名前空間は “http://xmlns.com/foaf/0.1/” です ● ● 一般的にfoaf:という接頭辞にマッピングして使います <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <foaf:Person rdf:nodeID="me"> <foaf:nick>komagata</foaf:nick> <foaf:bio:olb>働いたら負けだと思っている</foaf:bio:olb> <foaf:weblog rdf:resource="http://komagata.vox.com/"/> <foaf:knows> <foaf:Person> <foaf:nick>kawadu</foaf:nick> (後略)
  18. 18. FOAFの語彙(2) 主な述語(主語はfoaf:Personなど)
  19. 19. FOAFの語彙(3) foaf:knowsで知人を表現できるのが面白いところ ● <foaf:knows> <foaf:Person> <foaf:nick>kawadu</foaf:nick> <foaf:weblog rdf:resource="http://kawadu.vox.com/" /> </foaf:Person> </foaf:knows> <foaf:knows> <foaf:Person> <foaf:nick>yoshida</foaf:nick> <foaf:weblog rdf:resource="http://yoshida.vox.com/" /> </foaf:Person> </foaf:knows>
  20. 20. RDFパーサーいろいろ Redland ● CのRDFパーサー。Java, Perl, PHP, Python, Rubyなど 色んな言語向けのBindingがある。 RAP – RDF API for PHP ● Pure PHPのRDFパーサー。画像でRDFグラフを出力したり  機能がやたらある。 Hercules ●  JavascriptのObject/RDFマッパー。E4Xっぽい手軽さで  SPARQL(後述)クエリを生成してObjectにマッピングしてく  れる。
  21. 21. RAPでVOXのFOAFを検索 define('RDFAPI_INCLUDE_DIR', 'lib/rdfapi-php/api/'); include_once RDFAPI_INCLUDE_DIR.'RdfAPI.php'; include_once RDFAPI_INCLUDE_DIR.'syntax/RdfParser.php'; include_once RDFAPI_INCLUDE_DIR.'vocabulary/FOAF_C.php'; $uri = 'http://komagata.vox.com/profile/foaf.rdf'; $model = ModelFactory::getDefaultModel(); $model->load($uri); $bio = new Resource('http://purl.org/vocab/bio/0.1/olb'); $result = $model->find(null, $bio, null); // Subject, Predicate, Object print_r($result->triples); Model#findメソッドに主語、述語、目的語のResourceを ●  与えて検索する(返り値はStatement)
  22. 22. RDFのパース FOAFをパースしようと思っていきなり手を出すと、何故 ● こんなAPIになってるのかさっぱり理解できない。 RDFのモデルを知ってると非常にわかりやすい。 ● XMLのパースじゃなくて、RDFグラフに対する検索なので ●  柔軟な検索が可能。 もっと本格的な問い合わせはSPARQLというRDF問い合わ ● せ言語を使う。  (RDBに対するSQLやODBに対するOQLみたいなもの)
  23. 23. FOAFのこれまで (2004年頃)RSSみたいに流行るかと期待されたが流行ら ●  なかった ブログシステムがRSSを吐いてくれたようにFOAFを ●  吐いてくれるシステムがあまりなかった。 FOAFはSNSに最適かと思われたが、SNSが閉鎖的な ●  システムに終始し、まったく対応しなかった。(がっかり・・・) (上記理由で)FOAFファイル自体が少ないためにクライアン ●  トを作ってもあまり役に立たなかった。
  24. 24. FOAFの現在~ VOXなど、権限管理機能を高めつつ、公開するところは ●  公開してくようなSNSが増え始めた。 API公開が流行 ● スクレイピング技術普及で第三者がメタデータを勝手に作っ ●  て配布したりしやすくなった あとは便利 or 面白いクライアントがあれば・・・ ●
  25. 25. FOAF Client Widget(ブログパーツ)はどうだろうか。 ● 丁度Offline/Online問わないWidgetの標準仕様策定が ●  進んでいる。(Netbives Universal Widget API) 小粒度のコンテンツ形態として普及するかもしれない ● FOAF Browser Widgetを作ってみました。 ●  VOX、はてなダイアリ、TypeKey、MixiのFOAFを  それぞれ表示しています。(Mixi FOAFは自前)  一端JSONPに変換しているのでどこにでも張れます。
  26. 26. FOAF Widget
  27. 27. FOAF Widget on ジオシティーズ
  28. 28. 参考資料 セマンティック・ウェブのためのRDF/OWL 入門 ● http://www.amazon.co.jp/exec/obidos/ASIN/4627829310/p0t- 22/ref=nosim Redland ● http://librdf.org/ RAP – RDF API fo PHP ● http://sites.wiwiss.fu-berlin.de/suhl/bizer/rdfapi/ Hercules ● http://www.arielworks.net/works/codeyard/hercules Netvibes UWA ● http://dev.netvibes.com/

×