図1は、ソーシャルネットワーキング・システムに関連付けられた例示的なネットワーク環境100を示す。ネットワーク環境100は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170を含み、ネットワーク110によって互いに接続される。図1は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の特定の配置を示すが、本開示は、ユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110の任意の適切な配置を企図している。限定ではなく一例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの2つ以上は、互いに直接、ネットワーク110をバイパスして接続され得る。別の例として、クライアント・システム130、ソーシャルネットワーキング・システム160、およびサードパーティ・システム170のうちの2つ以上は、物理的または論理的に、全体的または部分的に互いに同じ場所に配置され得る。また、図1は、特定の数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を示すが、本開示は、任意の適切な数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を企図している。限定ではなく一例として、ネットワーク環境100は、複数のユーザ101、クライアント・システム130、ソーシャルネットワーキング・システム160、サードパーティ・システム170、およびネットワーク110を含むことができる。
特定の実施形態において、ユーザ101は、ソーシャルネットワーキング・システム160と対話する、またはソーシャルネットワーキング・システム160を介して通信する、個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、もしくはサードパーティのアプリケーション)、またはグループ(例えば、個人もしくはエンティティの)であり得る。特定の実施形態において、ソーシャルネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストする、ネットワークにアドレス可能なコンピューティング・システムであり得る。ソーシャルネットワーキング・システム160は、例えば、オンライン・ソーシャル・ネットワークに関係するユーザプロファイル・データ、コンセプトプロファイル・データ、ソーシャル・グラフ情報、または他の適切なデータなど、ソーシャルネットワーキング・データを生成、格納、受信、および送信することができる。ソーシャルネットワーキング・システム160は、直接またはネットワーク110を介してネットワーク環境100の他の構成要素によってアクセスされ得る。特定の実施形態において、ソーシャルネットワーキング・システム160は、認証サーバ(または他の適切な構成要素)を含むことができ、認証サーバ(または他の適切な構成要素)によって、ユーザは、例えば適正なプライバシ設定を設定することによって、ユーザのアクションをソーシャルネットワーキング・システム160にログ記録させる、または他のシステム(例えば、サードパーティ・システム170)と共有させることに対して、オプト・インまたはオプト・アウトすることが可能になる。ユーザのプライバシ設定は、ユーザに関連付けられたどのような情報がログ記録されてよいか、ユーザに関連付けられた情報がどのようにログ記録されてよいか、ユーザに関連付けられた情報がいつログ記録されてよいか、ユーザに関連付けられた情報を誰がログ記録してよいか、ユーザに関連付けられた情報を誰と共有してよいか、およびユーザに関連付けられた情報をどのような目的でログ記録または共有してよいかについて決定することができる。認証サーバは、必要に応じて、ブロッキング、データ・ハッシング、匿名化、または他の適切な技法により、ソーシャルネットワーキング・システム160のユーザの1つまたは複数のプライバシ設定を実施するために使用され得る。
サードパーティ・システム170は、直接またはネットワーク110を介してネットワーク環境100の他の構成要素によってアクセスされ得る。特定の実施形態において、1つまたは複数のユーザ101は、1つまたは複数のクライアント・システム130を使用して、ソーシャルネットワーキング・システム160またはサードパーティ・システム170にアクセスし、データを送信し、ソーシャルネットワーキング・システム160またはサードパーティ・システム170からデータを受信することができる。クライアント・システム130は、直接、またはネットワーク110もしくはサードパーティ・システムを介して、ソーシャルネットワーキング・システム160またはサードパーティ・システム170にアクセスすることができる。限定ではなく一例として、クライアント・システム130は、ソーシャルネットワーキング・システム160を介してサードパーティ・システム170にアクセスすることができる。特定の実施形態において、ユーザ101は、後述のように、ソーシャルネットワーキング・システム160に格納されたソーシャル・グラフ情報に少なくとも部分的に基づいて認証され得る。限定ではなく一例として、ソーシャルネットワーキング・システム160は、ユーザ101に関連付けられたコンテンツ・オブジェクトに少なくとも部分的に基づいてユーザ101を認証することによって、ソーシャルネットワーキング・システム160またはサードパーティ・システム170の認証されていない使用を防止することができる。特定の実施形態において、ソーシャルネットワーキング・システム160は、コンテンツ・オブジェクトの選択に対応するクライアント・システム130からデータを受信し、選択が、ユーザ101に関連付けられたコンテンツ・オブジェクトに対応するかどうか決定する。ソーシャルネットワーキング・システム160は、クライアント・システム130にデータを送信し、選択が、ユーザ101に関連付けられたコンテンツ・オブジェクトに対応するかどうかに少なくとも部分的に基づいてユーザ101を認証することができる。クライアント・システム130は、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、セルラ電話、スマートフォン、またはタブレット・コンピュータなど、任意の適切なコンピューティング・デバイスであってよい。
ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザ101によるいかなる手操作の入力もなしに自動的に、クライアント・システム130の現在のロケーションを決定することができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、例えば、WI−FI(登録商標)または第3世代移動通信(3G)など、ワイヤレス通信プロトコルを使用して、ネットワーク110を介してアクティブ化信号を送信することによってロケーション・データにクライアント・システム130上で実行されるアプリケーションをポーリングまたは「ピン(ping)」することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160は、バックグランドまたは「スリープ」モードで動作するクライアント・システム130のアプリケーションを定期的にポーリングすることができる。特定の実施形態において、アプリケーションは、ソーシャルネットワーキング・システム160からのアクティブ化信号に応じるイベントドリブン・アプリケーションであってよい。ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130の移動距離に少なくとも部分的に基づいて、クライアント・システム130上で実行されるアプリケーションによって行われるロケーション決定の所定のサンプリング期間およびポーリング頻度を状況に応じて調整することができる。限定ではなく一例として、所定のサンプリング期間およびポーリング頻度は、クライアント・システム130が移動中であるか静止しているかに少なくとも部分的に基づいて、状況に応じて調整され得る。クライアント・システム130が移動中であり、移動距離が比較的大きいときは、ソーシャルネットワーキング・システム160は、より高い頻度であるがより低い精度で、アプリケーションにロケーション・データを要求することができる。別の例として、クライアント・システム130が実質的に静止しており、移動距離が比較的小さいときは、ソーシャルネットワーキング・システム160は、より低い頻度であるがより高い精度で、クライアント・システム130にロケーション・データを要求することができる。
アプリケーションによって測定されるロケーション・データの精度は、少なくとも部分的に、クライアント・システム130のロケーション・サービスがソーシャルネットワーキング・システム160またはサードパーティ・システム170によってアクティブ化される所定のサンプリング期間によって決定され得る。ソーシャルネットワーキング・システム160またはサードパーティ・システムは、クライアント・システム130の現在のロケーションを過去の記録からのロケーションと比較することに少なくとも部分的に基づいて、クライアント・システム130の移動距離を計算することができる。クライアント・システム130の移動距離は、次式によって概算され得る。
距離移動=(位置t−位置t−1) (1)
位置tは、最も新しいロケーション記録におけるクライアント・システム130の位置であり、位置t−1は、2番目に新しいロケーション記録におけるクライアント・システム130の位置である。限定ではなく一例として、クライアント・システム130の移動距離が実質的に所定のしきい値距離以下であるときは、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130が静止していることを決定することができる。特定の実施形態において、所定の距離は、クライアント・システム130の全地球測位システム(GPS)機能の測定精度であってよい。本開示は、ポーリング頻度およびサンプリング期間を、移動距離に基づいて特定の数の不連続な設定に調整することを記載しているが、本開示は、ポーリング頻度およびサンプリング期間を、移動距離に基づいて任意の適切な数の不連続な設定または連続な設定に調整することを企図している。
特定の実施形態において、ロケーション記録のフィルタリングは、クライアント・システム130のロケーションの個々の決定において存在するノイズまたは不確実さの量を低減し、ソーシャルネットワーキング・システム160に格納されるクライアント・システム130に関連付けられたロケーション・データの量を減らすことができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170によって受信されるロケーション・データは、地理座標に関連付けられた情報、およびロケーション・データが測定された時刻を含むことができる。上述のように、受信した地理座標は、クライアント・システム130が静止しているときでさえ、ある量の不正確さを有し得る。特定の実施形態において、ロケーション記録のフィルタリングによって、ロケーション記録を代表的なジオロケーション(geo-location)・データ・ポイントへと減少させ、このジオロケーション・データ・ポイントをソーシャルネットワーキング・システム160またはサードパーティ・システム170に格納することができる。特定の実施形態において、例えば位置tなど現在のロケーション記録と、例えば位置t−1などにおける初期のジオロケーション・データ・ポイントとの間の距離を計算することができ、計算された距離は所定のしきい値距離と比較される。上述のように、所定のしきい値距離は、クライアント・システム130の全地球測位システム(GPS)機能の測定精度であってよい。特定の実施形態において、初期のジオロケーション・データ・ポイントの地理座標は、計算された距離が所定のしきい値距離未満であることに応じて、初期の地理座標および現在のロケーション記録に少なくとも部分的に基づいて再計算され更新され得る。特定の実施形態において、初期の地理座標に関連付けられた時間の長さは、現在のロケーション記録に関連付けられた時刻によって更新され得る。特定の実施形態において、新たなジオロケーション・データ・ポイントは、計算された距離が所定のしきい値距離を超えることに応じて作成され得る。後続のロケーション記録は、新たなジオロケーション・データ・ポイントに関連付けられた地理座標を更新するために使用され得る。特定の実施形態において、クライアント・システム130の移動の方向および速度は、時間の長さゼロによるロケーション記録に少なくとも部分的に基づいて決定され得る。限定ではなく一例として、移動中のクライアント・システム130に関連付けられた時間の長さはゼロであってよい。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、フィルタリングを使用して、複数のジオロケーション・データ・ポイントを分類することができる。一例として、クライアント・システム130が、ある期間静止していた、または特定の方向に特定の速度で移動中であることを、ソーシャルネットワーキング・システム160は決定することができる。
特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130からの複数のロケーション記録をグループ化して、複数のジオロケーション・データ・ポイントを表す地理的クラスタを決定することができる。限定ではなく一例として、複数のジオロケーション・データ・ポイントは、後述のように、空間クラスタリング・アルゴリズムを使用してグループ化され得る。特定の実施形態において、空間クラスタリング・アルゴリズムは、複数のジオロケーション・データ・ポイントを、1つまたは複数の地理的クラスタとして表すことができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、後述のように、空間クラスタリング・アルゴリズムを使用して決定された地理的中心に少なくとも部分的に基づいて、ユーザ101の時間ベースのルーチンを推論することができる。後述のように、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ジオロケーション・クラスタを、1つまたは複数のルーチン・クラスタにグループ化することができる。後述のように、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ルーチン・クラスタのルーチンの中心に基づいてユーザ101のパターンを決定することができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ルーチンの中心の1つまたは複数に対応する場所を決定することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ディレクトリ情報のデータベースにアクセスし、ルーチンの中心の1つまたは複数を特定の住所に関連付けることができる。
上述のように、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130上で実行されるアプリケーションによって行われるロケーション決定のポーリング頻度を状況に応じて調整することができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ルーチンの中心の1つまたは複数に対応する場所、およびルーチンの中心に関連付けられた時刻に少なくとも部分的に基づいてロケーション記録のポーリング頻度を調整することができる。限定ではなく一例として、ユーザ101の現在のジオロケーションがホーム・ロケーションであり、その時間中は通常、ユーザ101がホーム・ロケーションにいると推論されるときは、ポーリング頻度は減少され得る。別の例として、ユーザ101の現在のジオロケーションが職場であり、その時間中は通常、ユーザ101が職場で働いていると推論されるときは、ポーリング頻度は減少され得る。上述のように、ポーリング頻度を減少させることによって、ソーシャルネットワーキング・システム160またはサードパーティ・システム170によって送信されたアクティブ化信号数が減少し、それによってロケーション記録の数が減少する。
特定の実施形態において、ソーシャルネットワーキング・システム160は、クライアント・システム130の複数のロケーション記録から推論される時間ベースのルーチンからユーザ101が逸脱すると、そのことを検出することができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130の現在のロケーション記録と、ユーザ101のルーチンの中心との間の距離を計算することに少なくとも部分的に基づいて、時間ベースのルーチンからの逸脱を決定することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、クライアント・システム130の現在のロケーションまでの最小距離を有するジオロケーションのパターンから特定のルーチンの中心を決定することができる。特定の実施形態において、特定のルーチンの中心は、クライアント・システム130のロケーション・データの時間情報のうち曜日および時刻に対応する。上述のように、ソーシャルネットワーク・システム160またはサードパーティ・システム170は、ルーチンの中心の1つまたは複数、およびルーチンの中心に関連付けられた時刻に対応する場所に少なくとも部分的に基づいて、ロケーション記録のポーリング頻度を調整することができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザ101の推論されたルーチンからの逸脱を検出することに応じて、ポーリング頻度を増加させることができる。限定ではなく一例として、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザ101の推論された勤務時間中にユーザ101の現在のジオロケーションがユーザ101の推論されたワーク・ロケーションから逸脱することを検出することに応じて、ポーリング頻度を増加させることができる。特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ルーチンの中心の1つまたは複数、およびルーチンの中心に関連付けられた時刻に対応する推論された場所に少なくとも部分的に基づいて、緊急事態が発生していることを決定することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザ101または他のユーザが、推論された時間ベースのルーチンから実質的に同時に逸脱していることを決定することに応じて、緊急事態が発生していることを推論することができる。例えば、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザ101および他のユーザの現在のジオロケーションが、実質的に同時に職場から逸脱していることを決定することに応じて、緊急事態が発生していることを決定することができる。別の例として、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ユーザの現在のジオロケーションが、ルーチンの中心から、場所に対応しない通常とは異なるジオロケーション、例えば隔離されたロケーションへと、長期間逸脱していることを決定することに応じて、緊急事態が発生していることを決定することができる。
ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、上述のように、ユーザ101の時間ベースのルーチンにアクセスし、クライアント・システム130の現在のロケーションからの最小距離を有するユーザ101のルーチンの中心を決定することができる。特定の実施形態において、時間ベースのルーチンからのユーザ101の逸脱の測定は、クライアント・システム130の現在のロケーションと、ユーザ101の最も近いルーチンの中心との間の距離に少なくとも部分的に基づいて決定され得る。限定ではなく一例として、ソーシャルネットワーキング・システム160は、クライアント・システム130の現在のロケーションと、最も近いルーチンの中心との間の距離が、勤務時間中の所定の距離よりも大きいことを決定し、ユーザ101が休暇中であることを推論することができる。
特定の実施形態において、ソーシャルネットワーキング・システム160またはサードパーティ・システム170は、ソーシャル・グラフ情報、およびユーザ101による時間ベースのルーチンの逸脱の決定に少なくとも部分的に基づいて、ユーザ101と関係を有する別のユーザに通知を送信することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160は、ユーザ101が勤務時間中にサン・フランシスコにいるとき、勤務時間中の最も可能性の高いロケーションがメンロー・パークであるユーザ101が時間ベースのルーチンから逸脱していることを決定することができる。また、ソーシャルネットワーキング・システム160は、ユーザ101に関連付けられたソーシャル・グラフ情報に少なくとも部分的に基づいて、ユーザ101と関係を有する他のユーザの現在のロケーションを決定することができる。特定の実施形態において、ユーザ101の現在のロケーションから所定の距離内に現在位置するユーザ101に対して関係を有する他のユーザは、ユーザ101の現在のロケーションの通知を受信することができる。限定ではなく一例として、現在サン・フランシスコにいる別のユーザは、時間ベースのルーチンが、ユーザ101が通常はメンロー・パークにいることを示すことに応じて、ユーザ101がサン・フランシスコにいるという通知を受信することができる。
特定の実施形態において、ユーザ101の情報は、ユーザ101の時間ベースのルーチンに少なくとも部分的に基づいて推論され得る。特定の実施形態において、ソーシャルネットワーキング・システムは、1つまたは複数のデータベースに格納された情報を、ユーザ101に関連付けられた時間ベースのルーチンと相関させて、ユーザ101の情報を推論することができる。データベースに格納された情報は、ユーザ101に関連付けられたソーシャル・グラフ情報、またはビジネスおよびその物理的なロケーションの情報を含むことができる。限定ではなく一例として、ソーシャルネットワーキング・システム160は、多くの人は毎週平日の午前2:00〜5:00の間はホーム・ロケーションにいるという仮定、およびその時間におけるユーザ101の最も可能性の高いロケーションに関連付けられたジオロケーションに少なくとも部分的に基づいて、ユーザ101のホーム・ロケーションを推論することができる。別の例として、ソーシャルネットワーキング・システム160は、多くの人は毎週平日の午後2:00〜5:00の間は職場にいるという仮定、およびその時間におけるユーザ101の最も可能性の高いロケーションに関連付けられたジオロケーションと一致するジオロケーションを有するビジネスの情報に少なくとも部分的に基づいて、ユーザ101の勤務場所を推論することができる。別の例として、ユーザ101に関連付けられた職場および勤務時間の決定に基づいて、ソーシャルネットワーキング・システム160は、ユーザ101が、職場に到着する前の時刻におけるコーヒー・ショップのジオロケーションにルーチンの中心を有することに少なくとも部分的に基づき、職場に行く途中の特定のコーヒー・ショップの常連であることを推論することができる。特定の実施形態において、ソーシャルネットワーキング・システム160は、後述のように、ユーザ101の時間ベースのルーチンに基づく推論された情報に応じて、ユーザ101に関連付けられたソーシャル・グラフ情報を変更または追加することができる。
図2A〜図2Cは、周辺ロケーション記録の例示的なグループ化を示す。上述のように、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、空間クラスタリング・アルゴリズムを使用して、例えば1時間などの所定の時間間隔にわたって得られるロケーション記録をフィルタリングすることによって得られた複数のジオロケーション・データ・ポイント50をグループ化することができる。限定ではなく一例として、空間クラスタリングは、例えば午後4:00〜4:59の間、または午前12:00〜12:59の間に得られたジオロケーション・データ・ポイント50に対して行われ得る。特定の実施形態において、空間クラスタリング・アルゴリズムは、ジオロケーション・データ・ポイント50のセットを、1つまたは複数のジオロケーション・クラスタ54として表す。図2Aに示されるように、特定の実施形態において、所定の数のジオロケーション・クラスタ54のジオロケーション・セントロイド(geo-location centroid)52は、ジオロケーション・データ・ポイント50の中に実質的にランダムに分配され得る。図2Aの例に示されるように、ジオロケーション・データ・ポイント50は、ジオロケーション・データ・ポイント50とジオロケーション・セントロイド52との間の距離に少なくとも部分的に基づいて、特定のジオロケーション・クラスタ54に割り当てられ得る。限定ではなく一例として、各ジオロケーション・データ・ポイント50は、特定のジオロケーション・クラスタ54のジオロケーション・セントロイド52と、ジオロケーション・データ・ポイント50との間の最小距離を有する特定のジオロケーション・クラスタ54に割り当てられ得る。図2Bに示されるように、特定の実施形態において、各ジオロケーション・クラスタ54について、各ジオロケーション・クラスタ54内のすべてのジオロケーション・データ・ポイント50の中心を計算してよく、ジオロケーション・セントロイド52が、各ジオロケーション・クラスタ54のジオロケーション・データ・ポイント50の中心のロケーションに更新される。図2Bの例に示されるように、ジオロケーション・セントロイド52は、ジオロケーション・データ・ポイント50を切り離すジオロケーションであってよい。
図2Cの例に示されるように、ジオロケーション・クラスタ54は、各ジオロケーション・データ・ポイント50に最も近いジオロケーション・セントロイド52を有する特定のジオロケーション・クラスタ54に各ジオロケーション・データ・ポイント50を割り当てることに少なくとも部分的に基づいて各ジオロケーション・データ・ポイント50を特定のジオロケーション・クラスタ54に割り当てることによって、再編成することができる。特定の実施形態において、図2A〜図2Cに示されるような、ジオロケーション・クラスタ54の中心を計算する工程、ジオロケーション・セントロイド52を各ジオロケーション・クラスタ54内のジオロケーション・データ・ポイント50の中心のロケーションに更新する工程、およびジオロケーション・クラスタ54を再編成する工程は、所定の回数行われ得る。本開示は、空間クラスタリングの特定の方法を使用して複数のジオロケーション・データ・ポイントをグループ化することを記載しているが、本開示は、例えばk平均法または階層的クラスタリングなど、空間クラスタリングの任意の適切な方法を使用して複数のジオロケーション・データ・ポイントをグループ化することを企図している。特定の実施形態において、空間クラスタリングにより計算されたジオロケーション・セントロイド52は、ソーシャルネットワーキング・システムまたはサードパーティ・システムによって格納され得る。
特定の実施形態において、後続のジオロケーション・データ・ポイント50は、ジオロケーション・クラスタ54のジオロケーション・セントロイド52をより正確にするために使用され得る。限定ではなく一例として、後続のジオロケーション・データ・ポイント50は、後続のジオロケーション・データ・ポイント50と各ジオロケーション・クラスタ54のジオロケーション・セントロイド52との間の距離が所定のしきい値未満であることに少なくとも部分的に基づいて、ジオロケーション・クラスタ54のうちの1つに加えられ得る。特定の実施形態において、新たなジオロケーション・クラスタ54は、後続のジオロケーション・データ・ポイント50と各ジオロケーション・クラスタ54のジオロケーション・セントロイド52との間の距離が所定のしきい値を超えることに応じて、後続のジオロケーション・データ・ポイント50から形成され得る。
図3A〜図3Dは、時間ベースのルーチンの推定を示す。上述のように、図2A〜図2Cの例に示されるように特定の日の各所定の時間間隔についてジオロケーション・クラスタ54を生成するために、各曜日について特定の所定の時間間隔の間に得られたロケーション・データに対して空間クラスタリングが行われ得る。特定の実施形態において、ルーチンの中心56A〜56Cは、ユーザに関連付けられたクライアント・デバイスのジオロケーションのスナップショットを形成するために、特定の時刻および特定の曜日に計算されたジオロケーション・セントロイドの空間クラスタリングによって生成され得る。限定ではなく一例として、各曜日の各所定の時間期間について計算された地理的クラスタのジオロケーション・セントロイドの、図2A〜図2Cの例に示されるような空間クラスタリングは、例えば28日間など所定の期間にわたって、例えば1時間間隔など特定の時間間隔で、例えば月曜日など特定の曜日に行われて、ルーチンの中心56A〜56Cを計算することができる。特定の実施形態において、ジオロケーション・セントロイドの中心を計算する工程、ルーチンの中心56A〜56Cをジオロケーション・セントロイドの各グループ内のジオロケーション・セントロイドの中心のロケーションに更新する工程、およびジオロケーション・セントロイドの各グループを再編成する工程は、所定の回数行われ得る。図3A〜図3Dの例において、3人の特定のユーザに関連付けられた1つまたは複数のルーチンの中心56A〜56Cは、計算されたジオロケーション・セントロイドの空間クラスタリングによって特定の曜日の特定の時刻について決定され得る。
図3Aの例に示されるように、例えば午前8時など特定の時刻、および例えば月曜日など特定の曜日に、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、各ユーザに関連付けられたルーチンの中心56A〜56Cを決定することができる。図3Aの例において、第1および第2のユーザに対する単一のルーチンの中心56Aおよび56Bはそれぞれ、第1および第2のユーザが、所定の期間全体を通して特定の曜日の特定の時刻の間は一貫して特定のジオロケーションにいることを示すことができる。これに対して、第3のユーザに関連付けられた複数のルーチンの中心56Cは、その曜日のその時刻の間、第3のユーザのジオロケーションにばらつきがあることを表すことができる。
図3Bの例において、月曜日の午前9時には、第2のユーザに関連付けられたルーチンの中心56Bは、図3Aの例に示されるような過去の時刻と実質的に同じジオロケーションにある。第1および第3のユーザに関連付けられた複数のルーチンの中心56Aおよび56Cはそれぞれ、特定の時刻および曜日における第1および第3のユーザのジオロケーションにばらつきがあることを表すことができる。図3Cの例において、第3のユーザに関連付けられたルーチンの中心56Cは、所定の期間全体を通して特定の曜日の特定の時刻の間は一貫して特定のジオロケーションにある。第1のユーザに関連付けられたルーチンの中心56Aは、図3Aおよび図3Bの例に示されるものよりも小さな地理的エリア内にある。図3Cの例において、第1および第3のユーザに関連付けられたルーチンの中心56Aおよび56Cはそれぞれ、比較的小さな地理的エリア内にある。特定の実施形態において、特定の曜日の特定の時刻のロケーション記録が、比較的小さな地理的エリアに限定されるとき、ルーチンの中心56A〜56Cは、図3A〜図3Cの例に示される詳細レベルに比較してより高い精度レベルまでルーチンの中心56A〜56Cを決定することができる。
ユーザの時間ベースのルーチンは、ルーチンの中心56A〜56Cに基づいて推論され得る。特定の実施形態において、ルーチンの中心56A〜56Cは、ソーシャルネットワーキング・システムまたはサードパーティ・システムによって、所定の期間にわたるログとして格納され得る。限定ではなく一例として、ルーチンの中心56A〜56Cは、ユーザに関連付けられたルーチンの中心56A〜56Cのパターンを形成するために、ルーチンの中心56A〜56Cの、時間経過に従うアニメーションによる連続または不連続なプレイバックとして表示され得る。ソーシャルネットワーキング・システムまたはサードパーティ・システムは、ルーチンの中心56A〜56Cの1つまたは複数に対応する場所を決定することができる。限定ではなく一例として、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、ビジネス情報のデータベースにアクセスし、1つまたは複数のルーチンの中心56A〜56Cを特定のビジネスに関連付けることができる。特定の実施形態において、ユーザが特定の曜日の特定の時刻に特定のジオロケーションにいることがある可能性は、特定の時刻に対応するジオロケーション・セントロイドが、特定のジオロケーションに対応する特定のルーチンの中心56A〜56C内にある割合を計算することによって推定され得る。限定ではなく一例として、第1のユーザに関連付けられたルーチンの中心56Aが、特定の時刻に対応する10箇所のジオロケーション・セントロイドのうち8箇所のジオロケーション・セントロイドを含む場合、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、特定の曜日の特定の時刻の間、80%の確実性で第1のユーザがルーチンの中心56Aにいることを推論することができる。
上述のように、ユーザの情報は、ユーザの時間ベースのルーチンに少なくとも部分的に基づいて推論され得る。限定ではなく一例として、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、図3Aの例によって示されるように、第1のユーザが月曜日の午前8時に単一のルーチンの中心56Aを有することに少なくとも部分的に基づいて、第1のユーザのホーム・ロケーションがサン・フランシスコの特定のロケーションであることを推論することができる。別の例として、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、図3Bおよび図3Cの例に示されるように、ルーチンの中心56Aのばらつきに少なくとも部分的に基づいて、第1のユーザが通勤中であり得ることを推論することができる。限定ではなく一例として、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、データベースにアクセスして、ルーチンの中心56Aが特定の高速道路に対応することを決定し、第1のユーザが職場に通勤中であることを推論することができる。また、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、図3Dの例に示されるように、例えば午後1時などの勤務時間中に比較的小さな地理的エリア内にルーチンの中心56Aを有すること、およびルーチンの中心56Aに対応するジオロケーションを、ソーシャルネットワーキング・システムまたはサードパーティ・システムの1つまたは複数のデータベースに格納された職場と相関させることに基づいて、第1のユーザの職場を推論することができる。
上述のように、推論される時間ベースのルーチンから特定のユーザが逸脱することに応じて、特定のユーザに対して関係を有するユーザに、通知が送信され得る。特定の実施形態において、ソーシャルネットワーキング・システムまたはサードバーティ・システムは、ユーザの現在のジオロケーションまでの最小距離を有するルーチンの中心56A〜56Cのパターンから、特定のルーチンの中心56A〜56Cを決定する。ソーシャルネットワーキング・システムまたはサードパーティ・システムは、パターンの特定のルーチンの中心56A〜56Cと現在のジオロケーションとの距離を決定し、特定のルーチンの中心56A〜56Cと現在のジオロケーションとの間の距離が所定の逸脱しきい値よりも長いことに応じて、1つまたは複数の他のユーザに通知を送信することができる。限定ではなく一例として、図3Dの例に示されるように、第1のユーザが月曜日の午後1時には通常メンロー・パークにいることを示すルーチンの中心56Aから逸脱する、第1のユーザがその曜日のその時刻にサン・フランシスコにおいてロケーション記録を有することに応じて、第1のユーザに対して「友達」関係を有するユーザに通知が送信され得る。また、ユーザの現在のジオロケーションと第1のユーザの現在のジオロケーションとの間の距離が所定の近接しきい値よりも短い場合、第1のユーザに対して関係を有するユーザに、通知が送信され得る。限定ではなく一例として、第1のユーザが、サン・フランシスコにいることによりユーザのルーチンから逸脱していることの通知は、サン・フランシスコの現在のジオロケーションを有する「友達」に送信され得る。
図4は、例示的なモバイル・デバイスを示す。特定の実施形態において、クライアント・システムは、上述のようにモバイル・デバイス130であってよい。本開示は、モバイル・デバイス130が任意の適切な物理的形態を取ることを企図している。特定の実施形態において、モバイル・デバイス130は、後述のようにコンピューティング・システムであってよい。限定ではなく一例として、モバイル・デバイス130は、シングルボード・コンピュータ・システム(SBC)(例えば、コンピュータ・オン・モジュール(COM)もしくはシステム・オン・モジュール(SOM)など)、ラップトップもしくはノートブック・コンピュータ・システム、モバイル電話、スマートフォン、パーソナル・デジタル・アシスタント(PDA)、タブレット・コンピュータ・システム、またはこれらの2つ以上の組合せであってよい。特定の実施形態において、モバイル・デバイス130は、入力構成要素としてタッチ・センサ12を有することができる。図4の例において、タッチ・センサ12は、モバイル・デバイス130の表面に組み込まれている。静電容量式タッチ・センサの場合、2つのタイプの電極、すなわち送信用および受信用があり得る。これらの電極は、電気パルスによって送信電極を駆動しタッチまたは近接入力により生じる受信電極からのキャパシタンスの変化を測定するように設計された制御装置に接続され得る。図4の例において、1つまたは複数のアンテナ14Aおよび14Bは、モバイル・デバイス130の1つまたは複数の側面に組み込まれ得る。アンテナ14Aおよび14Bは、電流を電波に、またはその逆に変換する構成要素である。信号の送信中、送信機は、発振する無線周波数(RF)電流をアンテナ14Aおよび14Bの端子に印加し、アンテナ14Aおよび14Bは、印加された電流のエネルギーを電磁(EM)波として放射する。信号の受信中、アンテナ14Aおよび14Bは、入来するEM波をアンテナ14Aおよび14Bの端子において電圧に変換する。電圧は、受信機に送信されて増幅され得る。
上述のように、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、アクティブ化信号を使用してモバイル・デバイス130をポーリングまたは「ピン」して、ロケーション情報を得ることができる。限定ではなく一例として、ソーシャルネットワーキング・システムは、アクティブ化信号を送信してモバイル・デバイス130のロケーション・サービスをアクティブ化することにより、ロケーション・データのための、モバイル・デバイス130によって実行されるアプリケーションをポーリングすることができる。アクティブ化信号は、例えば、WI−FIまたは第3世代移動通信(3G)など、ワイヤレス通信プロトコルを使用して送信され、1つまたは複数のアンテナ14Aおよび14Bを介してモバイル・デバイス130によって受信され得る。特定の実施形態において、モバイル・デバイス130のロケーション・サービスは、例えば、1つまたは複数のセルラ・タワーのロケーション、WI−FIホットスポットに関連付けられたクラウドソーシングのロケーション情報、またはモバイル・デバイス130のGPS機能を使用するなど、ロケーション決定の1つまたは複数の方法を使用することができる。
上述のように、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、所定のサンプリング期間の終了時に、モバイル・デバイス130によって実行されるアプリケーションにアクティブ化信号を送信することができる。アプリケーションは、送信信号を受信することに応じて、ソーシャルネットワーキング・システムまたはサードパーティ・システムに、取得したロケーション・データなどの関連データを送信することができる。特定の実施形態において、追加のロケーションサービス・アクティブ化信号が、ロケーション・データの取得中にモバイル・デバイス130に定期的に送信されて、ロケーション・データが取得される前にアプリケーションがスリープ・モードに戻らないようにする。上述のように、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、モバイル・デバイス130が静止しているか移動中であるかに基づいて、モバイル・デバイス130に送信されたデータの量を調整することができる。特定の実施形態において、モバイル・デバイス130のロケーション・サービスは、所定のサンプリング期間モバイル・デバイス130のアプリケーションをアクティブにする1つまたは複数のロケーションサービス・アクティブ化信号を受信すると、所定のサンプリング期間アクティブ化される。
アプリケーションは、ロケーションサービス・アクティブ化信号を受信することに応じて、モバイル・デバイス130のロケーション・サービスをアクティブ化する。特定の実施形態において、モバイル・デバイス130のロケーション・サービスは、例えば、1つまたは複数のセルラ・タワーのロケーション、WI−FIホットスポットに関連付けられたクラウドソーシングのロケーション情報、またはモバイル・デバイス130のGPS機能を使用するなど、ロケーション決定の1つまたは複数の方法を使用することができる。特定の実施形態において、モバイル・デバイス130のアプリケーションは、ロケーション・データ、および、例えば、近隣のセルラ・タワーからの信号強度など他の関連データを送信することができる。特定の実施形態において、モバイル・デバイス130のオペレーティング・システム(OS)は、モバイル・デバイス130のロケーション・サービスによって使用される様々な方法によって、データの収集に対してアービトレーションを行うことができる。限定ではなく一例として、モバイル・デバイス130のロケーション・サービスによって使用される方法は、ロケーション測定の所定のサンプリング期間に少なくとも部分的に依存することができる。限定ではなく一例として、アプリケーションは、モバイル・デバイス130が所定のサンプリング期間内にGPSデータを取得できるかどうかに少なくとも部分的に依存して、GPSデータをロケーション情報の主なソースとして使用することができる。別の例として、モバイル・デバイス130が所定のサンプリング期間内にGPSデータを取得できない場合、アプリケーションは、1つまたは複数のセルラ・タワーまたはWI−FIホットスポットを使用して決定されたロケーションを使用することができる。本開示は、ロケーション決定の特定の方法を使用したロケーション・サービスを記載しているが、本開示は、ロケーション検出の任意の適切な方法または方法の組合せを使用したロケーション・サービスを企図している。
特定の実施形態において、モバイル・デバイス130上で実行されるアプリケーションは、スリープ・モードからアプリケーションをウェイクさせるアクティブ化信号を受信し、例えば10秒など、所定のサンプリング期間モバイル・デバイス130のロケーション・サービスをアクティブ化させる。上述のように、ソーシャルネットワーキング・システムまたはサードパーティ・システムは、モバイル・デバイス130の移動距離に従って、ポーリング頻度(すなわち、各信号送信間の時間間隔)およびサンプリング期間を調整することができる。所定のサンプリング期間は、ロケーション・データの所望の精度に少なくとも部分的に依存する。所定のサンプリング期間を長くすると、アプリケーションがGPSデータを取得するより高い可能性を有すること、またはロケーション・サービスがより詳細なGPSデータを取得できること、に少なくとも部分的に起因して、モバイル・デバイス130のロケーションの精度が高まる。
図5は、周辺ロケーション更新をグループ化するための例示的な方法を示す。この方法は、工程300において開始することができ、ここでコンピューティング・デバイスは、ユーザに関連付けられたモバイル・コンピューティング・デバイスからロケーション・データを受信する。特定の実施形態において、ロケーション・データは、ユーザからの手操作入力なしに自動的に送信される、1つまたは複数のロケーション記録を含むことができる。工程302は、ロケーション・データを1つまたは複数のジオロケーション・データ・ポイントとして表す。特定の実施形態において、この表示は、ロケーション記録とジオロケーション・データ・ポイントとの間の距離に少なくとも部分的に基づくことができる。工程304において、コンピューティング・デバイスは、ジオロケーション・データ・ポイントの1つまたは複数を、1つまたは複数のジオロケーション・クラスタにグループ化し、この時点で、方法は終了することができる。特定の実施形態において、グループ化は、各ジオロケーション・データ・ポイントと各ジオロケーション・クラスタのジオロケーション・セントロイドとの間の距離に少なくとも部分的に基づくことができる。本開示は、図5の方法の特定の工程を特定の順序で行われるものとして記載しかつ示しているが、本開示は、図5の方法の任意の適切な工程が任意の適切な順序で行われることを企図している。また、本開示は、特定の構成要素が図5の方法の特定の工程を実行することを記載しかつ示しているが、本開示は、任意の適切な構成要素の任意の適切な組合せが図5の方法の任意の適切な工程を実行することを企図している。
図6は、ルーチンの推定のための例示的な方法を示す。この方法は、工程310において開始することができ、ここでコンピューティング・デバイスは、1つまたは複数のジオロケーション・クラスタの各々のジオロケーション・セントロイドを決定する。特定の実施形態において、ジオロケーション・セントロイドは、そのジオロケーション・クラスタ内の1つまたは複数のジオロケーション・データ・ポイントに対応する。ジオロケーション・データ・ポイントは、ユーザに関連付けられたモバイル・コンピューティング・デバイスからの1つまたは複数のロケーション記録を表すことができる。ジオロケーション・セントロイドは、特定の曜日の特定の時刻の間に得られたロケーション記録に少なくとも部分的に基づくことができる。特定の実施形態において、ロケーション・データは、ユーザからの手操作入力なしに自動的に送信される1つまたは複数のロケーション記録を含む。工程312は、コンピューティング・デバイスによって、1つまたは複数のジオロケーション・セントロイドを1つまたは複数のグループにグループ化する。工程314において、コンピューティング・デバイスは、各グループ内のいくつかのジオロケーション・セントロイドに少なくとも部分的に基づいて、時間ベースのルーチンを決定し、この時点で、方法は終了することができる。本開示は、図6の方法の特定の工程が特定の順序で行われるものとして記載しかつ示しているが、本開示は、図6の方法の任意の適切な工程が任意の適切な順序で行われることを企図している。また、本開示は、特定の構成要素が図6の方法の特定の工程を実行することを記載しかつ示しているが、本開示は、任意の適切な構成要素の任意の適切な組合せが、図6の方法の任意の適切な工程を実行することを企図している。
図7は、ユーザのパターンをラベリングするための例示的な方法を示す。この方法は、工程320において開始することができ、ここでコンピューティング・デバイスは、ユーザに関連付けられたログにアクセスする。特定の実施形態において、ログは、ある時点におけるユーザのジオロケーションをそれぞれが示すエントリを含む。ログは、ある期間にわたることができ、エントリのいくつかは、ユーザによる手操作入力なしに、ユーザのモバイル・コンピューティング・デバイスによって決定され報告されたジオロケーションに基づくことができる。特定の実施形態において、ロケーション・データは、ユーザによる手操作の入力なしに自動的に送信される1つまたは複数のロケーション記録を含む。工程322は、コンピューティング・デバイスによって、この時点におけるユーザのジオロケーションの中のパターンを決定する。工程324は、コンピューティング・デバイスによって、ジオロケーションのいくつかについてジオロケーションに対応する場所を決定する。工程326において、コンピューティング・デバイスは、パターンおよび場所に少なくとも部分的に基づいてユーザのルーチンを推論し、この時点で、方法は終了することができる。本開示は、図7の方法の特定の工程が特定の順序で行われるものとして記載しかつ説明しているが、本開示は、図7の方法の任意の適切な工程が任意の適切な順序で行われることを企図している。また、本開示は、特定の構成要素が図7の方法の特定の工程を実行すること記載しかつ示しているが、本開示は、任意の適切な構成要素の任意の適切な組合せが図7の方法の任意の適切な工程を実行することを企図している。
図8は、ルーチン逸脱通知を提供するための例示的な方法を示す。この方法は、工程330において開始することができ、ここでコンピューティング・デバイスは、ある期間にわたるユーザのいくつかのジオロケーションの中のパターンを決定する。特定の実施形態において、各ジオロケーションは、ユーザによる手操作入力なしにユーザのモバイル・コンピューティング・デバイスによって決定され報告される。工程332は、コンピューティング・デバイスによって、モバイル・コンピューティング・デバイスの現在のジオロケーションまでの最小距離を有する、パターンにおけるジオロケーションの中の特定のジオロケーションを決定する。工程334は、コンピューティング・デバイスによって、特定のジオロケーションと現在のジオロケーションとの間の距離を決定する。工程336において、コンピューティング・デバイスは、距離が所定の逸脱しきい値よりも長いことに応じて、他のユーザに現在のロケーションの通知を送信し、この時点で、方法は終了することができる。特定の実施形態において、他のユーザは、ユーザに関連付けられたソーシャル・グラフ情報に少なくとも部分的に基づいて、ユーザに対する関係を有する。本開示は、図8の方法の特定の工程が特定の順序で行われるものとして記載しかつ示しているが、本開示は、図8の方法の任意の適切な工程が任意の適切な順序で行われることを企図している。また、本開示は、特定の構成要素が図8の方法の特定の工程を実行することを記載しかつ示しているが、本開示は、任意の適切な構成要素の任意の適切な組合せが図8の方法の任意の適切な工程を実行することを企図している。
図9は、ユーザにルーチン逸脱を通知するための例示的な方法を示す。この方法は、工程340において開始することができ、ここでモバイル・コンピューティング・デバイスは、1つまたは複数のロケーション記録を含むロケーション・データを送信する。特定の実施形態において、ロケーション記録は、第1のユーザの現在のジオロケーションに対応する。工程342において、モバイル・コンピューティング・デバイスは、第2のユーザに関連付けられた特定のジオロケーションと、第2のユーザの現在のジオロケーションとの間の距離が所定の逸脱しきい値よりも大きいことに応じて、第2のユーザの現在のジオロケーションの通知を受信し、この時点で、方法は終了することができる。特定の実施形態において、パターンは、ある期間にわたる第2のユーザのジオロケーションを含む。また、特定のジオロケーションは、第2のユーザの現在のジオロケーションまでの最小距離を有することができる。第2のユーザは、第1のユーザに関連付けられたソーシャル・グラフ情報に少なくとも部分的に基づいて、第1のユーザに対する関係を有することができる。本開示は、図9の方法の特定の工程が特定の順序で行われるものとして記載しかつ示しているが、本開示は、図9の方法の任意の適切な工程が任意の適切な順序で行われることを企図している。また、本開示は、特定の構成要素が図9の方法の特定の工程を実行することを記載しかつ示しているが、本開示は、任意の適切な構成要素の任意の適切な組合せが図9の方法の任意の適切な工程を実行することを企図している。
図10は、例示的なソーシャル・グラフを示す。特定の実施形態において、ソーシャルネットワーキング・システム160は、1つまたは複数のデータ・ストア中に1つまたは複数のソーシャル・グラフ200を格納することができる。特定の実施形態において、ソーシャル・グラフ200は、複数のユーザ・ノード202または複数のコンセプト・ノード204を含むことができる複数のノードと、ノードをつなぐ複数のエッジ206とを含むことができる。図10に示される例示的なソーシャル・グラフ200は、教示目的で2次元の視覚的なマップ表示として示されている。特定の実施形態において、ソーシャルネットワーキング・システム160、クライアント・システム130、またはサードパーティ・システム170は、ソーシャル・グラフ200、および適切なアプリケーションのための関連するソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ200のノードおよびエッジは、例えば(ソーシャル・グラフ・データベースなどの)データ・ストアに、データ・オブジェクトとして格納され得る。こうしたデータ・ストアは、ソーシャル・グラフ200のノードまたはエッジの1つまたは複数の探索可能または照会可能なインデックスを含むことができる。
特定の実施形態において、ユーザ・ノード202は、ソーシャルネットワーキング・システム160のユーザに対応することができる。限定ではなく一例として、ユーザは、ソーシャルネットワーキング・システム160と対話する、またはソーシャルネットワーキング・システム160を介して通信する、個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、もしくはサードパーティのアプリケーション)、またはグループ(例えば、個人もしくは企業の)であってよい。特定の実施形態において、ユーザがソーシャルネットワーキング・システム160にアカウントの登録をするとき、ソーシャルネットワーキング・システム160はユーザに対応するユーザ・ノード202を作成し、ユーザ・ノード202を1つまたは複数のデータ・ストアに格納することができる。本明細書に記載されるユーザおよびユーザ・ノード202は、必要な場合、登録されたユーザ、および登録されたユーザに関連付けられたユーザ・ノード202を指すことができる。これに加えて、または代替として、本明細書に記載されるユーザおよびユーザ・ノード202は、必要な場合、ソーシャルネットワーキング・システム160にまだ登録されていないユーザを指すことができる。特定の実施形態において、ユーザ・ノード202は、ユーザによって提供された情報、またはソーシャルネットワーキング・システム160を含む様々なシステムによって集められた情報に関連付けられ得る。限定ではなく一例として、ユーザは、自分の名前、プロファイル・ピクチャ、コンタクト情報、生年月日、性別、婚姻状況、家族状況、職業、学歴、好み、関心、または他の人口統計情報を提供することができる。特定の実施形態において、ユーザ・ノード202は、ユーザに関連付けられた情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられ得る。特定の実施形態において、ユーザ・ノード202は、1つまたは複数のウェブページに対応することができる。
特定の実施形態において、ユーザ・ノード202は、ユーザの時間ベースのルーチンから推論された情報に関連付けられ得る。限定ではなく一例として、ユーザのホーム・ロケーションは、例えば午前2:00〜5:00など特定の時間に得られたルーチンの中心から推論され、ユーザのホーム・ロケーションはユーザ・ノード202に関連付けられ得る。特定の実施形態において、ソーシャルネットワーキング・システム160は、ユーザによって提供された情報を増強することができ得る。限定ではなく一例として、ユーザは、サン・フランシスコのホーム・ロケーションを提供することができ、ソーシャルネットワーキング・システム160は、サン・フランシスコの特定のエリアまたはストリート内の精度でユーザのホーム・ロケーションを推論することができる。また、ソーシャルネットワーキング・システムは、エリアまたはストリート情報をユーザ・ノード202に関連付けることができる。
特定の実施形態において、コンセプト・ノード204は、コンセプトに対応することができる。限定ではなく一例として、コンセプトは、場所(例えば、映画館、レストラン、ランドマーク、もしくは都市など)、ウェブサイト(例えば、ソーシャルネットワーキング・システム160に関連付けられたウェブサイトもしくはウェブアプリケーション・サーバに関連付けられたもしくはサードパーティ・ウェブサイトなど)、エンティティ(例えば、人、ビジネス、グループ、スポーツ・チーム、もしくは有名人など)、ソーシャルネットワーキング・システム160内もしくはウェブアプリケーション・サーバなど外部サーバ上に配置され得るリソース(例えば、オーディオ・ファイル、ビデオ・ファイル、デジタル・フォト、テキスト・ファイル、構造化ドキュメント、もしくはアプリケーションなど)、不動産もしくは知的財産(例えば、彫刻、絵画、映画、ゲーム、歌、アイデア、写真、もしくは著作など)、ゲーム、アクティビティ、アイデアもしくは理論、別の適切なコンセプト、または2つ以上のこうしたコンセプトに対応することができる。コンセプト・ノード204は、ユーザによって提供されたコンセプトの情報、またはソーシャルネットワーキング・システム160を含む様々なシステムによって集められた情報に関連付けられ得る。限定ではなく一例として、コンセプトの情報は、名前もしくは肩書き、1つもしくは複数の画像(例えば、書籍のカバー・ページの画像)、ロケーション(例えば、アドレスもしくは地理的ロケーション)、(URLに関連付けられ得る)ウェブサイト、コンタクト情報(例えば、電話番号もしくはEメール・アドレス)、他の適切なコンセプト情報、またはこうした情報の任意の適切な組合せを含むことができる。特定の実施形態において、コンセプト・ノード204は、コンセプト・ノード204に関連付けられた情報に対応する1つまたは複数のデータ・オブジェクトに関連付けられ得る。特定の実施形態において、コンセプト・ノード204は、1つまたは複数のウェブページに対応することができる。
特定の実施形態において、ソーシャル・グラフ200中のノードは、(「プロファイル・ページ」と呼ばれることがある)ウェブページを表すことができ、またはこうしたウェブページによって表され得る。プロファイル・ページは、ソーシャルネットワーキング・システム160によってホストされてよく、またはソーシャルネットワーキング・システム160にアクセス可能としてもよい。また、プロファイル・ページは、サードパーティ・サーバ170に関連付けられたサードパーティ・ウェブサイト上でホストされ得る。限定ではなく一例として、特定の外部ウェブページに対応するプロファイル・ページは、その特定の外部ウェブページであってよく、プロファイル・ページは、特定のコンセプト・ノード204に対応することができる。プロファイル・ページは、他のユーザのすべてまたは選択されたサブセットによって閲覧可能であってよい。限定ではなく一例として、ユーザ・ノード202は、対応するユーザが、コンテンツを追加し、告知をし、または、さもなければ自己紹介をすることができる、対応するユーザプロファイル・ページを有することができる。限定ではなく別の例として、コンセプト・ノード204は、特にコンセプト・ノード204に対応するコンセプトに対して、1または複数のユーザが、コンテンツを追加し、告知をし、または自己紹介をすることができる、対応するコンセプトプロファイル・ページを有することができる。
特定の実施形態において、コンセプト・ノード204は、サードパーティ・システム170によってホストされたサードパーティ・ウェブページまたはリソースを表すことができる。サードパーティ・ウェブページまたはリソースは、他の要素の中に、アクションまたはアクティビティを表す(例えば、JavaScript(登録商標)、AJAX、またはPHPのコードで実装され得る)コンテンツ、選択可能もしくはその他のアイコン、または他の相互に動作可能なオブジェクトを含むことができる。限定ではなく一例として、サードパーティ・ウェブページは、「いいね!」、「チェックイン」、「たべる」、「おすすめ」、または別の適切なアクションまたはアクティビティなどの選択可能なアイコンを含むことができる。サードパーティ・ウェブページを閲覧しているユーザは、アイコンのうちの1つ(例えば「たべる」)を選択することによってアクションを行い、クライアント・システム130がソーシャルネットワーキング・システム160にユーザのアクションを示すメッセージを送信するようにさせることができる。メッセージに応じて、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、サードパーティ・ウェブページまたはリソースに対応するコンセプト・ノード204との間にエッジ(例えば、「たべる」エッジ)を作成し、エッジ206を1つまたは複数のデータ・ストアに格納することができる。
特定の実施形態において、ソーシャル・グラフ200における1対のノードは、1つまたは複数のエッジ206によって互いにつながっていてよい。1対のノードをつなぐエッジ206は、1対のノード間の関係を表すことができる。特定の実施形態において、エッジ206は、1対のノード間の関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むまたは表すことができる。限定ではなく一例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であることを示すことができる。この指標に応じて、ソーシャルネットワーキング・システム160は、「友達リクエスト」を第2のユーザに送信することができる。第2のユーザが「友達リクエスト」を承認する場合、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200において第1のユーザのユーザ・ノード202と第2のユーザのユーザ・ノード202とをつなぐエッジ206を作成し、エッジ206をソーシャル・グラフ情報としてデータ・ストア24の1つまたは複数に格納することができる。図10の例において、ソーシャル・グラフ200は、ユーザ「A」およびユーザ「B」の各ユーザ・ノード202間の友達関係を示すエッジ206、ならびにユーザ「C」およびユーザ「B」の各ユーザ・ノード202間の友達関係を示すエッジを含む。本開示は、特定のユーザ・ノード202をつなぐ特定の属性を有する特定のエッジ206を記載しまたは示しているが、本開示は、ユーザ・ノード202をつなぐ任意の適切な属性を有する任意の適切なエッジ206を企図している。限定ではなく一例として、エッジ206は、交友関係、家族関係、ビジネスもしくは雇用関係、ファン関係、フォロワ関係、ビジタ関係、加入者関係、主従関係、相互関係、非相互関係、別の適切なタイプの関係、または2つ以上のこうした関係を表すことができる。また、本開示は全般的に、ノードがつながっているものとして記載しているが、本開示はまた、ユーザまたはコンセプトがつながっているものとしても記載している。本明細書において、ユーザまたはコンセプトがつながっているということへの言及は、必要な場合、こうしたユーザまたはコンセプトに対応するノードが、1つまたは複数のエッジ206によって、ソーシャル・グラフ200においてつながっていることを指すことができる。上述のように、時間ベースのルーチンから逸脱するユーザに対して関係を有するユーザ・ノード202に関連付けられたユーザに、通知が送信され得る。限定ではなく一例として、ユーザ「A」が、例えば、勤務時間中にサン・フランシスコにいることによってなど、時間ベースのルーチンから逸脱することに応じて、サン・フランシスコで働いており友達関係によってユーザ「A」につながっているユーザ「B」に通知が送信され得る。
特定の実施形態において、ユーザ・ノード202とコンセプト・ノード204との間のエッジ206は、コンセプト・ノード204に関連付けられたコンセプトに向かうユーザ・ノード202に関連付けられたユーザによって行われる特定のアクションまたはアクティビティを表すことができる。限定ではなく一例として、図10に示されるように、ユーザは、コンセプトに対して「いいね」、「通学済み」、「プレイ済み」、「聴取済み」、「調理済み」、「勤務済み」、または「視聴済み」を表すことができ、その各々は、エッジのタイプまたはサブタイプに対応することができる。コンセプト・ノード204に対応するコンセプトプロファイル・ページは、例えば、選択可能な「チェックイン」アイコン(例えばクリック可能な「チェックイン」アイコンなど)、または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこうしたアイコンをクリックした後に、ソーシャルネットワーキング・システム160は、各アクションに対応するユーザのアクションに応じて、「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく別の例として、ユーザ(「ユーザC」)は、特定のアプリケーション(オンライン音楽アプリケーションのスポティファイ(SPOTIFY)(登録商標))を使用して、特定の歌(「ランブル・オン」)を聴くことができる。この場合、ソーシャルネットワーキング・システム160は、ユーザに対応するユーザ・ノード202と、歌およびアプリケーションに対応するコンセプト・ノード204との間に(図10に示されるような)「聴取済み」エッジ206および「使用済み」エッジを作成して、ユーザが歌を聴き、アプリケーションを使ったことを示すことができる。また、ソーシャルネットワーキング・システム160は、歌およびアプリケーションに対応する各コンセプト・ノード204間に(図10に示されるような)「プレイ済み」エッジ206を作成して、特定の歌が特定のアプリケーションによってプレイされたことを示すことができる。この場合、「プレイ済み」エッジ206は、外部オーディオ・ファイル(歌「イマジン」)に対して外部アプリケーション(スポティファイ)によって行われるアクションに対応する。本開示は、ユーザ202とコンセプト・ノード204とをつなぐ特定の属性を有する特定のエッジ206を記載しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204とをつなぐ任意の適切な属性を有する任意の適切なエッジ206を企図している。また、本開示は、ユーザ・ノード202とコンセプト・ノード204との間のエッジが単一の関係を表すことを記載しているが、本開示は、ユーザ・ノード202とコンセプト・ノード204との間のエッジが1つまたは複数の関係を表すことを企図している。限定ではなく一例として、エッジ206は、特定のコンセプトにおいて、ユーザが気に入っていることと、ユーザが使用したこととの両方を表すことができる。あるいは、別のエッジ206が、(図10において、ユーザ「E」のユーザ・ノード202と「スポティファイ」のコンセプト・ノード204との間で示されるような)ユーザ・ノード202とコンセプト・ノード204との間の各タイプの関係(または複数の単一関係)を表すことができる。
特定の実施形態において、ソーシャルネットワーキング・システム160は、ソーシャル・グラフ200においてユーザ・ノード202とコンセプト・ノード204との間にエッジ206を作成することができる。限定ではなく一例として、(例えば、ユーザのクライアント・システム130によってホストされるウェブ・ブラウザまたは専用のアプリケーションを使用することによってなど)コンセプトプロファイル・ページを閲覧するユーザは、ユーザのクライアント・システム130に、コンセプトプロファイル・ページに関連付けられたコンセプトをユーザが好んでいることを示すメッセージをソーシャルネットワーキング・システム160に送信させ得る「いいね!」アイコンのクリックまたは選択によって、コンセプト・ノード204によって表されるコンセプトをユーザが気に入っていることを示すことができる。メッセージに応じて、ソーシャルネットワーキング・システム160は、ユーザとコンセプト・ノード204との間の「いいね」エッジ206によって示されるように、ユーザに関連付けられたユーザ・ノード202とコンセプト・ノード204との間にエッジ206を作成することができる。特定の実施形態において、ソーシャルネットワーキング・システム160は、エッジ206を1つまたは複数のデータ・ストアに格納することができる。特定の実施形態において、エッジ206は、特定のユーザ・アクションに応じて、ソーシャルネットワーキング・システム160によって自動的に形成され得る。限定ではなく一例として、第1のユーザが、ピクチャをアップロードする、映画を観る、または歌を聴く場合、第1のユーザに対応するユーザ・ノード202と、こうしたコンセプトに対応するコンセプト・ノード204との間にエッジ206が形成され得る。本開示は、特定のエッジ206を特定の方法で形成することを記載しているが、本開示は、任意の適切なエッジ206を任意の適切な方法で形成することを企図している。
特定の実施形態において、ソーシャルネットワーキング・システム160は、上述のように、ユーザの時間ベースのルーチンから推論されたユーザの情報に応じて、ソーシャル・グラフ200においてユーザ・ノード202とコンセプト・ノード204との間にエッジ206を作成することができる。限定ではなく一例として、ソーシャルネットワーキング・システム160は、ユーザの時間ベースのルーチン、および1つまたは複数のコンセプト・ノード204に関連付けられた情報に基づいて、ユーザ・ノード202に関連付けられたユーザが特定のコーヒー・ショップを気に入っていることを推論することができる。上述のように、ソーシャルネットワーキング・システム160は、ユーザの推論された職場に到着する前の時刻において、ユーザに関連付けられたルーチンの中心がコーヒー・ショップのロケーションに一致することに少なくとも部分的に基づいて、ユーザが特定のコーヒー・ショップによく行くことを推論することができる。また、ソーシャルネットワーキング・システムは、ユーザに関連付けられたユーザ・ノード202と特定のコーヒー・ショップに関連付けられたコンセプト・ノード204との間に「いいね」に対応するエッジ206を作成することができる。別の例として、ソーシャルネットワーキング・システムは、ユーザの推論された時間ベースのルーチンに少なくとも部分的に基づいて、ユーザ・ノード202と、ビジネスに対応するコンセプト・ノード204との間にエッジ206を作成することができる。上述のように、ソーシャルネットワーキング・システムは、ユーザが事業所にルーチンの中心を有することに基づいてユーザの雇用主を推論することができ、ユーザ・ノード202と、雇用主に対応するコンセプト・ノード204との間に「勤務済み」関係に対応するエッジ206を作成することができる。
別の例として、ソーシャルネットワーキング・システム160は、ユーザの時間ベースのルーチンに少なくとも部分的に基づいて、ユーザ・ノード202と、特定のタイプの音楽または特定のスポーツ・チームに対応するコンセプト・ノード204との間に「いいね」関係に対応するエッジ206を作成することができる。ソーシャルネットワーキング・システム160は、スポーツ・チームの会場にユーザがルーチンの中心を有することに応じて、ユーザ・ノード202と、特定のスポーツ・チームに対応するコンセプト・ノード204との間に「いいね」関係に対応するエッジ206を作成することができる。別の例として、ソーシャルネットワーキング・システム160は、特定のタイプの音楽に特化した、例えばジャズ・クラブなどの会場にユーザがルーチンの中心を有することに応じて、ユーザ・ノード202と、特定のタイプの音楽に対応するコンセプト・ノード204との間に「いいね」関係に対応するエッジ206を作成することができる。
図11は、例示的なコンピューティング・システムを示す。特定の実施形態において、1つまたは複数のコンピュータ・システム60は、本明細書に記載または示された1つまたは複数の方法の1つまたは複数の工程を行う。特定の実施形態において、1つまたは複数のコンピュータ・システム60は、本明細書に記載または示された機能を提供する。特定の実施形態において、1つまたは複数のコンピュータ・システム60上で動作するソフトウェアは、本明細書に記載もしくは示された1つもしくは複数の方法の1つもしくは複数の工程を行う、または本明細書に記載または示された機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム60の1つまたは複数の部分を含む。本明細書において、コンピュータ・システムへの言及は、必要な場合、コンピューティング・デバイスを包含することができる。また、コンピュータ・システムへの言及は、必要な場合、1つまたは複数のコンピュータ・システムを包含することができる。
本開示は、任意の適切な数のコンピュータ・システム60を企図している。本開示は、コンピュータ・システム60が、任意の適切な物理的形態を取ることを企図している。限定ではなく一例として、コンピュータ・システム60は、エンベデッド・コンピュータ・システム、システム・オン・チップ(SOC)、シングル・ボード・コンピュータ・システム(SBC)(例えば、コンピュータ・オン・モジュール(COM)もしくはシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、インタラクティブ・キオスク、メインフレーム、コンピュータ・システムのメッシュ、モバイル電話、パーソナル・デジタル・アシスタント(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2つ以上の組合せであってよい。必要な場合、コンピュータ・システム60は、1つまたは複数のコンピュータ・システム60を含むことができ、一体型または分散型であってよく、複数のロケーションにわたってもよく、複数のマシンにわたってもよく、複数のデータ・センタにわたってもよく、または1つまたは複数のネットワークに1つまたは複数のクラウド構成要素を含むことができるクラウドにあってもよい。必要な場合、1つまたは複数のコンピュータ・システム60は、空間的にも時間的にも実質的に限定されることなく、本明細書に記載または示された1つまたは複数の方法の1つまたは複数の工程を行うことができる。限定ではなく一例として、1つまたは複数のコンピュータ・システム60は、本明細書に記載または示された1つまたは複数の方法の1つまたは複数の工程を、リアルタイムまたはバッチ・モードで行うことができる。1つまたは複数のコンピュータ・システム60は、必要な場合、本明細書に記載または示された1つまたは複数の方法の1つまたは複数の工程を、異なる時刻または異なるロケーションにおいて行うことができる。
特定の実施形態において、コンピュータ・システム60は、プロセッサ62、メモリ64、ストレージ66、入力/出力(I/O)インターフェース68、通信インターフェース70、およびバス72を含む。本開示は、特定の構成に特定の数の特定の構成要素を有する特定のコンピュータ・システムを記載しかつ示しているが、本開示は、任意の適切な構成に任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータ・システムを企図している。
特定の実施形態において、プロセッサ62は、コンピュータ・プログラムを構成するものなど、命令を実行するためのハードウェアを含む。限定ではなく一例として、命令を実行するためにプロセッサ62は、内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66から命令を取得(またはフェッチ)し、命令をデコードして実行し、次いで1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ64、またはストレージ66に書き込むことができる。特定の実施形態において、プロセッサ62は、データ、命令、またはアドレス用に、1つまたは複数の内部キャッシュを含むことができる。本開示は、必要な場合、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ62を企図している。限定ではなく一例として、プロセッサ62は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数のトランスレーション・ルックアサイド・バッファ(TLB)を含むことができる。命令キャッシュ中の命令は、メモリ64またはストレージ66中の命令のコピーであってよく、命令キャッシュは、プロセッサ62による命令の取得を高速化することができる。データ・キャッシュ中のデータは、プロセッサ62において実行する命令がその上で動作するようにメモリ64もしくはストレージ66中のデータのコピーであってよく、またはプロセッサ62において実行する後続の命令によるアクセスのために、もしくはメモリ64もしくはストレージ66に書き込むためにプロセッサ62において実行された過去の命令の結果であってよく、または他の適切なデータであってよい。データ・キャッシュは、プロセッサ62による読み取りまたは書き込み動作を高速化することができる。TLBは、プロセッサ62に対する仮想アドレス変換を高速化することができる。特定の実施形態において、プロセッサ62は、データ、命令、またはアドレス用に、1つまたは複数の内部レジスタを含むことができる。本開示は、必要な場合、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ62を企図している。必要な場合、プロセッサ62は、1つまたは複数の算術論理装置(ALU)を含むことができ、マルチコア・プロセッサであってよく、または1つもしくは複数のプロセッサ62を含んでもよい。本開示は、特定のプロセッサを記載しかつ示しているが、本開示は、任意の適切なプロセッサを企図している。
特定の実施形態において、メモリ64は、プロセッサ62が実行するための命令、またはプロセッサ62がそれに対する動作をするためのデータを格納するための主メモリを含む。限定ではなく一例として、コンピュータ・システム60は、ストレージ66または別のソース(例えば、別のコンピュータ・システム60など)からメモリ64に命令をロードすることができる。次いで、プロセッサ62は、メモリ64から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するためにプロセッサ62は、内部レジスタまたは内部キャッシュから命令を取得し、命令をデコードすることができる。命令の実行中または実行後に、プロセッサ62は、(途中結果または最終結果であり得る)1つまたは複数の結果を内部レジスタまたは内部キャッシュに書き込むことができる。次いで、プロセッサ62は、こうした結果の1つまたは複数をメモリ64に書き込むことができる。特定の実施形態において、プロセッサ62は、(ストレージ66もしくは他の箇所とは対照的に)1つもしくは複数の内部レジスタもしくは内部キャッシュまたはメモリ64中の命令のみを実行し、(ストレージ66もしくは他の箇所とは対照的に)1つもしくは複数の内部レジスタもしくは内部キャッシュまたはメモリ64中のデータに対してのみ動作する。(アドレス・バスおよびデータ・バスをそれぞれが含むことができる)1つまたは複数のメモリ・バスは、プロセッサ62をメモリ64に結合させることができる。バス72は、後述のように、1つまたは複数のメモリ・バスを含むことができる。特定の実施形態において、1つまたは複数のメモリ管理ユニット(MMU)は、プロセッサ62とメモリ64との間にあり、プロセッサ62によって要求されたメモリ64へのアクセスを促進する。特定の実施形態において、メモリ64は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、必要な場合、揮発性メモリであってよい。必要な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であってよい。また、必要な場合、このRAMは、シングルポートまたはマルチポートのRAMであってよい。本開示は、任意の適切なRAMを企図している。メモリ64は、必要な場合、1つまたは複数のメモリ64を含むことができる。本開示は、特定のメモリを記載しかつ示しているが、本開示は、任意の適切なメモリを企図している。
特定の実施形態において、ストレージ66は、データまたは命令用にマス・ストレージを含む。限定ではなく一例として、ストレージ66は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、もしくはユニバーサル・シリアル・バス(USB)ドライブ、またはこれらの2つ以上の組合せを含むことができる。ストレージ66は、必要な場合、リムーバブルまたはノンリムーバブルな(もしくは固定された)媒体を含むことができる。ストレージ66は、必要な場合、コンピュータ・システム60の内部または外部にあってよい。特定の実施形態において、ストレージ66は、不揮発性のソリッドステート・メモリである。特定の実施形態において、ストレージ66は、リード・オンリ・メモリ(ROM)を含む。必要な場合、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気消去可能PROM(EEPROM)、電気式書換え可能ROM(EAROM)、もしくはフラッシュ・メモリ、またはこれらの2つ以上の組合せであってよい。本開示は、マス・ストレージ66が任意の適切な物理的形態を取ることを企図している。ストレージ66は、必要な場合、プロセッサ62とストレージ66との間の通信を促進する1つまたは複数のストレージ制御ユニットを含むことができる。必要な場合、ストレージ66は、1つまたは複数のストレージ66を含むことができる。本開示は、特定のストレージを記載しかつ示しているが、本開示は、任意の適切なストレージを企図している。
特定の実施形態において、I/Oインターフェース68は、ハードウェア、ソフトウェア、またはこの両方を含み、コンピュータ・システム60と1つまたは複数のI/Oデバイスとの間の通信のための1つまたは複数のインターフェースを提供する。コンピュータ・システム60は、必要な場合、こうしたI/Oデバイスの1つまたは複数を含むことができる。こうしたI/Oデバイスの1つまたは複数は、人とコンピュータ・システム60との間の通信を可能にすることができる。限定ではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロホン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/Oデバイス、またはこれらの2つ以上の組合せを含むことができる。I/Oデバイスは、1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/Oデバイス、および、このための任意の適切なI/Oインターフェース68を企図している。必要な場合、I/Oインターフェース68は、こうしたI/Oデバイスの1つまたは複数をプロセッサ62に駆動させることを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインターフェース68は、必要な場合、1つまたは複数のI/Oインターフェース68を含むことができる。本開示は、特定のI/Oインターフェースを記載しかつ示しているが、本開示は、任意の適切なI/Oインターフェースを企図している。
特定の実施形態において、通信インターフェース70は、ハードウェア、ソフトウェア、またはこの両方を含み、コンピュータ・システム60と、1つもしくは複数の他のコンピュータ・システム60または1つもしくは複数のネットワークとの間の通信(例えば、パケット・ベースの通信など)のための1つまたは複数のインターフェースを提供する。限定ではなく一例として、通信インターフェース70は、イーサネットもしくは他の有線ベースのネットワークと通信するためのネットワーク・インターフェース・コントローラ(NIC)もしくはネットワーク・アダプタ、またはWI−FIネットワークなどのワイヤレス・ネットワークと通信するためのワイヤレスNIC(WNIC)もしくはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワーク、および、このための任意の適切な通信インターフェース70を企図している。限定ではなく一例として、コンピュータ・システム60は、アド・ホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、もしくは、インターネットの1つもしくは複数の部分、またはこれらの2つ以上の組合せと通信することができる。こうしたネットワークの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスであってよい。一例として、コンピュータ・システム60は、ワイヤレスPAN(WPAN)(例えば、ブルートゥース(登録商標)WPANなど)、WI−FI(登録商標)ネットワーク、WI−MAX(登録商標)ネットワーク、セルラ電話ネットワーク(例えば、モバイル通信用グローバル・システム(GSM(登録商標))ネットワークなど)、もしくは他の適切なワイヤレス・ネットワーク、またはこれらの2つ以上の組合せと通信することができる。コンピュータ・システム60は、必要な場合、こうしたネットワークのいずれかのための任意の適切な通信インターフェース70を含むことができる。通信インターフェース70は、必要な場合、1つまたは複数の通信インターフェース70を含むことができる。本開示は、特定の通信インターフェースを記載しかつ示しているが、本開示は、任意の適切な通信インターフェースを企図している。
特定の実施形態において、バス72は、ハードウェア、ソフトウェア、またはこの両方を含み、コンピュータ・システム60の構成要素を互いに結合している。限定ではなく一例として、バス72は、アクセラレーテッド・グラフィクス・ポート(AGP)もしくは他のグラフィクス・バス、拡張業界標準アーキテクチャ(EISA)バス、フロント・サイド・バス(FSB)、ハイパートランスポート(HT)インターコネクト、業界標準アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、ロー・ピン・カウント(LPC)バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、PCIエキスプレス(PCIe)バス、シリアル・アドバンスド・テクノロジ・アタッチメント(SATA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション・ローカル(VLB)バス、もしくは別の適切なバス、またはこれらの2つ以上の組合せを含むことができる。バス72は、必要な場合、1つまたは複数のバス72を含むことができる。本開示は、特定のバスを記載しかつ示しているが、本開示は、任意の適切なバスまたはインターコネクトを企図している。
本明細書において、コンピュータ読み取り可能非一時的記憶媒体は、必要な場合、1つもしくは複数の半導体ベースもしくは他の集積回路(IC)(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)、もしくは特定用途向けIC(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、ソリッドステート・ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、任意の他の適切なコンピュータ読み取り可能非一時的記憶媒体、またはこれらの2つ以上の組合せを含むことができる。コンピュータ読み取り可能非一時的記憶媒体は、必要に応じて、揮発性、不揮発性、または揮発性と不揮発性との組合せであってよい。
本明細書において、「または」は、別段明示的に示されず別段文脈によっても示されない場合、包括的であり排他的ではない。したがって、本明細書において、「AまたはB」は、別段明示的に示されず別段文脈によっても示されない場合、「A、B、または両方」を意味する。また、「および」は、別段明示的に示されず別段文脈によっても示されない場合、共にと別々の両方のことである。したがって、本明細書において、「AおよびB」は、別段明示的に示されず別段文脈によっても示されない場合、「共にまたは別々にAおよびB」を意味する。
本開示の範囲は、当業者が認識することになる、本明細書に記載または示した例示的な実施形態の変形、置換、変化、改変、および変更をすべて含む。本開示の範囲は、本明細書に記載または示した例示的な実施形態に限定されない。また、本開示は、それぞれの実施形態を、特定の構成要素、要素、機能、動作、または工程を含みものとして本明細書に記載しかつ示したが、これらの実施形態のいずれも、当業者が認識することになる、本明細書のいずれかの箇所に記載または示された構成要素、要素、機能、動作、または工程のいずれかの任意の組合せまたは並べ替えを含むことができる。さらに、装置もしくはシステム、または装置もしくはシステムの構成要素が、特定の機能を行う、ようになされた、ように配置された、ことが可能な、ように構成された、ことを可能にする、ように動作可能な、または、ように動作する、といったことに対する特許請求の範囲における言及は、それまたはその特定の機能がアクティブ化、ターン・オン、またはアンロックされているかどうかにかかわらず、こうした装置、システム、または構成要素が、そのようになされ、配置され、可能であり、構成され、可能にし、動作可能であり、または動作する限り、こうした装置、システム、構成要素を含む。