JP2021111327A - Apiナレッジグラフを生成する方法、システム、及び非一時的なコンピュータ可読媒体 - Google Patents

Apiナレッジグラフを生成する方法、システム、及び非一時的なコンピュータ可読媒体 Download PDF

Info

Publication number
JP2021111327A
JP2021111327A JP2020143479A JP2020143479A JP2021111327A JP 2021111327 A JP2021111327 A JP 2021111327A JP 2020143479 A JP2020143479 A JP 2020143479A JP 2020143479 A JP2020143479 A JP 2020143479A JP 2021111327 A JP2021111327 A JP 2021111327A
Authority
JP
Japan
Prior art keywords
api
ontology
semantic
subset
concepts
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2020143479A
Other languages
English (en)
Inventor
バーラミ・メフディ
Mehdi Bahrami
チェン・ウェイ−ペン
Wei-Peng Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2021111327A publication Critical patent/JP2021111327A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24522Translation of natural language queries to structured queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Machine Translation (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】APIナレッジグラフを生成する方法等を提供する。【解決手段】方法は、第1及び第2APIに夫々関連する第1及び第2APIドキュメンテーションを取得することと、第1APIドキュメンテーション及び第2APIドキュメンテーションの夫々をマイニングして第1及び第2の複数のセマンティックトリプルを取り出すことと、第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを、第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することとを含む。方法は、第1APIドキュメンテーション及びセマンティックトリプルの第1サブセットに基づき第1オントロジを生成することを含む。方法は、第2オントロジを生成し、第1オントロジを第2オントロジと相関させることを含む。方法は、第1API及び第2APIのナレッジグラフを生成することを含む。【選択図】図4

Description

本開示で論じられる実施形態は、アプリケーションプログラミングインターフェースナレッジグラフを生成することに関係がある。
アプリケーションプログラミングインターフェース(API)ドキュメンテーションは、いかにしてAPIを使用しかつ/あるいはAPIと相互作用するかに関するソフトウェア開発者のための教授を含んでよい。しかし、各APIプロバイダはそれ自身の用語及び情報構造を使用することがあるので、異なるAPIの間には不一致が存在する可能性があり、ソフトウェア開発者が異なるAPIを理解することを難しくする。
本開示で請求される対象は、上記のような環境でしか動作しない実施形態又は上記のような如何なる欠点も解消する実施形態に制限されない。むしろ、この背景は、本開示で記載されるいくつかの実施形態が実施され得る技術範囲の一例を説明するためにのみ設けられている。
方法は、第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーション及び第2APIに関連する第2APIドキュメンテーションを取得することを含んでよい。方法は、第1の複数のセマンティックトリプルを取り出すよう第1APIドキュメンテーションをマイニングすることと、第2の複数のセマンティックトリプルを取り出すよう第2APIドキュメンテーションをマイニングすることとを含んでよい。方法は、第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択し、第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することを含んでよい。方法は、第1APIドキュメンテーション及びセマンティックトリプルの第1サブセットに基づいて第1オントロジを生成することを含んでよい。第1オントロジは、第1APIに関連する1つ以上の第1コンセプトと、1つ以上の第1コンセプトに関連する1つ以上の第1属性と、1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含んでよい。方法は、第2APIドキュメンテーション及びセマンティックトリプルの第2サブセットに基づいて第2オントロジを生成することを含んでよい。第2オントロジは、第2APIに関連する1つ以上の第2コンセプトと、1つ以上の第2コンセプトに関連する1つ以上の第2属性と、1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含んでよい。方法は、第1オントロジの1つ以上の第1コンセプト及び第2オントロジの1つ以上の第2コンセプトに基づいて、第1オントロジを第2オントロジと相関させることを含んでよい。方法は、第1オントロジ、第2オントロジ、及び第1オントロジを第2オントロジと相関させることに基づいて、第1API及び第2APIのナレッジグラフを生成することを含んでよい。
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって実現され達成される。
上記の概要及び下記の詳細な説明は両方とも、例として与えられており、請求されている発明の限定ではなく説明である。
例となる実施形態は、添付の図面の使用を通じて更なる特定及び詳細をもって記載及び説明される。
アプリケーションプログラミングインターフェース(API)ナレッジグラフを生成することに関連した環境の例を表す図である。 例となるAPIナレッジグラフ及び/又はAPIナレッジグラフのスニペットを表す。 例となるAPIナレッジグラフ及び/又はAPIナレッジグラフのスニペットを表す。 例となるAPIナレッジグラフ及び/又はAPIナレッジグラフのスニペットを表す。 APIナレッジグラフにおいて結果を識別するために自然言語処理を使用するプロセスの例のフローチャートである。 APIナレッジグラフを生成する方法の例のフローチャートである。 APIナレッジグラフを生成するよう構成され得るコンピュータシステムの例を表す。
本開示で記載されるいくつかの実施形態は、アプリケーションプログラミングインターフェース(API)ナレッジグラフを生成する方法及びシステムに関する。APIは、ソースコード又はいかにしてAPIが内部で他に働きかけるかを公開せずに、異なるマシンが互いと及びソフトウェアアプリケーションと相互作用することを可能にするために使用され得る。各APIは、メソッド、パラメータ、属性、入出力データタイプ、及びそれらの夫々の記述のそれ自身の定義を有し得る。よって、いかにしてAPIを使用すべきか、どのようなメソッドをAPIが提供するか、並びにどのような入出力をAPIが期待及び/又は生成するかに関するガイダンスなしでは、APIを使用することは、ソフトウェア開発者にとって困難である場合がある。
APIドキュメンテーションは、いかにしてAPIと相互作用すべきかをソフトウェア開発者が知ることを助けるように、ソフトウェア開発者に教授を与えることができる。しかし、APIの各プロバイダは、類似した及び/又は同じオブジェクト、関数、及び/又はプロセスを参照する場合でさえ、異なる用語(terminologies)を使用する可能性がある。その上、たとえ2つの異なるAPIプロデューサがAPI内で類似した用語を使用するとしても、それらのプロデューサは、APIドキュメンテーションにおいて異なるように、とりわけ、関数、特徴、データ構造を記述することがある。更に、異なるAPIを理解するために有益な情報は、APIドキュメンテーションにおいて非構造化及び/又は半構造化された様態で提示されることがあり、異なるAPIの間で比較及び/又は類推することを更に困難にする。よって、異なるAPI及びいかにして一方のAPIの構造が他方のAPIの構造に関係があるかを理解することは、ソフトウェア開発者にとって、上級のソフトウェア開発者でさえ困難である場合がある。
本開示の様々な実施形態は、2つ以上のAPIのナレッジグラフを生成することを助けることができる。本開示のシステム及び/又はプロセスは、APIドキュメンテーションの非構造化、半構造化、及び構造化された情報を構造化されたフォーマットに変換することによって、ナレッジグラフの生成を可能にし得る。いくつかの実施形態では、複数のAPIドキュメンテーション(数十、数百、数千、以上)が、複数の異なるAPIプロバイダのAPIに関連するナレッジグラフを生成するために組み合わされてよい。ナレッジグラフは、API記述に対応してよく、異なるAPIにおける関数、構造、及び/又はオブジェクトの間の関係などのような、単一のAPIに含まれない情報の識別を助け得る。例えば、ナレッジグラフは、異なるAPIの異なる用語が同じ事物に対応しているとユーザが理解することを助け得る。例えば、1つのAPIプロバイダは、API REST(Representational Sate Transfer)エンドポイントを“エンドポイント”として参照してよく、一方、他のAPIプロバイダは、API RESTエンドポイントを“関数”(function)として参照してよい。ナレッジグラフは、両方のAPIをより容易に使用することをユーザに可能にするように、1つのAPIの“エンドポイント”を他のAPIの“関数”とリンクしてよい。
いくつかの実施形態で、本開示の方法に従って生成されるナレッジグラフは、異なるAPIに関してユーザクエリに対する応答を識別するよう探索されてよい。例えば、ナレッジグラフを使用して、ユーザのクエリは、自然言語(例えば、英語又は日本語)において取得されてよい。
本開示の様々な実施形態は、APIと相互作用するための新しいコードを開発するのに必要とされるコスト及び/又は時間を減らし得るナレッジグラフの生成をもたらし得る。
本開示の実施形態は、添付の図面を参照して説明される。
図1は、本開示で記載される少なくとも1つの実施形態に従って配置される、APIナレッジグラフを生成することに係る例となる環境100を表す図である。環境100は、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び機械学習分類器160を含んでよい。
マイニングモジュール120は、コンピュータデバイスが、オブジェクト125を得るために、APIドキュメンテーションのコーパス110に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、マイニングモジュール120は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、マイニングモジュール120は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、マイニングモジュール120によって実行されるものとして記載される動作は、マイニングモジュール120が対応するシステムに実行するよう指示し得る動作を含んでもよい。
いくつかの実施形態で、マイニングモジュール120は、APIドキュメンテーションのコーパス110を取得してよい。いくつかの実施形態で、マイニングモジュール120は、1つ以上のネットワークを介してAPIドキュメンテーションのコーパス110を取得してもよい。いくつかの実施形態で、APIドキュメンテーションのコーパス110は、複数のAPIに関連するAPIドキュメンテーションを含んでよい。例えば、APIドキュメンテーションのコーパス110は、10、100、1000、10000、又は任意の数のAPIに関連するAPIドキュメンテーションを含んでよい。APIは、REST API、Jave(登録商標) API、又はあらゆる他のタイプのAPIであってよい。いくつかの実施形態で、APIドキュメンテーションのコーパス110の中の複数のAPIドキュメンテーションは、特定のAPIに関連してもよい。例えば、特定のAPIは、それに関連する10のAPIドキュメンテーションを有してよく、他のAPIは、それに関連する1のAPIドキュメンテーションを有してよい。各APIドキュメンテーションは、いかにしてAPIと相互作用するかをソフトウェア開発者が知ることを助けるようソフトウェア開発者への教授を含んでよく、APIのプロバイダが選択している言語を使用してよい。異なるAPIドキュメンテーションは、同じ又は類似したオブジェクト、関数、コンセプト、プロセス、考え及び/又は構造を参照する場合でさえ、異なる用語を使用する可能性がある。
次いで、マイニングモジュール120は、APIドキュメンテーションのコーパス110からAPIドキュメンテーションを“マイニング”(mine)してよい。いくつかの実施形態で、APIドキュメンテーションをマイニングすることは、APIドキュメンテーションからトリプルを取り出すことを含んでよい。いくつかの実施形態で、トリプルは、リソース記述フレームワーク(RDF)トリプルを含んでよい。トリプルは、主語(subject)、述語(predicate)、及び目的語(object)を含んでよい。マイニングモジュール120は、複数の異なるプロセスを通じて、APIドキュメンテーションからトリプルを取り出してよい。例えば、いくつかの実施形態で、APIドキュメンテーションは、トリプルの取り出しのために手動で注釈を付されてよく、トリプルのための処理条件が存在してよい。いくつかの実施形態で、マイニングモジュール120は、APIドキュメンテーションをトークン化してよい。トークン化(トークナイゼーション)は、センテンスなどのテキストのストリームをワード、フレーズ、シンボル、又はトークンと呼ばれる他の有意味な要素に分けることを指し得る。マイニングモジュール120は、次いで、トークン化されたAPIドキュメンテーションをパースして、APIドキュメンテーションのセンテンスから要素を取り出してよい。いくつかの実施形態で、夫々のパースされたトークンは、1つ以上の要素を含んでよい。例えば、夫々のパースされたトークンは、トリプルとして記憶され得る3つの要素を生成するために使用されてよい。例えば、マイニングモジュール120は、抽出規則を使用して、各センテンスからトリプルの3つの要素である主語、述語、及び目的語を取り出してよい。例えば、トリプルは、数あるフォーマットの中でも特に、<API,タイトル,API1>、<API,タイトル,API2>の形を取ってよい。マイニングモジュール120が、APIドキュメンテーションのコーパス110からのAPIごとの各APIドキュメンテーションからトリプルを取り出した後、マイニングモジュール120は、各APIに関連するトリプルのサブセットを選択してよい。例えば、いくつかの実施形態で、マイニングモジュール120は、全てのAPIドキュメンテーションにわたってどれくらいの頻度で述語が現れるかを識別してよい。特定のトリプルにおける述語の出現の頻度が閾値を満足する場合に、その特定のトリプルは、トリプルのサブセットに含まれるトリプルとして選択されてよい。
いくつかの実施形態で、マイニングモジュール120は、各トリプル内の各述語が現れるAPIドキュメンテーションのコーパス110のAPIドキュメンテーションのパーセンテージを決定してよい。例えば、特定の述語は、APIドキュメンテーションのコーパス110のAPIドキュメンテーションの82%で出現し得る。閾発生率が80%である場合に、その特定の述語を含むトリプルは、トリプルのサブセットに含まれ得る。いくつかの実施形態で、トリプルのサブセットはオブジェクト125であってよい。代替的に、又は追加的に、いくつかの実施形態で、マイニングモジュール120は、ワード間の類似性を特定するためにAPIドキュメンテーションのコーパス110に対してWord2Vecアルゴリムなどの教師なし機械学習アルゴリズムを用いてよい。ワード間の類似性に基づいて、マイニングモジュール120は、APIドキュメンテーションのコーパス110において特定のワードをオブジェクト125として識別してよい。
インスタンス化モジュール140は、コンピュータデバイスが、インスタンス145を得るために、OASレポジトリ130及びオブジェクト125に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、インスタンス化モジュール140は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、インスタンス化モジュール140は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、インスタンス化モジュール140によって実行されるものとして記載される動作は、インスタンス化モジュール140が対応するシステムに実行するよう指示し得る動作を含んでもよい。
いくつかの実施形態で、インスタンス145は、オブジェクト125のサンプル及び/又は例を含んでよい。例えば、1つのオブジェクト125は“エンドポイントアドレス”を含んでよい。このような及び他の実施形態で、インスタンス化モジュール140は、“エンドポイントアドレス”オブジェクトのインスタンスとして“/post_message”を取得してよい。いくつかの実施形態で、インスタンス化モジュール140は、OASレポジトリ130に基づいて、オブジェクト125からインスタンス145を生成してよい。いくつかの実施形態で、OASレポジトリ130は、複数のOAS JavaScript(登録商標)オブジェクト表記法(JavaScript Object Notation,JSON)ファイルを含んでよい。各OAS JSONファイルは、マシン読み出し可能なファイルであってよい。OAS JSONファイルは、複数の値を含んでよく、各値は、オブジェクト名のインスタンスであってよい。例えば、OAS JSONファイルは、“paths”->‘/post_message’を含んでよく、これは、エンドポイント(OASフォーマットに従う)及び値又はインスタンスが“/post_message”であり得るということで、“paths”としてアドレッシングされてよい。異なるOAS JSONファイルは、異なるAPIに対応してよい。例えば、第1APIは、第1OAS JSONファイル及び/又はOAS JSONファイルの第1の組に関連してよい。第2APIは、第2OAS JSONファイル及び/又はOAS JSONファイルの第2の組に関連してよい。代替的に、又は追加的に、いくつかの実施形態で、APIは、対応するOASファイルを含まなくても又はそれに関連してなくてもよい。このような及び他の実施形態で、APIドキュメンテーションのコーパス110の中のAPIドキュメンテーションは、OASを構成するようパースされてよい。いくつかの実施形態で、OASレポジトリ130内のOAS JSONファイルは、オープンAPI仕様によって規定される標準のような標準OASスキーマに従ってよい。このような及び他の実施形態で、種々のバージョンのOASスキーマが存在し得る。例えば、1つのOAS JSONファイルは、OAS3.0.0バージョンファイルであってよく、他のOAS JSONファイルは、OAS3.0.1バージョンファイルであってよい。いくつかの実施形態で、OASレポジトリ130は、ウェブベースのAPIに関連してよく、ウェブベースではないAPIに関連しなくてもよい。いくつかの実施形態で、OASスキーマは、REST APIのための標準であってよく、オブジェクト及び値を配置するための構造を定義してよい。いくつかの実施形態で、OASはオントロジと対応してよい。例えば、オントロジは、コンセプト、コンセプトの属性、及びコンセプトの間の階層関係を含んでよい。
拡張モジュール150は、コンピュータデバイスが、拡張されたOASオントロジ155を得るために、オブジェクト125及びインスタンス145に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、拡張モジュール150は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、拡張モジュール150は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、拡張モジュール150によって実行されるものとして記載される動作は、拡張モジュール150が対応するシステムに実行するよう指示し得る動作を含んでもよい。
いくつかの実施形態で、拡張モジュール150は、オントロジとして、特定のAPIに関連するオープンAPI仕様から始めてよい。拡張モジュール150は、オブジェクト125及びインスタンス145をオントロジに加えることによって、オントロジを拡張してよい。いくつかの実施形態で、拡張モジュール150は、オントロジのクラス、特性、及びデータタイプに応じて種々の方法でオントロジを変更してよい。例えば、適切に定義された範囲を有する特性によれば、path itemオブジェクトがオントロジに加えられてよい。例えば、ノードは、オブジェクト内の特性ごとに加えられてよい。代替的に、又は追加的に、例えば、自己定義の特性及び拡張可能な特性などのような、範囲を指定されないパターン化された特性の場合に、拡張モジュール150は、それらの特性をrootクラスの新しい特性として加えてよい。
一例として、いくつかのフィールドパターンは、Swaggerスキーマなどの他のスキーマへのクラスの拡張を可能にし得る。例えば、いくつかの実施形態で、フィールドパターン^x-は、Swaggerスキーマへの拡張を可能にし得る。よって、x内部ID(x-internal-id)は、APIがSwaggerスキーマから“内部ID”にアクセスすることを可能にすることができ、xオリジン(x-origin)は、APIがSwaggerスキーマから“原点”(origin)にアクセスすることを可能にすることができる。拡張モジュール150は、拡張されたOASオントロジ155を取得するために、このようにして、インスタンス化モジュール140から得られたインスタンス145及びマイニングモジュール120から得られたオブジェクト125を用いてオントロジを拡張してよい。追加的に、又は代替的に、拡張モジュール150は、拡張されたOASオントロジ155を取得するために、新しい特性を含めるよう、拡張可能な特性を含むパターン化された特性に基づいてオントロジを拡張してもよい。代替的に、又は追加的に、拡張モジュール150は、拡張されたOASオントロジ155を取得するために、インスタンス145、オブジェクト125、及び拡張可能な特性を含むパターン化された特性を用いてオントロジを拡張してよい。
例えば、拡張モジュール150は、OASレポジトリ130からのOASに基づいて、各インスタンス145に関連するクラスを推測してよい。例えば、拡張モジュール150は、特定のオブジェクトが“operationオブジェクト”のインスタンスであると決定するためにフィールド名、パラメータ、及び属性を比較してよい。同じように、拡張モジュール150は、特定のオブジェクトがパラメータオブジェクト又はあらゆる他のタイプのオブジェクトのインスタンスであると決定してもよい。
追加的に、又は代替的に、いくつかの実施形態で、拡張モジュール150は、新しいクラスを定義し、その新しいクラスを付加して、拡張されたOASオントロジ155を生成してもよい。例えば、拡張モジュール150は、新しいクラスとしてScopesRangeを、及び新しいクラスとしてSecurityRequirementRangeを定義してよい。例えば、いくつかの実施形態で、拡張モジュール150は、上述されたようにノードとして付加的な特性を生成してもよい。これらの自己定義の特性及び/又はクラスは、それらに割り当てられたクラスを有さなくてもよい。いくつかの実施形態で、拡張モジュール150はまた、付加的な特性をクラスに加えるようクラスを変更してもよい。例えば、拡張モジュール150は、新しい特性“XXXItem”及び“itemName”特性をPathsObject、HeadersObject、DefinitionsObject、ParametersDefinitionsObject、ResponsesDefinitionsObject、SecurtyDefinitionsObject、及びSchemaObjectクラスに加えてよい。このような及び他の実施形態で、“XXXItem”内の“XXX”は、(“PathsObject”の)“path”、(“HeadersObject”の)“header”、などを表してよい。このような及び他の実施形態で、付加的な特性を加えることは、冗長性を低減し得る。よって、いくつかの実施形態で、拡張モジュール150は、ナレッジグラフ又はオントロジにおいて付加的なノードを生成し得る。いくつかの実施形態で、拡張モジュール150は、RDFの命名規則に従わない自己定義の特性を変更してもよい。例えば、特性が数字から始まる場合に、それは、下線から始まるよう変更されてよく、“200”は“_200”に変更され得る。同様に、かっこは、下線に変更されてもよく、“category(primary)”は“category_primary_”に変更され得る。
機械学習分類器160は、コンピュータデバイスが、ナレッジグラフ165を得るために、1つ以上の拡張されたOASオントロジ155に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、機械学習分類器160は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、機械学習分類器160は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、機械学習分類器160によって実行されるものとして記載される動作は、機械学習分類器160が対応するシステムに実行するよう指示し得る動作を含んでもよい。
いくつかの実施形態で、機械学習分類器160は、1つ以上の拡張されたOASオントロジ155からナレッジグラフ165を生成するよう構成されてよい。機械学習分類器160は、その関連するオブジェクト125及びインスタンス145を含む拡張されたOASオントロジ155に基づいて、グラフを生成してよい。
例えば、機械学習分類器160は、オブジェクトを、それらの特徴に従って、異なるが類似するクラスに分類するよう構成されてよい。例えば、機械学習分類器160は、第1の拡張されたOASオントロジ155からのオブジェクト、特性、及び/又はクラスを、第2の拡張されたOASオントロジ155からのオブジェクト、特性、及び/又はクラスと関連付けるよう構成されてよい。例えば、機械学習分類器160は、例えば、Word2Vec教師なしモデルからのワードの分類のような、マイニングモジュール120からのワード分類を使用して、第1の拡張されたOASオントロジ155のどのオブジェクトが第2の拡張されたOASオントロジ155の対応するオブジェクトと相関するかを識別するよう構成されてよい。このような及び他の実施形態で、機械学習分類器160は、付加的なノードを加えることによって、第1の拡張されたOASオントロジ155のノードを第2の拡張されたOASオントロジ155のノードと接続してよい。例えば、第1の拡張されたOASオントロジ155における“エンドポイント”は、API RESTエンドポイントと対応してよい。第2の拡張されたOASオントロジ155における“関数”も、API RESTエンドポイントと対応してよい。機械学習分類器160は、API RESTエンドポイントノードを加え、ノードを“エンドポイント”及び“関数”の両ノードに接続してよく、“エンドポイント”及び“関数”は両方とも、API RESTエンドポイントのインスタンスである。よって、機械学習分類器160は、図2A〜2Cに表されているようにナレッジグラフ165を生成し得る。
いくつかの実施形態で、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び機械学習分類器160のうちの1つ以上は、単一のデバイスの部分であってよい。代替的に、又は追加的に、いくつかの実施形態で、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び機械学習分類器160のうちの1つ以上は、ソフトウェアとして実装されてもよい。例えば、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び機械学習分類器160のうちの1つ以上は、ソフトウェアプログラムにおいて異なるモジュールとしてプログラムされてもよい。
環境100の動作の説明が続く。マイニングモジュール120は、APIドキュメンテーションのコーパス110を取得してよい。マイニングモジュール120は、APIドキュメンテーションのコーパス110からオブジェクト125としてRDFトリプルを識別及び/又は抽出するように、APIドキュメンテーションのコーパス110に対して教師あり及び/又は教師なし機械学習を実行してよい。いくつかの実施形態で、マイニングモジュール120は、オブジェクト125に関連する各々のトリプルにおける各々の述語の出現の頻度に基づいて、オブジェクト125のサブセットを選択してよい。例えば、マイニングモジュール120は、特定の述語がAPIドキュメンテーションのコーパス110の中の20%のAPIドキュメンテーションで現れると決定してよく、その特定の述語を含むトリプルをオブジェクト125に含めなくてよい。代替的に、又は追加的に、マイニングモジュール120は、別の特定の述語が、APIドキュメンテーションのコーパス110の中の85%のAPIドキュメンテーションで現れると決定してよく、その特定の述語を含むトリプルをオブジェクト125に含めてよい。インスタンス化モジュール140は、オブジェクト125を取得してよく、かつ、OASレポジトリ130からAPIに関連する1つ以上のOASを取得してよい。インスタンス化モジュール140は、オブジェクト125のインスタンス145を生成してよい。
拡張モジュール150は、オブジェクト125及びインスタンス145に基づいてOASオントロジを拡張してよい。いくつかの実施形態で、OASオントロジは、OASレポジトリ130からのOASと対応してよい。いくつかの実施形態で、拡張モジュール150は、OASオントロジ内の特定のクラスに基づいて付加的な特性をOASオントロジに加えてよく、インスタンス145をOASオントロジに加えてよく、かつ、オブジェクト125をOASオントロジに加えてよい。いくつかの実施形態で、拡張モジュール150は、関連するOASに基づいてインスタンスのクラスを推測してよく、Swaggerオントロジに基づいて及び/又は他のオントロジに基づいてOASオントロジを拡張してよく、付加的なクラスをOASオントロジに加えてよく、かつ/あるいは、冗長性を低減するように新しい特性をクラスに加えることによってクラスを変更してよい。いくつかの実施形態で、機械学習分類器160は、拡張されたOASオントロジ155に基づいてナレッジグラフ165を生成してよい。例えば、いくつかの実施形態で、機械学習分類器160は、ナレッジグラフ165を生成するように2つ以上の拡張されたOASオントロジ155を相関させてよい。ナレッジグラフ165の例及び/又はナレッジグラフ165のスニペットの例は、図2A〜2Cに表されている。
ナレッジグラフ165は、ユーザのクエリに答えるために、かつ/あるいは、一度に複数のAPIに関する情報をユーザに提示して、どれくらい異なるAPIが構造化されるかを理解すること、異なるAPIの間の類似性を決定すること、及び/又はいかにして異なるAPIを使用すべきかを理解することをユーザに可能にするために、使用されてよい。例えば、ナレッジグラフ165は、たとえ第1API及び第2APIが異なるようにオブジェクトを参照するとしても、第1APIのオブジェクトを第2APIのオブジェクトとリンクしてよい。例えば、第1APIは、オブジェクトを“エンドポイント”として参照してよく、第2APIは、オブジェクトを“関数”として参照してよいが、“エンドポイント”及び“関数”は両方とも、API RESTエンドポイントに関連しかつ/あるいはそれとして動作してよい。このようにして、ナレッジグラフ165は、同等の及び/又は類似した情報を参照するために使用され得る2つの異なる用語を理解することをユーザに可能にし得る。
その上、いくつかの実施形態で、ナレッジグラフ165は、ユーザクエリに対する決断を供給するために使用されてよい。例えば、ユーザクエリは、自然言語において受け取られてよい。いくつかの実施形態で、ユーザクエリは、テキスト形式、オーディオ形式、又はビデオ形式であってよい。機械学習アルゴリズムは、SPARQLクエリを生成するために自然言語理解(natural language understanding)を使用してよい。いくつかの実施形態で、機械学習アルゴリズムは、ユーザのクエリのコンテキストを識別してよい。一例として、クエリが「サニーベールの温度を得よ」(get temperature of Sunnyvale)と要求する場合に、機械学習アルゴリズムは、ワード「温度」(temperature)から「天候」(weather)としてコンテキストを識別してよく、かつ、「サニーベール」(Sunnyvale)から「都市」(city)として場所を識別してよい。それから、SPARQLクエリがナレッジグラフ165に対して実行されてよく、適切なAPIコールがナレッジグラフ165において識別され得る。APIコールは実行されてよく、ユーザクエリに対する応答は識別されてよい。それから、機械学習アルゴリズムは、ナレッジグラフ165において適切なAPIコールを識別した後でAPIコールを実行して、都市サニーベールにおける天候を決定してよく、そして、その天候を用いてユーザクエリに応答してよい。その上、ユーザクエリは、API自体の構造及び/又は機能を含んでもよい。例えば、ユーザクエリは、特定の出力の関数がどのようなものであるかを尋ねてもよい。自然言語クエリからのSPARQLクエリの生成に関する更なる詳細は、図3に関連して以下で記載される。
本開示の適用範囲から逸脱せずに、図1に対して変更、追加、又は削除が行われてよい。例えば、環境100は、本開示で図示及び記載されているものよりも多い又は少ない要素を含んでよい。更に、いくつかの実施形態で、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び/又は機械学習モジュール160は、1つのモジュールであってよい。代替的に、又は追加的に、いくつかの実施形態で、マイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び/又は機械学習モジュール160、並びにマイニングモジュール120、インスタンス化モジュール140、拡張モジュール150、及び/又は機械学習モジュール160に関して述べられている動作は、異なるシステムにわたって分布してもよい。
図2A〜2Cは、例となるAPIナレッジグラフ及び/又はAPIナレッジグラフのスニペットを表す。例えば、図2Aは、第1の例となるナレッジグラフ210を表す。図2Aに表されているように、ナレッジグラフ210は、複数の正規ノード212(図2A中「R」と表記されているノード)を含んでよい。正規ノードは、OASフォーマットに従ってナレッジグラフ210に加えられるノードを含んでよい。例えば、「APIタイトル:ツイッターAPI」(API Title: Twitter API)は、正規ノード212「ツイッターAPI」及びエッジ「APIタイトル」に関連してよい。ナレッジグラフ210はまた、複数のOASオントロジノード214(図2A中「O」と表記されているノード)を含んでもよい。OASオントロジノード214は、OASがOASレポジトリ(例えば、図1のOASレポジトリ130)から受け取られるということで、OASから生成されかつ/あるいはOASからのオントロジに関連したノードであってよい。ナレッジグラフ210はまた、複数の拡張OASオントロジノード216(図2A中「E」と表記されているノード)を含んでもよい。このような及び他の実施形態で、拡張OASオントロジノード216は、オブジェクト及びインスタンス(例えば、図1のオブジェクト125及びインスタンス145)に基づいて生成されたノードを含んでよい。このような及び他の実施形態で、拡張OASオントロジノード216はまた、拡張可能な特性を有するオブジェクトに基づき加えられたノードを含んでもよい。例えば、拡張可能な特性を有するオブジェクトの新しい特性は、図1に関して上述されたように、新しいノードとして加えられてよい。追加的に、又は代替的に、拡張OASオントロジノード216は、インスタンスに関連したクラスの推測として加えられたノードを含んでもよい。例えば、インスタンスは、拡張OASオントロジノード216であってよく、推測されるクラスノードも、拡張OASオントロジノード216であってよい。追加的に、又は代替的に、拡張OASオントロジノード216は、新しい特性として特定のクラスに加えられたノードを含んでもよい。
図2Bは、第2の例となるナレッジグラフ220を表す。図2Bに表されているように、ナレッジグラフ220は、API1 222A及びAPI2 222Bのような複数のAPIを表してよい。このような及び他の実施形態で、ナレッジグラフ220は、より大きいナレッジグラフのスニペットのみを表してよい。例えば、より大きいナレッジグラフは、API1 222Aに関連した追加ノード及び/又はAPI2 222Bに関連した追加ノードを含んでよい。いくつかの実施形態で、ナレッジグラフ220は、複数のAPIの間で類似したノードを識別してよい。例えば、クラスノード224Aは、API1 222Aにおけるクラスであってよく、クラスノード224Bは、API2 222Bにおけるクラスであってよい。クラスノード224A及びクラスノード224Bの夫々は、Swaggerオブジェクト226のインスタンスであってよい。よって、ナレッジグラフ220は、たとえクラスノード224A及びクラスノード224BがAPI1 222A及びAPI2 222B並びに関連するAPIドキュメンテーションにおいて異なった名称及び/又は記述を有しているとしても、API1 222Aにおけるクラス224AがAPI2 222Bにおけるクラスノード224Bと類似及び/又は同じであることをユーザ(例えば、コンピュータプログラム)に表し得る。
図2Cは、第3の例となるナレッジグラフ230を表す。図2Cに表されているように、ナレッジグラフ230は、企業1 232AからのAPI及び企業2 232BからのAPIのような、複数の異なるAPIプロバイダからのAPIを含んでよい。企業1 232AからのAPIは、「エンドポイント」として特定のオブジェクトを参照してよく、企業2 232BからのAPIは、「関数」として特定のオブジェクトを参照してよい。ナレッジグラフ230は、「エンドポイント」及び「関数」が両方ともAPI RESTエンドポイントのインスタンスであることを示すことができ、ユーザが企業1 232AからのAPI及び企業2 232BからのAPIの両方の機能を理解することを助ける。
本開示の適用範囲から逸脱せずに、図2A〜2Cに対して変更、追加、又は削除が行われてよい。例えば、図2A、2B、及び2Cのナレッジグラフ210、220、及び230は夫々、単に例示に過ぎない。ナレッジグラフの夫々は、より多いノードや、より少ないノードを含んでよく、かつ/あるいは、複数(例えば、数十、数百、数千、及び/又はそれ以上)のAPIに関連してよい。
図3は、APIナレッジグラフのスニペットにおいて結果を識別するために自然言語処理を使用する、例となるプロセス300のフローチャートである。プロセス300は、自然言語理解ユニット(NLU)320及びグラフパーサ370を含んでよい。
NLU320は、コンピュータデバイスが、SPARQLクエリ350を得るために、自然言語テキスト310に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、NLU320は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、NLU320は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、NLU320によって実行されるものとして記載される動作は、NLU320が対応するシステムに実行するよう指示し得る動作を含んでもよい。
自然言語テキスト310は、自然言語フォーマットでのクエリ又は質問を含んでよい。例えば、自然言語テキスト310は、英語、スペイン語、日本語、又はあらゆる他の言語での質問を含んでよい。いくつかの実施形態で、自然言語テキスト310は、個人が質問を尋ねる又は声明若しくは要求する音声を含んでもよい。追加的に、又は代替的に、自然言語テキスト310は、音声のテキスト表現を含んでよい。例えば、自然言語テキスト310は、「Get statuses/home_timelineの出力は何?」(What is the output of Get statuses/home_timeline?)といった質問を含んでよい。代替的に、又は追加的に、自然言語テキスト310は、「サニーベールの現在の温度を教えて」(Tell me the current temperature in Sunnyvale.)といった要求を含んでもよい。
NLU320は、自然言語テキスト310の異なる要素及び/又はトピックを識別するよう自然言語テキスト310をパースするためにコンテキスト抽出モジュール330を使用してよい。上記の例を続けると、コンテキスト抽出モジュール330は、「サニーベールの現在の温度を教えて」との要求を解析し、「温度」(temperature)との語に基づいて、問い合わせのコンテキストが「天候」であると決定し、問い合わせに関連した地理的場所が「サニーベール」という名の「都市」であると決定してよい。
コンテキスト抽出モジュール330が自然言語テキスト310に関連した要素及びコンテキストを識別した後、対象適用選定モジュール340は、要素及びコンテキストをSPARQLクエリに採用してよい。例えば、コンテキスト抽出モジュール330によって識別された「天候」コンテキストは、SPARQLにおいて「天候トピック」に採用されてよい。同様に、「都市」コンテキストは、「場所トピック」に採用されてよい。NLU320は、このようにして、自然言語テキスト310からSPARQLクエリ350を生成してよい。
グラフパーサ370は、コンピュータデバイスが、結果380を得るために、SPARQLクエリ350及びAPIナレッジグラフ360に関して1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでよい。追加的に、又は代替的に、グラフパーサ370は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し又はその実行を制御するもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の場合に、グラフパーサ370は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示では、グラフパーサ370によって実行されるものとして記載される動作は、グラフパーサ370が対応するシステムに実行するよう指示し得る動作を含んでもよい。
APIナレッジグラフ360は、図1及び2A〜2Cに関して上述されたAPIナレッジグラフであってよい。APIナレッジグラフ360は複数のAPIに関連する複数のノードを含んでよい。グラフパーサ370は、自然言語テキスト310に応答して結果380を識別するようSPARQLクエリ350に基づいてAPIナレッジグラフ360のノードをパースしてよい。例えば、グラフパーサ370は、APIナレッジグラフ360を用いて、関連するAPI並びにAPIの関連機能及び/又はコールを識別してよい。グラフパーサ370は、結果380を生成するようSPARQLクエリ350を用いてAPIのコールを実行してよい。例えば、上記の例を続けると、グラフパーサ370は、都市サニーベールでの温度及び/又は天候を決定するためにAPIコールを実行してよい。グラフパーサ370は、それから、コールを実行した結果を結果380として返してよい。
代替的に、又は追加的に、いくつかの実施形態で、自然言語テキスト310は、APIナレッジグラフ360自体の性質及び/又は構造に関連してもよい。例えば、自然言語テキスト310は、特定の機能がどのような出力を返すか、かつ/あるいは、どのような変数及び/又は用語が2つの異なるAPIの間で対応しているかを尋ねるクエリであってよい。
本開示の適用範囲から逸脱せずに、変更、追加、又は削除がプロセス300に対して行われてよい。例えば、いくつかの実施形態で、プロセス300は、明示的に図示又は記載されていないことがある他の構成要素をいくつでも含んでよい。
図4は、APIナレッジグラフを生成する方法の例のフローチャートである。方法400は、本開示で記載される少なくとも1つの実施形態に従って配置されてよい。方法400は、全体として又は部分的に、いくつかの実施形態で、図1の環境100及び/又は図5のコンピュータシステム502のようなシステム及び/又は環境によって実行されてよい。このような及び他の実施形態で、方法400は、1つ以上のコンピュータ可読媒体に記憶されている命令の実行に基づいて実行されてよい。別個のブロックとして表されているとしても、様々なブロックは、所望の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、あるいは、削除されてもよい。
方法はブロック405から開始してよい。ブロック405で、第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションが取得されてよい。いくつかの実施形態で、第1APIドキュメンテーションは、非構造化又は半構造化された情報であってよい。ブロック410で、第2APIに関連する第2APIドキュメンテーションが取得されてよい。ブロック415で、第1APIドキュメンテーションは、第1の複数のセマンティックトリプルを取り出すようマイニングされてよい。いくつかの実施形態で、第1の複数のセマンティックトリプルの中の各セマンティックトリプルは、主語、述語、及び目的語を含んでよい。ブロック420で、第2APIドキュメンテーションは、第2の複数のセマンティックトリプルを取り出すようマイニングされてよい。ブロック425で、第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットが選択されてよい。いくつかの実施形態で、セマンティックトリプルの第1サブセットは、各々のセマンティックトリプルの各々の述語の第1APIドキュメンテーション及び第2APIドキュメンテーションにおける出現の頻度に基づき、選択されてよい。いくつかの実施形態で、セマンティックトリプルの第1サブセットは、各々のセマンティックトリプルの各々の述語の第1APIドキュメンテーション及び第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、選択されてよい。ブロック430で、第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットが選択されてよい。
ブロック435で、第1APIドキュメンテーション及びセマンティックトリプルの第1サブセットに基づいて、第1オントロジが生成されてよい。第1オントロジは、第1APIに関連する1つ以上の第1コンセプトと、1つ以上の第1コンセプトに関連する1つ以上の第1属性と、1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含んでよい。
ブロック440で、第2APIドキュメンテーション及びセマンティックトリプルの第2サブセットに基づいて、第2オントロジが生成されてよい。第2オントロジは、第2APIに関連する1つ以上の第2コンセプトと、1つ以上の第2コンセプトに関連する1つ以上の第2属性と、1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含んでよい。
ブロック445で、第1オントロジの1つ以上の第1コンセプト及び第2オントロジの1つ以上の第2コンセプトに基づいて、第1オントロジは第2オントロジと相関されてよい。いくつかの実施形態で、第1オントロジは、1つ以上の第1コンセプトと1つ以上の第2コンセプトとの間で類似性を見つけるために教師なし学習プロセスを用いて第2オントロジと相関されてよい。ブロック450で、第1オントロジ、第2オントロジ、及び第1オントロジと第2オントロジと相関させることに基づいて、第1API及び第2APIのナレッジグラフが生成されてよい。
当業者に明らかなように、本明細書で開示されているこの及び他のプロセス、動作、及び方法に関して、実行される機能及び/又は動作は、別の順序で実装されてもよい。更に、説明されている機能及び動作は、単に例として与えられており、機能及び動作のいくつかは、開示されている実施形態の本質から逸脱することなしに、任意であっても、より少ない機能及び動作にまとめられても、あるいは、追加の機能及び動作に拡張されてもよい。いくつかの実施形態で、方法400は、更なるブロック又はより少ないブロックを含んでもよい。
例えば、いくつかの実施形態で、セマンティックトリプルの第1サブセットの中のセマンティックトリプルは、第1オブジェクトとして選択されてよく、セマンティックトリプルの第2サブセットの中のセマンティックトリプルは、第2オブジェクトとして選択されてよい。このような及び他の実施形態で、方法400は、第1APIに関連する第1オープンAPI仕様(OAS)を取得することを含んでよい。第1オントロジは、第1OASに更に基づいてよい。方法400は、第2APIに関連する第2OASを取得することを含んでよい。第2オントロジは、第2OASに更に基づいてよい。方法400は、第1OASを使用して、第1オブジェクトの第1インスタンスを生成することを含んでよい。第1インスタンスは、各々の第1オブジェクトの例であってよい。方法400は、第2OASを使用して、第2オブジェクトの第2インスタンスを生成することを含んでよい。第2インスタンスは、各々の第2オブジェクトの例であってよい。このような及び他の実施形態で、第1API及び第2APIのナレッジグラフを生成することは、第1オントロジ、第2オントロジ、第1インスタンス、第2インスタンス、及び第1オントロジを第2オントロジと相関させることに基づいて、第1API及び第2APIのナレッジグラフを生成することを含んでよい。
代替的に、又は追加的に、いくつかの実施形態で、方法400は、自然言語ユーザクエリをユーザから取得するを含んでよい。方法400は、自然言語理解により自然言語ユーザクエリをセマンティックユーザクエリに変換することを含んでよい。方法400は、セマンティックユーザクエリを用いてナレッジグラフを探索して、自然言語ユーザクエリに対する応答としてAPIコールを識別することを含んでよい。方法400は、ナレッジグラフ及び自然言語ユーザクエリを用いてAPIコールを実行して、自然言語ユーザクエリの結果を供給することを含んでよい。方法400は、結果をユーザへ供給することを含んでよい。
図5は、本開示の少なくとも1つの実施形態に従って、例となるコンピュータシステム502のブロック図を表す。コンピュータシステム502は、APIナレッジグラフを生成することに関連した1つ以上の動作を実装又は指示するよう構成されてよい。コンピュータシステム502は、プロセッサ550、メモリ552、及びデータストレージ554を含んでよい。プロセッサ550、メモリ552、及びデータストレージ554は、通信上結合されてよい。
一般に、プロセッサ550は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な特定目的の又は汎用のコンピュータ、コンピュータエンティティ、又は処理デバイスを含んでよく、任意の適用可能なコンピュータ可読記憶媒体に記憶されている命令を実行するよう構成されてよい。例えば、プロセッサ550は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは、プログラム命令を解釈及び/若しくは実行するよう並びに/又はデータを処理するよう構成される任意の他のデジタル若しくはアナログ回路を含んでよい。図5では単一のプロセッサとして表されているとしても、プロセッサ550は、本開示で記載されている任意の数の動作を個別に又は集合的に実行するか又はその実行を指示するよう構成された任意の数のプロセッサを含んでよい。その上、プロセッサのうちの1つ以上は、異なるサーバなどの1つ以上の異なる電子デバイスに存在してもよい。
いくつかの実施形態で、プロセッサ550は、メモリ552、データストレージ554、又はメモリ552及びデータストレージ554に記憶されているプログラム命令を解釈及び/若しくは実行するよう並びに/又は記憶されているデータを処理するよう構成されてよい。いくつかの実施形態で、プロセッサ550は、データストレージ554からプログラム命令をフェッチし、プログラム命令をメモリ552にロードしてよい。プログラム命令がメモリ552にロードされた後、プロセッサ550はプログラム命令を実行してよい。
例えば、いくつかの実施形態で、図4の方法400は、プログラム命令としてデータストレージ554に含まれてよい。プロセッサ550は、データストレージ554から方法のプログラム命令をフェッチしてよく、方法のプログラム命令をメモリ552にロードしてよい。方法のプログラム命令がメモリ552にロードされた後、プロセッサ550は、コンピュータシステムが、命令によって指示されるように、方法に関連した動作を実装し得るように、プログラム命令を実行してよい。
メモリ552及びデータストレージ554は、コンピュータ実行可能命令又はデータ構造を運ぶか又はそれらが記憶されているコンピュータ可読記憶媒体を含んでよい。かようなコンピュータ可読記憶媒体は、プロセッサ550のような、汎用又は特定目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体も含んでよい。例として、制限なしに、かようなコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能なプログラム可能リードオンリーメモリ(EEPROM)、コンパクトディスク・リードオンリーメモリ(CD−ROM)若しくは他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、あるいは、コンピュータ実行可能命令又はデータ構造の形で特定のプログラムコードを搬送又は記憶するために使用されてよくかつ汎用又は特定目的のコンピュータによってアクセスされてよいあらゆる他の記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体を含んでよい。上記のものの組み合わせも、コンピュータ可読媒体の範囲内に含まれてよい。コンピュータ実行可能命令は、例えば、プロセッサ550に特定の動作又は動作群を実行させるよう構成された命令及びデータを含んでよい。
本開示の適用範囲から逸脱せずに、コンピュータシステム502に対して変更、追加、又は削除が行われてよい。例えば、いくつかの実施形態で、コンピュータシステム502は、明示的に図示又は記載されていないことがある他の構成要素をいくつでも含んでよい。
上述されたように、本開示で記載される実施形態は、以下で更に詳細に論じられるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特定目的又は汎用のコンピュータ(例えば、図5のプロセッサ550)の使用を含んでよい。更に、上述されたように、本開示で記載される実施形態は、コンピュータ実行可能命令又はデータ構造を搬送するか又はそれが記憶されているコンピュータ可読媒体(例えば、図5のメモリ552又はデータストレージ554)を用いて実装されてもよい。
本開示で使用されるように、「モジュール」又は「コンポーネント」との語は、モジュール若しくはコンポーネントの動作を実行するよう構成される特定のハードウェア実装、並びに/又はコンピュータシステムの汎用のハードウェア(例えば、コンピュータ可読媒体、処理デバイス、など)に記憶され及び/若しくはそれによって実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを指し得る。いくつかの実施形態で、本開示で記載される異なるコンポーネント、モジュール、エンジン、及びサービスは、コンピュータシステムで(例えば、別個のスレッドとして)実行するオブジェクト又はプロセスとして実装されてもよい。本開示で記載されるシステム及び方法のいくつかは、(汎用のハードウェアに記憶され及び/又はそれによって実行される)ソフトウェアにおいて実装されるものとして概して記載されているが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせも可能であり考えられている。本明細書中、「コンピュータエンティティ」は、本開示で先に定義されたあらゆるコンピュータシステム、又はコンピュータシステムで実行されるあらゆるモジュール若しくはモジュールの組み合わせであってよい。
本開示で、特に添付の特許請求の範囲(例えば、添付の特許請求の本文)で使用される語は、一般的に、“非限定的な(open)”用語として意図されている(例えば、語「含んでいる(including)」は、“〜を含んでいるが、〜に制限されない”との意に解釈されるべきであり、語「備えている(having)」は、「少なくとも〜を備えている」との意に解釈されるべきであり、語「含む(includes)」は、“〜を含むが、〜に制限されない”との意に解釈されるべきである、など。)。
更に、導入されたクレーム記載(introduced claim recitation)において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しない。例えば、理解を促すために、後続の添付された特許請求の範囲では、「少なくとも1つの(at least one)」及び「1つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって、「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「1つ以上の」又は「少なくとも1つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を1しか含まない例に限定されるということが示唆されると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである。)。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。
更には、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、通常、少なくとも記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載がある場合、この記載は、少なくとも2つの記載事項、又は2つ以上の記載事項を意味する。)。更に、「A、B及びCなどのうち少なくとも1つ」又は「A、B及びCなどのうちの1つ以上」に類する表記が使用される場合、一般的に、そのような構造は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又はAとBとCの全て、などを含むよう意図される。
更に、2つ以上の選択可能な用語を表す如何なる離接語及び/又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの1つ、それらの用語のうちのいずれか、あるいは、それらの用語の両方を含む可能性を意図すると理解されるべきである。例えば、「A又はB」という句は、「A又はB」、あるいは、「A及びB」の可能性を含むことが理解されるべきである。
本開示で挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本開示の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
第2APIに関連する第2APIドキュメンテーションを取得することと、
第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
を有する方法。
(付記2)
前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
当該方法は、
前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
を更に有し、
前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
付記1に記載の方法。
(付記3)
自然言語ユーザクエリをユーザから取得することと、
自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
前記結果を前記ユーザへ供給することと
を更に有する、付記1に記載の方法。
(付記4)
前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
付記1に記載の方法。
(付記5)
前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
付記4に記載の方法。
(付記6)
前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
付記1に記載の方法。
(付記7)
前記第1APIドキュメンテーションは、非構造化又は半構造化情報である、
付記1に記載の方法。
(付記8)
第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
第2APIに関連する第2APIドキュメンテーションを取得することと、
第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
を有する動作を実行するようプロセッサによって実行可能なプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
(付記9)
前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
前記動作は、
前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
を更に有し、
前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
付記8に記載の非一時的なコンピュータ可読媒体。
(付記10)
前記動作は、
自然言語ユーザクエリをユーザから取得することと、
自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
前記結果を前記ユーザへ供給することと
を更に有する、
付記8に記載の非一時的なコンピュータ可読媒体。
(付記11)
前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
付記8に記載の非一時的なコンピュータ可読媒体。
(付記12)
前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
付記11に記載の非一時的なコンピュータ可読媒体。
(付記13)
前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
付記8に記載の非一時的なコンピュータ可読媒体。
(付記14)
前記第1APIドキュメンテーションは、非構造化又は半構造化情報である、
付記8に記載の非一時的なコンピュータ可読媒体。
(付記15)
1つ以上のプロセッサと、命令を記憶するよう構成される1つ以上のコンピュータ可読媒体とを有するシステムであって、
前記命令は、前記1つ以上のプロセッサによって実行されることに応答して、当該システムに、
第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
第2APIに関連する第2APIドキュメンテーションを取得することと、
第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
を有する動作を実行させる、
システム。
(付記16)
前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
前記方法は、
前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
を更に有し、
前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
付記15に記載のシステム。
(付記17)
前記動作は、
自然言語ユーザクエリをユーザから取得することと、
自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
前記結果を前記ユーザへ供給することと
を更に有する、
付記15に記載のシステム。
(付記18)
前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
付記1515に記載のシステム。
(付記19)
前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
付記18に記載のシステム。
(付記20)
前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
付記15に記載のシステム。
100 環境
110 APIドキュメンテーションのコーパス
120 マイニングモジュール
125 オブジェクト
130 OASレポジトリ
140 インスタンス化モジュール
145 インスタンス
150 拡張モジュール
155 拡張されたOASオントロジ
160 機械学習分類器
165,210〜230,360 ナレッジグラフ
310 自然言語テキスト
320 自然言語理解ユニット(NLU)
330 コンテキスト抽出モジュール
340 対象適用選定モジュール
350 SPARQLクエリ
370 グラフパーサ
380 結果
502 コンピュータシステム
550 プロセッサ
552 メモリ
555 データストレージ

Claims (20)

  1. 第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
    第2APIに関連する第2APIドキュメンテーションを取得することと、
    第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
    第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
    前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
    前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
    前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
    前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
    前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
    前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
    を有する方法。
  2. 前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
    当該方法は、
    前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
    前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
    前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
    前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
    を更に有し、
    前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
    請求項1に記載の方法。
  3. 自然言語ユーザクエリをユーザから取得することと、
    自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
    前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
    前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
    前記結果を前記ユーザへ供給することと
    を更に有する、請求項1に記載の方法。
  4. 前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
    前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項1に記載の方法。
  5. 前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項4に記載の方法。
  6. 前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
    請求項1に記載の方法。
  7. 前記第1APIドキュメンテーションは、非構造化又は半構造化情報である、
    請求項1に記載の方法。
  8. 第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
    第2APIに関連する第2APIドキュメンテーションを取得することと、
    第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
    第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
    前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
    前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
    前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
    前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
    前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
    前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
    を有する動作を実行するようプロセッサによって実行可能なプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
  9. 前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
    前記動作は、
    前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
    前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
    前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
    前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
    を更に有し、
    前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
    請求項8に記載の非一時的なコンピュータ可読媒体。
  10. 前記動作は、
    自然言語ユーザクエリをユーザから取得することと、
    自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
    前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
    前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
    前記結果を前記ユーザへ供給することと
    を更に有する、
    請求項8に記載の非一時的なコンピュータ可読媒体。
  11. 前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
    前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項8に記載の非一時的なコンピュータ可読媒体。
  12. 前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項11に記載の非一時的なコンピュータ可読媒体。
  13. 前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
    請求項8に記載の非一時的なコンピュータ可読媒体。
  14. 前記第1APIドキュメンテーションは、非構造化又は半構造化情報である、
    請求項8に記載の非一時的なコンピュータ可読媒体。
  15. 1つ以上のプロセッサと、命令を記憶するよう構成される1つ以上のコンピュータ可読媒体とを有するシステムであって、
    前記命令は、前記1つ以上のプロセッサによって実行されることに応答して、当該システムに、
    第1アプリケーションプログラミングインターフェース(API)に関連する第1APIドキュメンテーションを取得することと、
    第2APIに関連する第2APIドキュメンテーションを取得することと、
    第1の複数のセマンティックトリプルを取り出すよう前記第1APIドキュメンテーションをマイニングすることと、
    第2の複数のセマンティックトリプルを取り出すよう前記第2APIドキュメンテーションをマイニングすることと、
    前記第1の複数のセマンティックトリプルからセマンティックトリプルの第1サブセットを選択することと、
    前記第2の複数のセマンティックトリプルからセマンティックトリプルの第2サブセットを選択することと、
    前記第1APIに関連する1つ以上の第1コンセプトと、該1つ以上の第1コンセプトに関連する1つ以上の第1属性と、前記1つ以上の第1コンセプトの間の1つ以上の第1の分類上の関係とを含む第1オントロジを、前記第1APIドキュメンテーション及び前記セマンティックトリプルの第1サブセットに基づいて生成することと、
    前記第2APIに関連する1つ以上の第2コンセプトと、該1つ以上の第2コンセプトに関連する1つ以上の第2属性と、前記1つ以上の第2コンセプトの間の1つ以上の第2の分類上の関係とを含む第2オントロジを、前記第2APIドキュメンテーション及び前記セマンティックトリプルの第2サブセットに基づいて生成することと、
    前記第1オントロジの前記1つ以上の第1コンセプト及び前記第2オントロジの前記1つ以上の第2コンセプトに基づいて前記第1オントロジを前記第2オントロジと相関させることと、
    前記第1オントロジ、前記第2オントロジ、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて、前記第1API及び前記第2APIのナレッジグラフを生成することと
    を有する動作を実行させる、
    システム。
  16. 前記セマンティックトリプルの第1サブセットの中のセマンティックトリプルは第1オブジェクトとして選択され、前記セマンティックトリプルの第2サブセットの中のセマンティックトリプルは第2オブジェクトとして選択され、
    前記動作は、
    前記第1APIに関連する第1オープンAPI仕様(OAS)を取得し、前記第1オントロジが前記第1OASに更に基づくことと、
    前記第2APIに関連する第2OASを取得し、前記第2オントロジが前記第2OASに更に基づくことと、
    前記第1OASを使用して、前記第1オブジェクトの第1インスタンスを生成し、該第1インスタンスが各々の第1オブジェクトの例であることと、
    前記第2OASを使用して、前記第2オブジェクトの第2インスタンスを生成し、該第2インスタンスが各々の第2オブジェクトの例であることと
    を更に有し、
    前記第1API及び前記第2APIのナレッジグラフを生成することは、前記第1オントロジ、前記第2オントロジ、前記第1インスタンス、前記第2インスタンス、及び前記第1オントロジを前記第2オントロジと相関させることに基づいて前記第1API及び前記第2APIのナレッジグラフを生成することを有する、
    請求項15に記載のシステム。
  17. 前記動作は、
    自然言語ユーザクエリをユーザから取得することと、
    自然言語理解により前記自然言語ユーザクエリをセマンティックユーザクエリに変換することと、
    前記セマンティックユーザクエリを用いて前記ナレッジグラフを探索して、前記自然言語ユーザクエリに対する応答としてAPIコールを識別することと、
    前記ナレッジグラフ及び前記自然言語ユーザクエリを用いて前記APIコールを実行して、前記自然言語ユーザクエリの結果を供給することと、
    前記結果を前記ユーザへ供給することと
    を更に有する、
    請求項15に記載のシステム。
  18. 前記第1の複数のセマンティックトリプルの中の各セマンティックトリプルは主語、述語、及び目的語を含み、
    前記第1の複数のセマンティックトリプルから前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度に基づいて前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項15に記載のシステム。
  19. 前記セマンティックトリプルの第1サブセットを選択することは、各々のセマンティックトリプルの各々の述語の前記第1APIドキュメンテーション及び前記第2APIドキュメンテーションにおける出現の頻度が第1閾値を満足することに応答して、前記セマンティックトリプルの第1サブセットを選択することを有する、
    請求項18に記載のシステム。
  20. 前記第1オントロジを前記第2オントロジと相関させることは、教師なし学習プロセスを用いて、前記1つ以上の第1コンセプトと前記1つ以上の第2コンセプトとの間の類似を見つけることを有する、
    請求項15に記載のシステム。
JP2020143479A 2019-12-31 2020-08-27 Apiナレッジグラフを生成する方法、システム、及び非一時的なコンピュータ可読媒体 Withdrawn JP2021111327A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/732239 2019-12-31
US16/732,239 US10853150B1 (en) 2019-12-31 2019-12-31 Generating application programming interface knowledge graphs

Publications (1)

Publication Number Publication Date
JP2021111327A true JP2021111327A (ja) 2021-08-02

Family

ID=71786759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020143479A Withdrawn JP2021111327A (ja) 2019-12-31 2020-08-27 Apiナレッジグラフを生成する方法、システム、及び非一時的なコンピュータ可読媒体

Country Status (3)

Country Link
US (1) US10853150B1 (ja)
EP (1) EP3846089B1 (ja)
JP (1) JP2021111327A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436244B2 (en) * 2021-01-27 2022-09-06 Sap Se Intelligent data enrichment using knowledge graph
CN112800247B (zh) * 2021-04-09 2021-06-18 华中科技大学 基于知识图谱共享的语义编/解码方法、设备和通信系统
US11990124B2 (en) * 2021-12-22 2024-05-21 Google Llc Language model prediction of API call invocations and verbal responses
CN114860834B (zh) * 2022-06-01 2024-03-26 北京字节跳动网络技术有限公司 一种关联查询请求的处理方法、装置、设备及存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2383684A1 (en) * 2010-04-30 2011-11-02 Fujitsu Limited Method and device for generating an ontology document
EP2631817A1 (en) * 2012-02-23 2013-08-28 Fujitsu Limited Database, apparatus, and method for storing encoded triples
US10042836B1 (en) * 2012-04-30 2018-08-07 Intuit Inc. Semantic knowledge base for tax preparation
US9396046B2 (en) 2013-10-31 2016-07-19 International Business Machines Corporation Graph based data model for API ecosystem insights
US9015730B1 (en) * 2013-12-17 2015-04-21 International Business Machines Corporation Natural language access to application programming interfaces
US9836534B2 (en) * 2014-07-25 2017-12-05 International Business Machines Corporation Using ontology to discover API requirements
US10116725B2 (en) 2016-05-27 2018-10-30 Intuit Inc. Processing data retrieval requests in a graph projection of an application programming interfaces (API)
US10691507B2 (en) * 2016-12-09 2020-06-23 Fujitsu Limited API learning
US10942708B2 (en) * 2017-01-10 2021-03-09 International Business Machines Corporation Generating web API specification from online documentation
EP3635540A4 (en) * 2017-04-25 2021-02-24 Intento, Inc. INTENT-BASED API ORGANIZATION
US20190188317A1 (en) * 2017-12-15 2019-06-20 International Business Machines Corporation Automatic seeding of an application programming interface (api) into a conversational interface
US11042707B2 (en) * 2017-12-22 2021-06-22 Mulesoft, Llc Conversational interface for APIs

Also Published As

Publication number Publication date
EP3846089B1 (en) 2023-02-15
US10853150B1 (en) 2020-12-01
EP3846089A1 (en) 2021-07-07

Similar Documents

Publication Publication Date Title
US10725836B2 (en) Intent-based organisation of APIs
JP2021111327A (ja) Apiナレッジグラフを生成する方法、システム、及び非一時的なコンピュータ可読媒体
JP6922538B2 (ja) Api学習
CN107391677B (zh) 携带实体关系属性的中文通用知识图谱的生成方法及装置
US10354188B2 (en) Extracting facts from unstructured information
Ferrández et al. The QALL-ME Framework: A specifiable-domain multilingual Question Answering architecture
US20170024459A1 (en) Processing speech to text queries by optimizing conversion of speech queries to text
JP2018088242A (ja) データ処理装置、方法およびプログラム
WO2017161749A1 (zh) 一种信息匹配方法及装置
JP2020126641A (ja) Apiマッシュアップ探査及びリコメンデーション
Simov et al. Using context information for knowledge-based word sense disambiguation
KR20230005797A (ko) 질의어를 처리하는 장치, 방법 및 컴퓨터 프로그램
KR101016110B1 (ko) 온톨로지 프로퍼티를 이용한 온톨로지 인스턴스 추출시스템 및 그 방법
Mangairkarasi et al. Semantic based text summarization using universal networking language
US20140280008A1 (en) Axiomatic Approach for Entity Attribution in Unstructured Data
Saquicela et al. Adding semantic annotations into (geospatial) restful services
CN115374764A (zh) 一种基于用户故事的需求模型自动生成方法及系统
CN111831288B (zh) 一种自动生成Thrift IDL数据结构及自动转换函数的方法及系统
CN111475534B (zh) 一种数据查询方法及相关设备
Abebe et al. Supporting concept location through identifier parsing and ontology extraction
Aksoy et al. MATAWS: A multimodal approach for automatic WS semantic annotation
Rak et al. Interoperability and Customisation of Annotation Schemata in Argo.
English An extensible schema for building large weakly-labeled semantic corpora
Steiner et al. Adding meaning to Facebook microposts via a mash-up API and tracking its data provenance
CN117111902B (zh) Ai智能软件开发方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230511

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240126