(57)【要約】【課題】データベースにおいて、エンティティ間の分離の度合いに応じて人物間の関係の表示を提供すること。【解決手段】人物間の関係を分析および表示するためのコンピュータ実施方法は、コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、リレーショナルデータベースにおいてユーザ入力に基づき、人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、ユーザ入力に応じた人物間の関係の表示を行なうステップであって、この表示が、リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップとを含む。【選択図】図1
2013131218.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、
リレーショナルデータベースにおいて前記ユーザ入力に基づき、前記人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、前記リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、
前記ユーザ入力に応じた人物間の関係の表示を行なうステップであって、前記表示が、前記リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップと
を含む、人物間の関係を分析および表示するためのコンピュータ実施方法。
【請求項２】
前記リレーショナルデータベースのクエリが、
少なくとも1つの列における人物を指定する任意の関係における第1のジョインと、
前記第1のジョインにおける関係で指定された任意の人物における第2のジョインと、
前記第2のジョインにおける人物のいずれかを指定する関係における、少なくとも第1のレフトジョインと、
前記第1のレフトジョインにおける関係で指定された任意の人物における少なくとも第2のレフトジョインと
を含み、
前記リレーショナルデータベースのクエリが、最大数のステップが達せられるまでレフトジョインを実行し続ける、請求項1に記載のコンピュータ実施方法。
【請求項３】
前記リレーショナルデータベースのクエリが、関係テーブルを含むリレーショナルデータベースに対して実行され、前記関係テーブルが、それぞれの関係に対して、関係のソースのための第1の列と、関係のターゲットのための第2の列とを含み、前記リレーショナルデータベースのクエリが、前記第1の列が人物を示し、さらに前記第2の列が人物を示す場合に関係を選択する、請求項2に記載のコンピュータ実施方法。
【請求項４】
前記ユーザ入力が、別の人物を特定し、また、前記特定された別の人物を含む、人物に関する人物間の関係に属する人物を探し出す、請求項2に記載のコンピュータ実施方法。
【請求項５】
前記リレーショナルデータベースのクエリが、人物およびつながりに関する情報をユーザがアップロードするオンデマンドシステムにおいて実行され、前記オンデマンドシステムが、ユーザ入力を受信した後に、人物間の関係の表示をユーザに対して行なう、請求項1に記載のコンピュータ実施方法。
【請求項６】
前記ユーザ入力が、ステップの最大数を指定する、請求項1に記載のコンピュータ実施方法。
【請求項７】
人物間の関係の表示として、ソーシャルグラフを生成するステップをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項８】
コンピュータ可読記憶媒体に実体的に具体化されており、人物間の関係を分析および表示するための方法を、プロセッサによって実行される場合に実行する命令を含むコンピュータプログラムであって、
前記方法が、
コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、
リレーショナルデータベースにおいて前記ユーザ入力に基づき、前記人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、前記リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、
前記ユーザ入力に応じた人物間の関係の表示を行なうステップであって、前記表示が、前記リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップと
を含む、コンピュータプログラム。
【請求項９】
前記リレーショナルデータベースのクエリが、
少なくとも1つの列における人物を指定する任意の関係における第1のジョインと、
前記第1のジョインにおける関係で指定された任意の人物における第2のジョインと、
前記第2のジョインにおける人物のいずれかを指定する関係における、少なくとも第1のレフトジョインと、
前記第1のレフトジョインにおける関係で指定された任意の人物における、少なくとも第2のレフトジョインと
を含み、
前記リレーショナルデータベースのクエリが、最大数のステップが達せられるまでレフトジョインを実行し続ける、請求項8に記載のコンピュータプログラム。
【請求項１０】
前記リレーショナルデータベースのクエリが、関係テーブルを含むリレーショナルデータベースに対して実行され、前記関係テーブルが、それぞれの関係に対して、関係のソースのための第1の列と、関係のターゲットのための第2の列とを含み、前記リレーショナルデータベースのクエリが、前記第1の列が人物を示し、さらに前記第2の列が人物を示す場合に関係を選択する、請求項9に記載のコンピュータプログラム。
【請求項１１】
前記ユーザ入力が、別の人物を特定し、また、前記特定された別の人物を含む、人物に関する人物間の関係に属する人物を探し出す、請求項9に記載のコンピュータプログラム。
【請求項１２】
前記リレーショナルデータベースのクエリが、人物およびつながりに関する情報をユーザがアップロードするオンデマンドシステムにおいて実行され、前記オンデマンドシステムが、ユーザ入力を受信した後に、人物間の関係の表示をユーザに対して行なう、請求項8に記載のコンピュータプログラム。
【請求項１３】
前記ユーザ入力が、ステップの最大数を指定する、請求項8に記載のコンピュータプログラム。
【請求項１４】
人物間の関係の表示として、ソーシャルグラフを生成するステップをさらに含む、請求項8に記載のコンピュータプログラム。
【請求項１５】
1つまたは複数のプロセッサと、
コンピュータ可読記憶媒体に実体的に具体化されており、人物間の関係を分析および表示するための方法を、プロセッサによって実行される場合に実行する命令を含むコンピュータプログラムと
を含むシステムであって、
前記方法が、
コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、
リレーショナルデータベースにおいて前記ユーザ入力に基づき、前記人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、前記リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、
前記ユーザ入力に応じた人物間の関係の表示を行なうステップであって、前記表示が、前記リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップと
を含む、システム。
【請求項１６】
前記リレーショナルデータベースのクエリが、
少なくとも1つの列における人物を指定する任意の関係における第1のジョインと、
前記第1のジョインにおける関係で指定された任意の人物における第2のジョインと、
前記第2のジョインにおける人物のいずれかを指定する関係における、少なくとも第1のレフトジョインと、
前記第1のレフトジョインにおける関係で指定された任意の人物における、少なくとも第2のレフトジョインと
を含み、
前記リレーショナルデータベースのクエリが、最大数のステップが達せられるまでレフトジョインを実行し続ける、請求項15に記載のシステム。
【請求項１７】
前記リレーショナルデータベースのクエリが、関係テーブルを含むリレーショナルデータベースに対して実行され、前記関係テーブルが、それぞれの関係に対して、関係のソースのための第1の列と、関係のターゲットのための第2の列とを含み、前記リレーショナルデータベースのクエリが、前記第1の列が人物を示し、さらに前記第2の列が人物を示す場合に関係を選択する、請求項16に記載のシステム。
【請求項１８】
前記ユーザ入力が、別の人物を特定し、また、前記特定された別の人物を含む、人物に関する人物間の関係に属する人物を探し出す、請求項16に記載のシステム。
【請求項１９】
前記リレーショナルデータベースのクエリが、人物およびつながりに関する情報をユーザがアップロードするオンデマンドシステムにおいて実行され、前記オンデマンドシステムが、ユーザ入力を受信した後に、人物間の関係の表示をユーザに対して行なう、請求項15に記載のシステム。
【請求項２０】
前記方法が、人物間の関係の表示として、ソーシャルグラフを生成するステップをさらに含む、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本文書は、人物間の関係を分析および表示することに関する。
【背景技術】
【０００２】
多くのコンピュータシステムには、抽象的なものと実在のものとの両方のエンティティを表す情報が記憶される。一部の組織では、ほんの数例を挙げると、生産、取引、ビジネスパートナー、および人員に関する情報を管理するために、コンピュータネットワークにおける企業向けの業務システムが稼働している。このシステムは、例えば、製品、セールスドキュメント、顧客または従業員だけでなく、このような任意のエンティティ間の関係に対応し、それらを表すデータベースオブジェクトを記憶している場合がある。さらに、データベース情報は、必要に応じて最新の情報で更新される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、エンティティからなるデータベースでは、存在し得るいかなる人物間関係の概要も与えられない。またこのようなエンティティは、例えば任意の2つのエンティティが同じ人物に対する関係を有するかどうかなどの、それら2つのエンティティ間の分離の度合いも示さない。さらに一部のアルゴリズムでは、関係に関するグラフのノードと同じだけ多くのクエリが必要となる。
【課題を解決するための手段】
【０００４】
第1の態様では、人物間の関係を分析および表示するためのコンピュータ実施方法は、コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、リレーショナルデータベースにおいてユーザ入力に基づき、人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、ユーザ入力に応じた人物間の関係の表示を行なうステップであって、この表示が、リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップとを含む。
【０００５】
第2の態様では、コンピュータプログラム製品は、コンピュータ可読記憶媒体に実体的に具体化されており、人物間の関係を分析および表示するための方法を、プロセッサによって実行される場合に実行する命令を含む。この方法は、コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、リレーショナルデータベースにおいてユーザ入力に基づき、人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、ユーザ入力に応じた人物間の関係の表示を行なうステップであって、この表示が、リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップとを含む。
【０００６】
第3の態様では、システムは、1つまたは複数のプロセッサと、コンピュータ可読記憶媒体に実体的に具体化されており、人物間の関係を分析および表示するための方法を、プロセッサによって実行される場合に実行する命令を含むコンピュータプログラム製品とを含む。この方法は、コンピュータシステムにおいて、ある人物に関する人物間の関係の表示を要求するユーザ入力を受信するステップと、リレーショナルデータベースにおいてユーザ入力に基づき、人物を含む関係を選択し、選択された関係のいずれかに含まれる他の人物を選択するリレーショナルデータベースのクエリを実行するステップであって、リレーショナルデータベースのクエリが、ステップの最大数まで、選択される他の人物のそれぞれに対して実行される、ステップと、ユーザ入力に応じた人物間の関係の表示を行なうステップであって、この表示が、リレーショナルデータベースのクエリによって選択された人物を少なくとも示す、ステップとを含む。
【０００７】
実施形態は、次の特徴のいずれか、またはすべてを含むことができる。リレーショナルデータベースのクエリは、少なくとも1つの列における人物を指定する任意の関係における第1のジョインと、第1のジョインにおける関係で指定された任意の人物における第2のジョインと、第2のジョインにおける人物のいずれかを指定する関係における、少なくとも第1のレフトジョインと、第1のレフトジョインにおける関係で指定された任意の人物における、少なくとも第2のレフトジョインとを含み、リレーショナルデータベースのクエリは、最大数のステップが達せられるまでレフトジョインを実行し続ける。
【０００８】
リレーショナルデータベースのクエリは、関係テーブルを含むリレーショナルデータベースに対して実行され、関係テーブルは、それぞれの関係に対して、関係のソースのための第1の列と、関係のターゲットのための第2の列とを含み、リレーショナルデータベースのクエリは、第1の列が人物を示し、さらに第2の列が人物を示す場合に関係を選択する。
【０００９】
ユーザ入力は、別の人物を特定し、この特定された他の人物を含む、人物に関する人物間の関係に属する人物を探し出す。
【００１０】
リレーショナルデータベースのクエリは、人物およびつながりに関する情報をユーザがアップロードするオンデマンドシステムにおいて実行され、オンデマンドシステムは、ユーザ入力を受信した後に、人物間の関係の表示をユーザに対して行なう。
【００１１】
ユーザ入力は、ステップの最大数を指定する。
【００１２】
方法は、人物間の関係の表示として、ソーシャルグラフを生成するステップをさらに含む。
【００１３】
実施形態は、以下の利点のいずれか、またはすべてを提供することができる。例えば重みまたは優先順位付けを計算するために、組織のデータを分析することができる。例えば次に分析に用いられるクラスターを特定するために、単一のアルゴリズムを実行することができる。ソーシャルネットワークのグラフのための1つまたは複数のパスを計算することができる。ソーシャルネットワークにおける関係の繰り返しが、高速に、またはより効率的に行なわれ得る。人物からの任意の分離度合いにおける入手可能なすべての関係が決定され、また提供され得る。
【００１４】
1つまたは複数の実施形態における詳細が、添付図面と以下の説明とにおいて明記されている。他の特徴および利点は、明細書、図面、および特許請求の範囲より明白となろう。
【図面の簡単な説明】
【００１５】
【図１】人物間の関係を分析および表示するための例示的なアーキテクチャを示す図である。
【図２Ａ】人物間の関係を分析および表示するための擬似コードの例を示す図である。
【図２Ｂ】人物間の関係を分析および表示するための擬似コードの例を示す図である。
【図３】人物間の関係を分析および表示するための例示的なアルゴリズムを示す図である。
【図４】人物間の関係を分析および表示するための例示的な別のアルゴリズムを示す図である。
【図５】本書で説明されるコンピュータ実施方法に関連して用いることができるコンピューティングシステムのブロック図である。
【発明を実施するための形態】
【００１６】
様々な図面において、同一の参照記号は同一の要素を示す。
【００１７】
この開示では、人物間の関係を分析および表示する例が説明される。いくつかの実施形態では、関係を分析するためのアルゴリズムは、リレーショナルデータベース用の基本クエリ言語で表現されたデータベースクエリとして実現される。人物間の関係の場合には、任意のノードに対する接続数が限られていることと、そのため好適なクエリを実行することによってデータベースを分析することが管理可能なタスクであることとをほぼ常に想定することができる。すなわち、数千以上の登録済みの関係をエンティティ(例えば、従業員)が有する場合でも、クエリエンジンは、データベースにおける関係を即座に調べ、1つまたは複数のステップでサーチを広げることができる。
【００１８】
いくつかの実施形態では、アルゴリズムは、指定された開始エンティティ(例えば、特定の従業員)と、関心のある分離ステップ(separation step)の最大数とに基づいて、開始エンティティに対する関係を有する、多くても最大数のステップにおけるすべてのエンティティをデータベースの中で探し出し、それらを提供することができる。別の例としては、アルゴリズムは、指定された2つのエンティティに基づいて、この2つのエンティティをつなぐ、任意選択で多くても最大数のステップを有する、すべての関係パス(relation path)を見つけることができる。
【００１９】
図1は、人物間の関係を分析および表示するための例示的なアーキテクチャ100を示す。このアーキテクチャ100は、データベースシステム102、サーバシステム104、およびクライアントシステム106のそれぞれのうちの少なくとも1つを含む。システム102〜106のうちの1つまたは複数は、2つ以上の物理的なデバイスを介して分散していてもよい。いくつかの実施形態では、システム102〜106のうちの2つ以上は、同じデバイスに取り付けられていてもよい。これらのシステムは、伝送における任意の好適な接続部、プロトコル、または形態を用いて、互いと、かつ/または、他のコンポーネント(図示せず)と通信することができる。例えば、サーバシステム104とクライアントシステム106は、インターネットなどの1つまたは複数のネットワークを介して接続されていてもよい。クライアントシステム106は、ブラウザ、および/または、少なくとも1つの特別に構成されたプログラムを含むことができ、このプログラムは、サーバシステム104とインタフェースをとることができ、かつ/または、データベースシステム102と直接インタフェースをとることができる。いくつかの実施形態では、クライアント-サーバアーキテクチャを必要としない構成を含む、他の構成が用いられてもよい。
【００２０】
データベースシステム102は、少なくとも1つのリレーショナルデータベース108と、少なくとも1つのクエリエンジン110とを含む。このデータベースシステム102は、例えば、バックエンドシステムの一部と考えられる。クエリエンジンは、限定されないがSQLを含む任意の好適なクエリ言語を用いて、データベース108に対してクエリを実行するように構成されている。このようなクエリは、2例のみを挙げると、前もってクエリエンジンに記憶されて命令に応じて実行されてもよく、または、実行用にリアルタイムでクエリエンジンに提供されてもよい。任意の好適なリレーショナルデータベースを用いることができる。
【００２１】
リレーショナルデータベース108は、ここでは複数のテーブルを含む。ここでは、関係ID、ソースエンティティ、ターゲットエンティティ、および、関係の種類にそれぞれ対応する少なくとも4つのキー(id、ソース、ターゲット、およびtype_id)を含む関係テーブル112が示されている。例えば、関係テーブルにおけるエントリーは、次のように表すことができる。
【００２２】
【表１】
2013131218.tif 000003
【００２３】
すなわち、上記のエントリーは、ABC123XYZと呼ばれる関係が、報告するPerson1を、この例におけるデータベースが用いられている組織のPerson2につないでいることを指定している。Person1およびPerson2という用語は、2例のみを挙げると、識別子でもよく、または、それぞれの従業員の名前でもよい。上記の関係の代わりに、またはそれに加えて、他の関係を用いることができる。関係テーブル112は、定義されたそれぞれの関係に対して1つのエントリーを含むことになる。いくつかの実施形態では、1つまたは複数の他の列が関係テーブルに含まれ得る。例えば、1つもしくは複数の日または時間を用いて、関係の有効期間を指定することができる。
【００２４】
リレーショナルデータベース108は、エンティティID、および、そのエンティティの表示名にそれぞれ対応する少なくとも2つのキー(id、およびdisplay_name)を有するエンティティテーブル114を含む。例えば、関係テーブルのエントリーは、次のように表すことができる。
【００２５】
【表２】
2013131218.tif 000004
【００２６】
すなわち、上記のエントリーは、Person2と呼ばれるエンティティが「Alexey Soshin」と表示される必要があることを指定している。いくつかの実施形態では、エンティティテーブル114は、人物のプロフィールおよび/または人物の写真などの、それぞれのエンティティに関するより多くの情報を指定するために、より多くの列を含む。
【００２７】
サーバシステム104は、1つまたは複数のサービスを提供し、それらのサービスをユーザに対してアクセス可能にする。いくつかの実施形態では、アプリケーションは、サーバシステムで実行されるプログラムとして実装される。例えば、組織の業務におけるいくつかの側面を管理するために、1つまたは複数のエンタープライズリソースプランニング(ERP)のプログラムを稼働させることができる。
【００２８】
クライアントシステム106は、サーバシステム104および/またはデータベースシステム102にアクセスする1人または複数の個別のユーザによって用いられる。ユーザは、ほんの数例を挙げると、システムから情報を取り出し、新しい情報をシステムに記憶させ、かつ/または、既存の情報を操作することができる。いくつかの実施形態では、クライアントシステム106は、1つまたは複数のパーソナルコンピュータ、ハンドヘルドコンピュータ、スマートフォン、または、任意の他の好適な種類のデバイスを用いて実装される。ユーザは、クライアントシステム106を用いて入力を生成し、その入力によって、示される人物に関する、人物間の関係の表示が要求される。またこの入力は、最終的にはデータベースシステム102で受信される。入力は、例えば、開始エンティティを特定し、ステップの最大数を指定することができる。
【００２９】
クライアントシステム106は、グラフィカルユーザインタフェース(GUI)116を用いて、1つまたは複数の方法で関係分析の結果を提供することができる。すなわち、データベースシステム102が、人物間の関係における表示をまずサーバシステム104に提供し、次にサーバシステム104が、クライアントシステムに対して対応する伝送を行なうことができる。いくつかの実施形態では、クライアントシステム106は、サーバシステム104で実行される1つまたは複数のアプリケーションにおけるデフォルトのGUIを用いる。例えば、いくつかの企業向けのアプリケーション用にSAP AGから提供されているデフォルトのGUIを用いることができる。いくつかの実施形態では、指定されるGUIは、データベースシステム102とのインタフェースをとるために書かれており、特に、人物間の関係を分析するためのアルゴリズムを実行するデータベースクエリを起動するために書かれている。指定されるこのようなGUIは、データベースシステム102から任意の好適な形式で情報を取り出すことができる。例えば、情報は、XMLコードを用いて、かつ/または、(JSONとして知られている)JavaScript（登録商標）オブジェクトノーテイションによって提供することができる。
【００３０】
いくつかの実施形態では、GUI116は、テーブルの形式で結果を提供する。さらに、分析で探し出された人物の名前または他の識別子を示すテーブル118Aが表示されてもよい。
【００３１】
例えば、「reportsTo」関係を介して「Alexey Soshin」に間接的につながっている人物にユーザが関心をもっていると想定されたい。特に、このユーザは、Alexey Soshinから正確に2ステップだけ離れた人物だけに関心をもっており、例えば3ステップ以上離れた人物、したがってAlexey Soshinをあまり知らない可能性のある人物には関心をもっていない。また、分離ステップの最大数につながる照会を制限することによって、多くなりすぎる結果を回避することもできる。リレーショナルデータベース102に対してデータベースクエリが実行されると、テーブル118Aは、次の抜粋部分に示されているような情報を含むことができる。
【００３２】
【表３】
2013131218.tif 000005
【００３３】
すなわち、テーブル118Aは、ここでは、それぞれのステップがAlexey Soshinと別の人物との関係を表すステップの結果をリストとして示している。名前の第1列は、ここでは、すべてのステップに対してAlexey Soshinを挙げているが、これは、この開始エンティティがクエリ全体に共通しているためである。いくつかの実施形態では、この情報は表示されないか、または取り出された他の名前と異なるように表示される。
【００３４】
名前の第2列は、ここでは、Alexey Soshinも指定されている「reportsTo」関係が見出された人物を挙げている。特に、クエリが広く表現されている場合には、これは、Alexey Soshinに報告する人物と、Alexey Soshinが報告する人物との両方を含むことになる。他の場合には、これらのカテゴリーのうちの一方だけが含まれる。上記のテーブルは、テーブル118Aの抜粋のみを示しているため、名前の第2列は、ここではそれぞれのエントリーにおいて同じ名前-「Ohad Yassin」-を示しているが、1つまたは複数の他の名前が他のエントリーに現れる場合がある。
【００３５】
名前の第3列は、ここでは、第2列における対応する人物も指定されている「reportsTo」関係が見出された人物を挙げている。同様に、これは、「reportsTo」関係における両方の方向、またはそれらの一方のみを広く含むことができる。
【００３６】
いくつかの実施形態では、GUI116は、1つまたは複数の結果をグラフィカルな形態で提供する。例えば、ソーシャルグラフ(social graph)118Bおよび/またはソーシャルグラフ118Cを表示することができる。ソーシャルグラフは、特定されたエンティティに相当する1つまたは複数のノード120と、特定された関係に相当する1つまたは複数のエッジ(edge)122とを示すことができる。例えば、1つまたは複数のノード120は、対応するエンティティの写真または他の図を提供することができる。
【００３７】
ソーシャルグラフ118Bは、2ステップに限定された関係分析の一部を示す。すなわち、一番左側のノード120は、開始エンティティ(例えば、上の例におけるAlexey Soshin)を表すことができ、真ん中のノードは、指定された関係(例えば、「reportsTo」関係)を開始エンティティに対して有する人物を表すことができ、一番右側のノードは、真ん中の人物に関する特定された関係を表すことができる。
【００３８】
同様に、ソーシャルグラフ118Cは、ノード120をつなぐ特定されたエッジ122の一部またはすべてを表すことができる。いくつかの実施形態では、ソーシャルグラフ118Bにおけるそれぞれのエッジ122は、一方のエンティティから別のエンティティへのパスを表す。例えば、クエリは、多くても2ステップの分離を要するエッジ122の人物だけが表示されるように制限される。
【００３９】
データベースシステム102で用いられるアルゴリズムは、いかなる特定の実装も必要としない。アルゴリズムは、むしろ、リレーショナルデータベースの基本的なデータベースクエリ言語(例えば、SQL)で書かれる。このことは、重要な利点を与え得る。例えば、データが本来はオラクルデータベースで受信され、そこで何らかの関係分析が行なわれる場合、同じアルゴリズムは、同様に、または、代わりに、インストールされたSQLクエリプログラムを有するラップトップコンピュータ上で用いられ、同じデータに対して同じ結果を得ることができる。すなわち、この状況では、すべてのロジックは、例えばサーバまたは他の場所における特別にコード化されたロジックによってではなく、データベースコアによって処理される。このため、分析が異なる状況で行なわれる必要がある場合でも、アルゴリズムを異なる言語で実装する必要はない。さらに、関係のグラフにおけるノード数にかかわらず実行されることになる単一のクエリだけが必要となる。
【００４０】
関係分析は、オンデマンド環境で行なわれてもよい。いくつかの実施形態では、アーキテクチャ100は、限定されないがソーシャルネットワークの検出を含むオンデマンドサービスを提供するために用いられる。例えば、ユーザは、クライアントシステム106を用いて、人物と、人物間のつながりとに関する情報をアップロードすることができる。次に、データベースシステム102は、リレーショナルデータベースのクエリを実行することができる。さらに、結果として得られる人物間関係の表示は、例えば上の例におけるラインに沿ってユーザに提供され得る。
【００４１】
アルゴリズムの一部またはすべては、インメモリ技術を用いて実行されてもよい。例えば、リレーショナルデータベース108がエンティティ間の関係をすでに記憶しており、そのデータベースにおいて1つまたは複数の論理積がとられてもよい。それによって、(場合によっては複数の繰り返しによって)グループを結合した結果のみが出力される。いくつかの実施形態では、SAP AGより入手可能なIn-Memory Computing Engineが必要となり、このエンジンには、例えば一実施形態では、同様にSAP AG製のHANAとして知られているHigh Performance Analytical Applianceが用いられる。
【００４２】
図2A〜図2Bは、人物間の関係を分析および表示するための擬似コード200の例を示す。202では、開始オブジェクトe0における関係r0が見出される。この例では、「reportsTo」関係におけるすべての方向がクエリに含まれている。204では、現在特定されているエンティティに対して関係がレフトジョイン(left join)され、一方206では、現在特定されている関係に対してエンティティがレフトジョインされる。すなわち、擬似コード202の使用においては、ジョイン操作をサポートするリレーショナルデータベースが必要となる。
【００４３】
208では、アルゴリズムがすでに繰り返したすべてのエンティティが除外される。このことは、例えば、2つのエンティティが互いに相互の関係を有する際に問題を回避することができる。
【００４４】
図3は、人物間の関係を分析および表示するための例示的なアルゴリズム300を示す。例えば、このアルゴリズム300は、エンティティ間における2ステップの分離が求められていることを意味するパラメータ=2を擬似コード200(図2)が有する状況に対応している。302では、開始エンティティの「reportsTo」関係が選択される。304では、選択された関係におけるエンティティが選択される。306では、選択されたエンティティにおける関係が選択される。308では、選択された関係におけるエンティティが選択される。この例では、「Alexey Soshin」が開始エンティティである。
【００４５】
図4は、人物間の関係を分析および表示するための例示的な別のアルゴリズム400を示す。このアルゴリズム400におけるいくつかの側面は、アルゴリズム300(図3)のものと類似している。しかし、アルゴリズム400は、402において、特定されたすべての関係に対して「Meni Tito」がターゲットエンティティである必要があることを指定している。したがって、アルゴリズム400は、この例では2ステップの分離を有する関係である、指定された2つのエンティティ間のパスを探し出そうとする。さらに、このアルゴリズムによって、単なる「reportsTo」関係ではない、すべての種類の関係がカバーされる。これは、クエリに対して任意のtype_idを指定することによって404および406で指示される。
【００４６】
図5は、汎用コンピュータシステム500の概略図である。このシステム500は、一実施形態による、先に説明されたコンピュータ実施方法のいずれかに関連して説明された操作のために用いることができる。システム500は、プロセッサ510、メモリ520、記憶デバイス530、および、入力/出力デバイス540を含む。コンポーネント510、520、530、および540のそれぞれは、システムバス550によって相互接続されている。プロセッサ510は、システム500の中で実行するための命令を処理することができる。一実施形態では、プロセッサ510は、シングルスレッドのプロセッサである。別の実施形態では、プロセッサ510は、マルチスレッドのプロセッサである。プロセッサ510は、入力/出力デバイス540におけるユーザインタフェース用のグラフィカル情報を表示するために、メモリ520または記憶デバイス530に記憶された命令を処理することができる。
【００４７】
メモリ520は、システム500の内部で情報を記憶する。いくつかの実施形態では、メモリ520は、コンピュータ可読媒体である。メモリ520は、いくつかの実施形態では揮発性のメモリユニットであり、他の実施形態では不揮発性のメモリユニットである。
【００４８】
記憶デバイス530は、システム500に大容量記憶を提供することができる。一実施形態では、記憶デバイス530はコンピュータ可読媒体である。様々な別の実施形態では、記憶デバイス530は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイスでもよい。
【００４９】
入力/出力デバイス540は、システム500に入力/出力動作を提供する。一実施形態では、入力/出力デバイス540は、キーボードおよび/またはポインティングデバイスを含む。別の実施形態では、入力/出力デバイス540は、グラフィカルユーザインタフェースを表示するためのディスプレイユニットを含む。
【００５０】
説明された特徴は、デジタル電子回路で実装されてもよく、または、コンピュータのハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせで実装されてもよい。装置は、プログラマブルプロセッサによる実行のために機械可読記憶デバイスなどの情報担体(information carrier)の中で実体的に具体化されたコンピュータプログラム製品によって実現することができ、方法ステップは、命令からなるプログラムを実行するプログラマブルプロセッサによって実行され、入力データを操作して出力を生成することによって、説明された実施形態における機能を実施することができる。説明された機能は、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータと命令を受信し、またそれらにデータと命令を送信するために接続された少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行可能な1つまたは複数のコンピュータプログラムにおいて有利に実現され得る。コンピュータプログラムは、コンピュータで直接的または間接的に用いられて特定の動作を行なうか、または特定の結果をもたらすことができる一組の命令である。コンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語を含む、任意の形態のプログラム言語で書かれていてもよく、スタンドアローンプログラムもしくはモジュール、コンポーネント、サブルーチン、または、コンピューティング環境で用いるのに適した他のユニットを含む、任意の形態で導入することができる。
【００５１】
命令からなるプログラムを実行するのに好適なプロセッサには、例として、汎用マイクロプロセッサおよび特殊用途マイクロプロセッサの両方と、単一プロセッサ、または、任意の種類のコンピュータにおける複数のプロセッサのうちの1つとが含まれる。プロセッサは、一般に、読み出し専用メモリ、またはランダムアクセスメモリ、またはその両方から命令とデータを受信することになる。コンピュータの基本素子は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリとである。また、コンピュータは、一般に、データファイルを記憶するための1つまたは複数の大容量記憶デバイスを含むか、またはそれらと通信するために動作可能に接続されることになる。このようなデバイスには、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、および光学ディスクが含まれる。コンピュータプログラムの命令とデータを実体的に具体化するのに適した記憶デバイスには、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイスを例として含む不揮発性メモリと、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとからなるすべての形態が含まれる。プロセッサおよびメモリは、ASIC(特定用途向け集積回路)で補われてもよく、またはASICの中に組み込まれていてもよい。
【００５２】
ユーザとの対話を可能とするために、特徴は、ユーザに情報を表示するためのCRT(ブラウン管)またはLCD(液晶ディスプレイ)などのディスプレイデバイスと、キーボードと、ユーザがコンピュータに入力を与えることができる、マウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータによって実現することができる。
【００５３】
特徴は、データサーバなどのバックエンドコンポーネントを含むコンピュータシステム、または、アプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピュータシステム、または、グラフィカルユーザインタフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピュータシステム、または、それらの任意の組み合わせで実現することができる。システムにおけるコンポーネントは、任意の形態を介して、または、通信ネットワークなどのデジタルデータ通信の媒体を介して接続することができる。通信ネットワークの例には、例えばLANと、WANと、コンピュータおよびネットワークが形成するインターネットとが含まれる。
【００５４】
コンピュータシステムは、クライアントとサーバを含むことができる。クライアントとサーバは、一般には互いに遠くに離れており、通常は、説明されたいずれかのネットワークを介して相互に動作する。クライアントとサーバの関係は、それぞれのコンピュータ上で動作する、互いにクライアント-サーバの関係を有するコンピュータプログラムによって生まれる。
【００５５】
複数の実施形態が説明された。しかし、本開示の趣旨と範囲から逸脱することなく様々な変更がなされ得ることが理解されるであろう。したがって、他の実施形態は、添付の特許請求の範囲に含まれる。
【符号の説明】
【００５６】
100  例示的なアーキテクチャ
102  データベースシステム
104  サーバシステム
106  クライアントシステム
108  リレーショナルデータベース
110  クエリエンジン
112  関係テーブル
114  エンティティテーブル
116  グラフィカルユーザインタフェース
118A  テーブル
118B,118C  ソーシャルグラフ
120  ノード
122  エッジ
【図１】
2013131218.tif 000006
【図２Ａ】
2013131218.tif 000007
【図２Ｂ】
2013131218.tif 000008
【図３】
2013131218.tif 000009
【図４】
2013131218.tif 000010
【図５】
2013131218.tif 000011
【外国語明細書】
2013131218000001.pdf