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