IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キンドリル・インクの特許一覧

<>
  • 特許-ナレッジグラフのパーティション分割 図1
  • 特許-ナレッジグラフのパーティション分割 図2
  • 特許-ナレッジグラフのパーティション分割 図3
  • 特許-ナレッジグラフのパーティション分割 図4
  • 特許-ナレッジグラフのパーティション分割 図5
  • 特許-ナレッジグラフのパーティション分割 図6
  • 特許-ナレッジグラフのパーティション分割 図7
  • 特許-ナレッジグラフのパーティション分割 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】ナレッジグラフのパーティション分割
(51)【国際特許分類】
   G06F 16/28 20190101AFI20231130BHJP
   G06F 16/2453 20190101ALI20231130BHJP
【FI】
G06F16/28
G06F16/2453
【請求項の数】 22
(21)【出願番号】P 2021521826
(86)(22)【出願日】2019-11-22
(65)【公表番号】
(43)【公表日】2022-01-14
(86)【国際出願番号】 IB2019060059
(87)【国際公開番号】W WO2020109946
(87)【国際公開日】2020-06-04
【審査請求日】2022-09-07
(31)【優先権主張番号】16/200,757
(32)【優先日】2018-11-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521555742
【氏名又は名称】キンドリル・インク
【氏名又は名称原語表記】Kyndryl Inc.
【住所又は居所原語表記】One Vanderbilt Avenue,15th Floor,New York,New York 10017,USA
(74)【代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】シャイデラー、ティム
(72)【発明者】
【氏名】ルーガー、エリック
(72)【発明者】
【氏名】ラビザ、ステファン
(72)【発明者】
【氏名】フレザー、フレデリック
【審査官】原 秀人
(56)【参考文献】
【文献】国際公開第2014/109009(WO,A1)
【文献】特開2009-258794(JP,A)
【文献】特開2014-095946(JP,A)
【文献】特開2014-215839(JP,A)
【文献】特開2005-259074(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理により実行される方法であって、
過去の検索のセットを分析し、それに基づいて、複数のノードと前記ノードの選択されたものをリンクする複数のエッジとを有するナレッジグラフ内の前記複数のエッジの各々のアクセス頻度を求めることと、
前記ナレッジグラフ内の前記複数のエッジのうちの最も高いアクセス頻度を有する予め定められた百分率のエッジを、中間クラスタ・コアとしてマーク付けすることと、
前記予め定められた百分率のエッジのアクセス頻度に従って、前記マーク付けされた中間クラスタ・コアをソートすることと、
最も高いアクセス頻度を有する中間クラスタ・コアを第1のクラスタ・コアとして選択し、前記第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てることであって、前記第1のクラスタ・コア及び前記第1のエッジは第1のクラスタを構築する、割り当てることと、
前記第1のクラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コアを、第2のクラスタ・コアとして選択し、前記第2のクラスタ・コアの周りに予め定められた第2の半径内の第2のエッジを割り当てることであって、前記第2のクラスタ・コア及び前記第2のエッジは第2のクラスタを構築する、選択することと、
前記ナレッジグラフを、第1のクラスタを含む第1の部分ナレッジグラフと、前記第2のクラスタを含む第2の部分ナレッジグラフとにパーティション分割することと、
を含む方法。
【請求項2】
前に選択されたクラスタのエッジから離れた、最も高いアクセス頻度を各々が有する1つ又は複数の付加的な中間クラスタ・コアを反復的に選択し、前記付加的な中間クラスタ・コアの各々の周りにそれぞれの予め定められた半径内のそれぞれのエッジを割り当てることであって、前記付加的な中間クラスタ・コアの各々及び前記それぞれのエッジはさらなるクラスタを構築する、割り当てることをさらに含む、請求項1に記載の方法。
【請求項3】
前記予め定められた第1の半径、前記予め定められた第2の半径、及び前記それぞれの予め定められた半径はそれぞれのクラスタ・コアの周りの予め定められた経路長である、請求項2に記載の方法。
【請求項4】
前記予め定められた第1の半径、前記予め定められた第2の半径、及び前記それぞれの予め定められた半径はそれぞれ、前記ナレッジグラフの前記エッジの前記アクセス頻度の逆数の和の予め定められた経路長値である、請求項2に記載の方法。
【請求項5】
各エッジについて、検索経路が前記エッジを通るたびに増加するアクセス・カウンタ値を保持することと、
前記エッジを通る検索経路のアクセス頻度を表すスコア値を保持することと
をさらに含む、請求項1に記載の方法。
【請求項6】
前記アクセス・カウンタ値に基づいて定期的に前記スコア値を更新することと、
前記アクセス・カウンタ値をゼロにリセットすることと
をさらに含む、請求項5に記載の方法。
【請求項7】
前記ナレッジグラフをパーティション分割することは、
2つの隣接するクラスタの2つのクラスタ・コアの間の最短経路を判断することであって、前記最短経路は、それぞれの経路に沿ったそれぞれのエッジのアクセス頻度の最小和を有する経路である、判断することと、
前記最短経路上の最も低いアクセス頻度を有するエッジを、2つの隣接するクラスタ間の切断点としてマーク付けすることと、
切断点マークを含むエッジのない経路が2つの隣接するクラスタ間に存在しなくなるまで、前記最短経路を判断すること及び前記エッジを前記切断点としてマーク付けすることを反復することと
も含む、請求項1に記載の方法。
【請求項8】
前記ナレッジグラフへの新しい検索要求を受信すると、前記方法は、
ローカル検索エンジンを前記第1及び第2の部分ナレッジグラフの各々に割り当てることと、
前記新しい検索要求を、前記第1及び第2の部分ナレッジグラフの各々に割り当てられた前記ローカル検索エンジンの各々に渡すことと、
前記第1及び第2の部分ナレッジグラフにおいて前記新しい検索要求を並行して実行することとをさらに含む、請求項1に記載の方法。
【請求項9】
前記第1及び第2のクラスタ・コアの1つ又は複数にリンクされたクラスタ・コアにおいて、前記第1及び第2の部分ナレッジグラフの各々における前記新しい検索要求を開始することをさらに含む、請求項8に記載の方法。
【請求項10】
それぞれの検索経路が部分ナレッジグラフのボーダーを横断する場合、ローカル検索エンジンの検索スレッドを、ローカル検索エンジンから別の部分ナレッジグラフ内の別のローカル検索エンジンに渡すことをさらに含む、請求項8に記載の方法。
【請求項11】
1つ又は複数のプロセッサと、
前記1つ又は複数のプロセッサに結合されたコンピュータ可読ストレージ媒体と
を含み、前記コンピュータ可読ストレージ媒体は、前記1つ又は複数のプロセッサによって実行されるとき、前記1つ又は複数のプロセッサに、
過去の検索のセットを分析し、それに基づいて、複数のノードと前記ノードの選択されたものをリンクする複数のエッジとを有するナレッジグラフ内の前記複数のエッジの各々のアクセス頻度を求めることと、
前記ナレッジグラフ内の、最も高いアクセス頻度を有する予め定められた百分率のエッジを、中間クラスタ・コアとしてマーク付けすることと、
前記予め定められた百分率のエッジのアクセス頻度に従って前記マーク付けされた中間クラスタ・コアをソートすることと、
最も高いアクセス頻度を有する中間クラスタ・コアを第1のクラスタ・コアとして選択し、前記第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てることであって、前記第1のクラスタ・コア及び前記第1のエッジは第1のクラスタを構築する、選択することと、
前記第1のクラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コアを、第2のクラスタ・コアとして選択し、前記第2のクラスタ・コアの周りに予め定められた第2の半径内の第2のエッジを割り当てることであって、前記第2のクラスタ・コア及び前記第2のエッジは第2のクラスタを構築する、選択することと、
前記ナレッジグラフを、第1のクラスタを含む第1の部分ナレッジグラフ及び前記第2のクラスタを含む第2の部分ナレッジグラフにパーティション分割することと
を含む動作を実行させるプログラム命令を格納する、システム。
【請求項12】
前記動作は、
各々が前に選択されたクラスタのエッジから離れた、最も高いアクセス頻度を有する、1つ又は複数の付加的な中間クラスタ・コアを反復的に選択し、前記付加的な中間クラスタ・コアの各々の周りにそれぞれの予め定められた半径内のそれぞれのエッジを割り当てることであって、前記付加的な中間クラスタ・コアの各々及び前記それぞれのエッジは更に別のクラスタを構築する、割り当てることをさらに含む、請求項11に記載のシステム。
【請求項13】
前記予め定められた第1の半径、前記予め定められた第2の半径、及び前記それぞれの予め定められた半径はそれぞれのクラスタ・コアの周りの予め定められた経路長である、請求項12に記載のシステム。
【請求項14】
前記予め定められた第1の半径、前記予め定められた第2の半径、及び前記それぞれの予め定められた半径はそれぞれ、前記ナレッジグラフの前記エッジの前記アクセス頻度の逆数の和の予め定められた経路長値である、請求項12に記載のシステム。
【請求項15】
前記動作は、
各エッジについて、検索経路が前記エッジを通るたびに増加するアクセス・カウンタ値を保持することと、
前記エッジを通る検索経路のアクセス頻度を表すスコア値を保持することと
をさらに含む、請求項11に記載のシステム。
【請求項16】
前記動作は、
前記アクセス・カウンタ値に基づいて、定期的に前記スコア値を更新することと、
前記アクセス・カウンタ値をゼロにリセットすることと
をさらに含む、請求項15に記載のシステム。
【請求項17】
前記動作は、
2つの隣接するクラスタの2つのクラスタ・コアの間の最短経路を判断することであって、前記最短経路は、それぞれの経路に沿ったそれぞれのエッジのアクセス頻度の最小和を有する経路である、判断することと、
前記最短経路上の最も低いアクセス頻度を有するエッジを、2つの隣接するクラスタ間の切断点としてマーク付けすることと、
切断点マークを含むエッジのない経路が2つの隣接するクラスタ間に存在しなくなるまで、前記最短経路を判断すること及び前記エッジを前記切断点としてマーク付けすることを反復することと
をさらに含む、請求項11に記載のシステム。
【請求項18】
前記ナレッジグラフへの新しい検索要求を受信すると、前記動作は、
ローカル検索エンジンを前記第1及び第2の部分ナレッジグラフの各々に割り当てることと、
前記新しい検索要求を、前記第1及び第2の部分ナレッジグラフの各々に割り当てられた前記ローカル検索エンジンの各々に渡すことと、
前記第1及び第2の部分ナレッジグラフにおいて前記新しい検索要求を並行して実行することと
をさらに含む、請求項11に記載のシステム。
【請求項19】
前記動作は、
前記第1及び第2のクラスタ・コアの1つ又は複数にリンクされたクラスタ・コアにおいて、前記第1及び第2の部分ナレッジグラフの各々における前記新しい検索要求を開始することをさらに含む、請求項18に記載のシステム。
【請求項20】
前記動作は、
それぞれの検索経路が部分ナレッジグラフのボーダーを横断する場合、ローカル検索エンジンの検索スレッドをローカル検索エンジンから別の部分ナレッジグラフ内の別のローカル検索エンジンに渡すことをさらに含む、請求項18に記載のシステム。
【請求項21】
請求項1から請求項10までのいずれかに記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【請求項22】
請求項21に記載のコンピュータ・プログラムを格納したコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、ナレッジグラフをパーティション分割する(partition)ための方法に関し、より具体的には、複数のノードとエッジとを含むナレッジグラフをパーティション分割するためのコンピュータ実施方法に関する。本開示はさらに、ナレッジグラフをパーティション分割するための関連したシステム及びコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
コグニティブ・コンピューティングにおいて、ナレッジグラフが、情報を格納し、処理するために使用される。ナレッジグラフは、メッシュの頂点又はノード上に格納された(種々のソースから収集された)ファクトと、ファクト、ノード、頂点の間の関係を格納するリンクとしても知られるエッジとから成る。エッジは、関係の性質もしくは強さ又はその両方を説明する関連した属性を有することができる。
【0003】
コンピューティング操作に関してナレッジグラフで真っ先に行われる操作は、検索操作である。グラフ検索を並列化する概念は、研究者によって広く研究されてきた。ナレッジグラフにおける検索のための従来の並列化手法は、特定の条件が満たされる(例えば、検索経路の現在点から十分な数のエッジが出ている)とき、検索プロセスを分割(split off)することに基づいている。同時スレッド(concurrent thread)が実行されているときには、検索経路の横断/併合を制御する必要があり、並列化オーバーヘッドが性能向上を上回ってはいけない。
【0004】
しかしながら、検索要求を並列化するこの手法は、前の検索の結果を利用するものではない。各検索は、静的アルゴリズムを用いて独立して行われる。アルゴリズムは、検索が行われるナレッジグラフの特定の構造を考慮しない。
【0005】
プロセスをナレッジグラフ全体で実行されている部分プロセスに分割するための規則を定める代わりに、性能及び精度を向上させるために、代替的な手法が望まれる。
【0006】
ナレッジグラフをパーティション分割するためのコンピュータ実施方法に関連した幾つかの開示がある。
【0007】
米国特許出願公開第2018/0052884 A1号は、アイテム推薦(item recommendation)を行うために使用される、より形式的な機械可読の構造化されたクエリ表現への自然言語のユーザ入力の処理を開示する。ユーザ入力の分析は、種々のユーザと電子市場との比較的頻繁に生じる前の相互作用を記述するカテゴリ、属性及び属性値から構成されるナレッジグラフを介して調整される。ナレッジグラフは、有向エッジを有し、その各々は、ユーザの行動パターン、市場における履歴購入者パターンに基づいたユーザ・クエリと構造化データとの間の関連付け、購入者の要件をより良く定めるために使用される販売者によって購入に供されるアイテムからのメタデータ、及び/又はさらなるユーザ入力のための関連プロンプトを生成するための、天気、位置/場所、出来事、及びインベントリ関連データにマッピングする受け取ったアイテムの世界的知識から計算されたカテゴリ/属性/属性値の相互作用の条件付き確率に基づいたスコア値を有する。
【0008】
米国特許出願公開第2018/0144424 A1号は、複数の医療関連のナレッジグラフに問い合わせを行うための方法及びシステムを記載する。この方法は、キーワード・ベースのクエリに基づいて、複数の医療関連のナレッジグラフから、医療関連の応答の部分グラフ(sub-graph)のセットを受け取ることを含む。部分グラフはランク付けされ、新しい部分グラフが生成される。
【0009】
既知の解決策の欠点は、提案される方法が、多かれ少なかれ静的でドメイン固有のものであること、及び/又はそうした活動のための並列性を欠いているという事実にあり得る。
【発明の概要】
【0010】
本開示の一態様によると、ナレッジグラフをパーティション分割するためのコンピュータ実施方法を提供することができる。ナレッジグラフは、複数のノードと複数のエッジとを含むことができ、エッジは、ノードのうちの選択されたものをリンクすることができる。方法は、過去の検索のセットを分析し、それに基づいて、ナレッジグラフ内の複数のエッジの各々のアクセス頻度を求めることと、ナレッジグラフ内の最も高いアクセス頻度を有する予め定められた百分率のエッジを中間クラスタ・コアとしてマーク付けすることとを含むことができる。
【0011】
方法は、そのアクセス頻度に従って、マーク付けされた中間クラスタ・コア、すなわちそれぞれのエッジをソートすることと、最も高いアクセス頻度を有する中間クラスタ・コアを第1のクラスタ・コアとして選択することと、第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てることであって、第1のクラスタ・コア及び第1のエッジは第1のクラスタを構築する、割り当てることとをさらに含むことができる。
【0012】
さらに、方法は、第1のクラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コアを第2のクラスタ・コアとして選択することと、第2のクラスタ・コアの周りに予め定められた第2の半径内の第2のエッジを割り当てることであって、第2のクラスタ・コア及び第2のエッジは第2のクラスタを構築する、割り当てることと、ナレッジグラフを、第1のクラスタを含む第1の部分ナレッジグラフと、第2のクラスタを含む第2の部分ナレッジグラフとにパーティション分割することとを含むことができる。
【0013】
本開示の別の態様によると、ナレッジグラフをパーティション分割するためのシステムを提供することができる。ナレッジグラフは、複数のノードと複数のエッジとを含むことができ、エッジは、ノードの選択されたものをリンクすることができる。システムは、過去の検索のセットを分析し、それに基づいて、ナレッジグラフ内の複数のエッジの各々のアクセス頻度を求めるように適合された分析ユニットと、ナレッジグラフ内の最も高いアクセス頻度を有する予め定められた百分率のエッジを中間クラスタ・コアとしてマーク付けするように適合されたマーク付けユニットと、アクセス頻度に従って、マーク付けされた中間クラスタ・コアをソートするソート・モジュールとを含むことができる。
【0014】
さらに、システムは、最も高いアクセス頻度を有する中間クラスタ・コアを第1のクラスタ・コアとして選択し、第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てるように適合された選択ユニットを含むことができ、第1のクラスタ・コア及び第1のエッジは第1のクラスタを構築する。選択ユニットはまた、第1のクラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コアを第2のクラスタ・コアとして選択し、第2のクラスタ・コアの周りに予め定められた第2の半径内の第2のエッジを割り当てるように適合することもでき、第2のクラスタ・コア及び第2のエッジは第2のクラスタを構築する。
【0015】
さらに、システムは、ナレッジグラフを、第1のクラスタを含む第1の部分ナレッジグラフ及び第2のクラスタを含む第2の部分ナレッジグラフにパーティション分割するように適合されたパーティション分割モジュールを含むことができる。
【0016】
ナレッジグラフをパーティション分割するための提案されるコンピュータ実施方法は、複数の利点及び技術的効果を提供することができる。
【0017】
大きく複雑なナレッジグラフを部分ナレッジグラフ又は部分グラフに(論理的に)分離することによって、こうしたプロセスをより迅速に実行し、ユーザ・クエリへの応答時間をより短くすることができる。既知の技術によって行われるように、同じ大きい知識グラフにおいて幾つかの検索プロセスを開始する代わりに、検索要求を受け取ったグローバル検索エンジンから、ローカル検索エンジンを分岐することができる。ローカル検索エンジンは、主として、論理的に分離された部分グラフの1つのみを用いて実行することができる。このことは、単一のナレッジグラフにおける異なる検索プロセス間の相互作用を管理するための要件を低減させることができる。さらに、異なる部分グラフにおいて異なるトピックを検索することも可能であり得る。さらに、検索経路が部分グラフ、すなわちクラスタのボーダーに到達した場合、ローカル検索エンジンの検索プロセスは、他の部分グラフ上で動作可能な並列型ローカル検索エンジンに手渡すことができる。このことは、並列型検索エンジンが単一の大きいナレッジグラフ上で動作するときに、衝突処理機構を保持するための労力を減らすことができる。
【0018】
ナレッジグラフをパーティション分割した後、個々の部分グラフをより容易に一貫した状態にすることができ(すなわち、全てのキューに入れられた動作がコミットされ)、この後、ナレッジグラフ全体を、例えばより容易なアーカイブのために一貫した状態にすることができる。このことは、完全なナレッジグラフの代わりに、1つの部分グラフをバックアップし、アーカイブするためのより効率的な手法を可能にし得る。また、ナレッジグラフ全体上で実行する代わりに、部分グラフ上で独立して実行されるとき、キュー・コミット・サイクルを要求することもある動作を更新する(すなわち書き込む)ために、より高い性能を達成することができる。
【0019】
以下、本発明の概念の付加的な実施形態を説明する。
【0020】
実施形態によると、方法は、既に構築されたクラスタ(例えば、前に選択されたクラスタ)のエッジから離れた、最も高い頻度を各々が有する付加的な中間クラスタ・コアを反復的に選択することと、付加的な中間クラスタ・コアの各々の周りにそれぞれの予め定められた半径内のそれぞれのエッジを割り当てることであって、付加的な中間クラスタ・コアの各々及びそれぞれのエッジはさらなるクラスタを構築する、割り当てることとを含む。従って、提案される概念は、元の知識グラフを複数の部分ナレッジグラフ又はナレッジの部分グラフに分割又はパーティション分割するように容易に拡張可能であり得る。
【0021】
方法の1つの可能な実施形態によると、第1の半径、第2の半径及びそれぞれの半径は各々、それぞれのクラスタ・コアの周りの予め定められた経路長とすることができる。このバージョンにおいて、他のクラスタ・コアのために、より多くの又はより少ない半径方向の対称的な保護領域を作成することができる。
【0022】
方法の1つの実施形態によると、第1の半径、第2の半径及びそれぞれの半径は各々、エッジのアクセス頻度の逆数の和の予め定められた経路長値とすることができる。そうした手法は、より多くのエッジが、検索者によってより頻繁にトラバースされる領域において別のクラスタ・コアになるのをブロックすることが可能になる。このように、クラスタは、円形ではなく、頻繁な検索経路に沿って形成し、従って、後の検索要求のための性能を増大させることができる。
【0023】
実施形態によると、方法はまた、各エッジについて、エッジの他の属性及び属性値に加えて、検索経路がエッジを通るたびにインクリメントすることができるアクセス・カウンタ値を保持することを含むこともできる。各エッジについての別の属性は、それぞれのエッジを通る検索経路のアクセス頻度を表す保持されるスコア値とすることができる。カウンタ及びスコアの分割は、不必要に見えるかもしれないが、これは、最新の検索をより強調することができるので、重要な利点を有し得る。
【0024】
1つの更に別の有利な実施形態によると、方法はまた、アクセス・カウンタ値に基づいてスコア値を定期的に更新することと、アクセス・カウント値をゼロにリセットすることとを含むこともできる。この方法は、スコアを適用することができ、このスコアは、エッジを通る最新の検索経路のトラバースをより重視し、前の検索経路のトラバースをあまり重視しない。例として、新しいスコアは、現在スコアを2で割ったもの及び現在カウンタを2で割ったものとして計算することができる。このように、現在のカウントは50%となり、前の期間のカウントは25%となり、その前の期間のカウントは12.5%になり、以下同様である。従って、ナレッジグラフにおけるこうした要求への動的適応反応を容易に実施することができる。
【0025】
方法の1つの有用な実施形態によると、ナレッジグラフのパーティション分割は、2つの隣り合うクラスタ・コア(例えば、2つの隣接するクラスタのクラスタ・コア)の間の最短経路を判断することであって、最短経路は、それぞれの経路に沿ったそれぞれのエッジのアクセス頻度の最小和を有する経路である、判断することと、判断された最短経路上の最も低いアクセス頻度を有するエッジを、隣接するクラスタ(例えば、2つの隣り合うクラスタ・コアに対応する2つの隣接するクラスタ)の間の、エッジの付加的な属性として扱うことができる切断点としてマーク付けすることと、切断点マークを含むエッジのない経路が隣接するクラスタ間に存在しなくなるまで、最短経路を判断するステップ及びエッジを切断点としてマーク付けするステップを反復することとを含むこともできる。従って、2つの部分グラフを比較的簡単な方法で互いから分離することができる。ナレッジグラフをパーティション分割するために静的手法を用いる代わりに、過去の検索の実際のアクセス頻度を反映させることができるので、2つの部分グラフは、部分グラフを分離する動的な方法を表すこともできる。
【0026】
1つの次の有利な実施形態によると、方法はまた、ナレッジグラフへの新しい検索要求を受信すると、すなわち、パーティション分割後、ローカル検索エンジンを部分ナレッジグラフの各々に割り当てることと、新しい検索要求を、部分ナレッジグラフに割り当てられたローカル検索エンジンの各々に渡すことと、ローカル検索エンジンによって、部分ナレッジグラフにおいて新しい検索要求を並行して実行することとを含むこともできる。アルゴリズムの使用は、それぞれの部分ナレッジグラフにおいて検索のためにいずれの開始点も自由に選択することができる。しかしながら、部分グラフにおける検索のための最適な開始点を選択するために、特別な規則を適用することができる。
【0027】
更に別の次の有利な実施形態において、方法はまた、それぞれのクラスタ・コアにリンクされたコアにおいて、それぞれの部分ナレッジグラフの各々から新しい検索要求を開始することを含むこともできる。これは、部分グラフの中心すなわち過去に高いアクセス頻度を有していたそれぞれのクラスタ中心に最も近いノードの1つに迅速にヒットする可能性が相対的に高すぎることがあるので、サブフラフにおける検索プロセス、従って、最初に受け取った検索要求の性能を改善することができる。
【0028】
更に別の有利な実施形態によると、方法はまた、それぞれの検索経路が部分ナレッジグラフのボーダーを横断する場合、ローカル検索エンジンの検索スレッドを、ローカル検索エンジンから別の部分ナレッジグラフ内の別のローカル検索エンジンに渡すこともできる。このように、検索経路がパーティション分割された部分グラフ間のボーダーをトラバースする場合でも、ローカル検索エンジンの検索プロセスの並列性を継続することができる。これは、関連したエッジが実際には除去されず、切断点としてマーク付けされるだけであるため可能となる。
【0029】
さらに、実施形態は、コンピュータ又はいずれかの命令実行システムによって又はこれと関連して使用されるプログラム・コードを提供するコンピュータ使用可能又はコンピュータ可読媒体からアクセス可能な関連したコンピュータ・プログラム製品の形を取ることができる。この説明の目的のため、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置、もしくはデバイスによって又はこれと関連して使用されるプログラムを格納、通信、伝搬、又は伝送するための手段を含むことができる任意の装置とすることができる。
【図面の簡単な説明】
【0030】
本開示の実施形態は、異なる主題に関連して説明されることに留意されたい。特に、幾つかの実施形態は、方法タイプの請求項(method type claim)を参照して説明されているが、他の実施形態は、装置タイプの請求項(apparatus type claim)を参照して説明される。しかしながら、当業者であれば、上記及び以下の説明から、特に断りのない限り、1つのタイプの主題に属する特徴の任意の組み合わせに加えて、異なる主題に関する特徴間、特に、方法タイプの請求項の特徴と装置タイプの請求項の特徴との間の任意の組み合わせも、本明細書内に開示されるものと見なされることを推測するであろう。
【0031】
上記に定められる態様、及び本開示のさらなる態様は、以下に説明される実施形態の例から明らかであり、実施形態の例を参照して説明されるが、本開示は、それらに限定されない。
【0032】
本開示の幾つかの実施形態は、以下の図面を参照して、単なる例示として説明されるであろう。
【0033】
図1】ナレッジグラフをパーティション分割するための本発明のコンピュータ実施方法の実施形態のブロック図を示す。
図2】クラスタ・コアを有するナレッジグラフの部分の実施形態のブロック図を示す。
図3】部分グラフをパーティション分割する第1のステップにおけるナレッジグラフの実施形態のブロック図を示す。
図4】部分グラフをパーティション分割する第2のステップにおけるナレッジグラフの実施形態のブロック図を示す。
図5】部分グラフをパーティション分割する第3のステップにおけるナレッジグラフの実施形態のブロック図を示す。
図6】部分グラフをパーティション分割する第4及び第5のステップにおけるナレッジグラフの実施形態のブロック図を示す。
図7】ナレッジグラフをパーティション分割するための開示されるシステムの実施形態のブロック図を示す。
図8図7に従ったシステムを含むコンピューティング・システムの実施形態のブロック図を示す。
【発明を実施するための形態】
【0034】
本説明の文脈において、以下の規則、用語もしくは表現又はその組み合わせを用いることができる。
【0035】
用語「ナレッジグラフ」は、ノードで表されるファクトと、ノード間の接続又はリンクを表すエッジとを含むネットワーク化データ構造を示すことができる。従って、ナレッジグラフは、いわゆる非構造化データ、すなわちファクト及びその意味関係の編成のための知識ベースを表すことができる。ナレッジグラフは、多くの場合、検索エンジンによって使用される。エッジは、例えば、2つの接続されたノード間のリンクの強さを記述する関連した属性によって特徴付けることができる。アクセス・カウンタ等のような他の属性を使用することもできる。エッジ及びノードは、一意の識別子(ID)を用いて管理することができる。
【0036】
用語「ナレッジグラフをパーティション分割する」とは、もともと完全なナレッジグラフを、少なくとも2つ又はそれより多い一般的に重複しない部分的なナレッジグラフに分離する活動を示すことができる。しかしながら、もともと完全なナレッジグラフからそれぞれのエッジが完全に除去されないという意味で、分離は、論理的分離又は仮想分離であることを意図している。しかしながら、切断部(cut)のそれぞれのエッジは、エッジの付加的な属性として切断点を含むものとしてマーク付けされる。従って、それぞれのエッジを介するノードからノードへの検索プロセス中、検索アルゴリズムが、部分グラフの論理境界又はボーダーを横断することがある。ナレッジグラフをパーティション分割した結果を、部分ナレッジグラフ(sub-knowledge-graph)又は簡潔に部分グラフとして示すことができる。
【0037】
従って、部分グラフは、全体の又は元のナレッジグラフから分離された(論理的に又は仮想的に)ノードのセットである。部分グラフは、上述のパーティション分割方法によって「論理的に除去された」(すなわち、ある点を含む)エッジも含む、ノードに接続された全てのエッジを含む。
【0038】
用語「過去の検索」は、過去の様々な異なる検索要求に関するナレッジグラフの検索経路の情報を示すことができる。それぞれの情報は、検索プロセスの開始点、すなわち開始ノードと、最終結果にアクセスしたエッジと、同様に最終的に要求を実行し結果をもたらす処理時間などの情報を含むことができる。
【0039】
用語「アクセス頻度」、特に、あるエッジのアクセス頻度は、ナレッジグラフにおける複数の検索プロセス中、検索プロセスが特定のエッジにアクセスした回数を示すことができる。従って、アクセス頻度は、アクセス・カウントの同義語として使用することができる。検索プロセスによりエッジがトラバースされるたびに、関連したアクセス・カウンタが1だけインクリメントされる。従って、エッジの属性アクセス頻度は、実際には、アクセス・カウンタ値で表すことができる。
【0040】
用語「中間クラスタ・コア」は、分析の後、それぞれのエッジの最も高いアクセス頻度を示すと判断することができる、ナレッジグラフ内の複数のエッジを示すことができる。ナレッジグラフにおける全てのエッジのアクセス頻度は、例えば、エッジへの付加的な属性として記録されるので、容易に判断することができる。全てのエッジは、最も高いアクセス頻度を有するものである。次に、エッジの予め定められた百分率、例えば、アクセス頻度に従ってソートされたエッジのリストの上位5%(他の百分率数も可能である)を、中間クラスタ・コアとして定めることができる。このように、完全なナレッジグラフがパーティション分割されるべきクラスタの数よりも、著しく大きい数の中間クラスタ・コアを生成することは有用であり得る。
【0041】
用語「第1のクラスタ・コア」は、全ての中間クラスタ・コアのうちの最も高いアクセス頻度数を有する中間クラスタ・コアを示すことができる。2つのエッジが同じアクセス頻度数を示す場合、ランダムなプロセスが、2つのエッジのうちのどちらを第1のクラスタ・コアとして選択できるかを決定することができる。
【0042】
用語「第2のクラスタ・コア」は、中間クラスタ・コアのリストにおいて2番目に高いアクセス頻度数を有するエッジを示すことができる。しかしながら、これは、2番目に高いアクセス頻度を有するエッジが、第1のクラスタ・コアの周りの保護区域内に、すなわち第1のクラスタ・コアの周りの半径内に存在しない場合にのみ事実であり得る。しかしながら、第2のクラスタ・コアは、第1の部分グラフのメンバー、すなわち第1のクラスタ・コア及び第1のクラスタ・コアの周りの半径内の全てのノードから離れた、最も高いアクセス頻度を有するエッジとして選択することができる。
【0043】
用語「半径」は、クラスタ・コアの周りの予め定められた又は動的に決定された物理的又は論理的半径を示すことができる。
【0044】
用語「アクセス・カウンタ値」は、検索要求の実行中、検索プロセスが特定のエッジを使用できるたびに増加し得るエッジの属性を示すことができる。
【0045】
用語「スコア値」は、付加的なパラメータとして時間も反映する、アクセス・カウンタ値の測定値を示すことができる。スコア値はまた、エッジへの付加的な属性として実装することもできる。スコア値は、エッジへのアクセスがより最近であるほど、より高い重みが与えることができるという意味で、「フロント・ロード型(front-loaded)」アクセス・カウンタ値を表すことができる。
【0046】
用語「最短経路」は、ソース・ノードから宛先ノードへの最短ホップ数を表すノードとエッジとの組み合わせを示すことができる。ホップ数の決定の一部として、エッジ(及び/又はノード)の重み係数もカウントにおいて反映することができる。ここで使用される重み係数は、エッジのアクセス頻度とすることができる。従って、ソース・ノードと宛先ノードとの間の最短経路は、長い経路のアクセス頻度の和として定めることができる。
【0047】
用語「切断点」は、1つのノードから他のノードへのエッジ又はリンクが事実上切断又は除去されたことを論理的にマーク付けするエッジの属性を示すことができる。切断点は、基本的には、部分グラフの外側ボーダーをマーク付けする。
【0048】
用語「新しい検索要求」は、ナレッジグラフを部分グラフにパーティション分割した後の検索要求を示すことができる。
【0049】
用語「ローカル検索エンジン」は、計算的な意味で、部分グラフ内の検索要求を実行するプロセスを示すことができる。部分グラフは、ここに開示されるパーティション分割プロセスの結果であり得る。
【0050】
部分グラフの「重複区域」という用語は、多くても所定の数k個のエッジで構成される経路上で到達することができ、それ自体が部分グラフの一部ではない、全てのノードのセットを示すことができる。特定のノードは、幾つかの重複区域内にあり得る。
【0051】
以下に、図の詳細な説明が提供される。図中の全ての指示は概略的なものである。最初に、ナレッジグラフをパーティション分割するための本発明のコンピュータ実施方法の実施形態のブロック図が与えられる。その後、更に別の実施形態、並びに、ナレッジグラフをパーティション分割するためのシステムの実施形態が説明される。
【0052】
図1は、ナレッジグラフをパーティション分割するためのコンピュータ実施方法100の実施形態のブロック図を示す。ナレッジグラフは、複数のノードと複数のエッジとを含み、そこで、エッジは、ノードのうちの選択されたものをリンクしている。エッジは複数の属性を有し、ノードはファクトを含むことができる。
【0053】
方法100は、過去の検索のセットを分析すること102、及びそれに基づいて、ナレッジグラフにおける複数のエッジの各々のアクセス頻度を求めること104を含む。ナレッジグラフにおける検索は、異なるノードから開始していることがあり、基本的には、検索中、検索経路は、アクセス頻度、すなわちアクセス・カウンタ値に関して分析される。
【0054】
方法100は、ナレッジグラフにおいて最も高いアクセス頻度を有する予め定められた百分率、例えば5%のエッジ(ノードではない)を中間クラスタ・コアとしてマーク付けすること106、特にリストを用いて、アクセス頻度に従って、マーク付けされた中間クラスタ・コア、すなわちエッジをソートすること108、最も高いアクセス頻度を有する中間クラスタ・コアを第1のクラスタ・コアとして選択すること110、並びに、第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てることであって、第1のクラスタ・コア及び第1のエッジは第1のクラスタを構築する、割り当てること112を含む。半径の指定については、異なる手法を用いることができる。
【0055】
さらに、方法100は、第1クラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コアを第2クラスタ・コアとして選択すること114、第2クラスタ・コアの周りに予め定められた第2の半径内の第2エッジを割り当てることであって、第2クラスタ・コア及び第2エッジは第2クラスタを構築する、割り当てること116、並びに、ナレッジグラフを、第1クラスタを含む第1の部分ナレッジグラフ及び第2クラスタを含む第2の部分ナレッジグラフにパーティション分割すること118を含む。
【0056】
図2は、クラスタ・コアを有するナレッジグラフ200の一部の実施形態のブロック図を示す。特に、過去の検索からのエッジのセットを上回る検索経路の頻度の例示的な分布が示される。頂点のノードが円形要素として示され、その一部が参照数字(例えば、202、204、206、208)を有する。図は、2つのシナリオの例としての役割を果たす。第1に、検索は、点でマーク付けされたノード202から開始する。第2に、検索は、図に示されるノードのセットの外側で開始し、検索経路は、図に示されるノードをトラバースする。点線は、図に示されない他の頂点へのエッジを示す。
【0057】
リンク、すなわちノード間のエッジは、直線として示される。エッジの傍の数字は、エッジの例示的な検索経路頻度を示す。このパラメータは、エッジの別個の属性として、ナレッジグラフ管理システムによって管理される。従って、エッジ210において、ノード202とノード204との間のアクセス頻度は10であり、別の例として、ノード204とノード206との間のアクセス頻度は5であり、ノード206とノード208との間のアクセス頻度は2であった。図2に示される周辺ノードの点線は、ナレッジグラフがさらに延びることを示す。しかしながら、ノード202と204との間のエッジは、最も高いアクセス頻度、すなわち10を有するものであることも見てわかる。従って、これらのノードがクラスタであると仮定される場合、このエッジは、示されるノードのクラスタ・コアと見なすことができる。
【0058】
クラスタ・コアを識別するための一般的な手法は、以下の方法で行われる。システムは、検索経路によって最も頻繁の高い予め定められた量(例えば、5%、他の値も可能)のエッジの一意の識別番号(ID)をリストに格納する。リストは、検索経路においてアクセス頻度が高い順にソートされる。
【0059】
最も頻度の高いエッジ(すなわち、一次エッジ)が、第1の部分グラフの中心を形成する。一次エッジの予め定められた半径内にあるエッジのIDは、リストから除去されるか、又はリスト内にそれ以上反映されないようにマーク付けされる。1つの実装において、半径は、経路長、すなわちエッジの数として定められる(エッジのいずれの他の属性も無視する)。別の実装において、半径は、各エッジの検索頻度の逆数の和として定められる。後者の手法は、検索によってより頻繁にトラバースされる又はアクセスされる領域において、より多くのエッジを除去する。このようにして、クラスタは、円形ではなく、高頻度の検索経路に沿って形成される。
【0060】
半径は、ナレッジグラフの合計サイズに関連する。例えば、10個の部分グラフにパーティション分割された10個のノード(すなわち、領域当たり約10個の頂点)を有するナレッジグラフの場合、100の半径が妥当であり得る。半径が比較的大きいものであるように選択された場合、ナレッジグラフの周辺に部分グラフの中心があることが好ましい。半径が小さいと、ナレッジグラフ全体の中心において部分グラフの中心が識別される。
【0061】
一次エッジの周りの(半径内の)エッジのIDを除去又はブロックした後、リストの最上位にあるエッジが、第2の部分グラフ(すなわち、二次エッジ)の中心として識別される。次に、二次エッジの予め定められた半径内に配置されたエッジのIDが、リストから除去されるか、又は次のクラスタ中心に使用されないようにマーク付けされる。また、クラスタ中心ごとに半径が変化し得ること、例えば、減少し得ることにも留意されたい。これは、検索において、より高位/劣位のクラスタ中心は、前に識別されたクラスタ中心/エッジと同じ程度にトラバースされないことを反映する。
【0062】
プロセスは、予め定められた数の部分グラフと同数のエッジ(すなわち、クラスタ中心)が識別されるまで、反復される(例えば、様々なパラメータを用いて、又はノードもしくはエッジを徐々に除外して、2回又それより多く実行される)。幾つかの実施形態において、エッジ又はクラスタ中心の数が予め定められた数の部分グラフと等しければ、プロセスは停止することができる。幾つかの実施形態においては、予め定められた数の部分グラフとの値の合致に基づいて終了するように説明される。
【0063】
図3は、部分グラフをパーティション分割する第1のステップにおける、ナレッジグラフ300の実施形態のブロック図を示す。
【0064】
ナレッジグラフをパーティション分割する開示された方法は、2つのステップを反復する。すなわち、1)2つの中心の間の最短経路を決定し、ここで経路長は各エッジの検索頻度の和として定められる。2)この経路において、最も低い検索頻度を有するエッジを除去する。
【0065】
方法は、ナレッジグラフ300全体を2つの部分に、すなわち一次エッジ302を含む部分と二次エッジ304を含む部分とに分離することから開始する。上記の2つのステップは、一次エッジ302を二次エッジ304と結合するいずれの経路もなくなるまで反復される。
【0066】
次に、方法は、一次エッジ302を含むナレッジグラフ300の部分を、三次エッジ306を含む部分、及び、部分グラフの中心として識別される他の全てのエッジから分離する。それぞれのクラスタ中心の一次エッジ302、二次エッジ304、及び三次エッジ306(例えば、エッジ302、304、306)は、識別のために、図3では、それぞれのノード間の太線としてマーク付けされる。
【0067】
次に、方法は、二次エッジ304を三次エッジ306から分離し、同様のことを、ナレッジグラフ300全体が部分グラフの完全なセット(すなわち、決定される予め定められた部分グラフ数)にパーティション分割されるまで行う。
【0068】
以下の例は、方法をより詳細なステップで説明する。図3における検索経路のアクセス数(すなわち、検索プロセスがこのエッジを何回使用したか)は例示的なものであり、必ずしも、合計して前の図に示されるような全ての頂点をトラバースする検索経路を形成するものではない。
【0069】
この例において、リスト及びソート手法を用いて、上述のように、3つのエッジ302、304、306が、部分グラフのクラスタ中心(例えば、クラスタ中心302、304、306)として識別された。一次部分グラフと二次部分グラフとの間の最短経路308は、18の長さ、すなわちエッジのアクセス頻度の和を有する。最初に、最も低い検索頻度、すなわち1を有するエッジ310に切断マーク付けされる(cut-marked)。
【0070】
図4は、部分グラフをパーティション分割する第2のステップにおけるナレッジグラフ300の実施形態のブロック図を示す。第1のエッジ(図3、310)を除去した後、最短経路402は、今や長さ20を有する。次に、アクセス頻度1を有するエッジ404に切断マーク付けされる。
【0071】
図5は、部分グラフをパーティション分割する第3のステップにおけるナレッジグラフ300の実施形態のブロック図を示す。この場合、クラスタ中心302と304との間の最短経路は、点線502に沿って延びる。この経路に沿って、単に2つのクラスタ中心302と304を接続するエッジが、エッジ504である。次に、このエッジ504に切断マーク付けされる。従って、元の完全な接続されたナレッジグラフ300には、エッジ310、404及び504に沿って切断マーク付けされる。
【0072】
図6は、部分グラフをパーティション分割する第4及び第5のステップにおけるナレッジグラフ300の実施形態のブロック図を示す。このように、図3乃至図5の文脈において議論されたように、エッジ604及び606にも切断マーク付けされる。従って、クラスタ中心302と304との間の第4のステップにおける最短経路は、線602に沿ってトラバースする。包括的理由で、全ての切断マーク付けされたエッジは図に示されていず、事実上除去されていると言えることに留意されたい。切断マーク付けされたエッジ606は、最終的に、クラスタ中心302の周りの部分クラスタを、元の完全なナレッジグラフ300の残りの左部分から分離する。
【0073】
この例示的な部分的ナレッジグラフ300の最終ステップにおいて、クラスタ中心304の周りの部分グラフを、クラスタ中心306を有する部分グラフから分離するために、エッジ608に切断マーク付けされる(又は、エッジ608が事実上除去される)ことになる。
【0074】
理解できるように、部分グラフへのパーティション分割は、論理的構成として、又は部分グラフ間のエッジの仮想的切断として理解されるべきである。コピーが取られたり、データが移動又は除去されたりすることなく、むしろ、部分グラフのノードは、それぞれの部分グラフのメンバーとしてラベル付けされ、部分グラフのために定められたインデックス番号付けを受け取る。
【0075】
より多くのハードウェア関連の態様を説明する前に、検索の幾つかの態様を考慮することができる。原則として、ナレッジグラフの構造及び検索操作に応じて、検索は、ナレッジグラフ全体の1つのノード又は幾つかのノードから開始することができる。後者の場合、検索は、各部分グラフの1つのノードで開始される。
【0076】
マルチコア・コンピュータ又はマルチスレッド・プロセッサでは、検索プロセスは、典型的には、コア又はスレッドにわたって分散される。このように、ナレッジグラフ全体が、基礎となるハードウェア上にマッピングされる。部分グラフの構築ごとに、プロセスは、大部分が部分グラフ内に留まる。
【0077】
各部分グラフにおいて、ローカル検索プロセスは、幾つかの並行プロセスに分割すること、すなわち子プロセスをスポーンし(spawn)、終了することによって分割することができる。
【0078】
しかしながら、検索プロセスが部分グラフから出て隣接する部分グラフに入る場合、方法は、実装に応じて、以下のような方法で検索プロセスを処理する。
a)検索プロセスを終了する。これは、検索プロセスが、所与の範囲の全体がカバーされるように構成される場合に適用される。
b)検索プロセスが、別の処理ユニットにハンドオーバされる。ハンドオーバ・プロセスは、その処理ユニット上で実行されている元の主検索プロセスによってスポーンされる他の何れの子検索プロセスとも同じ方法で、受信側処理ユニットによって処理することができる。
c)部分グラフの境界を横断する現在の検索プロセスを終了し、検索結果が収集される。さらに、検索プロセスの最後の位置(すなわち、方向を示す現在のノード及びエッジ)が、その部分グラフの主検索プロセスへの開始点のリストに付加され、適切な場合にはピックアップされる。
【0079】
1つの実装においては、別の部分グラフへの横断は、元の部分グラフの一部ではないノードにヒットするたびに生じる。別の実装においては、上記に定められるように、重複区域が与えられる。重複区域内で実行される場合、部分グラフの検索プロセスは、即座に中断されることなく(実装(a)及び(c)参照)、又はハンドオーバされることなく(実装(b)のように)、隣接する区域に入ることが可能である。隣接する部分グラフに入ることで検索プロセスが重複区域から出た場合、上述したように、検索プロセスは中断されるか又はハンドオーバされる。
【0080】
図7は、ナレッジグラフをパーティション分割するための開示されるシステム700の実施形態のブロック図を示す。ナレッジグラフは、複数のノードと複数のエッジとを含み、エッジはノードのうちの選択されたものをリンクする。システムは、過去の検索のセットを分析し、それに基づいて、ナレッジグラフ内の複数のエッジの各々のアクセス頻度を求めるように適合された分析ユニット702と、ナレッジグラフ内で最も高いアクセス頻度を有するエッジの予め定められた百分率を中間クラスタ・コアとしてマーク付けするように適合されたマーク付けユニット704と、アクセス頻度に従ってマーク付けされた中間クラスタ・コアをソートするように適合されたソート・モジュール706とを含む。
【0081】
選択ユニット708は、最も高いアクセス頻度を有する中間クラスタ・コア(例えば、第1の中間クラスタ・コア又は第1のエッジ)を、中間クラスタ・コアの第1のクラスタ・コアとして選択するように適合される。選択ユニット708はまた、第1のクラスタ・コアの周りに予め定められた第1の半径内の第1のエッジを割り当てるように構成又は適合することもできる。それにより、第1のクラスタ・コア及び第1のエッジは、第1のクラスタを構築又は形成することができる。幾つかの実施形態において、選択ユニット708はまた、第1のクラスタのエッジから離れた、最も高いアクセス頻度を有する中間クラスタ・コア(例えば、第2の中間クラスタ・コア又は第2のエッジ)を中間クラスタ・コアの第2のクラスタ・コアとして選択するように適合又は構成することもできる。選択ユニット708は、第2のクラスタ・コアの周りに予め定められた第2の半径内の第2のエッジを割り当てることができる。それにより、第2のクラスタ・コア及び第2のエッジは、第2のクラスタを構築又は形成することができる。
【0082】
システム700は、ナレッジグラフを、第1のクラスタを含む第1の部分ナレッジグラフと、第2のクラスタを含む第2の部分ナレッジグラフとにパーティション分割するように適合されたパーティション分割モジュール710を含む。
【0083】
本開示の実施形態は、プラットフォームがプログラム・コードを格納するもしくは実行する又はその両方を行うのに適しているかどうかにかかわらず、実質的に任意のタイプのコンピュータと共に実施することができる。図8は、提案される方法に関連したプログラム・コードを実行するのに適したコンピューティング・システム800を一例として示す。
【0084】
コンピューティング・システム800は、好適なコンピュータ・システムの一例に過ぎず、本明細書で説明される本開示の実施形態の使用範囲又は機能に関する何らかの制限を示唆することを意図するものではない。それにも関わらず、コンピュータ・システム800は、上述した機能セットのいずれかを実装するもしくは実行する又はその両方を行うことができる。コンピュータ・システム800において、多数の他の汎用又は専用コンピューティング・システム環境又は構成で動作するコンポーネントがある。コンピュータ・システム/サーバ800と共に使用するのに好適であり得る周知のコンピューティング・システム、環境もしくは構成又はその両方の例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境等が含まれる。コンピュータ・システム/サーバ800は、コンピュータ・システム800によって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ800は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【0085】
図に示されるように、コンピュータ・システム/サーバ800は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ800のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ802(例えば、処理ユニット)、システム・メモリ804(例えば、1つ又は複数のプロセッサに結合されたコンピュータ可読ストレージ媒体)、及びシステム・メモリ804を含む種々のシステム・コンポーネントをプロセッサ802に結合するバス806を含むことができる。バス806は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。コンピュータ・システム/サーバ800は、典型的には、種々のコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム/サーバ800によりアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【0086】
システム・メモリ804は、ランダム・アクセス・メモリ(RAM)808もしくはキャッシュ・メモリ810又はその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ800は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハード・ドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム812を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD-ROM、DVD-ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス806に接続することができる。以下でさらに示され説明されるように、システム・メモリ804は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0087】
限定ではなく例として、システム・メモリ804内に、プログラム・モジュール816のセット(少なくとも1つ)を有するプログラム/ユーティリティ、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール816は、一般に、本明細書で説明される本開示の実施形態の機能もしくは方法又はその両方を実行する。
【0088】
コンピュータ・システム/サーバ800は、キーボード、ポインティング・デバイス、ディスプレイ820等のような1つ又は複数の外部デバイス818、ユーザがコンピュータ・システム/サーバ800と対話することを可能にする1つ又は複数のデバイス、及び/又はコンピュータ・システム/サーバ800が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。こうした通信は、入力/出力(I/O)インターフェース814を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ800は、ネットワーク・アダプタ822を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)もしくはパブリック・ネットワーク(例えば、インターネット)又はその組み合わせなどの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ822は、バス806を介して、コンピュータ・システム/サーバ800の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ800と共に他のハードウェアもしくはソフトウェア・コンポーネント又はその両方を使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【0089】
付加的に、ナレッジグラフを分割するためのシステム700をバス806(例えば、バス・システムを形成する複数のバス)に取り付けることができる。
【0090】
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は本開示を開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
【0091】
本発明は、システム、方法もしくはコンピュータ・プログラム製品又はその組み合わせとして具体化することができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
【0092】
媒体は、伝搬媒体のための、電子、磁気、光学、電磁気、赤外線又は半導体のシステムとすることができる。コンピュータ可読媒体の例として、半導体又はソリッド・ステート・メモリ、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、剛性磁気ディスク及び光ディスクが挙げられる。光ディスクの現在の例として、コンパクト・ディスク-読み出し専用メモリ(CD-ROM)、コンパクト・ディスク-読み出し/書き込み(CD-R/W)、DVD、及びブルーレイ・ディスク(Blu-Ray-Disk)が挙げられる。
【0093】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち:ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0094】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
【0095】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【0096】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【0097】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0098】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生産し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又は両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
【0099】
図面内のフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又は両方の各ブロック、及びブロック図もしくはフローチャート図又は両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0100】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものに過ぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。用語「含む(comprise)」もしくは「含んでいる(comprising)」又はその両方は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素 及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【0101】
以下の特許請求の範囲における「手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求された要素と共に機能を実行するための任意の構造、材料、又は行為を含むことを意図したものである。本開示の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
図1
図2
図3
図4
図5
図6
図7
図8