(57)【要約】【課題】アプリケーションプログラムインタフェース（API）マッシュアップを生成する方法等を提供すること。【解決手段】方法は、複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化するステップと、前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定するステップと、前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定するステップと、前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成するステップと、を含み得る。【選択図】図２
2019016352.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムインタフェース（API）マッシュアップを生成する方法であって、
少なくとも１つのプロセッサにより、複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化するステップと、
前記少なくとも１つのプロセッサにより、前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定するステップと、
前記少なくとも１つのプロセッサにより、前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定するステップと、
前記少なくとも１つのプロセッサにより、前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成するステップと、
を含む、方法。
【請求項２】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較することと、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出することと、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項１に記載の方法。
【請求項３】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せについての入力を生成することと、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定することと、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項１に記載の方法。
【請求項４】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定することと、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定することと、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項１に記載の方法。
【請求項５】
第三者からのAPIマッシュアップ要求を受信するステップと、
前記少なくとも１つのプロセッサにより、前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定するステップと、
前記少なくとも１つのプロセッサにより、前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較するステップと、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供するステップと、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達するステップと、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定するステップと、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供するステップと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信するステップと、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新するステップと、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記少なくとも１つの優先度付けされたAPIマッシュアップを第三者に提供するステップ
をさらに含む、請求項１に記載の方法。
【請求項８】
命令を含む１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記命令は、１つ以上の処理システムにより実行されたときに、前記１つ以上の処理システムに複数の動作を実行させるよう構成されており、前記複数の動作は、
複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化する動作と、
前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定する動作と、
前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定する動作と、
前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成する動作と、
を含む、コンピュータ読み取り可能な媒体。
【請求項９】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較することと、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出することと、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項８に記載のコンピュータ読み取り可能な媒体。
【請求項１０】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せについての入力を生成することと、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定することと、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項８に記載のコンピュータ読み取り可能な媒体。
【請求項１１】
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定することと、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定することと、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、請求項８に記載のコンピュータ読み取り可能な媒体。
【請求項１２】
前記複数の動作は、
第三者からのAPIマッシュアップ要求を受信する動作と、
前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達する動作と、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定する動作と、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
をさらに含む、請求項８に記載のコンピュータ読み取り可能な媒体。
【請求項１３】
前記複数の動作は、
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信する動作と、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新する動作と、
をさらに含む、請求項１２に記載のコンピュータ読み取り可能な媒体。
【請求項１４】
前記複数の動作は、
前記少なくとも１つの優先度付けされたAPIマッシュアップを第三者に提供する動作
をさらに含む、請求項８に記載のコンピュータ読み取り可能な媒体。
【請求項１５】
複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化する動作と、
前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定する動作と、
前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定する動作と、
前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成する動作と、
を実行するよう構成されている１つ以上のプロセッサ
を有するシステム。
【請求項１６】
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較する動作と、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出する動作と、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、請求項１５に記載のシステム。
【請求項１７】
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せについての入力を生成する動作と、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定する動作と、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、請求項１５に記載のシステム。
【請求項１８】
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定する動作と、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定する動作と、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、請求項１５に記載のシステム。
【請求項１９】
前記１つ以上のプロセッサは、
第三者からのAPIマッシュアップ要求を受信する動作と、
前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達する動作と、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定する動作と、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
をさらに実行するよう構成されている、請求項１５に記載のシステム。
【請求項２０】
前記１つ以上のプロセッサは、
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信する動作と、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新する動作と、
をさらに実行するよう構成されている、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示に記載の実施形態は、アプリケーションプログラムインタフェース（API）マッシュアップ生成に関する。
【背景技術】
【０００２】
アプリケーションプログラムインタフェース（API）は、アプリケーションソフトウェアを作成するためのプロトコル、コマンド、定義、及びツールのセットである。APIは、グラフィカルユーザインタフェース（GUI）コンポーネントをプログラムするときに又はサービス若しくは機能を実装するときに、ソフトウェアコンポーネントがどのようにインタラクトすべきであるか及びAPIがどのように使用されるかを指定することができる。APIマッシュアップは、新たなサービス又は付加価値サービスを提供するために、一緒になって機能する複数のAPIである。
【０００３】
本出願において特許請求される主題は、あらゆる欠点を解決する実施形態又は上記のような環境においてのみ動作する実施形態に限定されるものではない。そうではなく、この背景技術の記載は、本開示に記載のいくつかの実施形態が実施され得る１つの例示的な技術領域を示すために提供されているに過ぎない。
【発明の概要】
【０００４】
一実施形態の一態様に従うと、方法は、複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化するステップを含み得る。本方法はまた、前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定するステップを含み得る。さらに、本方法は、前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定するステップを含み得る。本方法はまた、前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成するステップを含み得る。
【０００５】
実施形態の目的及び利点が、少なくとも請求項において特に示される要素、特徴、及び組合せにより、実現及び達成される。
【０００６】
前述の総括的な説明及び以下の詳細な説明の両方ともが、例示的で説明的なものであり、特許請求される発明を限定するものではない。
【図面の簡単な説明】
【０００７】
例示的な実施形態が、添付の図面を使用して、より具体的且つ詳細に記載及び説明される。
【図１】APIマッシュアップ生成器を含む例示的なシステムのブロック図。
【図２】１つ以上のAPIマッシュアップを生成する例示的な方法のフロー図。
【図３】例示的なAPIツリー構造を示す図。
【図４】別の例示的なAPIツリー構造を示す図。
【図５】固有表現抽出ツールを含む例示的なシステムを示す図。
【図６】１つ以上のAPIマッシュアップを生成して処理するために使用され得る例示的なフローの図。
【図７】エンドポイント、入力記述、出力記述、及びエンドポイント記述を含む例示的なAPIを示す図。
【図８】１つ以上のAPIマッシュアップを処理する方法の例示的なフロー図。
【図９】１つ以上のAPIマッシュアップを処理する別の方法の例示的なフロー図。
【図１０】１つ以上のAPIマッシュアップを処理するさらに別の方法の例示的なフロー図。
【図１１Ａ】例示的な学習アルゴリズムを示す図。
【図１１Ｂ】例示的な学習アルゴリズムを示す図。
【図１２】１つ以上のキーワード組合せを生成するための処理ツールを含む例示的なシステムを示す図。
【図１３】例示的なコンピューティングシステムのブロック図。
【発明を実施するための形態】
【０００８】
本出願において開示される様々な実施形態は、アプリケーションプログラムインタフェース（API）マッシュアップ生成に関する。いくつかの実施形態において、APIマッシュアップは、テキストマイニング技術及び／又は自然言語処理技術を介して、実世界データ（real-world  data）に基づいて、自動的に特定及び／又は生成され得る。様々な実施形態に従うと、APIマッシュアップは、word  embedding（例えば、文字及び／又は文（センテンス）ベースのword  embedding）及び／又は固有表現抽出（例えば、固有表現抽出のための異なるデータセットの組合せ）に基づいて、特定及び／又は生成され得る。
【０００９】
さらに、いくつかの実施形態は、さらに、精査された（例えば、優先度付けされた）APIマッシュアップを生成する（例えば、妥当なAPIマッシュアップをフィルタリング、レコメンド、ランク付け、及び／又は特定する）処理に関連し得る。さらに、精査されたAPIマッシュアップは、１以上のアプリケーション開発者に提供され得る。より具体的には、いくつかの実施形態において、特定された（例えば、生成された）APIマッシュアップは、例えば、１つ以上の最も適したAPIマッシュアップが（例えば、高優先度で）レコメンドされ得るように、フィルタリング、テスト、及び／又はランク付けされ得る。いくつかの実施形態は、妥当なAPIマッシュアップのために複数のAPIを使用することができるか否か及び／又はAPIを導入して性能を高めることができる否かの予測を容易にするためのオンライン処理を含み得る。
【００１０】
いくつかの実施形態に従うと、APIマッシュアップは、実世界データに基づいてランク付けされ得、したがって、アプリケーション開発者は、特定及び／又は生成されたAPIマッシュアップの実行可能性及び有用性を検証するためにAPIメソッドを検索するよう要求されない場合がある。本出願において開示される実施形態は、いかなる特定のユースケースにも限定されるものではなく、任意の適切なユースケースについてアプリケーションを開発するために使用され得る。
【００１１】
従来、莫大な数の利用可能なAPIに起因して、アプリケーションにおいて使用する適切なAPIを特定することは、負担がかかり、多様なウェブサイトのセットにわたる時間のかかる手作業の検索を要することがあった。さらに、情報は、主に、単一のAPIに制限されていた。したがって、複数のAPIを利用することによりアプリケーションを開発するために、開発者は、APIを検索及び選択し、ドキュメントをレビューすることにより各APIを理解し、これらのAPIがAPIマッシュアップとして組み合わせられ得るかどうかを判断するために入力及び出力を検証する必要があった。
【００１２】
本開示の実施形態が、添付の図面を参照して説明される。
【００１３】
図１は、APIデータベース１０２及びAPIマッシュアップ生成器１０４を含む例示的なAPIマッシュアップ生成システム１００のブロック図である。APIデータベース１０２は、複数のAPI（例えば、API1〜API1n）を含み得、いくつかの実施形態においては、APIエンドポイント、パラメータ、及びこれらの記述等の様々なAPIデータを含み得る。APIデータベース１０２は、API及び／又はAPIデータについての任意のコンピュータベースのソースを含み得る。例えば、APIデータベース１０２は、サーバ、クライアントコンピュータ、リポジトリ等を含み得る。APIデータベース１０２は、API及びAPIデータを任意の電子フォーマットで記憶することができる。さらに、APIデータは、マシンにより読み取り可能であり得る且つ／又は人間により読み取り可能であり得る。APIデータは、任意の言語であり得る。例えば、APIデータは、任意のターゲットの人間の言語（例えば、英語、日本語、ドイツ語等）であり得る。APIは、任意の構造化データフォーマットであり得る。例えば、APIデータは、Open  API仕様、JavaScript（登録商標）  Object  Notation（JavaScript（登録商標）オブジェクト表記：JSON）、拡張マークアップ言語（XML）等であり得る。
【００１４】
APIデータベース１０２の各APIは、一次カテゴリキーワード（例えば、医療）、二次カテゴリキーワード（例えば、ヘルスケア、ビジネス、オフィス等）、API記述、及び、APIに関連する他の情報（例えば、エンドポイント、HTTPメソッド、パラメータ、及びこれらの記述）に関連付けられ得る。いくつかの実施形態において、APIカテゴリキーワード（例えば、一次カテゴリキーワード及び二次カテゴリキーワード）及び／又はAPI記述は、リポジトリ（例えば、ProgrammableWeb等のパブリックリポジトリ）により定められ得る。
【００１５】
APIマッシュアップ生成器１０４は、本開示に記載の１つ以上の実施形態に従って、APIデータベース１０２からAPI及び／又はAPIデータを受信し、１つ以上のAPIマッシュアップを生成するよう構成され得る。さらに、いくつかの実施形態に従うと、APIマッシュアップ生成器１０４は、１つ以上のAPIマッシュアップを処理して、１つ以上の精査されたAPIマッシュアップを生成することができる。
【００１６】
図２は、本開示に記載の少なくとも１つの実施形態に従って構成される、１つ以上のAPIマッシュアップを生成する方法２００の例示的なフロー図を示している。別個のブロックで図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わされることもあるし、除去されることもある。
【００１７】
いくつかの実施形態において、方法２００は、図１のシステム１００及び／又は図１３のシステム１３００等の１つ以上のデバイスにより実行され得る。例えば、図１３のプロセッサ１３１０は、メモリ１３３０に記憶されているコンピュータ命令を実行して、方法２００のブロックのうちの１つ以上のブロックにより表される機能及び動作を実行するよう構成され得る。
【００１８】
方法２００は、ブロック２０２で開始し得る。ブロック２０２において、複数のAPIがグループ化され得る。いくつかの実施形態において、複数のAPIは、カテゴリ、クラスタ、及び／又はサブクラスタにグループ化され得る。例えば、データベース（例えば、図１のAPIデータベース１０２）及び／又は様々なソース（例えば、ウェブサイト）から受信され得るこれらのAPIは、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により、APIツリー構造（例えば、カテゴリ、クラスタ、及びサブクラスタ、又はさらなる層／レベル）に従って、グループ化され得る。より具体的には、例えば、APIについてのカテゴリは、APIのカテゴリフィールド及び一次カテゴリフィールドの両方においてあらゆるキーワードの出現回数を決定し、キーワードの出現回数に基づいてキーワードをランク付け及び選択し（例えば、機械分類）、上位のキーワード（例えば、M個のキーワード）を、APIについてのカテゴリとして選択することにより、生成され得る。
【００１９】
さらに、各カテゴリにおける、APIについてのクラスタが生成され得る。いくつかの実施形態において、テキストマイニング技術及び／又は自然言語処理（NLP）技術を使用して、二次カテゴリキーワードを解析することができる。例えば、「ストップ」ワード及び／又は一般語（general  word）が除去され得、ワードステミング（word  stemming）動作が実行され得、キーワードが、出現回数に基づいてカウント及びランク付けされ得、上位のキーワード（例えば、N個のキーワード）が、クラスタとして選択され得る。
【００２０】
さらに、各クラスタにおける、APIについてのサブクラスタが生成され得る。いくつかの実施形態において、テキストマイニングツール及び／若しくはテキストマイニング技術、並びに／又は、NLPツール及び／若しくはNLP技術を使用して、APIの記述が解析され得、選定されたキーワード間の類似度スコアが算出され得、上位のキーワード（例えば、K個のキーワード）が、サブクラスタとして選択され得る。より具体的には、いくつかの実施形態において、APIは、例えば、テキストマイニングツール及び／若しくはテキストマイニング技術、並びに／又は、NLPツール及び／若しくはNLP技術を使用して、APIのカテゴリ及び記述に基づいて、異なるサブクラスタにグループ化され得る。例えば、「ストップ」ワード及び／又は記号が除去され得、キーワードタイプ（例えば、名詞、動詞等）が決定され得、ワードステミング動作が実行され得、キーワードが、出現回数に基づいてカウント及びランク付けされ得、キーワード間の（例えば、NLP技術を用いた）類似度スコアが算出され得、上位のキーワード（例えば、K個のキーワード）が、サブクラスタとして選択され得る。キーワード類似度は、任意の適切な指標（例えば、レーベンシュタイン距離、ユークリッド距離、ハミング距離、Simhash、Minhash、LSH（Locality-sensitive  hashing）等）を用いて評価され得る。
【００２１】
いくつかの実施形態において、実世界データが（例えば、各カテゴリについての１つ以上の対応するウェブサイトから）取得可能である場合、サブクラスタキーワード組合せが、例えば、固有表現抽出を介して、特定され得、サブクラスタキーワード組合せは、サブクラスタキーワードと、実世界データが各カテゴリについての１つ以上の対応するウェブサイトから取得可能であるときには実世界データと、に基づき得る。
【００２２】
他の実施形態において、実世界データが取得可能でない場合、サブクラスタキーワード組合せは、サブクラスタキーワードの全ての可能なサブクラスタキーワード組合せを特定すること、及び／又は、閾値（例えば、５回の出現、１０回の出現、２０回の出現）を超える記述出現回数であるサブクラスタキーワードを有するサブクラスタキーワード組合せを特定すること、により、特定され得る。
【００２３】
ブロック２０４において、複数のサブクラスタキーワードが決定され得、方法２００はブロック２０６に進み得る。より具体的には、例えば、複数のAPIが、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により、複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化され得る。方法２００は、ブロック２０４からブロック２０６に進むとして図示されているが、ブロック２０６の動作は、ブロック２０４の動作と独立したものであってもよい。例えば、ブロック２０４からブロック２０８に進んでもよい。
【００２４】
図３に示されている例示的なツリー構造３００を参照すると、第１レベル（例えば、トップレベル）３０２は、カテゴリ及び／又は一次カテゴリキーワードを含み得、第２レベル３０４は、二次カテゴリキーワードを含み得、第３レベル３０６は、（例えば、API記述を通じて決定された）キーワードを含み得る。第３レベル３０６は、複数のサブクラスタを含み得、各サブクラスタは、キーワード及び１つ以上の（例えば、複数の）APIを含む。
【００２５】
ツリー構造３００は、ヘルスケア領域に関連するが、本開示はそのように限定されるものではない。そうではなく、本開示に記載の実施形態は、科学、金融、ビジネス、教育、電子商取引等といった任意の領域に適用可能である。
【００２６】
図４は、別の例示的なツリー構造４００を示している。構造４００は、第１レベル（例えば、トップレベル）４０２、第２レベル４０４、及び第３レベル４０６を含み、第１レベル４０２は、カテゴリ及び／又は一次カテゴリキーワードを含み、第２レベル４０４は、二次カテゴリキーワードを含み、第３レベル４０６は、（例えば、API記述を通じて決定された）キーワードを含み得る。第３レベル４０６は、複数のサブクラスタを含み得、各サブクラスタは、キーワード及び１つ以上の（例えば、複数の）APIを含む。いくつかの実施形態において、API（例えば、認証API）は、APIのキーワード及び記述に基づいて、（例えば、異なる領域における）複数のサブクラスタにグループ化され得る。
【００２７】
図２における方法２００を再度参照すると、ブロック２０６において、実世界データ（例えば、実世界の質問）が特定され得、方法２００はブロック２０８に進み得る。例えば、実世界の質問を含み得る実世界データが、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により、（例えば、ウェブクローラを介してインターネットから）収集され得る。例えば、ヘルスケア固有の領域に関しては、患者の質問が、専門的なヘルスケア関連ウェブサイト等のウェブサイトから抽出され得る。他の例において、他の領域に関しては、関連する情報が、（例えば、関連するウェブブログを介して）特定され得、ウェブクローラを使用して、関連する情報が抽出され得る。例えば、金融関連領域において、データ（例えば、質問）は、１つ以上の金融投資ブログ（例えば、Vanguard（登録商標）ブログ）から収集され得る。
【００２８】
ブロック２０８において、特定されたデータ（例えば、実世界データ）及びサブクラスタキーワードに基づいて、サブクラスタキーワード組合せが決定され得、方法２００はブロック２１０に進み得る。一例として、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）が、サブクラスタキーワード組合せを決定するために使用され得る。さらに、例えば、有用なサブクラスタ組合せが、固有表現抽出技術を使用して決定され得る。例えば、図５の例示的なシステム５００に示されているように、固有表現抽出ツール５０２が、（例えば、実世界の質問等の実世界データといった）データ５０４及びサブクラスタキーワード５０６を受信し、サブクラスタキーワード組合せのリストを含む出力５０８を生成し得る。
【００２９】
いくつかの実施形態において、キーワード組合せ出現回数を使用して、サブクラスタキーワード組合せの評価を決定することができる。例えば、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）が、キーワード組合せ出現回数を決定するために使用され得る。例えば、およそ５００００個の臨床的質問が処理され得、およそ１００００個のサブクラスタキーワード組合せが、これらの臨床的質問に基づいて生成され得る。いくつかの実施形態において、キーワード組合せ出現回数は、収集された質問が、所与の組合せについての全てのキーワードと合致すると、インクリメントされ得る。
【００３０】
各サブクラスタにおけるAPI及びサブクラスタキーワード組合せに基づいて、複数のAPIのうちの２つ以上のAPIを含む１つ以上の可能なAPIマッシュアップが、（例えば、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により）決定され得る。
【００３１】
ブロック２１０において、APIマッシュアップが特定され得、方法２００はブロック２１２に進み得る。例えば、APIマッシュアップは、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により特定され得る。より具体的には、所与のサブクラスタキーワード組合せについて、各サブクラスタからAPIを選択することにより、全ての可能なAPIマッシュアップが特定され得る。さらに、特定された可能なAPIマッシュアップの各々についての類似度解析を実行して、APIマッシュアップを特定し、必要に応じてランク付けすることができる。
【００３２】
APIマッシュアップにおける各APIについて、記述は既知であり得る。API記述は、所与のAPIについての短縮されたサマリを含み得、このようなサマリは、APIタイトル及びキーワード、入力／出力パラメータ、API解説、プロトコルフォーマット、エンドポイント記述、入力／出力記述等を含み得るが、これらに限定されるものではない。記述の各部分が、１つ以上のソース（例えば、API関連ウェブサイト）から取得されて結集され得る。さらに、いくつかの実施形態において、各記述についての単語（ワード）ベクトルが生成され得、類似度スコアの平均値が算出され得る。類似度解析は、キーワードに基づいてもよいし、文に基づいてもよいし、これらの両方に基づいてもよい。例えば、類似度解析は、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により実行され得る。
【００３３】
より具体的には、いくつかの実施形態において、類似度解析・算出は、APIの記述に基づき得る。より具体的には、APIマッシュアップにおける各APIの記述が、文に分離され得、「ストップ」ワード及び記号が除去され得、ワードステミング動作が実行され得、NLP技術を使用して、各文が単語ベクトルに変換され得る。さらに、例えば、単語ベクトル間のハミング距離又は他の類似度指標が算出され得る。一例として、平均類似度スコアは、（ハミング距離の総和／算出の総回数）に等しいものであり得る。
【００３４】
一例として、１つのAPI（「API1」）の記述が２つの文（例えば、API1_s1及びAPI_s2）を含み、別のAPI（「API2」）の記述が３つの文（例えば、API2_s1、API2_s2、及びAP2_s3）を含むと仮定すると、全ての２文間のハミング距離（Ham(API1_sp,API2_sq)）が算出され得、類似度スコアは、(Ham(API1_s1,API2_s1)+Ham(API1_s1,API2_s2)+Ham(API1_s1,API2_s3)+Ham(API1_s2,API2_s1)+Ham(API1_s2,API2_s2)+Ham(API1_s2,API2_s3))/6に等しいものであり得る。
【００３５】
ブロック２１２において、特定されたAPIマッシュアップが精査され得、方法２００はブロック２１４に進み得る。例えば、APIマッシュアップが、API記述類似度解析に基づいて特定及び／又は生成された後、（例えば、少なくとも１つのプロセッサ（例えば、図１３のプロセッサ１３１０）により、）結果が、フィルタリングされて、特定されたAPIマッシュアップが、精査及び／又はランク付けされ得、APIマッシュアップがレコメンドされ得る。例えば、結果は、特定されたAPIマッシュアップを１つ以上のパブリックリポジトリ（例えば、API  Harmony、Github（登録商標）、ProgrammableWeb等）と比較することにより、精査及び／又はランク付けされ得る。
【００３６】
より具体的には、例えば、決定されたAPIマッシュアップを所与として、リポジトリが、決定されたAPIマッシュアップを特定しようと試みるために検索され得る。リポジトリが、決定されたAPIマッシュアップのAPIを、関連するとして（例えば、プロジェクトにおいて使用されるとして）特定した場合、そのAPIマッシュアップが（例えば、高優先度で）レコメンドされ得る。例えば、Validic  API及びFitbit（登録商標）  APIが、いくつかのGithub（登録商標）プロジェクトにおいて使用され、したがって、Validic  API及びFitbit（登録商標）  APIを含むAPIマッシュアップが、高優先度でレコメンドされ得る。別の例として、入力としての所与のAPIマッシュアップについて、所与のAPIマッシュアップにおけるAPIが関連することを示す、少なくとも１つのリポジトリにおける関連する情報が特定された場合、そのAPIマッシュアップが、（例えば、アプリケーション開発者に）高優先度でレコメンドされ得る。
【００３７】
ブロック２１４において、APIマッシュアップが、１以上の第三者（サードパーティ）（例えば、アプリケーション開発者）に公開され得る（例えば、レコメンドされ得る）。例えば、APIマッシュアップが、特定され、必要に応じてランク付けされた後、APIマッシュアップは、少なくとも１の第三者（例えば、アプリケーション開発者）に公開され得る（例えば、レコメンド及び／又は提供され得る）。
【００３８】
本開示の範囲から逸脱することなく、方法２００に対して、変更、追加、又は省略が可能である。例えば、方法２００の動作は、異なる順序で実行されることがある。さらに、説明されたステップ及び動作は、例として提供されているに過ぎず、これらのステップ及び動作のうちの一部は、開示された実施形態の本質を損なうことなく、任意的であることもあるし、より少ないステップ及び動作に組み合わされることもあるし、追加のステップ及び動作に拡張されることもある。
【００３９】
１つの企図される例示的な動作において、サブクラスタキーワード組合せは、「<security,administration>」を含み得る。このキーワード組合せは、実世界データの収集及び解析から得られ得る。この例において、「security」サブクラスタは、第１のAPIである「API_1」及び第２のAPIである「API_2」を含む。さらに、「administration」サブクラスタは、第３のAPIである「API_3」及び第４のAPIである「API_4」を含む。この例を続けると、４つの可能なAPIマッシュアップ組合せ（例えば、<API_1,API_3>、<API_1,API_4>、<API_2,API_3>、及び<API_2,API_4>）が特定され得る。さらに、API記述から、可能なAPIマッシュアップの各々についての類似度スコアを算出して（例えば、類似度解析を介して決定して）、APIマッシュアップを特定することができる。いくつかの例に従うと、類似度スコアが高いほど、APIマッシュアップはより妥当である。いくつかの実施形態において、特定されたAPIマッシュアップは、ランク付けされ、必要に応じて１以上の第三者にレコメンドされ得る。
【００４０】
図６は、本開示に記載の少なくとも１つの実施形態に従って構成される、１つ以上のAPIマッシュアップを生成して処理するために使用され得る例示的なフロー６００の図である。フロー６００は、任意の適切なシステム、装置、又はデバイスにより実行され得る。例えば、システム１００（図１）、システム１３００（図１３）、又はこれらのコンポーネントのうちの１つ以上のコンポーネントが、フロー２００に関連付けられている動作のうちの１つ以上の動作を実行できる。これらの実施形態及び他の実施形態において、コンピュータ読み取り可能な媒体に記憶されているプログラム命令が、フロー２００の動作のうちの１つ以上の動作を実行するために実行され得る。
【００４１】
いくつかの実施形態において、フロー６００における１つ以上のブロック及び／又はコンポーネントにおける１つ以上の動作は、オンライン処理を介して実行され得る。さらに、フロー６００における１つ以上のブロック及び／又はコンポーネントにおける１つ以上の動作は、オフライン処理を介して実行され得る。例えば、少なくとも１つの実施形態において、ブロック６０２、６０４、及び６０６、並びにモデル６０８における動作は、オフライン処理を介して実行され得、モデル６１０、並びにブロック６１２及び６１４における動作は、オンライン処理を介して実行され得る。
【００４２】
ブロック６０４において、APIマッシュアップデータベース６０２からの１つ以上の生成されたAPIマッシュアップが処理されて、APIマッシュアップデータベース６０６の１つ以上の精査された（例えば、優先度付けされた）APIマッシュアップが生成され得る。様々な実施形態に従うと、APIマッシュアップデータベース６０２は、本出願において開示される１つ以上の実施形態を介して生成された１つ以上のAPIマッシュアップを含み得る。より具体的には、APIマッシュアップデータベース６０２のAPIマッシュアップは、方法２００（図２参照）の１つ以上の動作を介して、且つ／又は、APIマッシュアップ生成器（図１参照）を介して、生成され得る。いくつかの実施形態において、APIマッシュアップデータベース６０２は、例に過ぎないが、医療、ヘルスケア、ビジネス、オフィス、科学、電子商取引等といった異なる領域について生成されたAPIマッシュアップ（例えば、領域固有のAPIマッシュアップ）を含み得る。
【００４３】
例えば、APIマッシュアップデータベース６０２の１つ以上のAPIマッシュアップを、本開示においてより詳細に説明されるように、例えば、入力／出力照合、APIテスト、及び／又は、データフォーマット／単位互換性検証を介して、フィルタリング、ランク付け、優先度付け、及び／又はテストして、APIマッシュアップデータベース６０６の１つ以上の精査されたAPIマッシュアップを生成することができる。様々な実施形態に従うと、APIマッシュアップデータベース６０６は、各サブクラスタキーワード組合せについての精査されたAPIマッシュアップに加えて、サブクラスタキーワード組合せをさらに含み得る。
【００４４】
様々な実施形態に従うと、（例えば、ブロック６０４における）処理動作は、APIマッシュアップをフィルタリング及び／又はランク付けするために、単独で又は組合せで実行され得る。例えば、そのような処理動作は、順次に又は並列に実行され得る。いくつかの実施形態において、１つ以上の動作（例えば、フィルタリング、テスト等）を成功裡に通過したAPIマッシュアップは、高優先度のAPIマッシュアップ及び／又は妥当なAPIマッシュアップとして優先度付けされ得、少なくともいくつかの実施形態において、各動作（例えば、フィルタリング、テスト等）に対して割り当てられた重みに基づいてランク付けされ得る。いくつかの実施形態において、APIマッシュアップは、低優先度のAPIマッシュアップ及び／又は妥当でないAPIマッシュアップとして優先度付けされ得る。さらに、いくつかの実施形態において、類似度スコアが、（例えば、APIマッシュアップ間の同列に対処するために）考慮され得る。
【００４５】
図７は、エンドポイント７０２、出力記述７０４、入力記述７０６、及びエンドポイント記述７０８を含む、JSONフォーマットの例示的なAPI７００を示している。記述を解析するために、いくつかの実施形態に従うと、異なるエンドポイントについての入力記述及び／又は出力記述が、各APIについて一緒に集められ得る。この例において、集められた記述は、APIレベルの入力記述及び／又は出力記述とみなされ得る。記述を解析するために、他の実施形態に従うと、各APIエンドポイントについての入力記述及び／又は出力記述が、別々に考慮され得る。この例において、記述は、APIエンドポイントレベルの入力記述及び／又は出力記述を含み得る。
【００４６】
例えば、入力／出力照合に関して、生成されたAPIマッシュアップ（例えば、API_1、API_2）について、APIマッシュアップの入力／出力記述が特定及び／又は検証され得、類似度スコアが算出され得る。例えば、APIマッシュアップについて、類似度スコアが、API_1の入力とAPI_2の出力との間又はAPI_1の出力とAPI_2の入力との間のいずれかで、比較的に高い場合、このAPIマッシュアップは、高優先度のAPIマッシュアップとして指定され得る、且つ／又は、（例えば、開発者に）レコメンドされ得る。
【００４７】
いくつかの実施形態に従うと、２つの異なるAPI（例えば、API1及びAPI2）の間の類似度スコアが算出され得る。一例として、API1（入力記述）−API2（出力記述）が、類似度スコアを算出するために使用され得る。別の例として、API1（出力記述）−API2（入力記述）が、類似度スコアを算出するために使用され得る。いくつかの実施形態において、APIの入力記述又は出力記述が、「ヌル（null）」である場合（例えば、所与のAPIについての記述が、APIデータベースブロック１０２に含まれていない場合）、この記述は、算出に関与し得ない。
【００４８】
さらに、いくつかの実施形態において、類似度解析・算出は、APIの記述に基づき得る。より具体的には、APIマッシュアップにおける各APIの記述が、文に分離され得、「ストップ」ワード及び／又は記号が除去され得、ワードステミング動作が実行され得、NLP技術を使用して、各文が単語ベクトルに変換され得る。さらに、例えば、単語ベクトル間のハミング距離又は他の類似度指標が算出され得る。一例として、平均類似度スコアは、（ハミング距離の総和／算出の総回数）に等しいものであり得る。
【００４９】
一例として、１つのAPI（「API1」）の記述が２つの文（例えば、API1_s1及びAPI_s2）を含み、別のAPI（「API2」）の記述が３つの文（例えば、API2_s1、API2_s2、及びAP2_s3）を含むと仮定すると、全ての２文間のハミング距離（Ham(API1_sp,API2_sq)）が算出され得、類似度スコアは、(Ham(API1_s1,API2_s1)+Ham(API1_s1,API2_s2)+Ham(API1_s1,API2_s3)+Ham(API1_s2,API2_s1)+Ham(API1_s2,API2_s2)+Ham(API1_s2,API2_s3))/6に等しいものであり得る。
【００５０】
いくつかの実施形態において、類似度スコアは、２つの異なるAPI/エンドポイント（例えば、API1/endpoint_x及びAPI2/endpoint_y）の間で算出され得る。一例において、API1/endpoint_x（入力記述）−API2/endpoint_y（出力記述）が、類似度スコアを算出するために使用され得る。別の例において、API1/endpoint_x（出力記述）−API2/endpoint_y（入力記述）が、類似度スコアを算出するために使用され得る。いくつかの実施形態において、API/エンドポイントの入力記述又は出力記述が、「ヌル」である場合（例えば、所与のAPIのエンドポイントについての記述が、APIデータベースブロック１０２に含まれていない場合）、この記述は、算出に関与し得ない。
【００５１】
図８は、本開示に記載の少なくとも１つの実施形態に従って構成される、１つ以上のAPIマッシュアップを処理する（例えば、フィルタリング、ランク付け、及び／又は優先度付けする）方法８００の例示的なフロー図を示している。別個のブロックで図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わされることもあるし、除去されることもある。例えば、方法８００は、図６のブロック６０４において実行され得る。
【００５２】
いくつかの実施形態において、方法８００は、図１のシステム１００及び／又は図１３のシステム１３００等の１つ以上のデバイス及び／又はシステムにより実行され得る。例えば、図１３のプロセッサ１３１０が、メモリ１３３０に記憶されているコンピュータ命令を実行して、方法８００のブロックのうちの１つ以上のブロックにより表される機能及び動作を実行するよう構成され得る。
【００５３】
ブロック８０２において、APIマッシュアップのAPI組合せについての入力記述及び／又は出力記述が解析され得、方法８００はブロック８０４に進み得る。より具体的には、例えば、APIマッシュアップのAPI組合せ（例えば、API_1、API_2）について、API_1及びAPI_2の入力記述及び出力記述が解析され得る。例えば、図１３のプロセッサ１３１０が、APIマッシュアップのAPI組合せについての入力記述及び／又は出力記述を解析し得る。
【００５４】
ブロック８０４において、APIマッシュアップの第１のAPIの出力記述とAPIマッシュアップの第２のAPIの入力記述との間の類似度スコアが決定され得、方法８００はブロック８０６に進み得る。より具体的には、例えば、API_1の出力記述とAPI_2の入力記述との間の類似度スコアが決定され得る。例えば、図１３のプロセッサ１３１０が、APIマッシュアップの第１のAPIの出力記述とAPIマッシュアップの第２のAPIの入力記述との間の類似度スコアを決定し得る。
【００５５】
ブロック８０６において、決定された類似度スコアが閾値よりも大きいかどうかが判定され得る。例えば、図１３のプロセッサ１３１０が、決定された類似度スコアを閾値と比較して、決定された類似度スコアが閾値よりも大きいかどうかを判定し得る。決定された類似度スコアが閾値よりも大きい場合、方法８００はブロック８０８に進み得る。決定された類似度スコアが閾値以下である場合、方法８００はブロック８１０に進み得る。
【００５６】
ブロック８０８において、APIマッシュアップが、高優先度のマッシュアップとして指定され得る。例えば、APIマッシュアップは、図１３のプロセッサ１３１０により、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。
【００５７】
ブロック８１０において、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかが判定され得る。例えば、API_1及びAPI_2を含むAPIマッシュアップについて、API_1->API_2及びAPI_2->API_1の両方が評価されたかどうかが判定され得る。より具体的には、API_1の出力記述とAPI_2の入力記述との間の類似度スコアが評価されたかどうか、及び、API_2の出力記述とAPI_1の入力記述との間の類似度スコアが評価されたかどうか、が判定され得る。APIマッシュアップの可能なAPI組合せの各々が評価された場合、方法８００はブロック８１２に進み得、ブロック８１２において、APIマッシュアップが、低優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。例えば、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかを判定することは、図１３のプロセッサ１３１０により実行され得る。APIマッシュアップの可能なAPI組合せの各々が評価されていない場合、方法８００はブロック８０２に戻り得、ブロック８０２において、別のAPI組合せが特定され得る。
【００５８】
本開示の範囲から逸脱することなく、方法８００に対して、変更、追加、又は省略が可能である。例えば、方法８００の動作は、異なる順序で実行されることがある。さらに、説明されたステップ及び動作は、例として提供されているに過ぎず、これらのステップ及び動作のうちの一部は、開示された実施形態の本質を損なうことなく、任意的であることもあるし、より少ないステップ及び動作に組み合わされることもあるし、追加のステップ及び動作に拡張されることもある。
【００５９】
図９は、本開示に記載の少なくとも１つの実施形態に従って構成される、１つ以上のAPIマッシュアップを処理する（例えば、フィルタリング、ランク付け、及び／又は優先度付けする）別の方法９００の例示的なフロー図を示している。別個のブロックで図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わされることもあるし、除去されることもある。例えば、方法９００は、図６のブロック６０４において実行され得る。
【００６０】
いくつかの実施形態において、方法９００は、図１のシステム１００及び／又は図１３のシステム１３００等の１つ以上のデバイス及び／又はシステムにより実行され得る。例えば、図１３のプロセッサ１３１０が、メモリ１３３０に記憶されているコンピュータ命令を実行して、方法９００のブロックのうちの１つ以上のブロックにより表される機能及び動作を実行するよう構成され得る。
【００６１】
APIテストに関して、（例えば、図６のデータベース６０２の）所与のAPIマッシュアップについて、自動APIテストを用いて、APIマッシュアップを優先度付けすることができる、且つ／又は、APIマッシュアップが妥当であるか否かを検証することができる。APIマッシュアップが自動APIテストをパスした場合、APIマッシュアップは、高優先度のマッシュアップとして指定され得る、且つ／又は、アプリケーション開発者にレコメンドされ得る。APIマッシュアップが自動APIテストをパスしなかった場合、APIマッシュアップは、低優先度のマッシュアップとして指定され得る。
【００６２】
ブロック９０２において、APIマッシュアップのAPI組合せについての入力及び／又は出力が解析され得、方法９００はブロック９０４に進み得る。より具体的には、例えば、APIマッシュアップのAPI組合せ（例えば、API_1、API_2）について、各APIの入力及び出力（例えば、タイプ、記述等）が解析され得る。一例として、天候APIに関して、入力は、市（city）の名前又はジップコード（郵便番号）を含み得、出力は、気温を含み得る。例えば、APIマッシュアップのAPI組合せについての入力及び／又は出力は、図１３のプロセッサ１３１０により解析され得る。
【００６３】
ブロック９０４において、API組合せについての入力が生成され得、方法９００はブロック９０６に進み得る。より具体的には、例えば、API組合せの意味タイプ及び／又は入力タイプに基づいて、テストに用いられ得る、APIについての入力が生成され得る。一例として、天候APIに関して、市の名前（例えば、Sunnyvale）又はジップコード（例えば、94085）が、知識ベースから自動的に生成され得る。例えば、APIについての入力は、図１３のプロセッサ１３１０により生成され得る。
【００６４】
ブロック９０６において、API組合せが妥当な出力を生成し得るかどうかが判定され得る。例えば、API組合せが妥当な出力を生成し得るかどうかの判定は、図１３のプロセッサ１３１０により実行され得る。API組合せが妥当な（例えば、正しい）出力を生成し得ると判定された場合、方法９００はブロック９０８に進み得、ブロック９０８において、APIマッシュアップが、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。API組合せが妥当な出力を生成し得ないと判定された場合、方法９００はブロック９１０に進み得る。
【００６５】
ブロック９１０において、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかが判定され得る。例えば、API_1及びAPI_2を含むAPIマッシュアップについて、API_1->API_2及びAPI_2->API_1の両方が評価されたかどうかが判定され得る。APIマッシュアップの可能なAPI組合せの各々が評価された場合、方法９００はブロック９１２に進み得、ブロック９１２において、APIマッシュアップが、低優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。例えば、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかの判定は、図１３のプロセッサ１３１０により実行され得る。APIマッシュアップの可能なAPI組合せの各々が評価されていない場合、方法９００はブロック９０２に戻り得、ブロック９０２において、別のAPI組合せが特定され得る。
【００６６】
本開示の範囲から逸脱することなく、方法９００に対して、変更、追加、又は省略が可能である。例えば、方法９００の動作は、異なる順序で実行されることがある。さらに、説明されたステップ及び動作は、例として提供されているに過ぎず、これらのステップ及び動作のうちの一部は、開示された実施形態の本質を損なうことなく、任意的であることもあるし、より少ないステップ及び動作に組み合わされることもあるし、追加のステップ及び動作に拡張されることもある。
【００６７】
図１０は、本開示に記載の少なくとも１つの実施形態に従って構成される、１つ以上のAPIマッシュアップを処理する（例えば、フィルタリング、ランク付け、及び／又は精査する）さらに別の方法１０００の例示的なフロー図を示している。別個のブロックで図示されているが、様々なブロックは、所望の実装に応じて、追加のブロックに分割されることもあるし、より少ないブロックに組み合わされることもあるし、除去されることもある。例えば、方法１０００は、図６のブロック６０４において実行され得る。
【００６８】
いくつかの実施形態において、方法１０００は、図１のシステム１００及び／又は図１３のシステム１３００等の１つ以上のデバイス及び／又はシステムにより実行され得る。例えば、図１３のプロセッサ１３１０が、メモリ１３３０に記憶されているコンピュータ命令を実行して、方法１０００のブロックのうちの１つ以上のブロックにより表される機能及び動作を実行するよう構成され得る。
【００６９】
（例えば、図６のデータベース６０２の）所与のAPIマッシュアップについて、入力／出力データフォーマットを解析して、APIマッシュアップが妥当であるか否かを検証することができる。APIマッシュアップが、合致する入力／出力データフォーマットを有する場合、又は、知識グラフにおいて、入力パラメータと出力パラメータとの間に、リンク（例えば、（例えば、XMLフォーマットからJSONフォーマットに変換する）データフォーマット変換又は（例えば、摂氏から華氏へと温度の単位を変換する）データ単位変換を含む関係を示す）が存在する場合、APIマッシュアップは、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）、且つ／又は、アプリケーション開発者にレコメンドされ得る。
【００７０】
いくつかの実施形態において、複数の出力パラメータ及び入力パラメータが存在し得る。いくつかの実施形態に従うと、１つのAPIの出力データフォーマット／単位と別のAPIの入力データフォーマット／単位との間に合致がある限り、APIマッシュアップは、互換性のあるデータフォーマットを有し得、APIマッシュアップは、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）、且つ／又は、アプリケーション開発者にレコメンドされ得る。
【００７１】
ブロック１００２において、APIマッシュアップのAPI組合せにおける各APIについての入力及び／又は出力が解析され得、方法１０００はブロック１００４に進み得る。より具体的には、例えば、APIマッシュアップのAPI組合せ（例えば、API_1、API_2）について、API_1及びAPI_2の入力及び出力（例えば、タイプ、記述等）が解析され得る。例えば、APIマッシュアップのAPI組合せについての入力及び／又は出力は、図１３のプロセッサ１３１０により解析され得る。
【００７２】
ブロック１００４において、API組合せの１つのAPIの出力が、API組合せの別のAPIの入力と同じデータフォーマット及び／又は単位を有するかどうかが判定され得る。より具体的には、例えば、API組合せにおけるAPIの意味タイプ及び／又は入力／出力タイプに基づいて、API組合せの１つのAPIの出力が、API組合せの別のAPIの入力と同じデータフォーマット及び／又は単位を有するかどうかが判定され得る。例えば、API組合せの１つのAPIの出力が、API組合せの別のAPIの入力と同じデータフォーマット及び／又は単位を有するかどうかの判定は、図１３のプロセッサ１３１０により実行され得る。
【００７３】
API組合せの１つのAPIの出力が、API組合せの別のAPIの入力と同じデータフォーマット及び／又は単位を有する場合、方法１０００はブロック１００６に進み得、ブロック１００６において、APIマッシュアップが、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。API組合せの１つのAPIの出力が、API組合せの別のAPIの入力と同じデータフォーマット及び／又は単位を有しない場合、方法１０００はブロック１００８に進み得る。
【００７４】
ブロック１００８において、データフォーマット／単位変換について、知識グラフにおいて、入力パラメータと出力パラメータとの間にリンクが存在するかどうかが判定され得る。例えば、データフォーマット／単位変換について、知識グラフにおいて、入力パラメータと出力パラメータとの間にリンクが存在するかどうかの判定は、図１３のプロセッサ１３１０により実行され得る。データフォーマット／単位変換について、知識グラフにおいて、入力パラメータと出力パラメータとの間にリンクが存在すると判定された場合、方法１０００はブロック１００６に進み得、ブロック１００６において、APIマッシュアップが、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。データフォーマット／単位変換について、知識グラフにおいて、入力パラメータと出力パラメータとの間にリンクが存在しないと判定された場合、方法１０００はブロック１０１０に進み得る。
【００７５】
ブロック１０１０において、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかが判定され得る。例えば、API_1及びAPI_2を含むAPIマッシュアップについて、API_1->API_2及びAPI_2->API_1の両方が評価されたかどうかが判定され得る。APIマッシュアップの可能なAPI組合せの各々が評価された場合、方法１０００はブロック１０１２に進み得、ブロック１０１２において、APIマッシュアップが、妥当でないマッシュアップとして指定され得る（例えば、優先度付けされ得る）。例えば、APIマッシュアップの可能なAPI組合せの各々が評価されたかどうかの判定は、図１３のプロセッサ１３１０により実行され得る。APIマッシュアップの可能なAPI組合せの各々が評価されていない場合、方法１０００はブロック１００２に戻り得、ブロック１００２において、別のAPI組合せが特定され得る。
【００７６】
本開示の範囲から逸脱することなく、方法１０００に対して、変更、追加、又は省略が可能である。例えば、方法１０００の動作は、異なる順序で実行されることがある。さらに、説明されたステップ及び動作は、例として提供されているに過ぎず、これらのステップ及び動作のうちの一部は、開示された実施形態の本質を損なうことなく、任意的であることもあるし、より少ないステップ及び動作に組み合わされることもあるし、追加のステップ及び動作に拡張されることもある。
【００７７】
図６を再度参照すると、（例えば、サブクラスタキーワード組合せと各組合せについてのAPIマッシュアップとを含む）APIマッシュアップデータベース６０６は、フィルタリング及び／又は精査されているが、いくつかの実施形態において、全てのAPIマッシュアップ及び／又はキーワード組合せが（例えば、オフライン処理を介して）評価されているわけではないことがある。したがって、本開示の様々な実施形態は、１つ以上の学習モデル（例えば、機械学習モデル及び／又は深層学習モデル）を使用して、いくつかのAPIが、妥当なAPIマッシュアップのために、組み合わせられ使用され得るか否かを予測することを含み得る。
【００７８】
例えば、いくつかの実施形態において、少なくとも１つのモデルは、トレーニングモデル６０８を含み得、少なくとも１つの他のモデルは、テストモジュール６１０を含み得る。モデル６０８及びモデル６１０が、２つのモデルとして図示されているが、モデル６０８及びモデル６１０は、同じ機械学習モデル又は深層学習モデルであってもよい。いくつかの実施形態に従うと、１つ以上のモデルは、タイトル、カテゴリ、一次カテゴリ、二次カテゴリ、リンク、記述、プロトコルフォーマット等といった、APIマッシュアップの特徴に関する情報（例えば、各APIに関する仕様情報）を含み得る。さらに、例えば、CNN（一例として、２つの層；図１１Ａを参照されたい）及び／又はLSTM（一例として、８つのノード；図１１Ｂを参照されたい）等、１つ以上の機械学習アルゴリズム及び／又は深層学習アルゴリズムが使用され得る。
【００７９】
いくつかの実施形態において、APIマッシュアップデータベース６０６からのデータを含み得る１つ以上のトレーニングデータセットが、トレーニングモデル６０８により受け取られ得る。さらに、開発者６１６からのフィードバック（例えば、開発者のAPIマッシュアップの選択（例えば、好む又は好まない）が、モデル６０８において受け取られ得、このようなフィードバックを使用して、トレーニングモデル６０８を生成及び／又は更新することができる。異なる機械学習アルゴリズム又は深層学習アルゴリズムについて、モデルトレーニングは、ブロック６０６において優先度付けされ得る、妥当なAPIマッシュアップデータセットのみ、又は、妥当なAPIマッシュアップデータセット及び妥当でないAPIマッシュアップデータセットの両方、を必要とし得る。
【００８０】
ブロック６１２において、（例えば、開発者６１６等の第三者からの）要求が処理され得る。例えば、フロー６００に示されているように、要求処理は、開発者６１６からの（本開示において「問合せ」とも呼ばれる）要求（例えば、サービス要求の自然言語記述）、並びに／又は、APIマッシュアップデータベース６０６からの１つ以上のAPIマッシュアップ及び／若しくはサブクラスタキーワード、といった１つ以上の入力に基づき得る。さらに、要求処理に応じて、１つ以上のキーワード組合せを含み得る出力が生成され得る。図１２の例示的なシステム１２００において、要求処理ツール１２０２が、１つ以上の入力（例えば、要求１２０４及びサブクラスタキーワード１２０６）を受信し、１つ以上のキーワード組合せを含み得る出力１２０８を生成し得る。
【００８１】
さらに、いくつかの実施形態において、図６のブロック６１４において、（例えば、ブロック６１２において）生成されたキーワード組合せが、データベース６０６のキーワード組合せと比較されて、（例えば、問合せからの）生成されたキーワード組合せとデータベース６０６のキーワード組合せとの間に合致があるかどうかが判定され得る。合致がある場合、データベース６０６からの関連するAPIマッシュアップが、開発者６１６に提供され得る。合致がない場合、キーワード組合せの各キーワードについて、（例えば、ブロック６０６からの）関連APIが特定され得、特定されたAPIについての全ての可能なAPI組合せが特定され得る。
【００８２】
さらに、API組合せの各々が、モデル６１０に伝達され得、機械学習アルゴリズム又は深層学習アルゴリズムとブロック６０６の既存のAPIマッシュアップデータセットとに基づいてトレーニングされたモデル６１０は、受け取ったAPIが、妥当なAPIマッシュアップとして組み合わせられ得るか否かを表し得る、ラベル（例えば、「1」又は「0」）等の出力を生成することができる。例えば、ラベルが1である場合、APIマッシュアップは、高優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）、且つ／又は、妥当なAPIマッシュアップとして開発者６１６に提供され得る。さらに、例えば、ラベルが0である場合、APIマッシュアップは、低優先度のマッシュアップとして指定され得る（例えば、優先度付けされ得る）。
【００８３】
さらに、いくつかの実施形態に従うと、レコメンドされたAPIマッシュアップに応じて、開発者６１６は、開発者６１６がこのAPIマッシュアップを好むか又は好まないかを選択することができる。この選択は、（例えば、モデル６０８における）学習モデルを更新及び／又は精緻化するための、学習モデルに対するフィードバックとして提供され得る。
【００８４】
いくつかの実施形態において、APIマッシュアップが、（例えば、テストモデル６０８を介して）元々は1でラベル付けされていた（例えば、妥当な／高優先度のAPIマッシュアップであった）が、複数の開発者（例えば、多数の開発者）が、このAPIマッシュアップを好まない場合、このAPIマッシュアップは、「0」で再ラベル付けされ得る。いくつかの実施形態において、APIマッシュアップが、元々は0でラベル付けされていた（例えば、妥当でない／低優先度のAPIマッシュアップであった）が、複数の開発者（例えば、多数の開発者）が、このAPIマッシュアップを好む場合、このAPIマッシュアップは、「1」で再ラベル付けされ得る。
【００８５】
さらに、いくつかの実施形態に従うと、任意のデータセット（例えば、新たなデータセット）を使用して、学習モデルを再トレーニングすることができる。さらに、いくつかの実施形態において、（例えば、データベース６０６からの情報及び／又は開発者６１６からのフィードバックを用いて）トレーニングされ得るモデル６０８は、モデル６１０が、受け取ったAPIが妥当なAPIマッシュアップとして組み合わせられ得るか否かをより正確に予測することを可能にするように、モデル６１０を更新することができる。
【００８６】
図１３は、本開示の少なくとも１つの実施形態に従った例示的なコンピューティングシステム１３００のブロック図である。例えば、システム１００（図１参照）、システム５００（図５参照）、システム１２００（図１２参照）、又はこれらの１つ以上のコンポーネントが、コンピューティングシステム１３００として実装され得る。コンピューティングシステム１３００は、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、タブレットコンピュータ、携帯電話機、スマートフォン、携帯情報端末（ＰＤＡ）、電子リーダデバイス、ネットワークスイッチ、ネットワークルータ、ネットワークハブ、他のネットワーキングデバイス、又は他の適切なコンピューティングデバイスを含み得る。
【００８７】
コンピューティングシステム１３００は、プロセッサ１３１０、記憶デバイス１３２０、メモリ１３３０、及び通信デバイス１３４０を含み得る。プロセッサ１３１０、記憶デバイス１３２０、メモリ１３３０、及び／又は通信デバイス１３４０は全て、これらのコンポーネントの各々が他のコンポーネントと通信できるように、通信可能に接続され得る。コンピューティングシステム１３００は、本開示に記載の動作のうちの任意の動作を実行することができる。
【００８８】
概して、プロセッサ１３１０は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な専用又は汎用のコンピュータ、コンピューティングエンティティ、又は処理デバイスを含み得、任意の適用可能なコンピュータ読み取り可能な記憶媒体に記憶されている命令を実行するよう構成され得る。例えば、プロセッサ１３１０は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、又は、プログラム命令を解釈及び／又は実行し、且つ／又はデータを処理するよう構成されている任意の他のデジタル回路若しくはアナログ回路を含み得る。プロセッサ１３１０は、図１３において１つのプロセッサとして示されているが、プロセッサ１３１０は、本開示に記載の任意の数の動作を個別的又は集合的に実行するよう構成されている任意の数のプロセッサを含んでもよい。
【００８９】
いくつかの実施形態において、プロセッサ１３１０は、記憶デバイス１３２０、メモリ１３３０、又は記憶デバイス１３２０とメモリ１３３０との両方に記憶されているプログラム命令を解釈及び／又は実行し、且つ／又は、記憶デバイス１３２０、メモリ１３３０、又は記憶デバイス１３２０とメモリ１３３０との両方に記憶されているデータを処理するよう構成され得る。いくつかの実施形態において、プロセッサ１３１０は、記憶デバイス１３２０からプログラム命令をフェッチして、プログラム命令をメモリ１３２０にロードすることができる。プログラム命令がメモリ１３３０にロードされた後、プロセッサ１３１０は、プログラム命令を実行することができる。
【００９０】
例えば、いくつかの実施形態において、デバイス及び／又はシステム（例えば、アプリケーションプログラム、サーバ等）の処理動作のうちの１つ以上の処理動作は、プログラム命令として、記憶デバイス１３２０に含められ得る。プロセッサ１３１０は、処理動作のうちの１つ以上の処理動作のプログラム命令をフェッチして、処理動作のうちの１つ以上の処理動作のプログラム命令をメモリ１３３０にロードすることができる。処理動作のうちの１つ以上の処理動作のプログラム命令がメモリ１３３０にロードされた後、プロセッサ１３１０は、そのプログラム命令により指示されるように処理動作に関連付けられている動作を実施できるように、処理動作のうちの１つ以上の処理動作のプログラム命令を実行することができる。
【００９１】
記憶デバイス１３２０及びメモリ１３３０は、コンピュータ実行可能な命令又はデータ構造を運ぶ又は記憶するコンピュータ読み取り可能な記憶媒体を含み得る。そのようなコンピュータ読み取り可能な記憶媒体は、プロセッサ１３１０等の汎用又は専用のコンピュータによりアクセスされ得る任意の利用可能な媒体を含み得る。限定ではなく例として、そのようなコンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）、又は、コンピュータ実行可能な命令又はデータ構造の形態の所望のプログラムコードを運ぶ又は記憶するために使用され得る任意の他の記憶媒体であって、汎用又は専用のコンピュータによりアクセスされ得る任意の他の記憶媒体、を含む有形の又は非一時的なコンピュータ読み取り可能な記憶媒体を含み得る。上記の組合せも、コンピュータ読み取り可能な記憶媒体の範囲に含まれ得る。コンピュータ実行可能な命令は、例えば、プロセッサ１３１０に所定の動作又は動作群を実行させるよう構成されている命令及びデータを含み得る。
【００９２】
いくつかの実施形態において、記憶デバイス１３２０及び／又はメモリ１３３０は、APIマッシュアップ生成システム（例えば、図１のAPIマッシュアップ生成システム１００）に関連するデータを記憶することができる。例えば、記憶デバイス１３２０及び／又はメモリ１３３０は、API、API組合せ、API情報（例えば、キーワード、パラメータ記述、エンドポイント記述、カテゴリ、クラスタ、サブクラスタ等）、及び／又は、APIマッシュアップ生成システムに関連する任意の他のデータを記憶することができる。
【００９３】
通信デバイス１３４０は、コンピューティングシステム１３００と別の電子デバイスとの間の通信を可能にする又は円滑にするよう構成されている任意のデバイス、システム、コンポーネント、又はコンポーネントの集合を含み得る。例えば、通信デバイス１３４０は、モデム、ネットワークカード（無線又は有線）、赤外線通信デバイス、光通信デバイス、無線通信デバイス（アンテナ等）、及び／若しくはチップセット（Bluetooth（登録商標）デバイス、802.6デバイス（例えば、メトロポリタンエリアネットワーク（MAN））、Wi-Fi（登録商標）デバイス、WiMAX（登録商標）デバイス、セルラ通信設備等）、並びに／又は同様のものを含み得るが、これらに限定されるものではない。通信デバイス１３４０は、ほんの少しの例を挙げると、セルラネットワーク、Wi-Fi（登録商標）ネットワーク、MAN、光ネットワーク等といった任意のネットワークとの間で、且つ／又は、リモートデバイスを含め、本開示に記載の任意の他のデバイスとの間で、データが交換されることを可能にし得る。
【００９４】
本開示の範囲から逸脱することなく、図１３に対して、変更、追加、又は省略が可能である。例えば、いくつかの実施形態において、コンピューティングシステム１３００は、本開示において図示及び説明された要素よりも多い又は少ない要素を含んでもよい。例えば、コンピューティングシステム１３００は、タブレット又は携帯電話機のスクリーン等の統合されたディスプレイデバイスを含んでもよいし、コンピューティングシステム１３００から分離されコンピューティングシステム１３００に通信可能に接続され得る外部モニタ、プロジェクタ、テレビジョン、又は他の適切なディスプレイデバイスを含んでもよい。
【００９５】
本開示において使用される場合、「モジュール」又は「コンポーネント」という用語は、モジュール又はコンポーネントの動作を実行するよう構成されている特定のハードウェア実装、及び／又は、例えば、APIマッシュアップ生成器１０４に記憶され得る且つ／又はAPIマッシュアップ生成器１０４により実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを指し得る。いくつかの実施形態において、本開示に記載の異なるコンポーネント及びモジュールは、コンピューティングシステム上で実行されるオブジェクト又はプロセスとして（例えば、別個のスレッドとして）実装され得る。本開示に記載のシステム及び方法のうちの一部は、（システム１３００に記憶される且つ／又はシステム１３００により実行される）ソフトウェアにより実装されるとして一般に説明されるが、特定のハードウェア実装又はソフトウェアと特定のハードウェア実装との組合せも可能であり企図されている。本説明において、「コンピューティングエンティティ」は、本開示において定義された任意のコンピューティングシステム、又は、システム１３００等のコンピューティングデバイス上で動作する任意のモジュール又はモジュールの組合せを含み得る。
【００９６】
本開示において使用される場合、「モジュール」又は「コンポーネント」という用語は、モジュール又はコンポーネントのアクションを実行するよう構成されている特定のハードウェア実装、及び／又は、コンピューティングシステムの汎用ハードウェア（例えば、コンピュータ読み取り可能な媒体等）に記憶され得る且つ／又はコンピューティングシステムの汎用ハードウェア（例えば、処理デバイス等）により実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを指し得る。いくつかの実施形態において、本開示に記載の異なるコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステム上で実行されるオブジェクト又はプロセスとして（例えば、別個のスレッドとして）実装され得る。本開示に記載のシステム及び方法のうちの一部は、（汎用ハードウェアに記憶される且つ／又は汎用ハードウェアにより実行される）ソフトウェアにより実装されるとして一般に説明されるが、特定のハードウェア実装又はソフトウェアと特定のハードウェア実装との組合せも可能であり企図されている。本説明において、「コンピューティングエンティティ」は、本開示において前に定義された任意のコンピューティングシステム、又は、コンピューティングシステム上で動作する任意のモジュール又はモジュールの組合せであり得る。
【００９７】
本開示及び特に請求項（例えば、請求項の本体部分）において使用される用語は、一般に、「オープンな」用語であるとして意図される（例えば、「〜を備える」という用語は、「〜を備えるが、〜に限定されるものではない」として解釈されるべきであり、「〜を有する」という用語は、「少なくとも〜を有する」として解釈されるべきであり、「〜を含む」という用語は、「〜を含むが、〜に限定されるものではない」として解釈されるべきである、等）。
【００９８】
さらに、導入される請求項記載事項の特定の数が意図される場合、そのような意図は、当該請求項中に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、請求項中に、請求項記載事項を導入するための「少なくとも１つの」及び「１つ以上の」といった導入句の使用が含まれることがある。しかしながら、このような導入句の使用は、「a」又は「an」といった不定冠詞による請求項記載事項の導入が、同一の請求項中に「１つ以上の」又は「少なくとも１つの」といった導入句と「a」又は「an」といった不定冠詞とが含まれるとしても、当該導入された請求項記載事項を含む特定の請求項が、当該請求項記載事項を１つしか含まない実施形態に限定されることを意味するとして解釈されるべきではない（例えば、「a」及び／又は「an」は、「少なくとも１つの」又は「１つ以上の」を意味するとして解釈されるべきである）。請求項記載事項を導入するために使用される定冠詞の使用についても同じことが当てはまる。
【００９９】
さらに、導入される請求項記載事項の特定の数が明示的に記載されている場合であっても、そのような記載は、少なくとも記載されている数を意味するとして解釈されるべきである（例えば、他の修飾語のない「２つの記載事項」という単なる記載は、少なくとも２つの記載事項又は２つ以上の記載事項を意味する）ことが、当業者であれば認識されよう。さらに、「Ａ、Ｂ、及びＣ等のうちの少なくとも１つ」又は「Ａ、Ｂ、及びＣ等のうちの１つ以上」に類する表記が使用される場合、一般に、そのような構造は、Ａのみ、Ｂのみ、Ｃのみ、Ａ及びＢの両方、Ａ及びＣの両方、Ｂ及びＣの両方、又は、Ａ、Ｂ、及びＣの全て、等を含むことが意図される。
【０１００】
さらに、２つ以上の選択可能な用語を表すいかなる離接語又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの１つ、それらの用語の組合せ、又は、それらの用語の全てを含む可能性を意図するとして理解されるべきである。例えば、「Ａ又はＢ」という句は、「Ａ」若しくは「Ｂ」又は「Ａ及びＢ」の可能性を含むとして理解されるべきである。
【０１０１】
本開示において記載された全ての例及び条件付き文言は、当該技術を促進させるために本発明者によって寄与されるコンセプト及び本発明を読者が理解するのを助ける教育上の目的のために意図され、そのような具体的に記載された例及び条件に限定されるものではないとして解釈されるべきである。本開示の実施形態が詳細に説明されたが、それら実施形態に対する様々な変形、置換、及び変更が、本開示の主旨及び範囲から逸脱することなく可能である。
【０１０２】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１０３】
（付記１）
アプリケーションプログラムインタフェース（API）マッシュアップを生成する方法であって、
少なくとも１つのプロセッサにより、複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化するステップと、
前記少なくとも１つのプロセッサにより、前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定するステップと、
前記少なくとも１つのプロセッサにより、前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定するステップと、
前記少なくとも１つのプロセッサにより、前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成するステップと、
を含む、方法。
【０１０４】
（付記２）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較することと、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出することと、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記１に記載の方法。
【０１０５】
（付記３）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せについての入力を生成することと、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定することと、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記１に記載の方法。
【０１０６】
（付記４）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定することと、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定することと、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記１に記載の方法。
【０１０７】
（付記５）
第三者からのAPIマッシュアップ要求を受信するステップと、
前記少なくとも１つのプロセッサにより、前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定するステップと、
前記少なくとも１つのプロセッサにより、前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較するステップと、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供するステップと、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達するステップと、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定するステップと、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供するステップと、
をさらに含む、付記１に記載の方法。
【０１０８】
（付記６）
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信するステップと、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新するステップと、
をさらに含む、付記５に記載の方法。
【０１０９】
（付記７）
前記少なくとも１つの優先度付けされたAPIマッシュアップを第三者に提供するステップ
をさらに含む、付記１に記載の方法。
【０１１０】
（付記８）
命令を含む１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記命令は、１つ以上の処理システムにより実行されたときに、前記１つ以上の処理システムに複数の動作を実行させるよう構成されており、前記複数の動作は、
複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化する動作と、
前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定する動作と、
前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定する動作と、
前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成する動作と、
を含む、コンピュータ読み取り可能な媒体。
【０１１１】
（付記９）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較することと、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出することと、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記８に記載のコンピュータ読み取り可能な媒体。
【０１１２】
（付記１０）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せについての入力を生成することと、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定することと、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記８に記載のコンピュータ読み取り可能な媒体。
【０１１３】
（付記１１）
前記複数の可能なAPIマッシュアップを処理することは、前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定することと、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定することと、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定することと、
を含む、付記８に記載のコンピュータ読み取り可能な媒体。
【０１１４】
（付記１２）
前記複数の動作は、
第三者からのAPIマッシュアップ要求を受信する動作と、
前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達する動作と、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定する動作と、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
をさらに含む、付記８に記載のコンピュータ読み取り可能な媒体。
【０１１５】
（付記１３）
前記複数の動作は、
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信する動作と、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新する動作と、
をさらに含む、付記１２に記載のコンピュータ読み取り可能な媒体。
【０１１６】
（付記１４）
前記複数の動作は、
前記少なくとも１つの優先度付けされたAPIマッシュアップを第三者に提供する動作
をさらに含む、付記８に記載のコンピュータ読み取り可能な媒体。
【０１１７】
（付記１５）
複数のAPIを、前記複数のAPIの各APIについての少なくとも１つのキーワードに基づいて、複数のサブクラスタにグループ化する動作と、
前記複数のサブクラスタについての２つ以上のキーワードと実世界データとに基づいて、前記複数のサブクラスタについての複数のキーワード組合せを特定する動作と、
前記複数のキーワード組合せについて、前記複数のAPIのうちの２つ以上のAPIを含む複数の可能なAPIマッシュアップを決定する動作と、
前記複数の可能なAPIマッシュアップを処理して、前記複数の可能なAPIマッシュアップのうち、前記複数のキーワード組合せのうちの少なくとも１つのキーワード組合せに関連付けられた少なくとも１つの優先度付けされたAPIマッシュアップを生成する動作と、
を実行するよう構成されている１つ以上のプロセッサ
を有するシステム。
【０１１８】
（付記１６）
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せの第１のAPIの入力を、該APIマッシュアップの該API組合せの第２のAPIの出力と比較する動作と、
該API組合せの該第１のAPIの入力と該API組合せの該第２のAPIの出力との間の類似度スコアを算出する動作と、
前記類似度スコアが閾値を超える場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、付記１５に記載のシステム。
【０１１９】
（付記１７）
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せについての入力を生成する動作と、
前記の生成された入力に基づいて、該APIマッシュアップが妥当な出力を生成するかどうかを判定する動作と、
前記の生成された出力が妥当である場合、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、付記１５に記載のシステム。
【０１２０】
（付記１８）
前記複数の可能なAPIマッシュアップの各APIマッシュアップの各API組合せについて、前記１つ以上のプロセッサは、
APIマッシュアップのAPI組合せの第１のAPIの出力が、該APIマッシュアップの該API組合せの第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有するかどうかを判定する動作と、
知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在するかどうかを判定する動作と、
前記第１のAPIの出力が、前記第２のAPIの入力のデータフォーマットと合致するデータフォーマットを有する場合、又は、前記知識グラフにおいて、前記第１のAPIの出力パラメータと前記第２のAPIの入力パラメータとの間に少なくとも１つのリンクが存在する場合、のいずれかにおいて、該APIマッシュアップを高優先度のAPIマッシュアップとして指定する動作と、
をさらに実行するよう構成されている、付記１５に記載のシステム。
【０１２１】
（付記１９）
前記１つ以上のプロセッサは、
第三者からのAPIマッシュアップ要求を受信する動作と、
前記APIマッシュアップ要求を処理して、前記APIマッシュアップ要求についての１つ以上のキーワード組合せを特定する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せを、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと比較する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致することに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
前記APIマッシュアップ要求についての前記１つ以上のキーワード組合せが、前記少なくとも１つの優先度付けされたAPIマッシュアップについての前記少なくとも１つのキーワード組合せと合致しないことに応じて、
前記少なくとも１つの優先度付けされたAPIマッシュアップを少なくとも１つの学習モデルに伝達する動作と、
前記少なくとも１つの学習モデルを介して、前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであるかどうかを判定する動作と、
前記少なくとも１つの優先度付けされたAPIマッシュアップが、妥当なAPIマッシュアップであると判定したことに応じて、前記少なくとも１つの優先度付けされたAPIマッシュアップを前記第三者に提供する動作と、
をさらに実行するよう構成されている、付記１５に記載のシステム。
【０１２２】
（付記２０）
前記１つ以上のプロセッサは、
前記少なくとも１つの優先度付けされたAPIマッシュアップに関する、前記第三者からのフィードバックを受信する動作と、
前記第三者からの前記フィードバックに基づいて、前記少なくとも１つの学習モデルを更新する動作と、
をさらに実行するよう構成されている、付記１９に記載のシステム。
【符号の説明】
【０１２３】
１００    APIマッシュアップ生成システム
１０２    APIデータベース
１０４    APIマッシュアップ生成器
５０２    固有表現抽出ツール
５０４    データ
５０６    キーワード
５０８    出力
１２０２  要求処理ツール
１２０４  要求
１２０６  サブクラスタキーワード
１２０８  出力
１３００  コンピューティングシステム
１３１０  プロセッサ
１３２０  記憶デバイス
１３３０  メモリ
１３４０  通信デバイス
【図１】
2019016352.tif 000003
【図２】
2019016352.tif 000004
【図３】
2019016352.tif 000005
【図４】
2019016352.tif 000006
【図５】
2019016352.tif 000007
【図６】
2019016352.tif 000008
【図７】
2019016352.tif 000009
【図８】
2019016352.tif 000010
【図９】
2019016352.tif 000011
【図１０】
2019016352.tif 000012
【図１１Ａ】
2019016352.tif 000013
【図１１Ｂ】
2019016352.tif 000014
【図１２】
2019016352.tif 000015
【図１３】
2019016352.tif 000016