次にfmeというパラメータですが、これはFollow meの略で、"me"というエッジで辿れる情報を出力します。
先程、TwitterではXFNは全て"contact"だと書きましたが、これはあくまでも他人についてです。他にも自分に関するエッジというものがあり、これは"me"というXFNによって表現されます(rel="me"となります)。
クエリーでfme=1と指定すると、Twitter以外の自分に関するサイトの情報が(Googleがインデックスしていれば)見ることができます。試しに下記のURLを叩いてみます。
http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&fme=1
すると、下記のような内容が出力されます。
{ "canonical_mapping": { "http://twitter.com/fkoji": "http://twitter.com/fkoji" }, "nodes": { "http://blog.fkoji.com/": { "attributes": { }, "claimed_nodes": [ "http://technorati.jp/claim/p8dfqqxbrz" ] }, "http://technorati.jp/claim/p8dfqqxbrz": { "attributes": { }, "claimed_nodes": [ ] }, "http://twitter.com/fkoji": { "attributes": { "url": "http://twitter.com/fkoji", "profile": "http://twitter.com/fkoji", "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss", "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom" }, "claimed_nodes": [ "http://blog.fkoji.com/", "http://technorati.jp/claim/p8dfqqxbrz" ] } } }
"nodes"->"http://blog.fkoji.com"->"claimed_nodes"には、http://technorati.jp/claim/p8dfqqxbrz"というURLが、また"nodes"->"http://twitter.com/fkoji"->"claimed_nodes"には、http://blog.fkoji.com/やhttp://technorati.jp/claim/p8dfqqbrzというURLがあります。
つまり、fme=1と指定すると、そのノードの中でrel="me"と表現されているURLを再帰的に取り出すことができるようになります。claimed_nodesで出力されるのは、rel="me"でマークアップされたURLということです。
次にcallbackですが、これは結果の出力を処理するJavaScriptの関数名です。JSONフォーマットなので、たいがいGoogle Social Graph APIはJavaScriptで処理されるかと思います(筆者はXMLで出して欲しいと思うところですが)。
そこで、JavaScriptの関数をcallback=で指定しておくと、その関数によってGoogle Social Graph APIの出力が処理されます。試しに下記のURLを叩いてみます。
http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&callback=foo
結果は以下の通りです。
foo({ "canonical_mapping": { "http://twitter.com/fkoji": "http://twitter.com/fkoji" }, "nodes": { "http://twitter.com/fkoji": { "attributes": { "url": "http://twitter.com/fkoji", "profile": "http://twitter.com/fkoji", "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss", "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom" } } } } );
要は、callbackなしのときの出力を、callback=で指定した関数でくくって出力するだけです。
最後にsgnですが、これはSocial Graph Node MapperというGoogleのprojectがあり、それに準拠した形での出力を行うことを指示するパラメータとなります。
これは何かというと、例えば同じ人を指し示すたくさんのURLがあったときに、その標準的なURLを決めてそこへのマッピング情報を提供しよう、というものです。例えば下記のURLで試してみます。
http://socialgraph.apis.google.com/lookup?q=http://twitter.com/fkoji&pretty=1&sgn=1
すると、下記の内容が出力されます。
{ "canonical_mapping": { "http://twitter.com/fkoji": "sgn://twitter.com/?ident\u003dfkoji" }, "nodes": { "sgn://twitter.com/?ident\u003dfkoji": { "attributes": { "url": "http://twitter.com/fkoji", "profile": "http://twitter.com/fkoji", "rss": "http://twitter.com/statuses/user_timeline/fkoji.rss", "atom": "http://twitter.com/statuses/user_timeline/fkoji.atom" } } } }
"canonical_mapping"や、"nodes"の先に、sgn://twitter.com/?ident\u003dfkojiという表現があります。これが、Social Graph Node Mapper Projectにおけるhttp://twitter.com/fkojiの標準(Canonicalな)URLということになります。
今回はGoogle Social Graph APIについて解説してみました。意外と単純であることがわかると思います。
qパラメータは必ず必須ですが、edo、edi、fmeなどを適宜指定して情報を取り出し、それをcallbackで指定した関数で処理すれば、Twitterのリンク情報などを表現したりすることができるようになります。
いずれXFNやFOAFでリンク情報を提供するサイトが増えてくれば、面白いことになるかもしれません。
筆者は、Google Social Graph API情報をFlashで表現するサイトをデモで運用しています。もし良かったら試してみてください。
アスキー、So-net、ライブドアなどでシステム設計、構築、運用を行う。2003年9月にシリコンバレーにVoIPの開発会社であるRedSIP Inc.を設立、CEO就任。2006年6月にゼロスタートコミュニケーションズを設立、代表取締役社長就任。Software Designで「レコメンドエンジン開発室」などの連載をしている。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
「程よく明るい」照明がオフィスにもたらす
業務生産性の向上への意外な効果
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス