SlideShare ist ein Scribd-Unternehmen logo
1 von 28
RDF・FOAF


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

    Friend Of A Friend
●




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

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




                           知り合いB
            自分
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/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>
(後略)
何故RDF?

                どんな関係?



                         文書
    文書

          リンク



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

 (どういう関係を持ってるのかわからない)
何故RDF?(2)


               要約
                        文章
       文章




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




 WWWは元々、関係の情報付きの意味ネットワーク
●

 (セマンティック・ウェブ)として設計された
RDFの基本要素

    リソース
●

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

    ステートメント(文)
●

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

    グラフ
●

    ステートメントの集合

 ※RDFのグラフは様々な構文(XMLやN-Triplesなど)で表現できる
RDFの基本概念
    ステートメント

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


           主語              述語              目的語


    リソースを主語、述語、目的語としてステートメントを作れる
●



    目的語は別のステートメントの主語になれる。
●
RDFの基本概念(2)
    ステートメント
                                            リテラル
                           dc:title
       http://p0t.jp/mt/              p0t


           主語               述語        目的語


 目的語はURI参照だけでなく、文字列自身(リテラル)とする
●

 ことが可能
RDFの基本概念(3)

         aaa
     A               bbb   C
                                   aaa
               B               A              bbb   C
                                         B

               eee
         B
                                             eee
                                                    D
                     D



    世界のどこで記述されたトリプルでも同じURIを持っていれ
●

    ばひとつのグラフに併合できる。

 意味を機械が理解できるRDFで情報を記述することで
●

 Web全体を分散型データベースとして扱おうという野望。
<aaa>
                          <bbb>
    aaa
A                          <ccc>
              bbb   C
                           </ccc>
          B
                          </bbb>
                         </aaa>



              ここまでがRDFのモデルの話。

    ここからは具体的なXMLでの記述方法の話です。
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で記述します
●




    述語はその名前の要素として記述します
●
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要素で記述します
●
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属性を使って省略表
●

    記できます
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要素を省略して
●

    述語ノードのプロパティとして記述できます
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ノードにします
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>
(後略)
FOAFの語彙(2)
主な述語(主語はfoaf:Personなど)
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>
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にマッピングしてく
 れる。
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)
RDFのパース
    FOAFをパースしようと思っていきなり手を出すと、何故
●

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

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




 XMLのパースじゃなくて、RDFグラフに対する検索なので
●

 柔軟な検索が可能。

 もっと本格的な問い合わせはSPARQLというRDF問い合わ
●

せ言語を使う。
 (RDBに対するSQLやODBに対するOQLみたいなもの)
FOAFのこれまで
 (2004年頃)RSSみたいに流行るかと期待されたが流行ら
●

 なかった

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

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

 FOAFはSNSに最適かと思われたが、SNSが閉鎖的な
●

 システムに終始し、まったく対応しなかった。(がっかり・・・)

 (上記理由で)FOAFファイル自体が少ないためにクライアン
●

 トを作ってもあまり役に立たなかった。
FOAFの現在~
 VOXなど、権限管理機能を高めつつ、公開するところは
●

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

    API公開が流行
●




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

 て配布したりしやすくなった

    あとは便利 or 面白いクライアントがあれば・・・
●
FOAF Client
    Widget(ブログパーツ)はどうだろうか。
●




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

 進んでいる。(Netbives Universal Widget API)

    小粒度のコンテンツ形態として普及するかもしれない
●




 FOAF Browser Widgetを作ってみました。
●

 VOX、はてなダイアリ、TypeKey、MixiのFOAFを
 それぞれ表示しています。(Mixi FOAFは自前)

 一端JSONPに変換しているのでどこにでも張れます。
FOAF Widget
FOAF Widget on ジオシティーズ
参考資料
 セマンティック・ウェブのための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/

Weitere ähnliche Inhalte

Was ist angesagt?

Web技術勉強会5回目(Slide Share用)
Web技術勉強会5回目(Slide Share用)Web技術勉強会5回目(Slide Share用)
Web技術勉強会5回目(Slide Share用)龍一 田中
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!devsumi2009
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteAkio Katayama
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetbosskumee
 
ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化Kiro Harada
 
Bee Style vol043のご案内
Bee Style vol043のご案内Bee Style vol043のご案内
Bee Style vol043のご案内Tsuyoshi Horigome
 
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介Yuki Kimoto
 
Web技術勉強会 第18回
Web技術勉強会 第18回Web技術勉強会 第18回
Web技術勉強会 第18回龍一 田中
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdfXMourinho
 
Uliweb 快速易用的Python Web Framework
Uliweb 快速易用的Python Web FrameworkUliweb 快速易用的Python Web Framework
Uliweb 快速易用的Python Web Frameworkmodou li
 
数年後のWEB標準標準
数年後のWEB標準標準数年後のWEB標準標準
数年後のWEB標準標準sato165 @delab
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Makio Tsukamoto
 
淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐Bob Chao
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xMakio Tsukamoto
 
ウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Socialウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open SocialFITEA
 

Was ist angesagt? (20)

Web技術勉強会5回目(Slide Share用)
Web技術勉強会5回目(Slide Share用)Web技術勉強会5回目(Slide Share用)
Web技術勉強会5回目(Slide Share用)
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
 
Web2.0 and Ruby
Web2.0 and RubyWeb2.0 and Ruby
Web2.0 and Ruby
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetboss
 
ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化ソフトウェアの構造とオープン化
ソフトウェアの構造とオープン化
 
Bee Style vol043のご案内
Bee Style vol043のご案内Bee Style vol043のご案内
Bee Style vol043のご案内
 
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介
 
Web技術勉強会 第18回
Web技術勉強会 第18回Web技術勉強会 第18回
Web技術勉強会 第18回
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
 
Uliweb 快速易用的Python Web Framework
Uliweb 快速易用的Python Web FrameworkUliweb 快速易用的Python Web Framework
Uliweb 快速易用的Python Web Framework
 
数年後のWEB標準標準
数年後のWEB標準標準数年後のWEB標準標準
数年後のWEB標準標準
 
Wikiスパムの傾向と対策
Wikiスパムの傾向と対策Wikiスパムの傾向と対策
Wikiスパムの傾向と対策
 
HTML
HTMLHTML
HTML
 
Asp.Net2 12
Asp.Net2 12Asp.Net2 12
Asp.Net2 12
 
淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐
 
Way to Wikiwyg
Way to WikiwygWay to Wikiwyg
Way to Wikiwyg
 
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.xWiki Wiki Decade - WikiBaseとYukiWiki 1.x
Wiki Wiki Decade - WikiBaseとYukiWiki 1.x
 
ウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Socialウェブ開発の次なる主戦場、Open Social
ウェブ開発の次なる主戦場、Open Social
 
Jslunch5
Jslunch5Jslunch5
Jslunch5
 

Mehr von Masaki Komagata

フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例Masaki Komagata
 
Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門Masaki Komagata
 
This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.Masaki Komagata
 
WordPressに足りないモノ
WordPressに足りないモノWordPressに足りないモノ
WordPressに足りないモノMasaki Komagata
 
Webアプリケーションの国際化
Webアプリケーションの国際化Webアプリケーションの国際化
Webアプリケーションの国際化Masaki Komagata
 
RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成Masaki Komagata
 

Mehr von Masaki Komagata (12)

漬け水に浸かる
漬け水に浸かる漬け水に浸かる
漬け水に浸かる
 
フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例フィヨルドでのCaster活用事例
フィヨルドでのCaster活用事例
 
CMS for Cloud by Ruby
CMS for Cloud by RubyCMS for Cloud by Ruby
CMS for Cloud by Ruby
 
CMS for Cloud by Ruby
CMS for Cloud by RubyCMS for Cloud by Ruby
CMS for Cloud by Ruby
 
PaaS向けCMS Lokka
PaaS向けCMS LokkaPaaS向けCMS Lokka
PaaS向けCMS Lokka
 
Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門Webデザイナーのための「本当は怖くない」"黒い画面"入門
Webデザイナーのための「本当は怖くない」"黒い画面"入門
 
What make you
What make youWhat make you
What make you
 
This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.This is presentation at Mitaka.rb #10.
This is presentation at Mitaka.rb #10.
 
WordPressに足りないモノ
WordPressに足りないモノWordPressに足りないモノ
WordPressに足りないモノ
 
MSICC
MSICCMSICC
MSICC
 
Webアプリケーションの国際化
Webアプリケーションの国際化Webアプリケーションの国際化
Webアプリケーションの国際化
 
RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成RESTfullアプリケーションの簡単作成
RESTfullアプリケーションの簡単作成
 

RDF and FOAF

  • 1. RDF・FOAF 2007/03/15 ウノウ株式会社 駒形真幸 <komagata@unoh.net>
  • 2. FOAFとは? Friend Of A Friend ● プロフィールや知り合いなど、人に関する情報 ●  を表すためのRDFの語彙の一つ 知り合いA 知り合いB 自分
  • 3. RDFとは? Resource Description Framework ● WWW上のリソースとリソースの関係を表現す ●  るためのモデル WWWの提案者、ティム・バーナーズ=リーが ●  提唱した。
  • 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. 何故RDF? どんな関係? 文書 文書 リンク HTMLのリンクは意味が付いてない。 ●  (どういう関係を持ってるのかわからない)
  • 6. 何故RDF?(2) 要約 文章 文章 RDFでは関係を表現できる ● WWWは元々、関係の情報付きの意味ネットワーク ●  (セマンティック・ウェブ)として設計された
  • 7. RDFの基本要素 リソース ● Web上で識別できるもの全て。(URI参照で表現されます) ステートメント(文) ● リソースの主語、述語、目的語の3つの組み合わせ  (トリプル) グラフ ● ステートメントの集合  ※RDFのグラフは様々な構文(XMLやN-Triplesなど)で表現できる
  • 8. RDFの基本概念 ステートメント foaf:weblog urn:komagata http://p0t.jp/mt/ 主語 述語 目的語 リソースを主語、述語、目的語としてステートメントを作れる ● 目的語は別のステートメントの主語になれる。 ●
  • 9. RDFの基本概念(2) ステートメント リテラル dc:title http://p0t.jp/mt/ p0t 主語 述語 目的語 目的語はURI参照だけでなく、文字列自身(リテラル)とする ●  ことが可能
  • 10. RDFの基本概念(3) aaa A bbb C aaa B A bbb C B eee B eee D D 世界のどこで記述されたトリプルでも同じURIを持っていれ ● ばひとつのグラフに併合できる。 意味を機械が理解できるRDFで情報を記述することで ●  Web全体を分散型データベースとして扱おうという野望。
  • 11. <aaa> <bbb> aaa A <ccc> bbb C </ccc> B </bbb> </aaa> ここまでがRDFのモデルの話。 ここからは具体的なXMLでの記述方法の話です。
  • 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. 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. 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. 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. 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. 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> (後略)
  • 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. 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. 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. RDFのパース FOAFをパースしようと思っていきなり手を出すと、何故 ● こんなAPIになってるのかさっぱり理解できない。 RDFのモデルを知ってると非常にわかりやすい。 ● XMLのパースじゃなくて、RDFグラフに対する検索なので ●  柔軟な検索が可能。 もっと本格的な問い合わせはSPARQLというRDF問い合わ ● せ言語を使う。  (RDBに対するSQLやODBに対するOQLみたいなもの)
  • 23. FOAFのこれまで (2004年頃)RSSみたいに流行るかと期待されたが流行ら ●  なかった ブログシステムがRSSを吐いてくれたようにFOAFを ●  吐いてくれるシステムがあまりなかった。 FOAFはSNSに最適かと思われたが、SNSが閉鎖的な ●  システムに終始し、まったく対応しなかった。(がっかり・・・) (上記理由で)FOAFファイル自体が少ないためにクライアン ●  トを作ってもあまり役に立たなかった。
  • 24. FOAFの現在~ VOXなど、権限管理機能を高めつつ、公開するところは ●  公開してくようなSNSが増え始めた。 API公開が流行 ● スクレイピング技術普及で第三者がメタデータを勝手に作っ ●  て配布したりしやすくなった あとは便利 or 面白いクライアントがあれば・・・ ●
  • 25. FOAF Client Widget(ブログパーツ)はどうだろうか。 ● 丁度Offline/Online問わないWidgetの標準仕様策定が ●  進んでいる。(Netbives Universal Widget API) 小粒度のコンテンツ形態として普及するかもしれない ● FOAF Browser Widgetを作ってみました。 ●  VOX、はてなダイアリ、TypeKey、MixiのFOAFを  それぞれ表示しています。(Mixi FOAFは自前)  一端JSONPに変換しているのでどこにでも張れます。
  • 27. FOAF Widget on ジオシティーズ
  • 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/