(57)【特許請求の範囲】
【請求項１】
サービスが呼び出されることに応答して１つまたは複数のノードにアクセス制御クエリを構成するための情報を受信するステップであって、前記サービスは、第１のユーザに関連するソーシャル・グラフのリソースへのアクセスを要求するためにアクセス制御クエリを使用するように構成され、前記リソースのサブセットは前記ソーシャル・グラフの一部分内のノードに関連する、ステップと、
前記アクセス制御クエリが前記ノードに関連する前記ソーシャル・グラフの前記リソースの前記サブセットで動作するように前記ノードに前記アクセス制御クエリをアタッチするステップであって、前記アクセス制御クエリは、第２のユーザと前記リソースとの関係を表す履歴情報、および、前記第２のユーザと前記リソースの所有者である前記第１のユーザとの関係を表す履歴情報の少なくとも１つに応じて、前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを示す情報を返す、ステップと
を含む、プロセッサによって実行される方法。
【請求項２】
第２のユーザから、前記ノードに関連する前記リソースの前記サブセットにアクセスするための要求を受信し、前記要求を受信することに応答して前記アクセス制御クエリを呼び出すステップを含む請求項１に記載の方法。
【請求項３】
前記アクセス制御クエリを呼び出すステップは、前記第１のユーザとの前記第２のユーザの関係を表す履歴情報または前記リソースの前記サブセットとの前記第２のユーザの関係を表す履歴情報の少なくとも１つに基づいて、要求を許可するか、それとも拒否するかを決定するステップを含み、前記関係は、前記ソーシャル・グラフのエッジによって表される請求項２に記載の方法。
【請求項４】
前記アクセス制御クエリを呼び出すステップは、前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを示すブール値を返すステップを含む請求項３に記載の方法。
【請求項５】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記第１のユーザが、前記ノードに関連する前記リソースの前記サブセットへのアクセスを要求するサービスを呼び出すことに応答して、前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１に記載の方法。
【請求項６】
前記第１のユーザが前記サービスを呼び出すことに応答して、前記第１のユーザに関連する前記ソーシャル・グラフの前記一部分に前記ノードを追加し、次に前記新しく追加されたノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項５に記載の方法。
【請求項７】
前記第１のユーザが前記サービスを終了することに応答して前記アクセス制御クエリを削除するステップをさらに含む請求項５に記載の方法。
【請求項８】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記第１のユーザが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１に記載の方法。
【請求項９】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記ソーシャル・グラフを所有するサービス・プロバイダが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１に記載の方法。
【請求項１０】
第１のユーザによって所有されるソーシャル・グラフのリソースに対してアクセス制御クエリを実行するように構成されたサービスを呼び出すステップであって、前記リソースのサブセットは前記ソーシャル・グラフの一部分内のノードに関連する、ステップと、
前記アクセス制御クエリが、第２のユーザと前記リソースとの関係を表す履歴情報、および、前記第２のユーザと前記リソースの所有者である前記第１のユーザとの関係を表す履歴情報の少なくとも１つに応じて、前記ノードと関連する前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを決定するように、サービスを呼び出すことに応答して前記ノードに前記アクセス制御クエリをアタッチするステップと
を含む、プロセッサによって実行される方法。
【請求項１１】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記第１のユーザが、前記ノードに関連する前記リソースの前記サブセットへのアクセスを要求するサービスを呼び出すことに応答して、前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１０に記載の方法。
【請求項１２】
前記第１のユーザが前記サービスを呼び出すことに応答して、前記第１のユーザに関連する前記ソーシャル・グラフの前記一部分に前記ノードを追加し、次に前記新しく追加されたノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項１１に記載の方法。
【請求項１３】
前記第１のユーザが前記サービスを終了することに応答して前記アクセス制御クエリを削除するステップをさらに含む請求項１１に記載の方法。
【請求項１４】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記第１のユーザが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１０に記載の方法。
【請求項１５】
前記ノードに前記アクセス制御クエリをアタッチするステップは、前記ソーシャル・グラフを所有するサービス・プロバイダが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチするステップを含む請求項１０に記載の方法。
【請求項１６】
第２のユーザから、前記ノードに関連する前記リソースの前記サブセットにアクセスするための前記サービスを使用する要求を受信し、前記要求を受信することに応答して前記アクセス制御クエリを呼び出すステップを含む請求項１０に記載の方法。
【請求項１７】
前記アクセス制御クエリを呼び出すステップは、前記第１のユーザとの前記第２のユーザの関係を表す履歴情報または前記リソースの前記サブセットとの前記第２のユーザの関係を表す履歴情報の少なくとも１つに基づいて、要求を許可するか、それとも拒否するかを決定するステップを含み、前記関係は、前記ソーシャル・グラフのエッジによって表される請求項１６に記載の方法。
【請求項１８】
前記アクセス制御クエリを呼び出すステップは、前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを示すブール値を返すステップを含む請求項１６に記載の方法。
【請求項１９】
前記要求が許可されることを示す前記ブール値を返す前記アクセス制御クエリに応答して前記リソースへのアクセスを有する前記サービスを提供するステップをさらに含む請求項１８に記載の方法。
【請求項２０】
ソーシャル・グラフの一部分へのアクセス制御を提供する装置であって、
データ記憶装置と、
前記データ記憶装置と通信可能に結合されるプロセッサと
を含み、前記プロセッサは、
サービスが呼び出されることに応答して１つまたは複数のノードにアクセス制御クエリを構成するための情報を受信するステップであって、前記サービスは、第１のユーザに関連するソーシャル・グラフのリソースへのアクセスを要求するためにアクセス制御クエリを使用するように構成され、前記リソースのサブセットは前記ソーシャル・グラフの前記一部分内のノードに関連する、ステップと、
前記アクセス制御クエリが前記ノードに関連する前記ソーシャル・グラフの前記リソースの前記サブセットで動作するように前記ノードに前記アクセス制御クエリをアタッチするステップであって、前記アクセス制御クエリは、第２のユーザと前記リソースとの関係を表す履歴情報、および、前記第２のユーザと前記リソースの所有者である前記第１のユーザとの関係を表す履歴情報の少なくとも１つに応じて、前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを示す情報を返す、ステップとを含むプログラムを実行するように構成された装置。
【請求項２１】
前記プロセッサが実行する前記プログラムは、第２のユーザから、前記ノードに関連する前記リソースの前記サブセットにアクセスするための要求を受信し、前記要求を受信することに応答して前記アクセス制御クエリを呼び出すステップをさらに含む請求項２０に記載の装置。
【請求項２２】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが前記ノードに関連する前記リソースの前記サブセットへのアクセスを要求するサービスを呼び出すことに応答して、前記ノードに前記アクセス制御クエリをアタッチすることにより、前記ノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２０に記載の装置。
【請求項２３】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが前記サービスを呼び出すことに応答して、前記第１のユーザに関連するソーシャル・グラフの前記一部分に前記ノードを追加し、次に前記新しく追加されたノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２２に記載の装置。
【請求項２４】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが前記サービスを終了することに応答して前記アクセス制御クエリを削除するステップをさらに含む請求項２２に記載の装置。
【請求項２５】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチすることにより前記ノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２０に記載の装置。
【請求項２６】
前記プロセッサが実行する前記プログラムは、前記ソーシャル・グラフを所有するサービス・プロバイダが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチすることにより、前記ノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２０に記載の装置。
【請求項２７】
ソーシャル・グラフの一部分へのアクセス制御提供する装置であって、
データ記憶装置と、
前記データ記憶装置と通信可能に結合されるプロセッサと
を含み、前記プロセッサは、
第１のユーザによって所有されるソーシャル・グラフのリソースに対してアクセス制御クエリを実行するように構成されたサービスを呼び出すステップであって、前記リソースのサブセットは前記ソーシャル・グラフの前記一部分内のノードに関連するステップと、
前記アクセス制御クエリが、第２のユーザと前記リソースとの関係を表す履歴情報、および、前記第２のユーザと前記リソースの所有者である第１のユーザとの関係を表す履歴情報の少なくとも１つに応じて、前記ノードと関連する前記リソースの前記サブセットにアクセスするための要求が許可されるか、それとも拒否されるかを決定するように、サービスを呼び出すことに応答して前記ノードに前記アクセス制御クエリをアタッチする、ステップとを含むプログラムを実行するように構成された装置。
【請求項２８】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが前記サービスを呼び出すことに応答して、前記第１のユーザに関連する前記ソーシャル・グラフの前記一部分に前記ノードを追加し、次に前記新しく追加されたノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２７に記載の装置。
【請求項２９】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが前記サービスを終了することに応答して前記アクセス制御クエリを削除するステップをさらに含む請求項２７に記載の装置。
【請求項３０】
前記プロセッサが実行する前記プログラムは、前記第１のユーザが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチすることにより前記ノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２７に記載の装置。
【請求項３１】
前記プロセッサが実行する前記プログラムは、前記ソーシャル・グラフを所有するサービス・プロバイダが、前記第１のユーザによって所有される前記ノードに前記アクセス制御クエリをアタッチすることを承認したと決定したことに応答して前記ノードに前記アクセス制御クエリをアタッチすることにより、前記ノードに前記アクセス制御クエリをアタッチするステップをさらに含む請求項２７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１２年３月１９日に出願した、Ｌａｗｒｅｎｃｅ  Ｅ．Ｍｅｎｔｅｎによる米国特許出願第１３／４２３，６９７号「Ｍｅｔｈｏｄ  ｏｆ  Ｅｘｔｅｎｄｉｎｇ  Ｗｅｂ  Ｓｅｒｖｉｃｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅｓ  ｕｓｉｎｇ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅｓ」の一部継続出願である。
【０００２】
本出願は、一般的に、プロセッサベースのシステムに関し、より具体的には、プロセッサベースのシステムのためのアクセス制御に関する。
【背景技術】
【０００３】
本項では、請求される主題についてより深い理解を容易にするのに役に立つ可能性がある態様を紹介する。したがって、本項の記述は、この観点から読むべきであり、何が従来技術であるか、または何が従来技術でないかについて自ら認めるものと理解するべきではない。
【０００４】
一部の知られている通信方式では、ユーザは、ソーシャル・ネットワークを使用して、互いに通信する。ソーシャル・ネットワーキング・サービスは、共通の背景、関心事、または活動を共有できる人々の間の社会的関係の表現に基づいて加入者にサービスを提供するオンライン・サービス、プラットフォーム、またはサイトとして規定することができる。ソーシャル・ネットワークは、典型的には、各ユーザの表現（多くの場合プロフィール）、彼／彼女のソーシャル・リンク、および写真、状況報告、ウェブ・リンクなど様々な追加的な要素から構成される。ほとんどのソーシャル・ネットワーク・サービスはウェブベースであり、電子メールおよびインスタント・メッセージングなど、インターネットを通じてユーザが対話することを可能にするツール／サービスを提供する。ソーシャル・ネットワーキング・サイトは、ユーザが個々のネットワーク内で考え、活動、イベント、および関心事を共有することを可能にする。代表的なソーシャル・ネットワークには、Ｆａｃｅｂｏｏｋ、Ｇｏｏｇｌｅ＋、Ｔｗｉｔｔｅｒ、ＬｉｎｋｅｄＩｎ、ＶＫｏｎｋａｔｋｅ、Ｏｒｋｕｔ、およびＲｅｎＲｅｎが含まれる。
【０００５】
ソーシャル・ネットワークは、ソーシャル・グラフを使用して、個人および彼らの関係を表す。一般的に、ソーシャル・グラフは、（ユーザのアバタとも呼ぶことができる）加入者のオンライン・ペルソナ（ｐｅｒｓｏｎａ）と、他の加入者のオンライン・ペルソナとの関係を記述するものである。したがって、ソーシャル・グラフは、一般的にはソーシャル・ネットワークと呼ばれる、加入者間の現実世界の関係を反映している。たとえば、ソーシャル・ネットワークのソーシャル・グラフは、ノード間の関係によって規定された（リンクまたは接続とも呼ぶことができる）エッジを使用して互いに関連する一連のノード（たとえば、「Ｓｕｂｓｃｒｉｂｅｒ（加入者）」、「ＦｒｉｅｎｄｓＬｉｓｔｓ（友達リスト）」、「ＣｌｏｓｅＦｒｉｅｎｄｓ（親しい友達）」など）として構造化することができる。葉ノードは、親ノードに関連しているが、それらは子ノードを持たない。たとえば、「ＣｌｏｓｅＦｒｉｅｎｄｓ」ノードに関連する葉ノードはそれぞれ、加入者の友達の１人に対する情報を含むデータ構造を含むことができる。ソーシャル・グラフは、また、特定の関心事に関連するグループなど異なるタイプの関係のためのノードだけでなく、写真、音楽、およびウェブ・リンクなど異なるタイプの情報のためのノードも含むことができる。ソーシャル・グラフを構築するノード、エッジ、情報、および関係は、ソーシャル・グラフのリソースと呼ぶことができる。
【０００６】
ソーシャル・グラフのリソースは、関係を表すエッジによってソーシャル・グラフで明示的に接続されていないユーザまたは加入者に関連する場合がある。たとえば、加入者は、親睦会のピクニックですべての卒業生のグループ写真を投稿することができる。グループ写真は、加入者のＦｒｉｅｎｄｓＬｉｓｔｓまたはＣｌｏｓｅＦｒｉｅｎｄｓのグループに記載されている人々およびソーシャル・グラフの加入者にリンクされていない他の人々の画像を含むことができる。加入者または加入者の友達は、加入者にリンクされていないグループ写真の人々を識別または「タグ付け」することができる。他の例では、加入者は、グループを規定したが、ソーシャル・グラフで互いにリンクされていない可能性がある加入者にすべてリンクされている他の加入者を含む、「Ｂｕｓｉｎｅｓｓ＿Ｌｕｎｃｈ＿Ｇｒｏｕｐ」などのグループを規定することができる。ともにリンクされている加入者は、ビジネス・ランチをスケジューリングするための計画メッセージなど、ソーシャル・ネットワークを通じて情報を交換することができない場合がある。
【０００７】
ソーシャル・ネットワークのプロバイダは、サービスまたはアプリケーション（アプリ）を実装するためにソーシャル・グラフの情報を使用する。開発者は、ソーシャル・ネットワーク・プロバイダによって開発およびサポートされるアプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用して、サービスまたはアプリケーションを作成することができる。ソーシャル・ネットワークのためのＡＰＩは通常、クライアントおよびサーバから構成されるＲｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ）構造を実装する。クライアントは、サーバへの要求を開始し、サーバは要求を処理し、適切な応答をクライアントに返す。要求および応答は、リソースの表現の転送について構築される。リソースは、実質的に、アドレス指定することができる任意の一貫性および意味のある概念でもよい。リソースの表現は、典型的には、リソースの現在の、または意図する状態を収めるドキュメントである。一般的に、ＲＥＳＴ−ｆｕｌ構造は、クライアントサーバ・ベース、ステートレス、キャッシュ可能、レイヤ構造であり、一様なインターフェースを使用する必要があり、要求に応じてコードを提供することができる。たとえば、Ｆａｃｅｂｏｏｋなどソーシャル・ネットワークのためのＡＰＩは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求メッセージの規定された組とともに、たとえば、拡張マークアップ言語（ＸＭＬ）またはＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）形式の応答メッセージの構造の定義を含む。
【発明の概要】
【課題を解決するための手段】
【０００８】
以下は、開示された内容の一部の態様について基本的な理解を得るために、開示された内容を単純化して概要を示すものである。この概要は、開示された内容の完全な概要ではない。これは、開示された内容の重要または不可欠な要素を特定することも、開示された内容の範囲を示すことも意図するものではない。その唯一の目的は、後で記述するより詳細な記述の準備として、単純化した形で一部の概念を示すことである。
【０００９】
一実施形態では、ソーシャル・グラフのリソースへのアクセスを制御するための方法が提供される。方法の一実施形態は、サービスが呼び出されることに応答してクエリを構成するための情報を受信するステップを含む。サービスは、第１のユーザに関連するソーシャル・グラフの一部分内のノードに関連するリソースへのアクセスを要求ためにクエリを使用するように構成される。方法は、また、ノードにクエリを関連させるステップを含む。クエリは、ノードに関連するリソースに対して動作し、ソーシャル・グラフの現在の状態に応じて、リソースにアクセスするための要求が許可されるか、それとも拒否されるかを示す情報を返す。
【００１０】
他の実施形態では、ソーシャル・グラフのリソースへのアクセスを制御するための方法が提供される。方法の一実施形態は、第１のユーザによって所有されるソーシャル・グラフの一部分内のノードに関連するリソースに対してクエリを実行するように構成されたサービスを呼び出すステップを含む。方法のこの実施形態は、また、サービスを呼び出すことに応答してノードにクエリを関連させるステップを含む。クエリは、ソーシャル・グラフの現在の状態に応じて、ノードに関連するリソースにアクセスするための要求を許可するか、それとも拒否するかを決定する。
【００１１】
開示された内容は、同じ参照番号は同じ要素を示している添付の図面とともに以下の記述を参照することによって理解されるだろう。
【図面の簡単な説明】
【００１２】
【図１】通信システムの代表的な一実施形態を概念的に示す図である。
【図２】ソーシャル・グラフの一部分の第１の代表的な実施形態を概念的に示す図である。
【図３】ソーシャル・グラフに対するアクセス制御を修正するための方法の第１の代表的な実施形態を概念的に示す図である。
【図４】ソーシャル・グラフへの修正されたアプリケーション・プログラミング・インターフェースにクエリする方法の代表的な一実施形態を概念的に示す図である。
【図５】ソーシャル・グラフへのアプリケーション・プログラミング・インターフェースへの修正を取り除くまたは逆転させる方法の代表的な一実施形態を概念的に示す図である。
【図６】ソーシャル・グラフの一部分の第２の代表的な実施形態を概念的に示す図である。
【図７】ソーシャル・グラフに対するアクセス制御を修正するための方法の第２の代表的な実施形態を概念的に示す図である。
【発明を実施するための形態】
【００１３】
例示的実施形態について以下に記述する。分かりやすくするために、実際の実装のすべての機能が本明細書に記述されているとは限らない。もちろん、そのような実際の実施形態を開発する際に、実装によって異なる、システム関連およびビジネス関連の制約への遵守など、開発者の特定の目標を達成するために多数の実装特有の決定が下されるべきであることを理解されたい。さらに、そのような開発努力は、複雑かつ時間がかかる可能性があるが、本開示の利益を受ける当業者にとっては日常的な仕事であろうことを理解されたい。記述および図は、単に特許請求される主題の原理を示すものである。したがって、本明細書に明示的に記述または図示していないが、本明細書に記述した原理を具体化し、特許請求された主題の範囲内に含まれ得る様々な構成を当業者であれば考案できることを理解されたい。さらに、本明細書に詳述したすべての例は、原則として、読者が特許請求された主題の原則およびその技術を推進する発明者（ら）によって提供された概念を理解するのを支援するために、教育のみを目的とすることを明確に意図するものであり、そのような具体的に詳述された例および条件に限定しないものとして解釈するべきである。
【００１４】
ここで、開示された内容について、添付の図面に関して記述する。様々な構造、システム、およびデバイスは、説明のみを目的として、かつ当業者に周知の詳細によって記述を不明瞭にしないように、図面に概略的に示している。しかし、添付の図は、開示された内容の実例となる例を記述し説明するために含まれている。本明細書に使用される単語および句は、当業者によるそれらの単語および句の理解に一致する意味を持つものと理解および解釈するべきである。本明細書において用語または句を一貫して使用することによって、用語または句の特別な定義、つまり、当業者によって理解されている通常および慣習的な意味とは異なる定義を意味することを意図するものではない。用語または句が特別な意味、つまり当業者によって理解されるものと異なる意味を持つことを意図する場合は、そのような特別な定義は、用語または句の特別な定義を直接的かつ明白に提供する定義方法で明細書に特に記述することになる。さらに、本明細書に使用する「または（ｏｒ）」という用語は、そうでないことが明記されていない限り（たとえば、「さもなければ（ｏｒ  ｅｌｓｅ）」または「別の方法では（ｉｎ  ｔｈｅ  ａｌｔｅｒｎａｔｉｖｅ）」など）、非排他的な「または（ｏｒ）」を示している。また、本明細書に記述した様々な実施形態は、必ずしも相互排他的ではなく、一部の実施形態は、新しい実施形態を形成するために、１つまたは複数の他の実施形態と組み合わせることができる。
【００１５】
ソーシャル・ネットワーク・サービスの加入者（またはその他のユーザ）は、加入者の個人情報の安全および秘密を維持するために、ソーシャル・ネットワーク・サービスのプロバイダに応じている。しかし、加入者は、また、たとえば「ＦｒｉｅｎｄｓＬｉｓｔｓ」に示される加入者など、選択された加入者に個人情報をブロードキャスト、送信、または表示するためにソーシャル・ネットワーク・サービスを使用する。ソーシャル・ネットワーク・サービスのプロバイダは、ソーシャル・グラフの特定部分に関連するリソースにユーザがアクセスできるかどうかを決定するアクセス制御ポリシーを規定することによって、情報を公開し、かつそれを秘密に維持するという競合する要望のバランスをとることを試みる。たとえば、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒの「ＦｒｉｅｎｄｓＬｉｓｔｓ」で指定されたユーザは、典型的には、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒによって投稿された状態の更新、写真、または他の情報を見ることができる。ネットワークにおけるＪｏｅの友達は、また、たとえば、彼の「ウォール」に書き込むか、または彼が投稿した情報に関してコメントすることによって、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒに情報を送信または投稿できる場合がある。他のユーザは、典型的には、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒによって投稿された情報を見ることができないか、または彼が投稿した情報に関してコメントすることができない。加入者は、たとえば、一部のカテゴリの情報を公開する、または他の情報カテゴリへのアクセスを友達または友達の友達に制限することによって、情報へのアクセスを制御する能力が制限されている。
【００１６】
ソーシャル・グラフの情報に誰がアクセスできるかを決定するアクセス制御ポリシーは、一般的に静的である。たとえば、現在のＲＥＳＴｆｕｌウェブ・サービスＡＰＩは、ソーシャル・グラフのリソースおよびそれらのリソースへのアクセスをゲート制御するアクセス制御方式の両方を静的に規定する。アクセス制御方式は、エンド・ユーザ／加入者によって、またはアプリケーション開発者もしくは他のサード・パーティによって拡張可能ではない。したがって、加入者は、事前規定されたセキュリティ設定を使用して、個人情報へのアクセスを制限することができるが、加入者もサード・パーティも、事前規定されたセキュリティ設定を変更することはできない。結果として、アプリケーションの操作に必要なアクセスを許可するには、エンド・ユーザより広範なリソースへのアクセスを許可することを必要とするか、またはサービス・プロバイダは、たとえば、いつでもすべてのユーザに対してグローバルに許可する意思があるため、潜在的に価値のある多数のアプリケーションを作成することができない。
【００１７】
本出願に記述した技術の実施形態は、開発者またはサード・パーティが、ソーシャル・グラフの現在の状態に基づいて、関連するリソースへのアクセスを許可する、（既存または新しい）リソースにクエリをアタッチすることを可能にすることができる。たとえば、クエリは、リソースを所有するユーザとの要求元ユーザの関係、リソースとの要求元ユーザの関係、または両方の基準の組み合わせに基づいて、リソースへのアクセスを許可することができる。リソースへのアクセスは、また、リソース所有者とリソース要求元との間の過去の対話に基づいて、許可することも、または拒否することもできる。たとえば、写真に頻繁に現れた、またはリソース所有者によって所有されるリソースに頻繁にコメントした要求元にアクセスを許可することができる。アクセスを許可するクエリは、リソースへのアクセスが許可されたかどうかを示すブール値を返す。ユーザまたはソーシャル・ネットワーク・サービスのプロバイダは、アクセス制御クエリをソーシャル・グラフに追加することができる前に、リソースにクエリをアタッチすることを承認することができる。開発者または他のサード・パーティは、ユーザのリソースに条件付きアクセスを提供できるクエリを作成し、次にユーザのリソースの拡大されたアクセス可能性を利用するアプリケーションまたはサービスを作成するためにこれらのクエリを使用することができる。たとえば、開発者は、第１のユーザによって投稿された写真などのリソースへのアクセスを許可するアプリケーションを作成できるため、第１のユーザによって所有されるリソースの読み込みまたは書き込みが通常は承認されていなくても、写真でタグを付けられたユーザまたは加入者は、写真に関してコメントすることができる。アクセス制御クエリは、動的または一時的な場合がある。たとえば、承認されたアクセス制御クエリは、ユーザが、アクセス制御クエリを使用するサービスを開始することに応答して、ユーザのリソースにアタッチすることができ、次に、サービスが終了するときに、アクセス制御クエリを除去することができる。
【００１８】
図１は、通信システム１００の代表的な一実施形態を概念的に示す図である。図示する実施形態では、通信システム１００は、複数の加入者またはユーザ１０５を含む。本明細書で使用する場合、「加入者」という用語は、ソーシャル・グラフをサポートするソーシャル・ネットワーク・サービスに申し込んだユーザを表すものと理解される。「ユーザ」という用語は、ソーシャル・グラフで参照できるか、またはソーシャル・グラフに関連している可能性があるが、必ずしもソーシャル・ネットワーク・サービスの加入者ではない人々またはエンティティを表している。したがって、加入者は、ソーシャル・ネットワーク・サービスに関連するユーザのサブセットの場合がある。たとえば、加入者は、ソーシャル・ネットワーク・サービスの登録されたユーザと呼ぶことができる。ユーザ１０５は、スマート・フォンなどの移動通信装置として示されている。しかし、本開示の恩恵を受ける当業者は、「ユーザ」という用語は、通信システム１００にアクセスするために使用される電子デバイス、またはデバイスを所有または運用する人を表すことができることを理解されたい。さらに、当業者は、電子デバイスは移動通信装置に限定されず、一部の実施形態では、タブレット型コンピュータ、ラップトップ型コンピュータ、デスクトップ型コンピュータなどのデバイスも、通信システム１００にアクセスするために使用することができることを理解されたい。様々な実施形態において、ユーザ１０５は、有線接続、無線接続、またはそれらの任意の組み合わせを使用して、通信システム１００にアクセスすることができる。
【００１９】
ユーザ１０５は、１つまたは複数のソーシャル・ネットワーク・サービス１１０、１１５に加入することができる。代表的なソーシャル・ネットワーク・サービスには、Ｆａｃｅｂｏｏｋによって提供されるソーシャル・ネットワーク・サービス１１０、およびＧｏｏｇｌｅ＋によって提供されるソーシャル・ネットワーク・サービス１１５が含まれる。しかし、本開示の恩恵を受ける当業者は、通信システム１００の代替実施形態は、Ｔｗｉｔｔｅｒ、ＬｉｎｋｅｄＩｎ、ＶＫｏｎｋａｔｋｅ、Ｏｒｋｕｔ、ＲｅｎＲｅｎなど、他のソーシャル・ネットワーク・サービスを含むことができることを理解されたい。図示する実施形態では、ユーザ１０５（１〜４）は、ソーシャル・ネットワーク・サービス１１０に加入しており、ユーザ１０５（４〜５）は、ソーシャル・ネットワーク・サービス１１５に加入している。したがって、ユーザ１０５はプロフィールを作成し、ソーシャル・ネットワーク・サービス１１０、１１５のソーシャル・グラフの他の加入者との関係を築いておくことができる。ユーザ１０５、ユーザ１０５に関係する情報、およびユーザ１０５間の関係は、ソーシャル・グラフの構造によって表すことができる。たとえば、ソーシャル・ネットワーク１１０のソーシャル・グラフは、ノード間の関係によって規定されたエッジを使用して互いに関連されたノード（たとえば、「Ｓｕｂｓｃｒｉｂｅｒ」、「ＦｒｉｅｎｄｓＬｉｓｔｓ」、「ＣｌｏｓｅＦｒｉｅｎｄｓ」など）を含むことができる。
【００２０】
アプリケーション開発者１２０は、ユーザ１０５、またはユーザ１０５に狙いを定めた広告を提供することを試みる広告主など他のサード・パーティのために有益な情報を生成および提供するために、ソーシャル・ネットワーク１１０、１１５のソーシャル・グラフの情報を使用するアプリケーション（アプリ）またはサービスを開発することができる。アプリケーション開発者１２０は、ソーシャル・ネットワーク・サービス１１０、１１５に対してアプリケーション・プログラミング・インターフェース（ＡＰＩ）１２５、１３０を使用するアプリケーションまたはサービスをそれぞれ作成または規定する。ＡＰＩ１２５、１３０は、ソーシャル・ネットワーク・サービス１１０、１１５のプロバイダまたは所有者によって最初に規定され、同じＡＰＩ１２５、１３０は、ユーザ１０５のすべてに対してサポートされる。一実施形態では、ＡＰＩ１２５、１３０は、Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ）構造によって課された制約に準拠する。ソーシャル・ネットワーキング・サイト１１０、１１５へのＲＥＳＴ−ｆｕｌウェブ・サービスＡＰＩ１２５、１３０は、（サービスＡＰＩによって規定された）リソース階層を提供し、各ユーザ１０５に関連するソーシャル・ネットワーク情報の様々な要素への読み込みまたは書き込みアクセスをサポートすることができる。たとえば、リソース階層は、情報のカテゴリまたはサブセットを規定する非葉ノードを含むツリーを規定することができる。ツリーは、また、ウェブ・サービスＡＰＩ１２５、１３０を通じて読み込みまたは書き込みできるデータのインスタンスを表すノードまたは葉を規定することができる。この構成は、多くのウェブ・サービスにおいて一般的である。従来のウェブ・サービスで、リソース指定方式は、サービス・プロバイダによって規定されており拡張可能ではない。
【００２１】
本明細書に記述したように、ソーシャル・ネットワーキング・サイト１１０、１１５へのＲＥＳＴ−ｆｕｌウェブ・サービスＡＰＩ１２５、１３０は、リソース、およびリソースへのアクセスを制御またはゲート制御するアクセス制御方式を静的に規定する。本明細書に記述した技術の実施形態は、たとえば、ユーザごとまたはサービスごとまたはアプリケーションごとにアクセス制御権を拡大することによって、より柔軟なアクセス制御をサポートするために、ＡＰＩ１２５、１３０の拡大または拡張を可能にする。拡大されたアクセス制御権は、ソーシャル・グラフの現在の状態に応じてアクセスを許可するために使用することができる。たとえば、選択されたリソースへのアクセスは、選択されたリソースとの関係またはリソースの所有者との関係に応じて、ユーザまたは加入者に条件付きで許可することができる。一実施形態では、新しいサービスまたはアプリケーションによって必要な可能性があるＲＥＳＴｆｕｌウェブ・サービスに対するアクセス制御の粒度を予想する試みの代わりに、アプリケーション開発者は、適切に規定されたクエリ表現を使用して、アクセス制御をカスタマイズすることができる場合がある。
【００２２】
アクセス制御クエリの様々な実施形態は、論理式を使用して規定することができ、異なる値を返すことができる。一実施形態では、開発者は、ユーザがウェブ・サービス・リソースにアクセスできるかどうかを決定するために、ウェブ・サービス・リソースに対して適用できるブール値（真／偽）のクエリ表現を選択または指定することができる。開発者は、ユーザのアクセス制御状態を示すために使用できる他のパラメータを返すクエリ表現を代わりに選択または指定することができる。たとえば、関係するリソースにユーザが以前にアクセスした回数を示すカウンタ値を返すクエリ表現が、ウェブ・サービス・リソースへのアクセスがユーザに与えられるかどうかを決定するために使用される。より複雑なクエリを規定することもできる。たとえば、アクセス制御を許可するクエリ表現は、ブール（真または偽）結果を提供するために、論理演算子（たとえば「ＡＮＤ」、「ＯＲ」、または「ＮＯＴ」）または数学的な比較演算子（＜、＜＝、＞＋、＝＝、！＝）を用いてクエリの結果を組み合わせる論理式を返すクエリの場合がある。他の例では、真／偽結果を提供するために、１つまたは複数のクエリの「結果の組」の行および列で動作する、たとえばＪａｖａＳｃｒｉｐｔで表現された、動的な言語の機能を提供することができる。したがって、たとえば、２つのクエリを含むアクセス制御クエリ表現は、以下の形式の場合がある。
”（０＜（ＳＥＬＥＣＴ  ｃｏｕｎｔ  ｆｒｏｍ  ｆｒｉｅｎｄｓ＿ｔａｂｌｅ  ｗｈｅｒｅ．．．））ＡＮＤ（６＜
（ＳＥＬＥＣＴ  ｃｏｕｎｔ  ｆｒｏｍ  ｐｈｏｔｏｓ＿ｔａｂｌｅ  ｗｈｅｒｅ．．．））”
あるいは、ＪａｖａＳｃｒｉｐｔ機能を用いて、クエリ表現は、以下の形式の場合がある。
”ｆｕｎｃｔｉｏｎ  ｈａｓＲｅｑｕｅｓｔｅｄＡｃｃｅｓｓ（Ｒｅｑｕｅｓｔ＿ＵＲＩ）｛
ｖａｒ  ｒｓ＝ｄｂ．ｅｘｅｃｕｔｅ（’ｓｅｌｅｃｔ  ｆｒｉｅｎｄ  ｆｒｏｍ  ｆｒｉｅｎｄｓ＿ｔａｂｌｅ  ｗｈｅｒｅ．．．’）；
ｗｈｉｌｅ（ｒｓ．ｉｓＶａｌｉｄＲｏｗ（））｛
．．．
｝
ｒｅｔｕｒｎ  ｉｓＡｃｃｅｓｓＧｒａｎｔｅｄ；
｝”
本開示の恩恵を受ける当業者は、前述の代表的なクエリは、説明を意図していることを理解されたい。アクセス制御クエリの代替実施形態は、これらの形式、他のクエリ形式、またはその組み合わせを使用することができる。
【００２３】
クエリ表現は、ＲＥＳＴｆｕｌ動作（ＧＥＴ、ＰＵＴ／ＰＯＳＴ、ＤＥＬＥＴＥ）に関連する場合があり、ウェブ・サービス要求に対するアクセスが許可されるかどうかを決定することができる。クエリ表現は、ＳＱＬ、ＳＰＡＲＱＬ、またはＸＰａｔｈを含む任意のクエリ言語で実装することができる。クエリ表現は、ターゲット・リソースに直接的に関連している場合があり、または多数のリソースに対して適用し、単一の操作でその一部またはすべてを無効化または修正できる追加のリソースとして、ウェブ・サービスに代わりに追加することができる。クエリ表現によって許可された権限の性質を提案または記述する名前または記述は、クエリ表現に関連する場合がある。クエリ表現がウェブ・サービスに拡張として追加される場合、ＲＥＳＴｆｕｌ  ＰＵＴ／ＰＯＳＴ、ＧＥＴ、およびＤＥＬＥＴＥ操作を通じてクエリ表現を確立、読み込み、削除するために使用されるＵＲＩでリソース名の要素として名前を使用することができる。
【００２４】
図示する実施形態では、ユーザ１０５は、ソーシャル・ネットワーク・サービス１１０、１１５の１つまたは複数にリソースを投稿することができ、投稿されたリソースに条件付きアクセスを提供することができるサービスを呼び出すことができる。たとえば、ユーザ１０５（４）は、Ｆａｃｅｂｏｏｋにグループ写真を投稿し、次に写真に載っているユーザ１０５（４）に対してユーザが持つことができる他の関係に関係なく、写真でタグが付けられたユーザへのアクセスを条件付きで許可するためにグループ写真に関連するノードにクエリをアタッチするサービスを呼び出す。ユーザ１０５（１）がユーザ１０５（４）のＦａｃｅｂｏｏｋ友達の場合、ユーザ１０５（１）は、写真に関してコメントすることができる。ユーザ１０５（２）は、ユーザ１０５（４）のＦａｃｅｂｏｏｋ友達ではないかもしれないが、サービスは、ユーザ１０５（２）への条件付きアクセスを許可するためにクエリを使用できるため、ユーザ１０５（２）が写真でタグを付けられていれば、ユーザ１０５（２）は写真に関してコメントすることができる。ユーザ１０５（３）は、ユーザ１０５（４）のＦａｃｅｂｏｏｋ友達でない場合があり、写真でタグを付けられていない場合がある。したがって、クエリは、ユーザ１０５（３）へのアクセスを許可しない。
【００２５】
通信システム１００の実施形態は、新しい葉ノードがアタッチされたノードによって表されるデータの新しい「ビュー」を表す葉ノードを追加することによって、適切な権限を持つ開発者１２０がリソース・ツリーを拡張することを可能にすることができる。これらのノードは、開発者１２０によって指定し、新しい葉ノードが挿入されるツリーの枝によって識別されるデータ・サブセット（またはサブツリー）で動作する１つまたは複数のアクセス制御クエリに関連する場合がある。ノードまたはクエリは、オフラインのウェブ・インターフェースを通じて追加するか、またはＨＴＴＰ  ＰＯＳＴ要求を通じて挿入することができる。クエリ／ビューは、開発者１２０によって指定または規定することも、またはクエリ／ビューは、ソーシャル・ネットワーク・サービス１１０、１１５のプロバイダから利用可能な事前規定された「クエリ／ビュー」のメニューから選択することもできる。様々な代替的実施形態において、クエリ・パラメータは開発者によって規定する、コンテキスト／ノードによって決定する、またはサービスもしくはアプリケーションによって動的に決定することができる。
ｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｐｈｏｔｏｇｒａｐｈｓ
【００２６】
図２は、ソーシャル・グラフ２００の一部分の第１の代表的な実施形態を概念的に示す図である。図示する実施形態では、部分２００は、完全なソーシャル・グラフのサブツリーであり、サブツリー２００は、特定の加入者「Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒ（加入者ジョー）」に関連するノードを含む。部分２００は、入り口ノードまたは親ノードの２０５を介してアクセスすることができる。部分２００は、１つまたは複数のサーバに格納することができ、クライアントは適切なユニフォーム・リソース・インジケータ（ＵＲＩ）または他のアドレスをサーバに送信することによって、入り口ノード２０５にアクセスすることができる。たとえば、入り口ノード２０５は、ＵＲＩアドレスｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒを送信することによってアクセスすることができる。部分２００は、また、入り口ノード２０５または部分２００内の他のノードに接続された子ノード２１０を含む。子ノード２１０は、情報、カテゴリ、他の加入者などに関連する場合がある。たとえば、子ノード２１０は、「友達」「写真」、「プロフィール」、「音楽」などに関連する場合がある。ノード２００は、また、家族、親しい友達、知人、職業上の連絡先などユーザ／加入者の間の関係の性質を示す関心事またはグループを共有する加入者またはユーザのグループと関連する場合がある。ノード２１０は、以下のような対応するアドレスを使用してアクセスすることができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／ＦｒｉｅｎｄｓＬｉｓｔｓ／ＣｌｏｓｅＦｒｉｅｎｄｓ、およびｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｐｈｏｔｏｇｒａｐｈｓ
【００２７】
図示する実施形態では、開発者または他のサード・パーティは、加入者に対応するソーシャル・グラフの部分２００のノード２１０に１つまたは複数のアクセス制御クエリ２１５をアタッチすることができる。アクセス制御クエリ２１５は、写真または他のリソースなど、ノード２１０（１）に関連するリソース２２０に対して動作することができる。一実施形態では、開発者は、クエリ２１５を規定するためにメッセージまたはコマンドを使用し、ソーシャル・グラフ２００へのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を修正するために１つまたは複数のノードにクエリ２１５をアタッチすることができる。たとえば、クエリ２１５は、ノード２１０（１）に関連するリソース２２０に対するアクセス制御を修正するために、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒがクエリ２１５を利用するサービスを呼び出すことに応答して、ノード２１０（１）（たとえばＰｈｏｔｏｇｒａｐｈｓノード）にアタッチすることができる。クエリを呼び出すアドレスの一例は以下のとおりである。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｐｈｏｔｏｇｒａｐｈｓ／Ｐｈｏｔｏ１／Ｔａｇｇｅｄ＿Ｕｓｅｒ
これにより、Ｐｈｏｔｏｇｒａｐｈｓノード２１０（１）にアタッチされたクエリ２１５を呼び出す。クエリ２１５に示されたユーザがＰｈｏｔｏ１でタグを付けられている場合、クエリ２１５はブール値真を返すことができるため、それによって、たとえば、写真に関してコメントするためにリソースへのアクセスをユーザに許可する。そうでない場合、クエリ２１５は、アクセスに対する要求が拒否されたことを示すためにブール値偽を返すことができる。たとえば、写真Ｐｈｏｔｏ１は、Ｆｒａｎｋ  ＦｒｉｅｎｄｌｙおよびＢｏｂ  Ｗｈａｔｓｉｓｎａｍｅに対するタグを含むことができる。タグは、タグ・リスト２２５に、または他の指標を使用して示すことができる。タグ・リスト２２５の「Ｙ」によって示すように、Ｆｒａｎｋ  ＦｒｉｅｎｄｌｙはＪｏｅ  Ｓｕｂｓｃｒｉｂｅｒの友達であり、タグ・リスト２２５の「Ｎ」によって示すように、Ｂｏｂ  ＷｈａｔｓｉｓｎａｍｅはＪｏｅ  Ｓｕｂｓｃｒｉｂｅｒの友達ではない。しかし、Ｂｏｂ  Ｗｈａｔｓｉｓｎａｍｅは写真Ｐｈｏｔｏ１でタグを付けられているため、クエリ２１５は、写真Ｐｈｏｔｏ１への条件付きアクセス権をＢｏｂ  Ｗｈａｔｓｉｓｎａｍｅに許可することができる。
【００２８】
従来のクエリ言語の実施形態は、典型的には、ソーシャル・グラフ２００内の異なる位置またはノードで適用できる単一のクエリを設計できるように十分に柔軟な場合がある。ノードは、開発者によって各クエリ２１５に対して選択することができるか、またはノードは、自動化された手順またはアルゴリズムを使用して選択することができる。たとえば、ソーシャル・ネットワーキング・サイトは、クエリ２１５を検査し、クエリ２１５を適用するべき適切なノードを選択し、ツリーにおいて選択されたノードにクエリ２１５を反復的に（または同時に）適用し、結果を組み合わせることができる。一部の実施形態では、開発者またはサード・パーティは、ソーシャル・グラフ２００にクエリ２１５をアタッチする権限または承認を取得する必要がある場合がある。たとえば、開発者またはサード・パーティは、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒまたはソーシャル・グラフのサービス・プロバイダもしくは所有者から権限または承認を取得する必要がある場合がある。承認は、たとえば、加入者がクエリ２１５を利用するアプリケーションまたはサービスを呼び出したか、または開始した後、加入者がアプリケーションまたはサービスを終了するまでなど、制限された時間のみ有効な場合がある。したがって、クエリ２１５は、一時的または動的なクエリの場合がある。
【００２９】
図３は、ソーシャル・グラフに対するアクセス制御を修正するための方法３００の第１の代表的な実施形態を概念的に示している。図示する実施形態では、アクセス制御クエリは、開発者またはサード・パーティによって生成される（３０５）。アクセス制御クエリは、開発者またはサード・パーティによって作成されたサービスまたはアプリケーションの一部として使用することができる。アクセス制御クエリは、開発者またはサード・パーティによって規定されたノードのサブツリーで動作することができ、たとえば、クエリを利用するサービスを呼び出した加入者など、１人または複数のユーザに関連するソーシャル・グラフの一部分に挿入されることが意図される。次に、開発者またはサード・パーティは、１つまたは複数の指定されたノードにクエリをアタッチするために、要求を送信することができる（３１０）。たとえば、クエリ表現は、ソーシャル・グラフのリソースに対するアクセス制御の修正を要求するＲＥＳＴ−ｆｕｌ  ＰＯＳＴ要求として書き込むことができる。
【００３０】
従来のアクセス制御方式では、ＲＥＳＴ−ｆｕｌサービスのユーザは、サービスにアクセス・トークンを提示し（または、アプリケーションがエンド・ユーザに代わってアクセス・トークンを提示する）、アクセス・トークンは、ユーザ／アプリケーションに許可されたアクセスを識別する。サービスの事前に定められたリソースは、どのアクセス権が特定のユーザに許可されるかを指定することができる。たとえば、Ｇｏｏｇｌｅカレンダーでは、ユーザは、そのユーザに対するアクセス権を決定する役割を割り当てることができる。所与のリソースについて（たとえば、Ｇｏｏｇｌｅ：”／ｃａｌｅｎｄａｒ／ｖ３／ｃａｌｅｎｄａｒｓ／ＫｉｄｓＥｖｅｎｔｓ”）、役割は、（ＨＴＴＰ  ＧＥＴ要求を通じて）ユーザがリソースへのアクセス権を持っているかどうか、（ＨＴＴＰ  ＰＵＴ要求を通じて）カレンダーを更新することができるかどうか、または（ＨＴＴＰ  ＤＥＬＥＴＥ要求を通じて）カレンダーを削除することができるかどうかを決定する。役割は、役割に対して事前規定されたアクセス権の集合を許可する。事前に定めた役割は、サービス・プロバイダによって固定され、ユーザ、開発者、またはサード・パーティによって拡張することはできない。
【００３１】
図示する実施形態では、要求された（３０５）アクセス制御クエリは、リソースへの個々のアクセス権を許可するために使用することができるため、それによって役割ベースのアクセス制御を回避することができる。あるいは、ユーザは、アクセス・トークンを通じてユーザに許可されたアクセスを無効（または強化）できる、要求された（３０５）アクセス制御クエリの結果に基づいて、特定の役割に関連する場合がある。アクセス制御クエリは、リソース・ツリーのノードにアタッチされ、クエリ・ノードの配置により、役割の範囲を決定することができる。たとえば、クエリ範囲は、クエリがアタッチされているサブツリーのリソースに制限することができる。クエリ・ノードには、意味のある名前を付けることができる。たとえば、子どものイベントを記載する加入者のカレンダーに養護者（ｃａｒｅｇｉｖｅｒ）アクセス権を与えるべきかどうかを決定するクエリのためのクエリ・ノードは、「ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ」という名前を付けることができ、関連するＵＲＩを使用して交換または削除することができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ  ＫｉｄｓＥｖｅｎｔｓ／ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ
適切な承認を用いて、Ｇｏｏｇｌｅのカレンダーのようなサービスに対するクエリを作成するために使用されるＰＯＳＴ要求は、（ＪＳＯＮ）形式を使用することができる。
ＰＯＳＴ／ｃａｌｅｎｄａｒ／ｃａｌｅｎｄａｒｓ  ＨＴＴＰ／１．１
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
Ｃｏｎｔｅｎｔ−ｌｅｎｇｔｈ：２００
．．．
｛
”ｋｉｎｄ”：”ｃａｌｅｎｄａｒ＃ｃａｌｅｎｄａｒＡｃｃｅｓｓＣｏｎｔｒｏｌＱｕｅｒｙ”，
”ｉｄ”：”ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ”，
”ａｃｃｅｓｓＲｏｌｅ：”ｒｅａｄｅｒ”．
”ｑｕｅｒｙ”：”ＳＥＬＥＣＴ．．．
｝
あるいは、ＰＯＳＴ要求は、ＧＥＴコマンドを介して特定の権利を許可するために以下の形式を使用することができる。
ＰＯＳＴ／ｃａｌｅｎｄａｒ／ｃａｌｅｎｄａｒｓ／ＨＴＴＰ／１．１
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ：２０３
．．．
｛
”ｋｉｎｄ”：”ｃａｌｅｎｄａｒ＃ｃａｌｅｎｄａｒＡｃｃｅｓｓＣｏｎｔｒｏｌＱｕｅｒｙ”，
”ｉｄ”：”ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ”，
”ａｃｃｅｓｓＲｉｇｈｔｓ”：”ＧＥＴ”．
”ｑｕｅｒｙ”：”ＳＥＬＥＣＴ．．．”
｝
アクセス制御クエリを削除するために、アプリケーションまたはエンド・ユーザは、以下のようなＨＴＴＰ要求を発行することができる。
ＤＥＬＥＴＥ／ｃａｌｅｎｄａｒ／ｃａｌｅｎｄａｒｓ／ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ  ＨＴＴＰ／１．１
様々な代替的実施形態において、１つまたは複数のアクセス制御クエリは、所与のノードにアタッチすることができるが、実際には、ユーザは、そのユーザに対して少数の高い値（ｈｉｇｈ  ｖａｌｕｅ）を用いることを選択することができる。一部の実施形態では、シャドー・ノードまたはパターン一致は、クエリを作ったユーザに制御されないノードにクエリを関連させるために使用することができる。
【００３２】
他の例では、Ｆａｃｅｂｏｏｋのようなサービスのコンテキストでは、クエリは、アルバム、またはクエリの設計に基づいてアルバムの個々の写真へのアクセスを許可または拒否するために使用することができる。サービスは、クエリへのパラメータに基づいて、アルバムもしくはそれがアタッチされているアルバムのリスト、またはアルバム内の個々の写真またはそれがアタッチされているアルバムのリストへのクエリがアクセスを許可するかどうかを決定することができる。
ＰＯＳＴ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／ＥｌｉｚａｂｅｔｈＨｉｇｈＳｃｈｏｏｌＧｒａｄｕａｔｉｏｎ／ｐｈｏｔｏｓ  ＨＴＴＰ／１．１
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ：２０３
．．．
｛
”ｋｉｎｄ”：”ＡｃｃｅｓｓＣｏｎｔｒｏｌＱｕｅｒｙ”，
”ｉｄ”：”ＧｒａｎｔＥｌｉｚａｂｅｔｈＦｒｉｅｎｄｓＡｃｃｅｓｓ”，
”ａｃｃｅｓｓＲｉｇｈｔｓ”：”ＧＥＴ”．
”ｑｕｅｒｙ”：”ＳＥＬＥＣＴ．．．”
｝
Ｆａｃｅｂｏｏｋの写真はそれぞれ多数の「プロパティ」を持つことができ、これらはアクセスをさらに制限するためにクエリに現れる場合がある。たとえば、「タグ」プロパティは、写真に描写された個人を記載し、特定のユーザが描写されているこれらの写真のみへのアクセスを制限するために使用することができる。
【００３３】
図示する実施形態では、アクセス制御クエリをアタッチする要求は、ユーザ／加入者から承認を必要とする場合がある。ユーザ承認プロセスは、ユーザのソーシャル・グラフの１つまたは複数のノードにアクセス制御クエリをアタッチすることをユーザが承認したことを検証するために実行することができる（３１５）。ユーザ承認は、様々な技術を使用して実行することができる。たとえば、クエリを挿入する要求は、新しいクエリの実装を承認または許可するかをユーザが示すことを許可（３１５）する認証／承認プロセスを開始する要求を含むことができる。ユーザが確認または認証を提供しなければ、要求は拒否される（３２０）。加入者が要求を確認または認証すれば、要求を続行することができる。
【００３４】
図示する実施形態では、要求は、また、ソーシャル・ネットワーク（ＳＮ）サービスのプロバイダまたは所有者から承認を必要とする場合がある。プロバイダ承認プロセスは、ユーザのソーシャル・グラフに新しいクエリを挿入することをプロバイダ／所有者が承認したことを検証するために実行することができる（３２５）。プロバイダ承認は、様々な技術を使用して実行することができる。たとえば、アクセス制御クエリをアタッチする要求は、新しいクエリの実装を承認または許可するかをプロバイダが示すことを許可（３１５）する認証／承認プロセスを開始する要求を含むことができる。一実施形態では、プロバイダは、要求を調査し、プロバイダによって確立されたセキュリティ、プライバシー、または他のポリシーに要求が準拠しているかどうかを決定する自動化されたシステムを使用して、認証／承認プロセスを実行することができる。ウェブ・サービスに設置する前に、クエリは、ウェブ・サービスのセキュリティ／使用法のポリシーにそれが準拠していることを保証するために機械的に検証することができる。たとえば、ウェブ・サービスは、ブール結果を返すクエリのみを許可することができ、アクセス制御クエリが関連付けられ得るノードのタイプを限定することができる（たとえば「Ｐｈｏｔｏｇｒａｐｈｓ」ノードのみ）。プロバイダが確認または認証を提供しなければ、要求は拒否される（３２０）。プロバイダが要求を確認または認証すれば、要求を続行することができる。本開示の恩恵を受ける当業者は、図３に示した特定の認証シーケンスは、説明を意図したものであることを理解されたい。代替実施形態は、同時または図３に示したものとは異なる順序で、ユーザおよびプロバイダの認証プロセスを実行することができる。さらに、他の代替実施形態は、両方ではなく、ユーザ認証またはプロバイダ認証のみを実行することができるか、または認証をまったく実行しない場合がある。
【００３５】
要求が承認されたら、要求されたクエリは、ソーシャル・グラフ内の選択された位置にアタッチすることができる（３３０）。次に、開発者もしくはサード・パーティ、または他のエンティティは、新しいクエリを利用するアプリケーションまたはサービスを可能にするために、修正されたインターフェースを使用することができる場合がある。たとえば、上に記述したＰＯＳＴ要求の結果として、加入者（Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒ）に対するＡＰＩを拡張することになる場合があるため、ここで、ＵＲＩに対してＧＥＴ要求を行うことができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｐｈｏｔｏｇｒａｐｈｓ／Ｐｈｏｔｏ１
要求されたリソース（つまり写真Ｐｈｏｔｏ１）へのアクセス制御は、以下のようなクエリを使用して決定することができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｐｈｏｔｏｇｒａｐｈｓ／ＡｌｌｏｗＡｃｃｅｓｓｆｏｒＴａｇｇｅｄＵｓｅｒ
アクセス制御クエリは、Ｂｏｂ  Ｗｈａｔｓｉｓｎａｍｅが写真Ｐｈｏｔｏ１に対するタグ・リストにあるかどうかに応じてブール値を返す。一実施形態では、アクセス制御クエリを開発者は見ることができ、アクセス制御クエリを使用するアプリケーションに利用可能であるが、アクセス制御クエリはユーザには見えない場合があるため、リソースへのアクセスを得ることを試みるユーザは、アクセス制御が実行されていることに気づかない場合がある。
【００３６】
したがって、方法３００の実施形態は、ソーシャル・グラフを表す基礎をなすデータベースへの過度または完全なアクセスを提供するリスクを減らしながら、より広くより様々な組のアクセス制御権を提供する、修正されたインターフェースをサポートすることができる。ＰＯＳＴ要求によって行われた修正は、要求を承認したユーザのみに影響することができ（Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒ）、対応するＨＴＴＰ  ＤＥＬＥＴＥ要求または他の操作によって逆転することができる。一実施形態では、クエリを挿入するためのメカニズムは、エンド・ユーザに関連するレコードを作成することの場合がある。挿入されたレコードは、ＧＥＴ要求で使用されるクエリおよび関連する経路を含むことができる。様々な実施形態において、ウェブ・サービスは、１つまたは複数のクエリ言語をサポートし、クエリ言語に伴うスキーマを公開する。
【００３７】
図４は、ソーシャル・グラフへの修正されたアプリケーション・プログラミング・インターフェースにクエリする方法４００の代表的な一実施形態を概念的に示している。図示する実施形態では、方法４００は、ユーザごとおよびアプリケーションごとにアプリケーション・プログラミング・インターフェースを修正するため、インターフェースによって使用されるアクセス制御権は、いつでも全体的に変更されるのではなく、修正されたインターフェースを使用するサービスを特定のユーザが呼び出した場合のみ変更され、一部の実施形態では、関係するサービスを呼び出し、ソーシャル・グラフの関連する部分へのインターフェースの修正を承認したユーザに対してのみである。１人または複数のユーザは、サービスまたはアプリケーションを開始することができる（４０５）。開始されたアプリケーションは、プロバイダによって規定されたＡＰＩによってサポートされないアクセス制御クエリを利用することができる。次に、１つまたは複数の新しいアクセス制御クエリを作成することができ、また、アクセス制御クエリを関連するノードにアタッチすることができる（４１０）。クエリをアタッチするための技術の実施形態については図３に示している。
【００３８】
次に、（たとえば、サービス・プロバイダによって所有または運用される１つまたは複数のサーバで実装されたソフトウェア、ファームウェア、またはハードウェアを使用する）サービス・プロバイダは、サービスに関連するクエリを監視することができる（４１０）。サービス・プロバイダがクエリを検出しない限り、監視を継続することができる（４１０）。サービス・プロバイダが、アクセス制御クエリ、たとえば、加入者によって要求または呼び出されたサービスの一部としてソーシャル・グラフへのアクセスを要求するために実行されるクエリを検出すると（４１５）、クエリに関連するノードのサブツリーに含まれる情報に対してクエリを実行することができる（４２０）。たとえば、クエリは、ノードのサブツリーに含まれる情報に少なくとも部分的に基づいて、アクセス要求が許可されたか拒否されたかを示すブール値を返すことができる（４２０）。
【００３９】
図５は、ソーシャル・グラフへのアプリケーション・プログラミング・インターフェースへの修正を取り除くか、または逆転する方法５００の代表的な一実施形態を概念的に示している。図示する実施形態では、アプリケーション・プログラミング・インターフェースは、１人または複数のユーザが、修正されたインターフェースを使用するサービスを呼び出すことに応答して、ユーザごとまたはアプリケーションごとに（たとえば図３〜図４に関して本明細書に記述したように）以前に修正されており、一部の実施形態では、関係するサービスを呼び出し、ソーシャル・グラフの関連する部分へのインターフェースの修正を承認したユーザに対してのみである。ソーシャル・グラフへのインターフェースを修正する結果となった、サービスを以前に開始した１人または複数のユーザは、アプリケーションを終了すると決定することができる。したがって、サービス・プロバイダは、アプリケーションを終了する要求を受信することができる（５０５）。サービス・プロバイダは、修正されたインターフェースをサポートするために、ソーシャル・グラフにアタッチされた一時的アクセス制御クエリを識別することができる（５１０）。一時的クエリの識別（５１０）は、サービス・プロバイダによって格納された情報またはユーザによって提供された情報を使用して実行することができる。次に、一時的クエリは削除することができ（５１５）、アプリケーションを終了することができる（５２０）。一実施形態では、一時的クエリの削除（５１５）は、ノード、葉ノード、サブツリー、または一時的クエリに関連する他の情報を取り除くことを含むことができる。
【００４０】
図６は、ソーシャル・グラフ６００の一部分の第２の代表的な実施形態を概念的に示している。図２に示す第１の実施形態と同様に、部分６００は、特定の加入者「Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒ」に関連するノードを含む完全なソーシャル・グラフのサブツリーである。部分６００は、入り口ノードまたは親ノード６０５を介してアクセスすることができる。部分６００は、１つまたは複数のサーバに格納することができ、クライアントは、適切なユニフォーム・リソース・インジケータ（ＵＲＩ）または他のアドレスを使用して、入り口ノード６０５にアクセスすることができる。部分６００は、また、入り口ノード６０５または部分６００内の他のノードに接続されている子ノード６１０を含む。本明細書に記述したように、子ノード６１０は、情報、カテゴリ、他の加入者などに関連する場合がある。ノード６１０は、以下のような対応するアドレスを使用してアクセスすることができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ
【００４１】
図示する実施形態では、開発者または他のサード・パーティは、加入者に対応するソーシャル・グラフの部分６００に１つまたは複数のノード６１５を追加することができる。たとえば、開発者は、サブツリー６００のノード６１０（４）に関連する、またはアタッチされたノード６１５を挿入するためにＨＴＴＰ  ＰＯＳＴコマンドを使用することができる。次に、ノード６１５は、適切なＵＲＩまたは他のアドレスを使用してアクセスすることができる。たとえば、ノード６１０（３）は、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒの「Ｃａｌｅｎｄａｒ（カレンダー）」に関連する場合があり、ノード６１０（４）は、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒの「Ｃａｌｅｎｄａｒｓ（カレンダー）」に関連する場合があり、ノード６１５は、「ＫｉｄＥｖｅｎｔｓ（子どものイベント）」などＪｏｅの子どもが参加するイベントを含むカテゴリに関連する場合がある。ノード６１５は、また、バレエ・レッスン、サッカーの練習、ピアノ・リサイタルなど、複数の葉ノード６２５を含む、他のサブツリー６２０に関連付ける、または接続することができる。しかし、本開示の恩恵を受ける当業者は、サブツリー６２０は、ノードまたは葉ノードの異なる組み合わせを含むことができることを理解されたい。サブツリー６２０または葉ノード６２５は、開発者、サード・パーティ、加入者、またはサービス・プロバイダによって自動的にポピュレートすることができる。ノード６１５は、以下のようなアドレスを使用してアクセスすることができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ／ＫｉｄＥｖｅｎｔｓ
一部の実施形態では、開発者またはサード・パーティは、ソーシャル・グラフにノード６１５を追加する権限または承認を取得する必要がある場合がある。たとえば、開発者またはサード・パーティは、Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒまたはソーシャル・グラフのサービス・プロバイダもしくは所有者から権限または承認を取得する必要がある場合がある。承認は、たとえば、加入者がノード６１５を利用するアプリケーションまたはサービスを呼び出したか、または開始した後、加入者がアプリケーションまたはサービスを終了するまでなど、制限された時間のみ有効な場合がある。したがって、ノード６１５は、一時的または動的なノードの場合がある。
【００４２】
ソーシャル・グラフ６００へのインターフェースは、ソーシャル・グラフ６００に追加されたノード６１５で動作するアクセス制御クエリ６３０をサポートするように修正することができる。一実施形態では、開発者は、アクセス制御クエリ６３０を規定するためにメッセージまたはコマンドを使用し、ソーシャル・グラフ２００へのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を修正するために１つまたは複数のノードにクエリ６３０をアタッチすることができる。たとえば、子どものイベント「ＫｉｄＥｖｅｎｔｓ」のためのノード６１５を作成し、子どものイベントを記載する加入者のカレンダーへのアクセス権を養護者に与えるべきかどうかを決定するクエリにアタッチすることができ、これは「ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ」という名前を付けることができ、関連するＵＲＩを使用して交換または削除することができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ  ＫｉｄｓＥｖｅｎｔｓ／ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ
適切な承認を用いて、Ｇｏｏｇｌｅのカレンダーのようなサービスに対するクエリを作成するために使用されるＰＯＳＴ要求は、（ＪＳＯＮ）形式を使用することができる。
ＰＯＳＴ／ｃａｌｅｎｄａｒ／ｃａｌｅｎｄａｒｓ  ＨＴＴＰ／１．１
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ
Ｃｏｎｔｅｎｔ−ｌｅｎｇｔｈ：２００
．．．
｛
”ｋｉｎｄ”：”ｃａｌｅｎｄａｒ＃ｃａｌｅｎｄａｒＡｃｃｅｓｓＣｏｎｔｒｏｌＱｕｅｒｙ”，
”ｉｄ”：”ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ”，
”ａｃｃｅｓｓＲｏｌｅ：”ｒｅａｄｅｒ”．
”ｑｕｅｒｙ”：”ＳＥＬＥＣＴ．．．”
｝
しかし、代替実施形態では、他の形式の他のアドレスまたは要求メッセージは、ノード６１５またはアクセス制御クエリ６３０を作成するために使用することができる。
【００４３】
図７は、ソーシャル・グラフに対するアクセス制御を修正するための方法７００の第２の代表的な実施形態を概念的に示している。図示する実施形態では、本明細書に記述するように、アクセス制御クエリは、開発者またはサード・パーティによって生成される（７０５）。アクセス制御クエリは、開発者またはサード・パーティによって作成されたサービスまたはアプリケーションの一部として使用することができる。アクセス制御クエリは、開発者またはサード・パーティによって規定されたノードのサブツリーで動作することができ、たとえば、クエリを利用するサービスを呼び出した加入者など、１人または複数のユーザに関連するソーシャル・グラフの一部分に挿入されることが意図される。次に、開発者またはサード・パーティは、ノードを作成し、新しく作成されたノードにアクセス制御クエリをアタッチするために、要求を送信することができる（７１０）。たとえば、クエリ表現は、ソーシャル・グラフへのＡＰＩのプログラマのビューの修正を要求するＲＥＳＴ−ｆｕｌ  ＰＯＳＴ要求として書き込むことができる。適切な承認を用いて、ＡＰＩを拡張するためのＵＲＩ
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗａｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ／
へのＰＯＳＴ要求は、以下のように書くことができる。
ＰＯＳＴ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ／ＨＴＴＰ／１．０
Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：ｔｅｘｔ／ｘｍｌ
＜ｅｘｔｅｎｄ＞
＜ｎｏｄｅ＞ＫｉｄＥｖｅｎｔｓ＜／ｎｏｄｅ＞
＜ｑｕｅｒｙ＞ＳＥＬＥＣＴ．．．＜／ｑｕｅｒｙ＞
＜／ｅｘｔｅｎｄ＞
しかし、本開示の恩恵を受ける当業者は、他のクエリ表現または形式を要求に使用することができることを理解されたい。
【００４４】
図示する実施形態では、要求は、ユーザ／加入者からの承認を必要とする場合がある。ユーザ承認プロセスは、ユーザのソーシャル・グラフに新しいノードを挿入することをユーザが承認したことを検証するために実行することができる（７１５）。ユーザ承認は、様々な技術を使用して実行することができる。たとえば、ノードを作成し、クエリをアタッチする要求は、新しいノードの作成および新しいクエリの実装を承認または許可するかをユーザが示すことを許可（７１５）する認証／承認プロセスを開始する要求を含むことができる。ユーザが確認または認証を提供しなければ、要求は拒否される（７２０）。加入者が要求を確認または認証すれば、要求を続行することができる。
【００４５】
図示する実施形態では、要求は、また、ソーシャル・ネットワーク（ＳＮ）サービスのプロバイダまたは所有者から承認を必要とする場合がある。プロバイダ承認プロセスは、ユーザのソーシャル・グラフに新しいノードを挿入することをプロバイダ／所有者が承認したことを検証するために実行することができる（７２５）。プロバイダ承認は、様々な技術を使用して実行することができる。たとえば、ノードを作成し、クエリをアタッチする要求は、新しいノードの作成または新しいアクセス制御クエリの実装を承認または許可するかをプロバイダが示すことを許可（７１５）する認証／承認プロセスを開始する要求を含むことができる。一実施形態では、プロバイダは、要求を調査する自動化されたシステムを使用して、認証／承認プロセスを実行することができ、プロバイダによって確立されたセキュリティ、プライバシー、または他のポリシーに要求が準拠しているかどうかを決定する。ウェブ・サービスにインストールする前に、アクセス制御クエリは、ウェブ・サービスのセキュリティ／使用法のポリシーにそれが準拠していることを保証するために機械的に検証することができる。プロバイダが確認または認証を提供しなければ、要求は拒否される（７２０）。プロバイダが要求を確認または認証すれば、要求を続行することができる。本開示の恩恵を受ける当業者は、図７に示した特定の認証シーケンスは、説明を意図したものであることを理解されたい。代替実施形態は、同時または図７に示したものとは異なる順序で、ユーザおよびプロバイダの認証プロセスを実行することができる。さらに、他の代替実施形態は、両方ではなく、ユーザ認証またはプロバイダ認証のみを実行することができるか、または認証をまったく実行しない場合がある。
【００４６】
要求が承認されたら、要求されたノードは、ソーシャル・グラフ内の選択された位置に挿入することができる（７３０）。次に、ソーシャル・グラフへのインターフェースは、新しいノードまたはツリー内のより低いノードにアクセス制御クエリをアタッチする（７３５）ことによって修正することができる。開発者もしくはサード・パーティ、または他のエンティティは、次に、新しいアクセス制御クエリを利用するアプリケーションまたはサービスを開発できる場合がある。たとえば、カレンダーＫｉｄＥｖｅｎｔｓに関連するアクセス制御クエリは、以下のＵＲＩを使用して呼び出すことができる。
ｈｔｔｐ：／／ｗｗｗ．ｆａｋｅｓｏｃｉａｌｎｅｔｗｏｒｋ．ｃｏｍ／Ｊｏｅ．Ｓｕｂｓｃｒｉｂｅｒ／Ｃａｌｅｎｄａｒ／Ｃａｌｅｎｄａｒｓ／ＫｉｄＥｖｅｎｔｓ／ＧｒａｎｔＣａｒｅｇｉｖｅｒｓＡｃｃｅｓｓ
図示する実施形態では、承認された養護者から要求が来る場合、要求はブール値真を返し、承認された養護者から要求が来ない場合、ブール値偽を返す。したがって、方法７００の実施形態は、ソーシャル・グラフを表す基礎をなすデータベースへの過度または完全なアクセスを提供するリスクを減らしながら、より広くより様々な組のアクセス制御権を提供することができる。ＰＯＳＴ要求によって行われた修正は、ユーザのリソース、または要求を承認したユーザ（Ｊｏｅ  Ｓｕｂｓｃｒｉｂｅｒ）にアクセス可能なそれらのリソースへのアクセスのみに影響する場合があり、対応するＨＴＴＰ  ＤＥＬＥＴＥ要求または他の操作によって逆転することができる。一実施形態では、クエリを挿入するためのメカニズムは、エンド・ユーザに関連するレコードを作成することの場合がある。挿入されたレコードは、ＧＥＴ要求で使用されるクエリおよび関連する経路を含むことができる。様々な実施形態において、ウェブ・サービスは、１つまたはクエリ言語をサポートし、クエリ言語に伴うスキーマを公開する。一実施形態では、新しいノードまたはアタッチされるクエリは、一時的な場合がある。たとえば、ノードまたはクエリは、ユーザが、ノードまたはクエリを利用するサービスを呼び出すことに応答して追加することができる。ノードまたはクエリは、たとえば、ノードまたはクエリを使用するサービスの終了に応答して、除去または削除することができる。
【００４７】
図８は、ソーシャル・グラフの部分を格納する、ソーシャル・グラフへのアプリケーション・プログラミング・インターフェースを実装する、またはソーシャル・ネットワーク・サービスを実装するために使用できる、サーバ８００の代表的な一実施形態を概念的に示している。図示する実施形態では、サーバ８００は、プロセッサ８０５、データ記憶装置８１０、および入力／出力（Ｉ／Ｏ）インターフェース８１５を含む。プロセッサ８０５は、たとえば、データ記憶装置８１０または他の場所に格納されたデータまたは命令を使用するなど、サーバ８００の動作を制御するように構成される。サーバ８００によって実行できる動作の実施形態は、図１〜図７に関連して本明細書に記述している。一実施形態では、データ記憶装置８１０は、ソーシャル・グラフへの１つまたは複数のアプリケーション・プログラミング・インターフェースを表す情報８２０、ソーシャル・グラフの部分を表す情報８２５、またはソーシャル・グラフに格納された情報を使用できるソーシャル・ネットワーク・サービスを表す情報８３０を格納する。
【００４８】
図８は単一のサーバ８００を示しているが、本開示の恩恵を受ける当業者は、代替実施形態は、複数のサーバを使用し、複数のサーバの全体にわたり図８に示した機能の部分を分散することができることを理解されたい。一部の実施形態では、サーバ８００はバーチャル・マシンの場合がある。これらの実施形態の一部では、バーチャル・マシンは、異なるマシンからのコンポーネントを含む場合も、または地理的に分散している場合もある。たとえば、データ記憶装置８１０およびプロセッサ８０５は、２台の異なる物理的なマシンにある場合がある。ソーシャル・ネットワーク・サービス８３０など、プロセッサで実行可能なプログラムがプロセッサ８０５で実装される場合、特定の論理回路と同様に動作する一意のデバイスを提供するために、プログラム・コード・セグメントはプロセッサ８０５と組み合わせられる。
【００４９】
開示した内容および対応する詳細な記述の部分は、ソフトウェア、またはアルゴリズムおよびコンピュータ・メモリ内のデータ・ビットの動作を記号で表現したものに関して示したものである。これらの記述および表現は、当業者が他の当業者に仕事の本質を効果的に伝達するものである。本明細書で使用し、一般的に使用されるアルゴリズムという用語は、望ましい結果につながる首尾一貫した連続したステップであると考えられる。ステップは、物理量の物理的な操作を必要とするものである。通常、必須ではないが、これらの量は、格納、転送、組み合わせ、比較、または操作可能な光学的、電気的、または磁気的な信号の形をとる。これらの信号は、主に一般的に使用する理由から、ビット、値、要素、記号、文字、用語、数値などと呼ぶことが便利であると分かっている。
【００５０】
しかし、これらおよび同様の用語はすべて、適切な物理量に関連しており、これらの量に適用される便利なラベルにすぎないことを覚えておくべきである。特に別記しない限り、または記述から明白でない限り、「処理」または「コンピューティング」または「計算」または「決定」または「表示」などの用語は、コンピュータ・システムのレジスタおよびメモリ内の物理的な電子量として表されたデータを操作し、コンピュータ・システムのメモリもしくはレジスタ、または他のそのような情報記憶装置、伝送デバイスもしくは表示デバイス内の物理量として同様に表される他のデータへと変形するコンピュータ・システム、または同様の電子計算デバイスの動作およびプロセスを指すものである。
【００５１】
また、開示された内容のソフトウェアに実装された態様は、典型的に、プログラム記憶媒体の一形式で符号化されるか、または何らかの伝送媒体を通じて実装されることに注意すること。プログラム記憶媒体は、磁気的（たとえば、フロッピー・ディスクまたはハードドライブ）、または光学的（たとえば、コンパクト・ディスクを使った読み出し専用メモリ、または「ＣＤ  ＲＯＭ」）でもよく、読み出し専用またはランダム・アクセスでもよい。同様に、伝送媒体は、ツイストペア線、同軸ケーブル、光ファイバ、または当技術分野で知られている他の何らかの適切な伝送媒体でもよい。開示された内容は、特定の実装のこれらの態様によって限定されるものではない。
【００５２】
上に開示した特定の実施形態は例を示しているにすぎず、開示した内容は、本明細書の教示の利益を受ける当業者に明白な、異なるが同等の方法で修正および実施することができる。さらに、以下の特許請求の範囲に記述した以外、本明細書に示した構造または設計の詳細に限定することを意図するものではない。したがって、上に開示した特定の実施形態は変更または修正することができ、そのような変形形態はすべて、開示された内容の範囲内にあると考えられることは明白である。したがって、本明細書に求められる保護は、以下の特許請求の範囲に記述するとおりである。
【図１】
0006444855.tif 000002
【図２】
0006444855.tif 000003
【図３】
0006444855.tif 000004
【図４】
0006444855.tif 000005
【図５】
0006444855.tif 000006
【図６】
0006444855.tif 000007
【図７】
0006444855.tif 000008
【図８】
0006444855.tif 000009