特定の実施形態が、イメージ要素のレイアウトを特定する。イメージ要素は、コンピューティング・デバイスに関連付けられているスクリーンの表示可能な領域に関する仕様(specification)に対応するディスプレイ・グリッド内に配置される。表示可能な領域は、スクリーン全体またはその一部分(たとえば、スクリーン上の1つのウィンドウ、または、水平なステータス・バーおよび垂直なメニュー・サイドバーによって占有されているスペースを考慮した後の残っている利用可能なスクリーン部分(screen real estate))を含むことができる。表示可能な領域に関する仕様は、表示可能な領域の高さ、幅、および/もしくは対角線寸法(これは、列の数、行の数、ピクセル、インチ、フィート、メートル系単位、もしくはその他の任意の従来の測定単位として明示されることが可能である)、スクリーンの向き(ポートレート・モードもしくはランドスケープ・モード)、またはスクリーン解像度を含むことができる。ディスプレイ・グリッドは、表示可能な領域に関する仕様に従って特定されることが可能である。
図1は、例示的なディスプレイ・グリッドおよびイメージ要素のシーケンスを示している。例示的なコンピューティング・デバイス100は、スクリーンを有しており、そのスクリーンにおいては、表示可能な領域101が、ディスプレイ・グリッドの表示を含んでおり、水平な領域102が、ステータス・バーの表示のために確保されている。図1において示されているディスプレイ・グリッドの表示における位置(position)は、破線のグリッド線によって描かれており、縦軸に沿ったロケーション(ロケーションA〜K)および横軸に沿ったロケーション(ロケーション1〜8)を示す座標によって識別されることが可能である。
イメージ要素は、任意の形状またはサイズのものであることが可能であり、それぞれのイメージ要素は、ディスプレイ・グリッドにおける1つまたは複数の位置を占有することが可能である。図1において示されているイメージ要素110〜195の例示的なシーケンスは、さまざまな形状、サイズ、および配置パターンのイメージ要素を含んでいる。
・イメージ要素110、115、135、150、155、180、および185はそれぞれ、ディスプレイ・グリッドにおける1つの位置を占有し、
・イメージ要素120、130、145、170、および190はそれぞれ、ディスプレイ・グリッドにおける2つの水平に隣接した位置を占有し、
・イメージ要素125、160、165、および175はそれぞれ、ディスプレイ・グリッドにおける2つの垂直に隣接した位置を占有し、
・イメージ要素140は、ディスプレイ・グリッドにおける4つの位置を占有し、それらの4つの位置は、横向きのL字形状で構成されており、
・イメージ要素195は、ディスプレイ・グリッドにおける4つの位置を占有し、それらの4つの位置は、逆さまのT字形状で構成されている。
イメージ要素は、任意のタイプのビジュアル・コンテンツのイメージを含むことができ、たとえば、その例としては、画像、ビデオ・フレーム、ビデオ、地図、テキスト・ブロック、ドキュメントのページ、スクリーン・ショット、または任意のサムネイル・イメージ表示があるが、それらには限定されない。イメージ要素のシーケンスは、任意のタイプのまたはタイプの組合せのイメージ要素を含むことができる。シーケンスにおけるイメージ要素の順序は、任意の様式で特定されることが可能である。
図2は、ディスプレイ・グリッドを使用してイメージ要素のレイアウトを特定するための例示的な方法を示すフロー・チャートである。候補イメージ要素をディスプレイ・グリッドにおける占有されていない位置に配置する際には、配置アルゴリズムが、候補イメージ要素と、1つまたは複数のグリッド位置の対応するセットとの間における適合(matching)を、それらの候補イメージ要素および配置ルールのセットに関する配置パターンに基づいて識別する。
工程210において、配置アルゴリズムは、ディスプレイ・グリッドにおける占有されていない位置を特定する。ディスプレイ・グリッドにおける位置は、ディスプレイ・グリッドの特定の領域が特定の目的で確保されていることに起因して、占有されているものとしてマークされている場合がある。たとえば、確保されている領域は、図3A〜図3B(領域103)、図5A〜図5B(領域104、105、および106)において示されているディスプレイ・グリッドにおいて占有されているものとしてマークされている。ディスプレイ・グリッドにおける位置は、候補イメージ要素がグリッドにおける占有されていない位置に適合される配置アルゴリズムのメイン・ループを開始する前に、グリッド内に配置された特定のイメージ要素によって占有されているものとしてマークされている場合もある。たとえば、図4A〜図4Dは、ズームインするためのイメージを選択する(および選択解除する)ユーザ入力に応答して変化する漸進的なレイアウトを示しており、イメージ要素190Aが図4Aにおいて(400%の)ズームイン用として選択された場合には、イメージ要素190Aのズームインされたバージョンが生成され、および/または取り出され、次いで、イメージ要素のうちの残りを図4Bのディスプレイ・グリッドへとレイアウトすることを開始する前に、配置アルゴリズムは、イメージ要素190Aのズームインされたバージョンをどこに配置するかを特定し、それらの位置(C3〜C6およびD3〜D6)を、占有されているものとしてマークする。
工程220において、配置アルゴリズムは、ディスプレイ・グリッド内に配置するための候補であるイメージ要素のグループを識別する。特定の実施形態においては、配置アルゴリズムは、複数のイメージを(たとえば、ローカル・データ・ストアから、および/またはリモート・サーバから)取り出し、次いで、それらのイメージ要素のそれぞれに関連付けられている情報に基づいて、それぞれのイメージ要素が、ディスプレイ・グリッド内に配置するための候補であるかどうかを特定することができる。特定の実施形態においては、イメージの特定は、1つもしくは複数のローカル・データ・ストアから、1つもしくは複数のリモート・データ・ストアから、1つもしくは複数のデータベースから、1つもしくは複数のサードパーティ・サーバから、または1つもしくは複数のAPIにアクセスすることによってイメージを取り出すことまたは要求することを含むことができる。特定の実施形態においては、イメージの取り出しは、スクリーン・ショットを生成すること、サムネイルを生成すること、ビデオ・フレームを抽出すること、イメージを切りそろえること、イメージを縮小すること、イメージを1つのフォーマットから別のフォーマットへ(たとえば、ベクトルからラスタへ、またはPNG(Portable Networking Graphics)からJPEG(Joint Photographic Experts Group)へ)変換することを含むことができる。
イメージ要素は、ソーシャルネットワーキング・コンテンツのイメージを含むことができる。そのようなイメージは、閲覧者に関連付けられているイメージ、ソーシャル・グラフにおいて閲覧者につながっているその他のユーザ(これは、特定の隔たり度合い内で閲覧者につながっているユーザ、特定のグループもしくは組織内のユーザ、特定の関心もしくはアフィニティを閲覧者と共有しているユーザ、もしくはユーザと類似したプロフィールもしくはターゲットとなる人口統計学的プロフィールを有しているユーザに限定されることが可能である)に関連付けられているイメージ、または閲覧者がフォローしている特定のユーザもしくはコンセプトに関連付けられているイメージを含むことができる。ソーシャル・グラフの例示的な実施形態については、図7に関連してさらに詳細に記述されている。ソーシャル・ネットワーキング・システムの例示的な実施形態については、図6に関連してさらに詳細に記述されている。
シーケンスにおけるイメージのセットは、オンライン・コンテンツの取り込まれたイメージのセットを含むことができる。特定の実施形態においては、イメージは、ウェブサイトのスクリーン・ショット、ウェブサイトの一部分、またはその他の何らかのタイプのオンライン・コンテンツのスクリーン・ショットを表すことができる。たとえば、イメージは、ユーザがフォローしているトピック、企業、政治家、または有名人に関する現在のニュース・ストーリのスクリーン・ショットを含むことができる。イメージ上でクリックすると、閲覧者は、スクリーン・ショットに関するウェブサイトへ導かれることが可能である。そのような取り込まれたイメージは、ウェブ・クローラ(web crawler)によって生成されること、またはサードパーティ・サーバから受け取られることが可能である。たとえば、配置アルゴリズムは、ソーシャルネットワーキング・ウェブサイトのユーザを含むものとしてタグ付けされている複数のイメージを取り出し、次いで、ロケーション情報に関連付けられているイメージ要素を候補として指定することができる。工程210に関連して言及されているように、候補イメージ要素のセットは、ディスプレイ・グリッド内に既に配置されているイメージ要素(たとえば、ズームインされたイメージ190A)を含まないことが可能である。
工程230において、配置アルゴリズムは、それぞれの候補イメージ要素に関する配置パターンを特定する。イメージ要素の配置パターンは、イメージ要素によって占有されるグリッド位置のパターン(pattern of grid positions)を含む。特定の実施形態においては、配置パターンは、隣接したグリッド位置のセットを含まなければならず、その他の実施形態においては、イメージ要素によって占有される位置の配置パターンは、隣接したグリッド位置のセットを含む必要はない。特定の実施形態においては、イメージ要素(またはその一部分)が、座標のセット(たとえば、A1)によって描かれているディスプレイ・スペースのセル全体を満たしていない場合に、イメージ要素の配置パターンを特定する工程は、座標によって示されているディスプレイ・スペースのセル全体を、イメージ要素(または、その部分)によって占有されているものとして指定することを含むことができる。たとえば、図1において示されているように、イメージ要素199は、グリッド位置J2およびJ3の全体を満たしていないが、イメージ要素199は、グリッド位置J2およびJ3を「占有している」ということにする。特定の実施形態においては、自分の占有されているグリッド位置の全体を満たしていないイメージ要素は、グリッド位置によって示されているディスプレイ・スペースのセルの(すべてではないにしても)より多くを満たすように、縮小されること、切りそろえられること、伸長されること、および/またはその他の形で修正されることが可能である。図1、図3A〜図3B、図4A〜図4D、および図5A〜図5Bにおいて示されている例の目的から、それぞれのイメージ要素110〜195は、そのイメージ要素によって占有されているグリッド位置の全体を満たすように示されている。特定の実施形態においては、イメージ要素の配置パターンは、そのイメージ要素とともに(たとえば、そのイメージ要素に関連付けられているメタデータとして)格納されることが可能である。
工程240において、配置アルゴリズムは、候補イメージ要素をグリッドにおける占有されていない位置に配置するために、工程250〜280を実行するためのメイン・ループ(main loop)を開始する(配置アルゴリズムは、残っている候補イメージ要素および占有されていない位置がある限り、実行を続けることができる)。
工程250において、配置アルゴリズムは、候補イメージ要素を占有されていない位置のセットに適合させ、配置アルゴリズムは、候補イメージ要素と、1つまたは複数のグリッド位置の対応するセットとの間における適合を、候補イメージ要素の属性(たとえば、形状、サイズ、配置パターン、配置起点(placement origin)、ズーム倍率(zoom magnitude)、またはズーム・パターン)および配置ルールのセットに基づいて識別する。
特定の実施形態においては、配置アルゴリズムは、特定の候補イメージ要素に関する配置パターンに対応する占有されていない位置の第1のセットを見つけ出すことに焦点を合わせている。候補イメージ要素に適合する占有されていない位置の複数のセットが存在する場合には、1つまたは複数の配置ルールに従って、候補イメージ要素に適合した占有されていない位置の特定のセットが選択されることが可能である。そのような配置ルールは、ディスプレイ・グリッドにおける位置を満たすための順序を確立することができる。その順序は、1つまたは複数の要素に基づくことが可能であり、たとえば、それらの要素の例としては、ディスプレイ・グリッドにおける始点に関する配置の方向経路(directional path)(たとえば、ディスプレイ・グリッドの左上の隅、もしくはディスプレイ・グリッドの真ん中の中心点)および/もしくはグリッドを満たすパターン(たとえば、行もしくは列の端に達したときに、このパターンは、(1)従来のテキスト・レイアウト・パターン(text layout pattern)で次の行もしくは列の反対側の端にジャンプすること、もしくは(2)ジグザグ・パターンで次の行もしくは列へとUターンすることが可能である)、第1の軸に沿った配置に対する第2の軸に沿った配置の優先順位付け、または表示可能な領域の向きがあるが、それらには限定されない。特定の実施形態においては、ディスプレイ・グリッドにおける位置を満たすための順序は、候補イメージ要素がグリッドにおける位置のセットに適合した後に毎回再査定されることが可能である。
代替実施形態においては、配置アルゴリズムは、特定の占有されていない位置を含む占有されていない位置の可能なセットに対応する配置パターンを有する第1の候補イメージ要素を見つけ出すことに焦点を合わせてもよい。複数の候補イメージ要素が、占有されていない位置のセットに適合している場合には、1つまたは複数の配置ルールに従って、占有されていない位置のセットに適合した特定の候補イメージ要素が選択されることが可能である。それらの配置ルールは、候補イメージ要素をグリッド内に配置するための順序を確立することができ、候補イメージ要素をグリッド内に配置するためのその順序は、候補イメージ要素のランキングに基づく。候補イメージ要素は、ランキング、順序(たとえば、時間的な順序)、その他などに基づいて、シーケンスへと編成されることが可能である。特定の実施形態においては、候補イメージ要素のランキングは、候補イメージ要素がグリッドにおける位置のセットに適合した後に毎回再査定されることが可能である。
イメージは、ユーザ、ユーザの好み、またはその他の要素に対する関連性に従って、候補となるべく選択されること、および/またはランク付けされることが可能である。特定の実施形態においては、イメージは、ソーシャルネットワーキング情報に従って選択されること、および/またはランク付けされることが可能である。ソーシャル・ネットワーキング・システムは、イメージに関するつながり値(connection value)に少なくとも部分的に基づいてそのイメージに関する関連性スコアを特定することができる。限定ではなく、例として、ソーシャル・グラフにおいて閲覧者につながっているユーザ・ノードに関連付けられている、イメージにおいて示されている人々の数が、つながり値に影響を与える場合がある。限定ではなく、例として、ソーシャル・グラフのユーザ・ノードと、閲覧者との間における隔たり度合いが、つながり値に影響を与える場合がある。別の例として、閲覧者と、ソーシャル・グラフ・ユーザのユーザ・ノードとの間におけるつながりのタイプが、つながり値に影響を与える場合がある。限定ではなく、例として、「友達」タイプのつながりは、「職場の同僚」タイプのつながりよりも高いつながり値に関連付けられることが可能である。
ソーシャル・ネットワーキング・システムは、イメージに関する関心値に少なくとも部分的に基づいてそのイメージに関する関連性スコアを特定することができる。関心値は、イメージに割り振られている1つまたは複数のカテゴリーが、閲覧者の関心に関連付けられている1つまたは複数のカテゴリーと一致しているかどうかに少なくとも部分的に基づくことが可能である。関心値は、イメージにおいて示されている人々、ロケーション、オブジェクト、またはアクションに割り振られている1つまたは複数のカテゴリーが、閲覧者の関心に関連付けられている1つまたは複数のカテゴリーと一致しているかどうかに少なくとも部分的に基づくことが可能である。関心値は、イメージに関連付けられているソーシャルネットワーキング情報、サード・パーティ情報、またはメタデータに割り振られている1つまたは複数のカテゴリーが、閲覧者の関心に関連付けられている1つまたは複数のカテゴリーと一致しているかどうかに少なくとも部分的に基づくことが可能である。
限定ではなく、例として、ソーシャル・グラフにおけるオブジェクトは、ユーザもしくはコンセプトのプロフィール、またはそのユーザにつながっているユーザ・ノードに関連付けられている情報を含むことができる。別の例として、アクションは、ユーザ・ノードを友達リストに登録すること/友達リストから削除すること、コンテンツ・オブジェクトに対して「いいね!」を表明すること、サード・パーティのファンになること、ソーシャル・ネットワーキング・システム160上のユーザのグループもしくはコミュニティーに参加すること、またはサード・パーティのウェブサイトを訪れることを含むことができる。別の例として、サード・パーティ情報は、サードパーティ・ウェブサイト上でのユーザのアクティビティーまたはユーザによる購入の情報を含むことができる。
関連性スコアの特定については、2010年12月22日に出願された「関連する通知をユーザのために通知とのユーザ対話に基づいて提供するためのタイミング(Timing for Providing Relevant Notifications for a User Based on User Interaction with Notifications)」という名称の米国特許出願第12/976,859号においてさらに詳細に論じられており、この米国特許出願は、本願明細書に援用されている。
関連性スコアは、上述のような、ソーシャル・グラフのオブジェクトに関するユーザにとってのアフィニティ(affinity)に少なくとも部分的に基づくことが可能である。限定ではなく、例として、過去、現在、または今後のコンテンツに関するアフィニティは、コンテンツ・エンジンの処理モジュールによって、ユーザ・アクティビティー、ソーシャル・グラフのユーザ・ノードのアクティビティ、もしくは関連付けられているつながり、またはそれらの任意の組合せに基づいて特定されることが可能である。アフィニティは、重み付けされたセットの予測関数を使用して計算されることが可能である。予測関数は、ユーザが特定のアクションを実行するかどうかを予測する。予測関数は、任意の数のアクションを予測することができ、それらのアクションは、ソーシャル・ネットワーキング・システムの内部または外部で生じる場合がある。アフィニティを特定して集約および統合されたデータを重み付けする際に、任意のタイプの変数が考慮されることが可能である。アフィニティの度合いの特定および使用については、2006年8月11日に出願されて米国特許第7,827,208号として発行された「ソーシャル・ネットワークのメンバー用にパーソナライズされたストーリのフィードを生成すること(Generating a Feed of Stories Personalized for Members of a Social Network)」という名称の米国特許出願第11/502,757号、2009年12月23日に出願された「関連したソーシャル・ネットワーキング・システム・コンテンツおよび広告の選択および提示(Selection and Presentation of Related Social Networking System Content and Advertisements)」という名称の米国特許出願第12/645,481号、2011年9月28日に出願された「ソーシャル・ネットワーキング・システムにおけるソーシャルな対話の即座の推奨(Instantaneous Recommendation of Social Interactions in a Social Networking System)」という名称の米国特許出願第13/247,825号、2010年12月22日に出願された「ロケーションおよびソーシャルな情報に基づいてユーザに提供される関連する通知を価格設定すること(Pricing Relevant Notifications Provided to a User Based on Location and Social Information)」という名称の米国特許出願第12/976,755号、2010年12月23日に出願された「ソーシャル・ネットワーキング・システムにおけるコンテキスト関連アフィニティ予測(Contextually Relevant Affinity Prediction in a Social Networking System)」という名称の米国特許出願第12/978,265号、ならびに2012年10月1日に出願された「モバイル・デバイス関連のアフィニティの度合い(Mobile Device−Related Measures of Affinity)」という名称の米国特許出願第13/632,869号という米国特許出願においてさらに詳細に説明されており、これらの米国特許出願はすべて、本願明細書に援用されている。
図3A〜図3Bは、これらの2つの配置戦略の間における差異を示す例を提供する。特定の実施形態においては、この工程の一環として、配置アルゴリズムは、特定の候補イメージ要素が、占有されていない位置の残っているセットのいずれにも適合することが不可能であると特定した場合には、そのイメージ要素を候補イメージ要素のグループから除去することができる。
工程260において、配置アルゴリズムは、位置の適合したセットを、占有されているものとしてマークし、特定の実施形態においては、配置アルゴリズムは、位置の適合したセットを、適合したイメージ要素によって占有されているものとしてマークすることができる。
工程270において、(配置アルゴリズムが、イメージ要素がディスプレイ・グリッドにおいて1回現れることしか許可しないケースにおいては)配置アルゴリズムは、適合したイメージ要素を、候補イメージ要素のグループから除去することができる。
工程280において、配置アルゴリズムは、残っている候補イメージ要素および占有されていない位置があるかどうかに基づいて、メイン・ループを継続するかどうかを特定する。残っている占有されていない位置がいくらかあるが、残っている候補イメージ要素がない場合には、特定の実施形態は、イメージ要素の完全に満たされたレイアウトを提示できるように、候補イメージ要素のセットを繰り返すことができる。
工程290において、ループが完了して、配置アルゴリズムが、可能な最大数の候補イメージ要素を、グリッド位置の占有されていないセットに適合させると、それらのイメージ要素を、グリッドにおける位置に配置されるものとしてレンダリングするためのレイアウト情報が提供される。
特定の実施形態においては、方法200の工程は、コンピュータ・サーバ上で実行されることが可能であり、そのコンピュータ・サーバは、隣接したイメージ要素のアレイを作成するための単なる情報を送信するか、または隣接したイメージ要素の実際のアレイ(イメージ要素そのものを含む)を送信する。特定の実施形態においては、方法200の工程は、ユーザのコンピューティング・デバイス上で実行されることが可能である。そのような実施形態においては、ユーザは、シーケンスにおいてイメージを挿入または更新したい場合には、1つまたは複数のイメージ要素を求める要求を1つまたは複数のコンピュータ・サーバへ送信し、それらの1つまたは複数のイメージ要素をシーケンス内に挿入し、隣接したイメージ要素のアレイを再特定することができる。
図3A〜図3Bは、イメージ要素のレイアウト上での代替配置ルールの例示的な使用事例を示している。図3Aおよび図3Bの両方においては、確保されている領域103を含む同じディスプレイ・グリッドが、位置D3〜G6を占有しているものとしてマークされており、候補イメージ要素の同じシーケンスが、ディスプレイ・グリッドにおける位置に配置されるのに利用可能であった。しかしながら、図3Aに関する配置ルールは、配置アルゴリズムが、シーケンスにおける次のイメージに適合することができる占有されていない位置の第1の最も上の最も左のセットを見つけ出さなければならないことを示し、その一方で、図3Bに関する配置ルールは、配置アルゴリズムが、最も上の最も左の占有されていない位置を含む占有されていない位置の可能なセット(possible set)に対応する配置パターンを有する第1の候補イメージ要素を見つけ出さなければならないことを示している。はじめの段階では、2つの異なる配置ルールの間にイメージ・レイアウトにおける差異はないように見えるが、イメージ要素195Aの配置に伴って差異が現れ始める。
図3Aにおけるレイアウトに関して適用される配置ルールは、シーケンスにおける次のイメージ要素に適合する占有されていない位置のセットを見つけ出すことに焦点を合わせているため、イメージ要素195Aは、イメージ要素195Aに関する配置パターンに対応したグリッドにおける占有されていない位置の第1のセット(G2およびH1〜3)に配置された。その一方で、図3Bにおけるレイアウトに関して適用される配置ルールは、特定の占有されていない位置(G1)を含む占有されていない位置のセットに対応する配置パターンを有するシーケンスにおける第1のイメージ要素を見つけ出すことに焦点を合わせており、イメージ要素195Aの配置パターンは、位置G1を占有することの可能性を認めず、したがって、イメージ要素130Bは、G1およびG2を含む占有されていない位置のセットに適合し、その後にイメージ要素195Aは、位置G7およびH6〜8を含む占有されていない位置のセットに適合する。
イメージ要素の配置起点は、そのイメージ要素に関する配置パターンにおける特定の位置の指定であり、この位置は、そのイメージ要素が配置されることになるディスプレイ・グリッドにおけるグリッド位置の特定のセットを識別する際の「先端(leading edge)」である。配置起点は、2つ以上のグリッド位置を含む配置パターンを有するイメージ要素にのみ適用される。
イメージ要素に関する配置起点は、イメージ要素をグリッド内に配置する際に適用される特定の配置ルールに基づいて変わる場合がある。たとえば、配置ルールは、典型的な左から右へ、上から下への英語のレイアウトに従って配置を示す場合がある。この例においては、図1からのイメージ要素120(その配置パターンは、2つの水平に隣接したグリッド位置を占有している)の配置起点は、2つのグリッド位置のうちの左のグリッド位置となり、その一方で、図1からのイメージ要素125(その配置パターンは、2つの垂直に隣接したグリッド位置を占めている)の配置起点は、2つのグリッド位置のうちの上のグリッド位置となる。しかしながら、典型的な上から下へ、右から左への中国語のテキスト・レイアウトに従って配置を示すために、異なる配置ルールが適用された場合には、イメージ要素120(その配置パターンは、2つの水平に隣接したグリッド位置を占有している)の配置起点は、2つのグリッド位置のうちの右のグリッド位置となり、その一方で、イメージ要素125(その配置パターンは、2つの垂直に隣接したグリッド位置を占めている)の配置起点は、2つのグリッド位置のうちの上のグリッド位置となる。
特定の実施形態においては、特定のタイプの(またはすべての)イメージ要素に関する配置起点が、(たとえば、構成設定において)示されることが可能である。1つの例示的な使用事例においては、シンプルな配置パターンを伴うイメージ要素、たとえば、イメージ要素120(2×1)、またはイメージ要素125(1×2)は、配置の方向経路に基づいて自動的に特定される配置起点を有することができ、その一方で、複雑な配置パターンを伴うイメージ要素、たとえば、イメージ要素140または195に関する配置起点の特定は、構成設定に、またはルールのさらに複雑なセットに基づくことが可能である。
図4A〜図4Dは、イメージ要素のレイアウト上で特定のイメージ要素をズームインおよびズームアウトすることの例示的な使用事例を示している。図4Aにおいては、イメージ要素がディスプレイ・グリッド内に配置されて、レイアウトが表示のためにレンダリングされた後に、ズームインするために(太字で示されている)イメージ要素190Aを選択するユーザ入力が受け取られている。イメージ要素のズーム倍率は、ユーザがズームインするためにそのイメージ要素を選択した場合に、そのイメージ要素のサイズが増大される係数を確立する。イメージ要素190Aのようなシンプルな要素に関しては、ズーム倍率は、ディスプレイ・グリッドの解像度に基づいて事前に特定されることが可能である。たとえば、イメージ要素190Aはもともと、グリッドにおける2つの水平に隣接した位置を2×1の構成(D3〜D4)で占めていたが、ズームインされたイメージ要素190Aは、図4Bにおいて示されているように、イメージ要素190Aによって占有される位置の数をそれぞれの軸に沿って倍増させることによってズームインされて、以前よりも4倍大きな領域を占めている。イメージ要素のズーム・パターンは、ズームインされた際のそのイメージ要素に関する配置パターンである。図4Bにおいて示されている例においては、イメージ要素190Aのズーム・パターンは、8つの隣接したグリッド位置を4×2の構成で含んでいる。
ユーザがズームインするためにイメージ要素190Aを選択した後には、ズームインされたイメージ要素190Aを収容するために特定のイメージ要素があちらこちらで移し替えられる必要が生じることになるという事実を考慮するために、イメージ要素のレイアウトがリフレッシュされなければならない。イメージ要素の全体的なレイアウトを実行する前に、ズームインされたイメージ要素190Aによって占有されることになるグリッド位置が、占有されているものとしてマークされる。しかしながら、イメージ要素190Aのズームインされたバージョンは、元のイメージ要素190Aよりも多くのグリッド位置を占めるため、占有されることになる特定のグリッド位置が、イメージ要素の配置起点に基づいて選択されることが可能である。たとえば、イメージ要素190Aに関する配置起点が、イメージ要素190Aの最も下の最も左の隅をカバーするグリッド位置を含んでいる場合には、配置アルゴリズムは、イメージ要素190Aの最も下の最も左の隅がグリッド位置D3にとどまるようにイメージ要素190Aをレイアウトすることができる。
図4Bにおいて示されている例示的なレイアウトをレンダリングした後に、イメージ要素185B上にズームインするさらなるユーザ入力が受け取られる。図4Cにおいて示されているように、イメージ要素185Bは、「9」というズーム倍率(1×1から3×3)によってズームインされて、イメージ要素185Bによって占有される位置の数をそれぞれの軸に沿って3倍に増やすことによってズームインされた。(イメージ要素185Bはもともと、ディスプレイ・グリッドの1つのセルしか占めていなかったので)イメージ要素185Bは配置起点情報をまったく含んでいなかったため、イメージ要素185Bのズームインされたバージョンは、イメージ要素185Bの元のバージョンによって占有されていたグリッド位置(I2)を中心としている。イメージ要素190Aと同様に、図4Cにおいて示されているようなディスプレイ・グリッドへとイメージ要素の全体的なレイアウトを実行する前に、ズームインされたイメージ要素185Bによって占有されることになるグリッド位置が、占有されているものとしてマークされる。図4Dは、イメージ要素190Aからズームアウトするためのユーザ選択を受け取った後の更新されたレイアウトを示している。図4A〜図4Dを通して見て取れるように、ズームインされたイメージのロケーションは、元のイメージ要素のロケーション、イメージのズーム倍率、ズーム・パターン、およびいずれかの配置起点情報に基づいて特定されることが可能である。
図5A〜図5Bは、イメージ要素のレイアウトをスクロールダウンすることの例示的な使用事例を示している。図5A〜図5Bにおけるイメージ要素のレイアウトは、典型的な上から下へ、右から左への中国語のテキスト・レイアウトに従ってイメージ要素の配置を示している。図5A〜図5Bにおいて示されている例においては、グリッドは、ディスプレイ・グリッドにおける最も上の最も右の占有されていない位置におけるポイントからスタートして、配置の上から下へ、右から左への経路に対応する配置の方向経路に沿ってイメージ要素で満たされている。配置アルゴリズムは、横軸に沿った右から左への配置よりも、縦軸に沿った上から下への配置を優先することができる。図5A〜図5Bは、いくつかの確保されている領域104、105、および106を示している。
図5Aにおいて示されている表示をスクロールダウンするためのユーザ選択が受け取られた場合には、最も右の最も下の位置に配置されているイメージ要素が、スクロールダウンした後のイメージ要素を示す更新されたグリッドをレイアウトする際のレイアウト始点(layout starting point)として取り扱われることが可能である。レイアウトを実行する前に、図5Bにおいて示されている表示の新たなレイアウト始点からスタートして、イメージ要素130Bに関するグリッド位置が、(更新されたレイアウト用の最良の始点において)選択され、占有されているものとしてマークされる。その後、イメージ要素のレイアウトは、配置ルールに従って通常どおり進行する。
図6は、ソーシャル・ネットワーキング・システムに関連付けられている例示的なネットワーク環境600を示している。ネットワーク環境600は、ネットワーク610によって互いにつながっているクライアント・システム630、ソーシャル・ネットワーキング・システム660、およびサードパーティ・システム670を含む。図6は、クライアント・システム630、ソーシャル・ネットワーキング・システム660、サードパーティ・システム670、およびネットワーク610の特定の構成を示しているが、本開示は、クライアント・システム630、ソーシャル・ネットワーキング・システム660、サードパーティ・システム670、およびネットワーク610の任意の適切な構成を想定している。限定ではなく、例として、クライアント・システム630、ソーシャル・ネットワーキング・システム660、およびサードパーティ・システム670のうちの複数は、ネットワーク610を迂回して、互いに直接つながることが可能である。別の例として、クライアント・システム630、ソーシャル・ネットワーキング・システム660、およびサードパーティ・システム670のうちの複数は、物理的にまたは論理的に、全体としてまたは部分的に互いに同一場所に配置されることが可能である。その上、図6は、特定の数のクライアント・システム630、ソーシャル・ネットワーキング・システム660、サードパーティ・システム670、およびネットワーク610を示しているが、本開示は、任意の適切な数のクライアント・システム630、ソーシャル・ネットワーキング・システム660、サードパーティ・システム670、およびネットワーク610を想定している。限定ではなく、例として、ネットワーク環境600は、複数のクライアント・システム630、ソーシャル・ネットワーキング・システム660、サードパーティ・システム670、およびネットワーク610を含むことができる。
本開示は、任意の適切なネットワーク610を想定している。限定ではなく、例として、ネットワーク610の1つまたは複数の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、ローカル・エリア・ネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイド・エリア・ネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタン・エリア・ネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの複数の組合せを含むことができる。ネットワーク610は、1つまたは複数のネットワーク610を含むことができる。
リンク650は、クライアント・システム630、ソーシャル・ネットワーキング・システム660、およびサードパーティ・システム670を通信ネットワーク610に、または互いに接続することができる。本開示は、任意の適切なリンク650を想定している。特定の実施形態においては、1つまたは複数のリンク650は、1つもしくは複数の有線リンク(たとえば、デジタル・サブスクライバ・ライン(DSL)もしくはデータ・オーバ・ケーブル・サービス・インタフェース仕様(DOCSIS)など)、ワイヤレス・リンク(たとえば、Wi−Fiもしくはワールドワイド・インターオペラビリティー・フォー・マイクロウェーブ・アクセス(WiMAX)など)、または光リンク(たとえば、同期光ネットワーク(SONET)もしくは同期デジタル階層(SDH)など)を含む。特定の実施形態においては、1つまたは複数のリンク650はそれぞれ、アド・ホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー・テクノロジーベースのネットワーク、衛星通信テクノロジーベースのネットワーク、別のリンク650、または複数のそのようなリンク650の組合せを含む。リンク650は、ネットワーク環境600の全体を通じて必ずしも同じである必要はない。1つまたは複数の第1のリンク650は、1つまたは複数の点において1つまたは複数の第2のリンク650とは異なることが可能である。
特定の実施形態においては、クライアント・システム630は、クライアント・システム630によって実装またはサポートされる適切な機能を実行することができる、ハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含む電子デバイスであることが可能である。限定ではなく、例として、クライアント・システム630は、デスクトップ・コンピュータ、ノートブック・コンピュータもしくはラップトップ・コンピュータ、ネットブック、タブレット・コンピュータなどのコンピュータ・システム、eブック・リーダ、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、セルラー電話、スマートフォン、その他の適切な電子デバイス、またはそれらの任意の適切な組合せを含むことができる。本開示は、任意の適切なクライアント・システム630を想定している。クライアント・システム630は、クライアント・システム630のネットワーク・ユーザがネットワーク610にアクセスすることを可能にすることができる。クライアント・システム630は、自分のユーザがその他のクライアント・システム630のその他のユーザと通信することを可能にすることができる。
特定の実施形態においては、クライアント630は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、またはMOZILLA FIREFOX(いずれも登録商標)などのウェブ・ブラウザ632を含むことができ、1つまたは複数のアドオン、プラグイン、またはTOOLBARもしくはYAHOO TOOLBAR(登録商標)などのその他の拡張を有することができる。クライアント・システム630のユーザは、ウェブ・ブラウザ632を特定のサーバ(サーバ662、またはサードパーティ・システム670に関連付けられているサーバなど)へ導くユニフォーム・リソース・ロケータ(URL)またはその他のアドレスを入力することができ、ウェブ・ブラウザ632は、ハイパー・テキスト転送プロトコル(HTTP)要求を生成して、そのHTTP要求をサーバに通信することができる。サーバは、そのHTTP要求を受け入れて、そのHTTP要求に応答して1つまたは複数のハイパー・テキスト・マークアップ言語(HTML)ファイルをクライアント・システム630に通信することができる。クライアント・システム630は、ユーザに提示するためにサーバからのHTMLファイルに基づいてウェブページをレンダリングすることができる。本開示は、任意の適切なウェブページ・ファイルを想定している。限定ではなく、例として、ウェブページは、特定のニーズに従って、HTMLファイル、拡張可能ハイパー・テキスト・マークアップ言語(XHTML)ファイル、または拡張可能マークアップ言語(XML)ファイルからレンダリングすることができる。そのようなページは、限定ではなく、例として、JAVASCRIPT(登録商標)、JAVA(登録商標)、MICROSOFT SILVERLIGHTで書かれたスクリプトなどのスクリプト、AJAX(Asynchronous JAVASCRIPT(登録商標) and XML)などのマークアップ言語とスクリプトの組合せなどを実行することもできる。本明細書においては、ウェブページへの参照は、適切な場合には、(そのウェブページをレンダリングするためにブラウザが使用することができる)1つまたは複数の対応するウェブページ・ファイルを含み、その逆もまた同様である。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、オンライン・ソーシャル・ネットワークをホストすることができるネットワークアドレス可能なコンピューティング・システムであることが可能である。ソーシャル・ネットワーキング・システム660は、たとえば、ユーザプロフィール・データ、コンセプトプロフィール・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関連したその他の適切なデータなどのソーシャルネットワーキング・データを生成すること、格納すること、受け取ること、および送信することが可能である。ソーシャル・ネットワーキング・システム660は、ネットワーク環境600のその他のコンポーネントによって直接、またはネットワーク610を介してアクセスされることが可能である。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、1つまたは複数のサーバ662を含むことができる。それぞれのサーバ662は、単一のサーバ、または複数のコンピュータもしくは複数のデータ・センターにわたる分散サーバであることが可能である。サーバ662は、限定ではなく、例として、ウェブ・サーバ、ニュース・サーバ、メール・サーバ、メッセージ・サーバ、広告サーバ、ファイル・サーバ、アプリケーション・サーバ、Exchangeサーバ、データベース・サーバ、プロキシ・サーバ、本明細書において記述されている機能もしくはプロセスを実行するのに適している別のサーバ、またはそれらの任意の組合せなど、さまざまなタイプのものであることが可能である。特定の実施形態においては、それぞれのサーバ662は、サーバ662によって実装またはサポートされる適切な機能を実行するためのハードウェア、ソフトウェア、もしくは組み込みロジック・コンポーネント、または複数のそのようなコンポーネントの組合せを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、1つまたは複数のデータ・ストア664を含むことができる。データ・ストア664は、さまざまなタイプの情報を格納するために使用されることが可能である。特定の実施形態においては、データ・ストア664内に格納されている情報は、特定のデータ構造に従って編成されることが可能である。特定の実施形態においては、それぞれのデータ・ストア664は、リレーショナル・データベース、行のデータベース、相関関係データベース、あるいはその他の適切なデータベースであることが可能である。本開示は特定のタイプのデータベースを記述し、例示するが、本開示においては、任意の適切なタイプのデータベースが考えられる。特定の実施形態は、クライアント・システム630、ソーシャル・ネットワーキング・システム660、またはサードパーティ・システム670が、データ・ストア664内に格納されている情報を管理すること、取り出すこと、修正すること、追加すること、または削除することを可能にするインターフェースを提供することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、1つまたは複数のソーシャル・グラフを1つまたは複数のデータ・ストア664内に格納することができる。特定の実施形態においては、ソーシャル・グラフは、複数のノード(複数のユーザ・ノード(それぞれが、特定のユーザに対応している)、または複数のコンセプト・ノード(それぞれが、特定のコンセプトに対応している)を含むことができる)と、ノード同士をつなげる複数のエッジとを含むことができる。ソーシャル・ネットワーキング・システム660は、オンライン・ソーシャル・ネットワークのユーザに、その他のユーザと通信および対話する能力を提供することができる。特定の実施形態においては、ユーザたちは、ソーシャル・ネットワーキング・システム660を介してオンライン・ソーシャル・ネットワークに参加し、次いで、自分たちがつながりたいと望むソーシャル・ネットワーキング・システム660のその他の複数のユーザにつながり(すなわち、関係)を付加することができる。本明細書においては、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム660を介して、つながり、関連付け、または関係を形成しているソーシャル・ネットワーキング・システム660のその他の任意のユーザを指すことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、ソーシャル・ネットワーキング・システム660によってサポートされるさまざまなタイプのアイテムまたはオブジェクトに関してアクションを取る能力をユーザに提供することができる。限定ではなく、例として、それらのアイテムおよびオブジェクトは、ソーシャル・ネットワーキング・システム660のユーザが属することが可能であるグループもしくはソーシャル・ネットワーク、ユーザが関心を抱く可能性があるイベントもしくはカレンダー・エントリー、ユーザが使用することができるコンピュータベースのアプリケーション、ユーザがサービスを介してアイテムを購入もしくは販売することを可能にするトランザクション、ユーザが実行することができる広告との対話、またはその他の適切なアイテムもしくはオブジェクトを含むことができる。ユーザは、ソーシャル・ネットワーキング・システム660において、またはサードパーティ・システム670の外部システム(ソーシャル・ネットワーキング・システム660とは別個のものであって、ネットワーク610を介してソーシャル・ネットワーキング・システム660に結合されている)によって表されることが可能である任意のものと対話することができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、さまざまなエンティティ同士をリンクできることが可能である。限定ではなく、例として、ソーシャル・ネットワーキング・システム660は、ユーザたちが互いに対話すること、ならびにサードパーティ・システム670もしくはその他のエンティティからのコンテンツを受け取ることを可能にすることができ、またはユーザたちがアプリケーション・プログラミング・インタフェース(API)もしくはその他の通信チャネルを通じてこれらのエンティティと対話することを可能にすることができる。
特定の実施形態においては、サードパーティ・システム670は、1つもしくは複数のタイプのサーバ、1つもしくは複数のデータ・ストア、1つもしくは複数のインターフェース(APIを含むが、それには限定されない)、1つもしくは複数のウェブ・サービス、1つもしくは複数のコンテンツ・ソース、1つもしくは複数のネットワーク、または(たとえば、サーバが通信することができる)その他の任意の適切なコンポーネントを含むことができる。サードパーティ・システム670は、ソーシャル・ネットワーキング・システム660を運営しているエンティティとは異なるエンティティによって運営されることが可能である。しかしながら、特定の実施形態においては、ソーシャル・ネットワーキング・システム660およびサードパーティ・システム670は、ソーシャル・ネットワーキング・システム660またはサードパーティ・システム670のユーザにソーシャルネットワーキング・サービスを提供するために互いに連携して機能することができる。この意味において、ソーシャル・ネットワーキング・システム660は、サードパーティ・システム670などのその他のシステムがインターネットを介してソーシャルネットワーキング・サービスおよび機能をユーザに提供するために使用することができるプラットフォーム、またはバックボーンを提供することができる。
特定の実施形態においては、サードパーティ・システム670は、サードパーティ・コンテンツ・オブジェクト・プロバイダを含むことができる。サードパーティ・コンテンツ・オブジェクト・プロバイダは、コンテンツ・オブジェクトの1つまたは複数のソースを含むことができ、それらのソースは、クライアント・システム630に通信されることが可能である。限定ではなく、例として、コンテンツ・オブジェクトは、ユーザにとって関心がある物またはアクティビティに関する情報、たとえば、映画の開始時刻、映画のレビュー、レストランのレビュー、レストランのメニュー、製品の情報およびレビュー、またはその他の適切な情報などを含むことができる。限定ではなく、別の例として、コンテンツ・オブジェクトは、インセンティブ・コンテンツ・オブジェクト、たとえば、クーポン、ディスカウント・チケット、ギフト券、またはその他の適切なインセンティブ・オブジェクトを含むことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660はまた、ユーザによって生成されたコンテンツ・オブジェクトを含み、それらのコンテンツ・オブジェクトは、ソーシャル・ネットワーキング・システム660とのユーザの対話を高めることができる。ユーザによって生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム660に付加、アップロード、送信、または「ポスト」することができる任意のものを含むことができる。限定ではなく、例として、ユーザは、クライアント・システム630からソーシャル・ネットワーキング・システム660へポストを通信する。ポストは、ステータス更新もしくはその他のテキスト・データ、ロケーション情報、写真、ビデオ、リンク、音楽、またはその他の類似したデータもしくはメディアなどのデータを含むことができる。コンテンツは、ニュースフィードまたはストリームなどの「通信チャネル」を通じてサード・パーティによってソーシャル・ネットワーキング・システム660に付加されることも可能である。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、さまざまなサーバ、サブシステム、プログラム、モジュール、ログ、およびデータ・ストアを含むことができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、ウェブ・サーバ、アクション・ロガー、API要求サーバ、関連性およびランキング・エンジン、コンテンツ・オブジェクト分類子、通知コントローラ、アクション・ログ、サードパーティ・コンテンツ・オブジェクト露出ログ、推測モジュール、認可/プライバシー・サーバ、検索モジュール、広告ターゲティング・モジュール、ユーザインタフェース・モジュール、ユーザプロフィール・ストア、つながりストア、サードパーティ・コンテンツ・ストア、またはロケーション・ストアのうちの1つまたは複数を含むことができる。ソーシャル・ネットワーキング・システム660は、適切なコンポーネント、たとえば、ネットワーク・インタフェース、セキュリティー・メカニズム、ロード・バランサ、フェイルオーバ・サーバ、管理およびネットワークオペレーション・コンソール、その他の適切なコンポーネント、またはそれらの任意の適切な組合せを含むこともできる。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、ユーザ・プロフィールを格納するための1つまたは複数のユーザプロフィール・ストアを含むことができる。ユーザ・プロフィールは、たとえば、経歴情報、人口統計学的情報、挙動情報、ソーシャルな情報、またはその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味もしくは好み、関心、親近感、またはロケーションを含むことができる。関心情報は、1つまたは複数のカテゴリーに関連した関心を含むことができる。カテゴリーは、一般的または具体的であることが可能である。限定ではなく、例として、ユーザが、あるブランドの靴に関する記事に対して「いいね!」を表明した場合には、カテゴリーは、そのブランド、または「靴」もしくは「衣類」という一般的なカテゴリーであることが可能である。ユーザに関するつながり情報を格納するために、つながりストアが使用されることが可能である。つながり情報は、類似のもしくは共通の職業経験、グループ・メンバーシップ、趣味、学歴を有しているか、または何らかの形で関連しているか、もしくは共通の属性を共有しているユーザ同士を示すことができる。つながり情報は、さまざまなユーザおよびコンテンツ(内部および外部の両方)の間におけるユーザ定義のつながりを含むこともできる。ネットワーク610を介してソーシャル・ネットワーキング・システム660を1つもしくは複数のクライアント・システム630または1つもしくは複数のサードパーティ・システム670にリンクさせるために、ウェブ・サーバが使用されることが可能である。ウェブ・サーバは、ソーシャル・ネットワーキング・システム660と、1つまたは複数のクライアント・システム630との間においてメッセージを受け取って回送するためにメール・サーバまたはその他のメッセージング機能を含むことができる。API要求サーバは、サードパーティ・システム670が、1つまたは複数のAPIを呼び出すことによってソーシャル・ネットワーキング・システム660からの情報にアクセスすることを可能にすることができる。ソーシャル・ネットワーキング・システム660の上のまたは外のユーザのアクションに関してウェブ・サーバから通信を受け取るために、アクション・ロガーが使用されることが可能である。アクション・ログとともに、サードパーティコンテンツ・オブジェクトへのユーザの露出についてのサードパーティコンテンツオブジェクト・ログが保持されることが可能である。通知コントローラは、コンテンツ・オブジェクトに関する情報をクライアント・システム630に提供することができる。情報は、通知としてクライアント・システム630へ押し出されることが可能であり、または情報は、クライアント・システム630から受け取られた要求に応答してクライアント・システム630から引き出されることが可能である。ソーシャル・ネットワーキング・システム660のユーザの1つまたは複数のプライバシー設定を実施するために、認可サーバが使用されることが可能である。ユーザのプライバシー設定は、ユーザに関連付けられている特定の情報がどのように共有されることが可能であるかを特定する。認可サーバは、ユーザが、たとえば、適切なプライバシー設定を設定することなどによって、自分のアクションをソーシャル・ネットワーキング・システム660によって記録されること、またはその他のシステム(たとえば、サードパーティ・システム670)と共有されることのオプトインまたはオプトアウトを行うことを可能にすることができる。サードパーティ・システム670などのサード・パーティから受け取られたコンテンツ・オブジェクトを格納するために、サードパーティコンテンツオブジェクト・ストアが使用されることが可能である。ユーザに関連付けられているクライアント・システム630から受け取られたロケーション情報を格納するために、ロケーション・ストアが使用されることが可能である。広告価格設定モジュールが、ソーシャルな情報、現在時刻、ロケーション情報、またはその他の適切な情報を組み合わせて、関連がある広告を、通知の形式でユーザに提供することができる。
図7は、例示的なソーシャル・グラフ700を示している。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、1つまたは複数のソーシャル・グラフ700を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、ソーシャル・グラフ700は、複数のノード(複数のユーザ・ノード702、または複数のコンセプト・ノード704を含むことができる)と、ノード同士をつなげる複数のエッジ706とを含むことができる。図7において示されている例示的なソーシャル・グラフ700は、教示上の目的から、2次元のビジュアル・マップ表示で示されている。特定の実施形態においては、ソーシャル・ネットワーキング・システム660、クライアント・システム630、またはサードパーティ・システム670は、適切なアプリケーションに関してソーシャル・グラフ700および関連したソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ700のノードおよびエッジは、データ・オブジェクトとして、たとえば(ソーシャルグラフ・データベースなどの)データ・ストア内に格納されることが可能である。そのようなデータ・ストアは、ソーシャル・グラフ700のノードまたはエッジの1つまたは複数の検索可能なまたはクエリ可能なインデックスを含むことができる。
特定の実施形態においては、ユーザ・ノード702は、ソーシャル・ネットワーキング・システム660のユーザに対応することができる。限定ではなく、例として、ユーザは、ソーシャル・ネットワーキング・システム660と、またはソーシャル・ネットワーキング・システム660を介して対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、ビジネス、もしくはサードパーティ・アプリケーション)、または(たとえば、個人もしくはエンティティの)グループであることが可能である。特定の実施形態においては、あるユーザがソーシャル・ネットワーキング・システム660とのアカウントに登録した場合には、ソーシャル・ネットワーキング・システム660は、そのユーザに対応するユーザ・ノード702を作成し、そのユーザ・ノード702を1つまたは複数のデータ・ストア内に格納することができる。本明細書において記述されているユーザおよびユーザ・ノード702は、適切な場合には、登録されているユーザ、および登録されているユーザに関連付けられているユーザ・ノード702を指すことができる。追加として、または代替として、本明細書において記述されているユーザおよびユーザ・ノード702は、適切な場合には、ソーシャル・ネットワーキング・システム660に登録されていないユーザを指すことができる。特定の実施形態においては、ユーザ・ノード702は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム660を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、ユーザは、自分の名前、プロフィール画像、連絡先情報、生年月日、性別、婚姻状況、家族状況、勤務先、学歴、好み、関心、またはその他の人口統計学的情報を提供することができる。特定の実施形態においては、ユーザ・ノード702は、ユーザに関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、ユーザ・ノード702は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、コンセプト・ノード704は、コンセプトに対応することができる。限定ではなく、例として、コンセプトは、場所(たとえば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(たとえば、ソーシャルネットワーク・システム660に関連付けられているウェブサイト、もしくはウェブアプリケーション・サーバに関連付けられているサードパーティ・ウェブサイトなど)、エンティティ(たとえば、人、企業、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャル・ネットワーキング・システム660内に、もしくはウェブアプリケーション・サーバなどの外部サーバ上に配置されることが可能であるリソース(たとえば、オーディオ・ファイル、ビデオ・ファイル、デジタル写真、テキスト・ファイル、構造化されたドキュメント、もしくはアプリケーションなど)、物的もしくは知的財産(たとえば、彫塑、絵画、映画、ゲーム、曲、アイディア、写真、もしくは執筆作品など)、ゲーム、アクティビティ、アイディアもしくは理論、別の適切なコンセプト、または複数のそのようなコンセプトに対応することができる。コンセプト・ノード704は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム660を含むさまざまなシステムによって収集された情報に関連付けられることが可能である。限定ではなく、例として、コンセプトの情報は、名前もしくはタイトル、1つもしくは複数のイメージ(たとえば、本の表紙のイメージ)、ロケーション(たとえば、住所もしくは地理的ロケーション)、(URLに関連付けられることが可能である)ウェブサイト、連絡先情報(たとえば、電話番号もしくはEメール・アドレス)、その他の適切なコンセプト情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態においては、コンセプト・ノード704は、コンセプト・ノード704に関連付けられている情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられることが可能である。特定の実施形態においては、コンセプト・ノード704は、1つまたは複数のウェブページに対応することができる。
特定の実施形態においては、ソーシャル・グラフ700内のノードは、ウェブページ(「プロフィール・ページ」と呼ばれる場合もある)を表すこと、またはウェブページによって表されることが可能である。プロフィール・ページは、ソーシャル・ネットワーキング・システム660によってホストされること、またはソーシャル・ネットワーキング・システム660にとってアクセス可能であることが可能である。プロフィール・ページは、サードパーティ・サーバ670に関連付けられているサードパーティ・ウェブサイト上にホストされることも可能である。限定ではなく、例として、特定の外部ウェブページに対応するプロフィール・ページは、その特定の外部ウェブページであることが可能であり、そのプロフィール・ページは、特定のコンセプト・ノード704に対応することができる。プロフィール・ページは、その他のユーザのうちのすべてまたは選択されたサブセットによって閲覧できることが可能である。限定ではなく、例として、ユーザ・ノード702は、対応するユーザプロフィール・ページを有することができ、そのユーザプロフィール・ページにおいては、対応するユーザが、コンテンツを付加すること、言明を行うこと、またはその他の形で自分自身を表現することが可能である。限定ではなく、別の例として、コンセプト・ノード704は、対応するコンセプトプロフィール・ページを有することができ、そのコンセプトプロフィール・ページにおいては、1人または複数のユーザが、特にコンセプト・ノード704に対応するコンセプトに関連して、コンテンツを付加すること、言明を行うこと、または自分自身を表現することが可能である。
特定の実施形態においては、コンセプト・ノード704は、サードパーティ・システム670によってホストされているサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、数ある要素の中でも、コンテンツ、選択可能なもしくはその他のアイコン、または、アクションもしくはアクティビティを表す(たとえば、JAVASCRIPT(登録商標)、AJAX、もしくはPHPコードで実装されることが可能である)その他の対話可能なオブジェクトを含むことができる。限定ではなく、例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「食べる」、「推奨する」、または別の適切なアクションもしくはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、それらのアイコンのうちの1つ(たとえば、「食べる」)を選択することによってアクションを実行して、クライアント・システム630に、そのユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム660へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム660は、ユーザに対応するユーザ・ノード702と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード704との間においてエッジ(たとえば、「食べる」エッジ)を作成して、エッジ706を1つまたは複数のデータ・ストア内に格納することができる。
特定の実施形態においては、ソーシャル・グラフ700内の1対のノードが、1つまたは複数のエッジ706によって互いにつながることが可能である。1対のノードをつなげるエッジ706は、それらの1対のノードの間における関係を表すことができる。特定の実施形態においては、エッジ706は、1対のノードの間における関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むことまたは表すことが可能である。限定ではなく、例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であるということを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム660は、「友達要求」を第2のユーザに送信することができる。第2のユーザがその「友達要求」を承認した場合には、ソーシャル・ネットワーキング・システム660は、ソーシャル・グラフ700内で第1のユーザのユーザ・ノード702を第2のユーザのユーザ・ノード702につなげるエッジ206を作成して、エッジ706をソーシャル・グラフ情報としてデータ・ストア664のうちの1つまたは複数の中に格納することができる。図7の例においては、ソーシャル・グラフ700は、ユーザ「A」のユーザ・ノード702と、ユーザ「B」のユーザ・ノード702との間における友達関係を示すエッジ706と、ユーザ「C」のユーザ・ノード702と、ユーザ「B」のユーザ・ノード702との間における友達関係を示すエッジとを含む。本開示は、特定のユーザ・ノード702同士をつなげる特定の属性を伴う特定のエッジ706を記述している、または示しているが、本開示は、ユーザ・ノード702同士をつなげる任意の適切な属性を伴う任意の適切なエッジ706を想定している。限定ではなく、例として、エッジ706は、友達関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワー関係、ビジター関係、サブスクライバ関係、上下関係、互恵的関係、非互恵的関係、別の適切なタイプの関係、または複数のそのような関係を表すことができる。その上、本開示は一般に、ノード同士をつながっているものとして記述しているが、本開示はまた、ユーザ同士またはコンセプト同士をつながっているものとして記述している。本明細書においては、つながっているユーザ同士またはコンセプト同士への言及は、適切な場合には、1つまたは複数のエッジ706によってソーシャル・グラフ700内でつながっているそれらのユーザ同士またはコンセプト同士に対応するノード同士を指すことができる。 特定の実施形態においては、ユーザ・ノード702とコンセプト・ノード704との間におけるエッジ706は、ユーザ・ノード702に関連付けられているユーザによって、コンセプト・ノード704に関連付けられているコンセプトに対して実行された特定のアクションまたはアクティビティを表すことができる。限定ではなく、例として、図7において示されているように、ユーザは、コンセプトに対して「いいね!を表明すること」、「通うこと」、「プレイすること」、「聴くこと」、「料理すること」、「勤務すること」、または「観ること」を行った可能性があり、それらのそれぞれは、エッジタイプまたはサブタイプに対応することができる。コンセプト・ノード704に対応するコンセプトプロフィール・ページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリック可能な「チェックイン」アイコンなど)、または選択可能な「いいね!」アイコンを含むことができる。別例として、クライアント・システムのソーシャライズされたダッシュは、選択可能な「チェックイン」アイコン(例えば、クリック可能な「チェックイン」アイコンなど)を含む。同様に、ユーザがこれらのアイコンをクリックした後に、ソーシャル・ネットワーキング・システム660は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく、別の例として、あるユーザ(例えば、ユーザ「C」)が、特定のアプリケーション(例えば、オンライン音楽アプリケーションであるSPOTIFY)を使用して特定の曲(例えば「ランブル・オン」)を聴く場合がある。このケースにおいては、ソーシャル・ネットワーキング・システム660は、そのユーザに対応するユーザ・ノード702と、その曲およびアプリケーションに対応するコンセプト・ノード704との間において、(図7に示されているような)「聴いた」エッジ706および「使用した」エッジを作成して、そのユーザがその曲を聴いてそのアプリケーションを使用したということを示すことができる。その上、ソーシャル・ネットワーキング・システム660は、その曲に対応するコンセプト・ノード204と、そのアプリケーションに対応するコンセプト・ノード704との間において、(図7に示されているような)「再生した」エッジ706を作成して、その特定の曲がその特定のアプリケーションによって再生されたということを示すことができる。このケースにおいては、「再生した」エッジ706は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(「イマジン」という曲)に関して実行されたアクションに対応する。本開示は、ユーザ・ノード702とコンセプト・ノード704とをつなげる特定の属性を伴う特定のエッジ706について記述しているが、本開示は、ユーザ・ノード702とコンセプト・ノード704とをつなげる任意の適切な属性を伴う任意の適切なエッジ706を想定している。その上、本開示は、単一の関係を表すユーザ・ノード702とコンセプト・ノード704との間におけるエッジについて記述しているが、本開示は、1つまたは複数の関係を表すユーザ・ノード702とコンセプト・ノード704との間におけるエッジを想定している。限定ではなく、例として、エッジ706は、ユーザが特定のコンセプトに対して「いいね!」を表明しているということ、およびその特定のコンセプトを使用したということの両方を表すことができる。あるいは、別のエッジ706は、(図7において、ユーザ「E」を表すユーザ・ノード702と、「SPOTIFY」を表すコンセプト・ノード704との間において示されているような)ユーザ・ノード702とコンセプト・ノード704との間におけるそれぞれのタイプの関係(または、単一の関係が複数集まったもの)を表すことができる。
特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、ソーシャル・グラフ700内でユーザ・ノード702とコンセプト・ノード704との間においてエッジ706を作成することができる。限定ではなく、例として、(たとえば、ユーザのクライアント・システム630によってホストされているウェブ・ブラウザまたは専用のアプリケーションを使用することなどによって)コンセプトプロフィール・ページを閲覧しているユーザは、「いいね!」アイコンをクリックまたは選択することにより、コンセプト・ノード704によって表されているコンセプトを自分が気に入っているということを示すことができ、その「いいね!」アイコンをクリックまたは選択することは、ユーザのクライアント・システム630に、そのコンセプトプロフィール・ページに関連付けられているそのコンセプトをそのユーザが気に入っているということを示すメッセージをソーシャル・ネットワーキング・システム660へ送信させることができる。そのメッセージに応答して、ソーシャル・ネットワーキング・システム660は、そのユーザとコンセプト・ノード704との間における「いいね!」エッジ706によって示されているように、そのユーザに関連付けられているユーザ・ノード702とコンセプト・ノード704との間においてエッジ706を作成することができる。特定の実施形態においては、ソーシャル・ネットワーキング・システム660は、エッジ706を1つまたは複数のデータ・ストア内に格納することができる。特定の実施形態においては、エッジ706は、特定のユーザ・アクションに応答してソーシャル・ネットワーキング・システム660によって自動的に形成されることが可能である。限定ではなく、例として、第1のユーザが、画像をアップロードすること、映画を観ること、または曲を聴くことを行った場合には、エッジ706は、第1のユーザに対応するユーザ・ノード702と、それらのコンセプトに対応するコンセプト・ノード704との間において形成されることが可能である。本開示は、特定の様式で特定のエッジ706を形成することについて記述しているが、本開示は、任意の適切な様式で任意の適切なエッジ706を形成することを想定している。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、互いについて様々なソーシャルグラフ・エンティティのソーシャル・グラフ・アフィニティ(本明細書では「アフィニティ(affinity)」と呼ばれる)を決定してよい。アフィニティは、ユーザ、コンセプト、コンテンツ、アクション、広告、オンライン・ソーシャル・ネットワークに関連付けられている他のオブジェクト、またはそれらの任意の適切な組み合わせなど、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間における関係の強さまたは関心のレベルを表すことができる。また、アフィニティは、サードパーティ・システム670または他の適切なシステムに関連付けられているオブジェクトに関して決定されてもよい。各ユーザ、主題、またはコンテンツのタイプについて、ソーシャルグラフ・エンティティに対する総合アフィニティが確立されてもよい。総合アフィニティは、ソーシャルグラフ・エンティティに関連付けられているアクションまたは関係の継続的なモニタリングに基づき、変化し得る。本開示では特定の方式による特定のアフィニティの決定について記載するが、本開示では任意の適切な方式による任意の適切なアフィニティの決定が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、アフィニティ係数(本明細書では「係数」と呼ばれる)を用いてソーシャル・グラフ・アフィニティを測定または定量してよい。この係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強さを表してよい、または定量してよい。また、この係数は、ユーザが特定のアクションを行う予測される確率を測定する確率または関数を表してもよく、この確率または関数は、そのアクションについてのそのユーザの関心に基づく。このようにして、ユーザの将来のアクションは、ユーザの以前のアクションに基づいて予測されることができ、その係数は少なくとも部分的にはユーザのアクションの履歴により計算され得る。係数は、オンライン・ソーシャル・ネットワークの内外の任意の数のアクションを予測するために用いられてよい。限定ではなく一例として、これらのアクションは、メッセージの送信、コンテンツのポスト、またはコンテンツに対するコメントなど、様々なタイプの通信、プロフィール・ページ、メディア、または他の適切なコンテンツのアクセスまたは閲覧など、様々なタイプの観察アクション、同じグループにある、同じ写真にタグ付けされる、同じロケーションにおいてチェックインされる、もしくは同じイベントに出席する、または他の適切なアクションなど、2つ以上のソーシャルグラフ・エンティティに関する様々なタイプの同時発生情報、または他の適切なアクションを含んでよい。本開示では特定の方式による特定のアフィニティの測定について記載するが、本開示では任意の適切な方式によるアフィニティの測定が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、係数を計算するために様々な因子を用いてよい。これらの因子は、例えば、ユーザ・アクション、オブジェクト間の関係のタイプ、ロケーション情報、他の適切な因子、またはそれらの任意の組み合わせを含んでよい。特定の実施形態では、係数を計算するとき、様々な因子に異なる重み付けを行ってもよい。各因子の重みは静的であってもよく、例えば、ユーザ、関係のタイプ、アクションのタイプ、ユーザのロケーションなどによって変化してもよい。因子のための格付け、そのユーザに対する総合的な係数を決定するべく、それらの重みにしたがって組み合わせられてもよい。限定ではなく一例として、特定のユーザ・アクションには格付けおよび重みの両方が割り当てられる一方、その特定のユーザ・アクションに関連付けられている関係には、格付けと相互に関連する重みとが割り当てられる(例えば、したがって重みが計100%になる)。特定のオブジェクトに対するユーザの係数を計算するために、そのユーザのアクションに割り当てられた格付けが、例えば、総合的な係数の60%を含む一方、そのユーザとそのオブジェクトとの間の関係は、総合的な係数の40%を含んでもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、係数を計算するために用いられる様々な因子の重みを決定するときに、例えば、情報がアクセスされてからの時間、減衰因子、アクセスの頻度、情報に対する関係またはそれに関する情報がアクセスされたオブジェクトに対する関係、オブジェクトに接続されたソーシャルグラフ・エンティティに対する関係、ユーザ・アクションの短期的または長期的な平均、ユーザ・フィードバック、他の適切な変数、またはそれらの任意の組み合わせなど、様々な変数を考慮してもよい。限定ではなく一例として、係数は、係数を計算するとき、より最近のアクションがより関連性を有するように、特定のアクションによって提供される信号の強さを時間とともに減衰させる減衰因子を含んでもよい。格付けおよび重みは、その係数が基づくアクションの継続的なトラッキングに基づいて、継続的に更新されてもよい。任意のタイプのプロセスまたはアルゴリズムが、各因子およびそれらの因子に割り当てられる重みの格付けの割当、結合、平均化などに用いられてよい。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、履歴のアクションおよび過去のユーザ応答、またはデータを様々なオプションに晒し応答を測定することによってユーザから集められたデータに基づきトレーニングされた機械学習アルゴリズムを用いて、係数を決定してもよい。本開示では特定の方式による特定の係数の計算について記載するが、本開示では任意の適切な方式による係数の計算が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、ユーザのアクションに基づき係数を計算してもよい。ソーシャル・ネットワーキング・システム660は、オンライン・ソーシャル・ネットワーク上、サードパーティ・システム670上、他の適切なシステム上、またはそれらの任意の組み合わせ上において、そのようなアクションを監視してよい。任意の適切なタイプのユーザ・アクションのトラッキングまたは監視が行われてよい。典型的なユーザ・アクションには、プロフィール・ページを閲覧すること、コンテンツを作成またはポストすること、コンテンツと対話すること、グループに参加すること、イベントへの参加をリストまたは確認すること、ロケーションにチェックインすること、特定のページに「いいね」と表明すること、ページを作成すること、およびソーシャル・アクションを行う他のタスクを実行することが含まれる。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、特定のタイプのコンテンツを有するユーザのアクションに基づき、係数を計算してよい。コンテンツは、オンライン・ソーシャル・ネットワーク、サードパーティ・システム670、または別の適切なシステムに関連付けられてよい。コンテンツは、ユーザ、プロフィール・ページ、ポスト、ニュース・ストーリ、ヘッドライン、インスタント・メッセージ、チャット・ルーム会話、電子メール、広告、写真、動画、音楽、他の適切なオブジェクト、またはそれらの任意の組み合わせを含んでよい。ソーシャル・ネットワーキング・システム660は、ユーザのアクションを、そのアクションのうちの1つ以上が主題、コンテンツ、他のユーザなどに対するアフィニティを示すか否かを判定するために分析してよい。限定ではなく一例として、ユーザが、「コーヒー」またはその変形に関係するコンテンツを頻繁にポストする場合、ソーシャル・ネットワーキング・システム660は、ユーザがコンセプト「コーヒー」に関して高い係数を有すると決定してもよい。特定のアクションまたはアクションのタイプは、他のアクションよりも大きな重み、より高い格付け、またはその両方を割り当てられ、これが総合的な計算された係数に影響を与えてもよい。限定ではなく一例として、第1のユーザが第2のユーザに電子メールを送る場合、そのアクションに対する重みまたは格付けは、第1のユーザが単に第2のユーザのユーザ・プロファイル・ページを閲覧する場合よりも高くてもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、特定のオブジェクトの間の関係のタイプに基づき係数を計算してもよい。ソーシャル・グラフ700を参照すると、ソーシャル・ネットワーキング・システム660は、係数を計算するとき、特定のユーザ・ノード702およびコンセプト・ノード704を接続するエッジ706の数および/またはタイプを分析してもよい。限定ではなく一例として、配偶者タイプのエッジ(2人のユーザが結婚していることを表す)によって接続されているユーザ・ノード702は、友達タイプのエッジによって接続されているユーザ・ノード702より高い係数を割り当てられてもよい。換言すれば、特定のユーザのアクション及び関係に割り当てられた重みに応じて、総合アフィニティは、ユーザの友達に関するコンテンツに対するよりもユーザの配偶者に関するコンテンツに対してより高くなるように決定されてもよい。特定の実施形態では、ユーザが別のオブジェクトと有する関係は、そのオブジェクトについての係数の計算に関して重みおよび/またはユーザのアクションの格付けに影響を与えてもよい。限定ではなく一例として、ユーザが第1の写真にタグ付けされているが、第2の写真にいいねと表明しかしない場合、コンテンツに対してタグ付けタイプの関係を有することにはコンテンツに対していいねタイプの関係を有するよりも高い重みおよび/または格付けが割り当てられることから、ソーシャル・ネットワーキング・システム160は、ユーザが第2の写真より第1の写真に関して高い係数を有すると決定してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、1以上の第2のユーザが特定のオブジェクトに対して有する関係に基づき、第1のユーザのための係数を計算してもよい。換言すれば、他のユーザがオブジェクトに対して有する接続および係数は、そのオブジェクトに対する第1のユーザの係数に影響を与えてもよい。限定ではなく一例として、第1のユーザが1以上の第2のユーザに接続されるか、1以上の第2のユーザに対する高い係数を有し、それらの第2のユーザが特定のオブジェクトに接続されるか、特定のオブジェクトに対する高い係数を有する場合、ソーシャル・ネットワーキング・システム660は、その特定のオブジェクトに対して第1のユーザが比較的高い係数を有するべきであると決定してもよい。特定の実施形態では、係数は特定のオブジェクト間の隔たりの程度に基づいてもよい。係数が低いほど、ソーシャル・グラフ700において第1のユーザに間接的に接続されているユーザのコンテンツ・オブジェクトへの関心を第1のユーザが共有する見込みが減少することを表してもよい。限定ではなく一例として、ソーシャル・グラフ700においてより近くにある(すなわち、より隔たりの程度が小さい)ソーシャルグラフ・エンティティ同士は、ソーシャル・グラフ700においてより遠くにあるエンティティ同士よりも高い係数を有してもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、ロケーション情報に基づき係数を計算してもよい。互いに地理的に近くにあるオブジェクト同士は、より離れたオブジェクト同士よりも、より関連している、または互いにより高い関心を有すると考えられてよい。特定の実施形態では、特定のオブジェクトに対するユーザの係数は、そのユーザに関連付けられている現在のロケーション(またはそのユーザのクライアント・システム630のロケーション)に対するそのオブジェクトのロケーションの近接度に基づいてもよい。第1のユーザは、第1のユーザのより近くにある他のユーザまたはコンセプトに、より高い関心を有し得る。限定ではなく一例として、ユーザが空港から1マイル(約1.6km)に位置し、ガソリン・スタンドから2マイル(約3.2km)に位置する場合、ソーシャル・ネットワーキング・システム660は、そのユーザに対する空港の近接度に基づき、ユーザがガソリン・スタンドよりも空港に対しより高い係数を有すると決定してもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、係数情報に基づきユーザに関する特定のアクションを行ってもよい。係数を用いて、ユーザが特定のアクションを行うか否かを、そのアクションについてのそのユーザの関心に基づき予測することができる。係数は、広告、検索結果、ニュース・ストーリ、メディア、メッセージ、通知、または他の適切なオブジェクトなど、ユーザに対する任意のタイプのオブジェクトを生成または提示するときに用いられてよい。また、適切な場合、係数は、そのようなオブジェクトのランクおよび順序を決定するためにも利用されて得る。このように、ソーシャル・ネットワーキング・システム660は、ユーザの関心および現在の状況に関連する情報を提供してもよく、それによって、それらがそのような関心を有する情報を見出す見込みを高める。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、係数情報に基づきコンテンツを生成してもよい。コンテンツ・オブジェクトは、ユーザに特有の係数に基づき提供または選択されてもよい。限定ではなく一例として、係数はユーザに対するメディアを生成するために用いられてもよく、ユーザには、そのメディア・オブジェクトに関してそのユーザが高い総合係数を有するメディアが、提示される。限定ではなく別の一例として、限定ではなく一例として、係数はユーザに対する広告を生成するために用いられてもよく、ユーザには、その広告オブジェクトに関してそのユーザが高い総合係数を有する広告が、提示される。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、係数情報に基づき検索結果を生成してもよい。特定のユーザのための検索結果は、問い合わせを行うユーザに関して検索結果に関連付けられている係数に基づき、得点またはランクを決定されてよい。限定ではなく一例として、より高い係数を有するオブジェクトに対応する検索結果は、より低い係数を有するオブジェクトに対応する結果よりも、検索結果のページにおいて、より高いランクを決定されてもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム660は、特定のシステムまたはプロセスからの係数の要求に応じて、係数を計算してもよい。ユーザが所与の状況において取り得る(あるいは対象となる)可能性の高いアクションを予測するために、任意のプロセスによって、ユーザの計算された係数が要求されてよい。また、この要求は、係数を計算するために用いられる様々な因子に用いる1組の重みを含んでもよい。この要求は、オンライン・ソーシャル・ネットワーク上で動作するプロセスから、サードパーティ・システム670から(例えば、APIまたは他の通信チャンネルを介して)、または別の適切なシステムから届いてよい。要求に応じて、ソーシャル・ネットワーキング・システム660は、係数を計算してよい(または、係数が以前に計算され記憶されている場合、その係数情報にアクセスしてよい)。特定の実施形態では、ソーシャル・ネットワーキング・システム660は、特定のプロセスに関するアフィニティを測定してもよい。様々なプロセス(オンライン・ソーシャル・ネットワークに対して内外の両方)は、特定の1つのオブジェクトまたは複数のオブジェクトからなる組に対する係数を要求してもよい。ソーシャル・ネットワーキング・システム660は、アフィニティの尺度を要求した特定のプロセスに関連するアフィニティの尺度を提供してもよい。このように、各プロセスは、プロセスがアフィニティの尺度を用いる様々なコンテキストに適合するアフィニティの尺度を受信する。
ソーシャル・グラフ・アフィニティおよびアフィニティ係数に関して、特定の実施形態では、米国特許出願第11/503093号(2006年8月11日提出)、米国特許出願第12/977027号(2010年12月22日提出)、米国特許出願第12/978265号(2010年12月23日受信)、および米国特許出願第13/632869号、において開示されている1以上のシステム、構成要素、要素、機能、方法、動作、または工程を利用してよい。それらの文献の各々を引用によって本明細書に援用する。
図8は、例示的なコンピュータ・システム800を示す。特定の実施形態では、1または複数のコンピュータ・システム800は、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施する。特定の実施形態では、1または複数のコンピュータ・システム800は、本明細書に記載され、または示されている機能を提供する。特定の実施形態では、1または複数のコンピュータ・システム800上で動作するソフトウェアは、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施し、または本明細書に記載され、または示されている機能を提供する。特定の実施形態は、1または複数のコンピュータ・システム800の1または複数の部分を含む。本明細書では、コンピュータ・システムに言及することは、適切な場合、コンピューティング・デバイスを包含してもよく、逆も同様である。さらに、コンピュータ・システムに言及することは、適切な場合、1または複数のコンピュータ・システムを包含してもよい。
この開示は、任意の好適な数のコンピュータ・システム800を企図する。この開示は、任意の好適な物理形態をとるコンピュータ・システム800を企図する。限定するものとしてではなく一例として、コンピュータ・システム800は、組込みコンピュータ・システム、システム・オン・チップ(SOC)、シングルボード・コンピュータ・システム(SBC)(たとえば、コンピュータ・オン・モジュール(COM)またはシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話キオスク、メインフレーム、コンピュータ・システムのメッシュ、移動体電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2以上の組合せであってよい。適切な場合、コンピュータ・システム800は、1または複数のコンピュータ・システム800を含んでもよく、一元的なものであっても分散型であってもよく、複数のロケーションに跨ってもよく、複数のマシンに跨ってもよく、複数のデータ・センターに跨ってもよく、クラウド内にあってもよく、クラウドは、1または複数のネットワーク内で1または複数のクラウド・コンポーネントを含んでもよい。適切な場合、1または複数のコンピュータ・システム800は、実質的な空間的または時間的制限なしに、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。限定するものとしてではなく一例として、1つまたは複数のコンピュータ・システム800は、リアルタイムで、またはバッチ・モードで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。1または複数のコンピュータ・システム800は、適切な場合、異なる時に、または異なるロケーションで、本明細書に記載され、または示されている1または複数の方法の1または複数のステップを実施してもよい。
特定の実施形態では、コンピュータ・システム800は、プロセッサ802、メモリ804、ストレージ806、入力/出力(I/O)インターフェース808、通信インターフェース810、およびバス812を含む。この開示は、特定の数の特定の構成要素を特定の構成で有する特定のコンピュータ・システムについて記載し示しているが、この開示は、任意の好適な数の任意の好適な構成要素を任意の好適な構成で有する任意の好適なコンピュータ・システムを企図する。
特定の実施形態では、プロセッサ802は、コンピュータ・プログラムを構成するものなど命令を実行するためのハードウェアを含む。限定するものとしてではなく一例として、命令を実行するために、プロセッサ802は、内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806から命令を取り出し(またはフェッチし)、それらを復号および実行し、次いで、1または複数の結果を内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806に書き込む。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレス用に1または複数の内部キャッシュを含んでもよい。この開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ802を企図する。限定するものとしてではなく一例として、プロセッサ802は、1または複数の命令キャッシュ、1または複数のデータ・キャッシュ、および1または複数の変換索引バッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ804またはストレージ806内の命令のコピーであってもよく、命令キャッシュは、プロセッサ802によるこれらの命令の取り出しを高速化する。データ・キャッシュ内のデータは、プロセッサ802にて実行される命令が操作するための、メモリ804またはストレージ806内のデータのコピー、プロセッサ802で実行される後続の命令によるアクセスための、またはメモリ804もしくはストレージ806に書き込むための、プロセッサ802で実行された以前の命令の結果、あるいは他の好適なデータであってもよい。データ・キャッシュは、プロセッサ802による読出しまたは書込み動作を高速化する。TLBは、プロセッサ802のために仮想アドレス変換を高速化する。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレス用に1または複数の内部レジスタを含む。この開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ802を企図する。適切な場合、プロセッサ802は、1または複数の算術論理演算ユニット(ALU)を含むことができ、マルチコア・プロセッサであってもよく、1または複数のプロセッサ802を含んでもよい。この開示は、特定のプロセッサについて記載し示しているが、この開示は、任意の好適なプロセッサを企図する。
特定の実施形態では、メモリ804は、プロセッサ802が実行するための命令、またはプロセッサ802が操作するためのデータを記憶するための主記憶装置を含む。限定するものとしてではなく一例として、コンピュータ・システム800は、ストレージ806または別のソース(たとえば、別のコンピュータ・システム800など)からメモリ804に命令をロードする。次いで、プロセッサ802は、メモリ804から内部レジスタまたは内部キャッシュに命令をロードする。命令を実行するために、プロセッサ802は、内部レジスタまたは内部キャッシュから命令を取り出し、それらを復号する。命令の実行中、または実行後、プロセッサ802は、1または複数の結果(中間結果であることも最終結果であることもある)を内部レジスタまたは内部キャッシュに書き込む。次いで、プロセッサ802は、それらの結果の1または複数をメモリ804に書き込む。特定の実施形態では、プロセッサ802は、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ804内の命令だけを実行し、1もしくは複数の内部レジスタもしくは内部キャッシュ内、または(ストレージ806もしくは他の場所ではなく)メモリ804内のデータだけを操作する。1または複数のメモリ・バス(それぞれがアドレス・バスとデータ・バスを含むことがある)がプロセッサ802をメモリ804に結合してもよい。バス812は、下記に記載されているように、1または複数のメモリ・バスを含んでもよい。特定の実施形態では、1または複数のメモリ管理ユニット(MMU)が、プロセッサ802とメモリ804との間に存在し、プロセッサ802によって要求されるメモリ804へのアクセスを容易にする。特定の実施形態では、メモリ804は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。さらに、適切な場合、このRAMは、シングルポート型またはマルチポート型RAMであってよい。この開示は、任意の好適なRAMを企図する。メモリ804は、適切な場合、1または複数のメモリ804を含んでもよい。この開示は、特定のメモリについて記載し示しているが、この開示は、任意の好適なメモリを企図する。
特定の実施形態では、ストレージ806は、データまたは命令用のマス・ストレージを含む。限定するものとしてではなく一例として、ストレージ806は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらの2以上の組合せを含んでもよい。ストレージ806は、適切な場合、取外し式または非取外し式(または固定)媒体を含んでもよい。ストレージ806は、適切な場合、コンピュータ・システム800に対して内部であっても外部であってもよい。特定の実施形態では、ストレージ806は、不揮発性のソリッドステート・メモリである。特定の実施形態では、ストレージ806は、読出し専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムドROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、もしくはフラッシュ・メモリ、またはこれらの2以上の組合せであってよい。この開示は、任意の好適な物理形態をとるマス・ストレージ806を企図する。ストレージ806は、適切な場合、プロセッサ802とストレージ806の間の通信を容易にする1または複数のストレージ制御ユニットを含んでもよい。適切な場合、ストレージ806は、1または複数のストレージ806を含んでもよい。この開示は、特定のストレージについて記載し示しているが、この開示は、任意の好適なストレージを企図する。
特定の実施形態では、I/Oインターフェース808は、コンピュータ・システム800と1または複数のI/Oデバイスとの間の通信のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム800は、適切な場合、これらのI/Oデバイスの1または複数を含んでもよい。これらのI/Oデバイスの1または複数は、人とコンピュータ・システム800の間の通信を可能にする。限定するものとしてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の好適なI/Oデバイス、またはこれらの2以上の組合せを含んでもよい。I/Oデバイスは、1または複数のセンサを含んでもよい。この開示は、任意の好適なI/Oデバイス、およびそれらのための任意の好適なI/Oインターフェース808を企図する。適切な場合、I/Oインターフェース808は、プロセッサ802がこれらのI/Oデバイスの1または複数を駆動することを可能にする1または複数のデバイスまたはソフトウェア・ドライバを含む。I/Oインターフェース808は、適切な場合、1または複数のI/Oインターフェース808を含んでもよい。この開示は、特定のI/Oインターフェースについて記載し示しているが、この開示は、任意の好適なI/Oインターフェースを企図する。
特定の実施形態では、通信インターフェース810は、コンピュータ・システム800と1もしくは複数の他のコンピュータ・システム800または1もしくは複数のネットワークとの間の通信(たとえば、パケットベースの通信など)のために1または複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、通信インターフェース810は、ETHERNET(登録商標)もしくは他の有線ベースのネットワークとの通信のためのインターフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなど無線ネットワークとの通信のための無線NIC(WNIC)もしくは無線アダプタを含んでもよい。この開示は、任意の好適なネットワーク、およびそのための任意の好適な通信インターフェース810を企図する。限定するものとしてではなく一例として、コンピュータ・システム800は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、またはインターネットの1もしくは複数の部分、あるいはこれらの2以上の組合せと通信する。これらのネットワークの1または複数のうちの1または複数の部分は、有線であっても無線であってもよい。一例として、コンピュータ・システム800は、無線PAN(WPAN)(たとえば、BLUETOOTH(登録商標)WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(たとえば、グローバル移動体通信システム(GSM(登録商標))ネットワークなど)、もしくは他の好適な無線ネットワーク、またはこれらの2以上の組合せと通信する。コンピュータ・システム800は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース810を含んでもよい。通信インターフェース810は、適切な場合、1または複数の通信インターフェース810を含んでもよい。この開示は、特定の通信インターフェースについて記載し示しているが、この開示は、任意の好適な通信インターフェースを企図する。
特定の実施形態では、バス812は、コンピュータ・システム800の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定するものとしてではなく一例として、バス812は、アクセラレィティッド・グラフィックス・ポート(AGP)もしくは他のグラフィックス・バス、EISA(Enhanced Industry Standard Architecture)バス、フロントサイド・バス(FSB)、HT(HYPERTRANSPORT)相互接続、ISA(Industry Standard Architecture)バス、インフィニバンド相互接続、LPC(low−pin−count)バス、メモリ・バス、MCA(Micro Channel Architecture)バス、PCI(Peripheral Component Interconnect)バス、PCIエクスプレス(PCIe)バス、SATA(serial advanced technology attachment)バス、VLB(Video Electronics Standards Association local)バス、もしくは別の好適なバス、またはこれらの2以上の組合せを含んでもよい。バス812は、適切な場合、1または複数のバス812を含んでもよい。この開示は、特定のバスについて記載し示しているが、この開示は、任意の好適なバスまたは相互接続を企図する。
本明細書では、1または複数の非一時的コンピュータ可読記憶媒体は、適切な場合、1または複数の半導体ベースの、もしくは他の集積回路(IC)(たとえば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC))、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはセキュア・デジタル・ドライブ、任意の他の好適な非一時的コンピュータ可読記憶媒体、またはこれらの2以上の組合せを含んでもよい。非一時的コンピュータ可読記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せであってよい。
本明細書では、「または(もしくは)」は、別段明確に示されていない限り、または別段文脈によって示されない限り、包括的(inclusive)であり、排他的なものではない。したがって、本明細書では、「AまたはB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「A、B、またはその両方」を意味する。さらに、「および」は、別段明確に示されていない限り、または別段文脈によって示されない限り、共同であり、個別的でもある。したがって、本明細書では、「AおよびB」は、別段明確に示されていない限り、または別段文脈によって示されない限り、「AおよびBを共同で、または個別的に」意味する。
この開示の範囲は、当業者であれば理解するであろう、本明細書に記載され、または示されている例示的な実施形態に対する変更、置換、変形、代替、および修正すべてを包含する。この開示の範囲は、本明細書に記載され、または示されている例示的な実施形態に限定されない。さらに、この開示は、それぞれの実施形態について、本明細書では、特定の構成要素、要素、機能、動作、またはステップを含むものとして記載し示しているが、これらの実施形態のいずれも、当業者であれば理解するであろう、本明細書のどこかに記載され、または示されている構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは並べ替えを含んでもよい。さらに、添付の特許請求の範囲において、特定の機能を実施するように適合された、するように配置された、することが可能な、するように構成された、することが可能である、するように動作可能である、またはするように動作する装置もしくはシステム、または装置もしくはシステムの構成要素に言及することは、その装置、システム、または構成要素がそのように適合され、配置され、動作可能であり、構成され、可能であり、動作可能であり、動作する限り、それ、またはその特定の機能が作動される、オンにされる、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。