Facebook Linked Data

fumi · September 27, 2011

LinkedData.jpに投げたのをこちらにも載せます.

FacebookのOpen Graph Protocol (Web pageに埋め込むほう)は元々RDFaやMicroformatsから派生して作られていますが,今回のf8からの変更で,Open Graph API (グラフの情報を取得するほう)がJSONだけではなくてTurtleを返すようになりました.

例えば私のfacebookの情報はhttp://graph.facebook.com/fumihiroから取れます.

% curl -H 'Accept: text/turtle' http://graph.facebook.com/fumihiro
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix api: <tag:graph.facebook.com,2011:/> .
@prefix og: <http://ogp.me/ns#> .
@prefix fb: <http://ogp.me/ns/fb#> .
@prefix : <http://graph.facebook.com/schema/~/> .
@prefix user: <http://graph.facebook.com/schema/user#> .
</1209165766#>
       user:id "1209165766" ;
       user:name "Fumihiro Kato" ;
       user:first_name "Fumihiro" ;
       user:last_name "Kato" ;
       user:link <http://www.facebook.com/fumihiro> ;
       user:username "fumihiro" ;
       user:gender "male" ;
       user:locale "en_US" .

@base <http://graph.facebook.com> .があったほうが良いとおもうのですが,そこらへんは修正されることを期待します.同じものをntriplesにしてみると,以下のようになります.こちらのほうがURIがはっきりしていてわかりやすいかもしれません.

% rapper -i turtle -o ntriples 'http://graph.facebook.com/fumihiro'
rapper: Parsing URI http://graph.facebook.com/fumihiro# with parser turtle
rapper: Serializing with serializer ntriples
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#id> "1209165766" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#name> "Fumihiro Kato" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#first_name> "Fumihiro" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#last_name> "Kato" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#link> <http://www.facebook.com/fumihiro> .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#username> "fumihiro" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#gender> "male" .
<http://graph.facebook.com/1209165766#> <http://graph.facebook.com/schema/user#locale> "en_US" .
rapper: Parsing returned 8 triples

f8でのもう一つの変更は,ページやアプリの作成者がActionとObjectを定義できるようになったことです.Actionは動作,Objectは対象物として,User => Action => Object という関係を取れるようになります.これは,今までのUser => Like => Page の関係が発展したものです.見ての通りこれはトリプルになります.今はまだ出していないですが,今後Turtleでこの関係が取れるようにしてくるでしょう.

schemaもrdfsでとれるようになっています.

ユーザのschema

% curl -H 'Accept: text/turtle' 'http://graph.facebook.com/schema/user'

ページのschema

% curl -H 'Accept: text/turtle' 'http://graph.facebook.com/schema/page'

また,もっと様々な付加情報が欲しい場合は,’?metadata=1’をつけると取れます.

% curl -H 'Accept: text/turtle' 'http://graph.facebook.com/fumihiro?metadata=1'
</1209165766#>
       user:home <http://graph.facebook.com/fumihiro/home> ;
       user:feed <http://graph.facebook.com/fumihiro/feed> ;
       user:friends <http://graph.facebook.com/fumihiro/friends> ;
       user:mutualfriends <http://graph.facebook.com/fumihiro/mutualfriend> ;
       user:family <http://graph.facebook.com/fumihiro/family> ;
......

但しこれらのURIの先はOAuth認証しないと取れないようになっています.

やはりすでに大量の人URIを持っているauthorityが提供し始めるとインパクトが違いますね.Twitterのメタデータ埋め込みがまったく音沙汰なくなっていて悲しいですが,Google+とかにも頑張ってもらいたいです.

色々試した画面キャプチャや参考リンクなどをGoogle+にまとめています.

Twitter, Facebook