JP6922538B2 - Api学習 - Google Patents

Api学習 Download PDF

Info

Publication number
JP6922538B2
JP6922538B2 JP2017153959A JP2017153959A JP6922538B2 JP 6922538 B2 JP6922538 B2 JP 6922538B2 JP 2017153959 A JP2017153959 A JP 2017153959A JP 2017153959 A JP2017153959 A JP 2017153959A JP 6922538 B2 JP6922538 B2 JP 6922538B2
Authority
JP
Japan
Prior art keywords
api
document
ontology
token
sentence
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.)
Active
Application number
JP2017153959A
Other languages
English (en)
Other versions
JP2018097846A (ja
Inventor
バーラミ・メフディ
チェン・ウェイ−ペン
卓己 上谷
卓己 上谷
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 JP2018097846A publication Critical patent/JP2018097846A/ja
Application granted granted Critical
Publication of JP6922538B2 publication Critical patent/JP6922538B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Description

本願で説明される実施形態は、API学習システム及び関連する方法に関係がある。
アプリケーションプログラミングインターフェイス(API;Application Programming Interface)は、ソフトウェア・アプリケーションを構築するためのルーチン、プロトコル、及びツールの組である。APIは、如何にしてソフトウェア・コンポーネントが相互作用すべきかを特定し、APIは、グラフィカルユーザインターフェイス(GUI;Graphical User Interface)コンポーネントをプログラムするときに使用される。APIは、通常、ソフトウェア・アプリケーションの関数又はデータを公開し、他のアプリケーションが関数又はデータの実装への関心なしでAPIのリソースを使用することを可能にする。
本願で請求される対象は、上述されたような環境でしか動作しない実施形態又は上述された如何なる欠点も解消する実施形態に制限されない。むしろ、この背景は、本願で記載される実施形態が実施され得る技術分野の一例を説明するためにのみ設けられている。
実施形態の態様に従って、システムは、通信インターフェイス及び該通信インターフェイスへ動作上結合されるプロセッサを含む。前記プロセッサは、インターネット又はイントラネット上で、前記通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールするよう構成される。前記プロセッサは、前記通信インターフェイスを介して、インターネット上で前記1つ以上のソースからAPIドキュメントを収集するよう更に構成される。前記プロセッサはまた、前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化するよう構成される。前記コンテンツは、少なくとも2つのセンテンスを有する少なくとも1つのウェブページを含む。前記プロセッサは、前記少なくとも1つのトークンに基づきAPIオントロジーグラフを生成するよう構成される。前記プロセッサは、前記APIオントロジーグラフに基づき前記APIドキュメントの前記少なくとも2つのセンテンスのうちの夫々のセンテンスについてセマンティックビューを展開するよう更に構成される。前記プロセッサはまた、優先順位を前記APIドキュメントの前記少なくとも2つのセンテンスのうちの夫々のセンテンスと関連付けるよう構成される。前記プロセッサは、夫々のセンテンスの第1優先順位に基づき前記APIドキュメントの前記少なくとも2つのセンテンスから夫々のセンテンスを選択するよう構成される。生成された前記セマンティックビューは、前記プロセッサがデータを取り出し、種々のAPIの機能性、メソッド、パラメータ、特徴を理解するのを可能にする。前記プロセッサは、種々のAPIと相互作用するよう構成される。
実施形態の目的及び利点は、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって少なくとも実現及び達成される。
前述の概要及び以下の詳細な説明はいずれも、説明及び例示であり、請求される発明の制限ではない点が理解されるべきである。
例となる実施形態は、添付の図面の使用を通じて更なる特性及び詳細をもって記載及び説明される。
API学習システムの動作環境の例のブロック図を表す。
API学習システムに関連する方法の例のフロー図を表す。
APIドキュメントのトークン化に関連する方法の例のフロー図を表す。
APIを分類するよう初期オントロジーを生成することに関連する方法の例のフロー図を表す。
例となる初期オントロジー構造を表す。
オントロジーグラフの生成に関連する方法の例のフロー図を表す。
初期オントロジーのセマンティックビュー及び初期オントロジーに基づく選択されたドキュメントのタグ付けプロセスを表す。
APIドキュメントのセマンティックビューのタグの夫々についての有限CFGの確率(PLCFG)のための順位付けの例を表す。
RESTオントロジーのオントロジーグラフの例を表す。
API学習システムを使用することに関連する方法の例のフロー図を表す。
ジェネリックAPI特徴とネイティブAPI特徴との間のマッピンググラフの例を表す。
ネイティブAPI関数を実行するためにジェネリックAPI関数を使用することに関連する方法の例のフロー図を表す。
API学習システムにおけるインターフェイスに関連する方法の例のフロー図を表す。
本願で記載される少なくとも1つの実施形態に従って全て配置される、本願で説明される方法のうちのいずれか1つ以上をマシンに実施させる命令の組が実行され得るコンピューティングデバイスの形を例としてマシンの図解表現を表す。
いくつかのタイプのAPIが存在する。ウェブAPIは、例えば、インターネット又はイントラネットにおいてウェブサービスを通じてその関数及びデータを公開し得る。デバイスAPIは、デバイスハードウェアモジュールの機能性を全てのデバイス及び/又はソフトウェアへ公開し得る。アプリケーションAPIは、例えばオペレーティングシステムを通じて、ソフトウェア・アプリケーションの関数又はデータベースへのアクセスを提供し得る。通常、APIは、APIから又はそれを通じて提供されるサービス、関数又はデータに基づき、新しいシステムを実装するときに、開発者にとって有用であり得る。従来のAPIは、サービスを提供する“ブラック・ボックス”としてしばしば働き、一方、開発者は、通常は、実装の詳細を識別するためにブラック・ボックス内を見ることができない。いくつかのAPIは、システムの複雑性を取り去り、いくつかのAPIは、一部の詳細を開発者から隠して、実装の柔軟性を低下させることがある。
夫々のAPIは、通常、異なる属性を伴った異なるタイプのデータを有している異なるプロトコルを通じてそれ自身のサービス及び/又はデータを公開する。この従来アプローチは、開発者が様々なAPIとともに働いているときに異種問題を引き起こし得る。更には、ほとんどのAPIは、形式的定義を有しておらず、それらの大部分は、HTMLファイルとして記述されている人間が読める記述である。結果として、ソフトウェア開発者は、通常は、API関数にアクセスしてそれと相互作用するために、APIドキュメントを読んで学習する。API機能性及びそれらのドキュメンテーションは、周期的に更新され得る。その後に、開発者は、新しいAPIドキュメンテーションを読み学習し、次いで、新しいAPI機能性に基づき彼/彼女自身のアプリケーションを修正する必要がある。ソフトウェア開発を更に複雑にするよう、夫々のAPIは、異なったプログラミング言語を通じてアクセス可能であり得る。
本開示の態様は、ジェネリックAPIを提供することによってAPI及び関連するシステムのそれら及び他の欠点に対処する。ジェネリックAPIによって提供される統一されたAPI言語は、ソフトウェア開発者及びエンドユーザが1つのインターフェイス及び/又は言語により異なったAPIと相互作用するのを助けることができる。ジェネリックAPIを使用すれば、開発者及び/又はエンドユーザは、個々の要素を統一されたジェネリックAPIへマッピングする統一インターフェイスを通じて、異なったAPIと相互作用し得る。加えて、ジェネリックAPIは、プロセッサを通じて新しいドキュメンテーションを学習する。ドキュメンテーションは、異なるAPIへの最新のアクセスを維持するために周期的に更新され得る。
ジェネリックAPIは、対象の人間の言語(例えば、英語、日本語、ドイツ語、など)からAPIドキュメンテーションを収集することを通じて、異種APIを、それらの機能性、パラメータ、演算及びアクセシビリティに基づきインテリジェントに認識し得る。第2に、ジェネリックAPIは、サービスのタイプ、プロトコル、アクセシビリティ・メソッド、セキュリティ・メソッド、機能性、パラメータ、属性、及びその基本動作並びに出力フォーマットを含むAPIの特徴を認識するようAPIのドキュメントを読み出す。異なるAPIのための所与の命令の夫々は、ジェネリックAPI特徴へマッピングされる。プログラマ又はエンドユーザは、その場合に、ジェネリックAPIに基づき複数の異種APIへのアクセスを有し得る。ジェネリックAPIは、プログラムが異なる対象APIと相互作用するよう統一コードを使用することを可能にする統合開発環境(IDE;Integrated Development Environment)を提供し、そして、ジェネリックAPIは、対象のネイティブAPIコードを提供することができる。
本願で記載されるいくつかの実施形態は、複数のプロトコル上で通信するデバイスの統合を可能にする。加えて、デバイス構成に統合されると、デバイスは、必ずしも中央システムを通らずに、ピア・ツー・ピアで通信し得る。
図1は、本願で記載される少なくとも1つの実施形態に従って配置される、API学習システムの例となる動作環境100のブロック図を表す。図1で表されるように、動作環境100は、デバイス110、1つ以上のAPIドキュメントソース115、ネットワーク124、及びデータストレージ128を含んでよい。
デバイス110は、プロセッサ、メモリ、及び通信機能を含むコンピュータベースのハードウェアデバイスを含んでよい。デバイス110は、動作環境100の他のコンポーネントのいずれかとデータをやり取りするようネットワーク124へ結合されてよい。デバイス110のいくつかの例は、携帯電話機、スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、セットトップボックス、仮想現実デバイス、又は接続型デバイス、などを含んでよい。デバイス110は、プロセッサベースのコンピューティングデバイスを含んでよい。例えば、デバイス110は、ハードウェアサーバ、又はサーバとして機能するよう構成された他のプロセッサベースのコンピューティングデバイスを含んでよい。デバイス110は、メモリ及びネットワーク通信機能を含んでよい。
1つ以上のAPIドキュメントソース115は、APIドキュメンテーションのための如何なるコンピュータベースのソースも含んでよい。例えば、APIドキュメントソース115は、サーバ、クライアント・コンピュータ、リポジトリ、などを含んでよい。1つ以上のAPIドキュメントソース115は、如何なる電子フォーマットでもAPIドキュメントを保持してよい。更には、APIドキュメントは、機械が読めるもの及び/又は人間が読めるものであってよい。APIドキュメントは如何なる言語であってもよい。例えば、APIドキュメントは、如何なる対象の人間の言語(例えば、英語、日本語、ドイツ語)であってもよい。少なくとも1つの実施形態において、1つ以上のAPIドキュメントソース115は、ネットワーク124(例えば、ワールド・ワイド・ウェブ)を介して互いと通信して1つの電子デバイスによって他の電子デバイスへ提供されるAPI情報サービスを含んでよい。
ネットワーク124は、動作環境100のコンポーネント(例えば、110、115及び128)のいずれかの間の信号のやり取りのために構成された如何なる通信ネットワークも含んでよい。ネットワーク124は有線又は無線であってよい。ネットワーク124は、星形構成、トークンリング構成、又は他の適切な構成を含む多数の構成を有してよい。更には、ネットワーク124は、ローカルエリアネットワーク(LAN;Local Area Network)、ワイドエリアネットワーク(WAN;Wide Area Network)(例えば、インターネット)、及び/又は他の相互接続されたデータ経路を含んでよく、それらにわたって、複数のデバイスは通信し得る。いくつかの実施形態において、ネットワーク124はピア・ツー・ピアネットワークを含んでよい。ネットワーク124はまた、多種多様な通信プロトコルにおけるデータの通信を可能にし得る電気通信ネットワークへ結合されるか、あるいは、その部分を含んでよい。
いくつかの実施形態において、ネットワーク124は、Bluetooth(登録商標)通信ネットワーク、Z−Wave(登録商標)通信ネットワーク、Insteon(登録商標)通信ネットワーク、EnOcean(登録商標)通信ネットワーク、ワイヤレス・フィデリティ(Wi−Fi)通信ネットワーク、ZigBee通信ネットワーク、HomePlug通信ネットワーク、電力回線通信(PLC;Power-line Communication)通信ネットワーク、メッセージ・キュー・テレメトリ・トランスポート(MQTT;Message Queue Telemetry Transport)通信ネットワーク、MQTTセンサ(MQTT−S)通信ネットワーク、制約付きアプリケーションプロトコル(CoAP;Constrained Application Protocol)通信ネットワーク、表現可能状態転送アプリケーションプロトコルインターフェイス(RESTAPI;Representative State Transfer Application Protocol Interface)通信ネットワーク、拡張可能メッセージング及びプレゼンスプロトコル(XMPP;eXtensible Messaging and Presence Protocol)通信ネットワーク、セルラー通信ネットワーク、何らかの同様の通信ネットワーク、又はデータを送信及び受信するためのそれらのあらゆる組み合わせを含むか、あるいは、それらを含むよう構成される。ネットワーク124においてやり取りされるデータは、ショート・メッセージング・サービス(SMS;Short Messaging Service)、マルチメディア。メッセージング・サービス(MMS;Multimedia Messaging Service)、ハイパーテキスト転送プロトコル(HTTP;HyperText Transfer Protocol)、直接データ接続、無線アプリケーションプロトコル(WAP;Wireless Application Protocol)、電子メール、スマート・エネルギ・プロファイル(SEP;Smart Energy Profile)、ECHONET Lite、OpenADR、又はデバイス、クラウドサーバ通信、若しくはゲートウェイにより実施され得る何らかの他のプロトコルを介してやり取りされるデータを含んでよい。
データストレージ128は、如何なるメモリ又はデータストレージも含んでよい。データストレージ128は、動作環境100における他のコンポーネントがデータストレージ128と通信し得るようにネットワーク通信機能を含んでよい。いくつかの実施形態において、データストレージ128は、コンピュータ実行可能命令又はデータ構造を運ぶか、又はそれらが記憶されるためのコンピュータ可読記憶媒体を含んでよい。コンピュータ可読記憶媒体は、例えばプロセッサのような、汎用又は特別目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体も含んでよい。例えば、データストレージ128は、ランダム・アクセス・メモリ(RAM;Random Access Memory)、リードオンリー・メモリ(ROM;Read-Only Memory)、電気的消去可能なプログラム可能リードオンリー・メモリ(EEPROM;Electrically Erasable Programmable Read-Only Memory)、コンパクトディスク・リードオンリー・メモリ(CD−ROM;Compact Disc Read-Only Memory)若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、フラッシュメモリデバイス(例えば、固体状態メモリデバイス)、あるいは、コンピュータ実行可能命令又はデータ構造の形で所望のプログラムコードを搬送又は記憶するために使用され得且つ汎用又は特別目的のコンピュータによってアクセスされ得る何らかの他の記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体であってよいコンピュータ可読記憶媒体を含んでよい。上記の記憶媒体の組み合わせが、データストレージ128において含まれてよい。
データストレージ128は、様々なデータを記憶してよい。データは、例えば関係データベース構造のような如何なるデータ構造においても記憶されてよい。例えば、データストレージ128は、少なくとも1つのオントロジーグラフ145、APIドキュメントの処理された組150、抽出された特徴の組155、マッピンググラフ160、等を含んでよい。
デバイス110は、ジェネリックAPI生成器126を含んでよい。いくつかの実施形態において、ジェネリックAPI生成器126は、ホストから直接に又はインターネットからのアプリケーションストアからダウンロードされ得るスタンドアローンのアプリケーション(“app”)を含んでよい。ジェネリックAPI生成器126は、本開示で記載されるように、API学習システムに及びジェネリックAPIの生成に関連した様々な動作を実施してよい。
動作において、ジェネリックAPI生成器126は、1つ以上のAPIドキュメントソース115からAPIドキュメントを読み出してよく、そして、APIドキュメントから特徴を抽出してよい。ジェネリックAPI生成器126は、APIのドキュメントのオントロジーに基づきAPIドキュメントのセマンティックモデル(例えば、図7のセマンティックビュー700)を生成してよい。ジェネリックAPI生成器126は、APIの特徴を抽出するようオントロジー(例えば、図9のオントロジー900)のグラフを生成してよい。次いで、ジェネリックAPI生成器126は、APIの特徴を抽出するためにセマンティックモデル(例えば、図8のセマンティックモデル800)を使用してよい。
ジェネリックAPI生成器126は、構造化されていないドキュメント(例えば、人間が読めるもの)及び/又は異種APIに基づき異なるAPIの機能性を理解するために、且つ、APIの夫々の抽出された特徴(例えば、ネイティブ特徴)をジェネリックAPI特徴へマッピングすることによってジェネリック関数の組及びアクセシビリティを異なるAPIへ提供するために、機械学習法を使用してよい。
ジェネリックAPI生成器126は、ブランド、デバイスのタイプ、サポートされているネットワークプロトコル及び利用可能なアクションに基づきAPIの分類を提供してよい。ジェネリックAPI生成器126は、API特徴(例えば、入力のタイプ、出力のタイプ、APIエンドポイント、アクセスキー、認証(authentication))を抽出してよい。ジェネリックAPI生成器126は、複数のAPI(マッシュアップ(mashup)API)の統合に基づくリコメンデーションシステムを含んでよく、そして、異なるAPIの新しい使用ケースを見つけてよい。ジェネリックAPI生成器126は、ソフトウェア開発者/エンドユーザが異種APIへ接続するためにジェネリックAPIインターフェイス(IDE、GUI)を使用している(ジェネリックAPI関数が異種ネイティブAPI関数へマッピングしている。)ときに、彼らのために使いやすさを提供してよい。
変更、追加、又は削除は、本開示の適用範囲から逸脱することなしに、動作環境100に対して行われてよい。例えば、動作環境100は、記載されているデバイス及びサービスをいくつでも含んでよい。更には、本願で記載されている実施形態における様々なコンポーネント及びサーバの分離は、そのような分離が全ての実施形態で起こることを示すよう意図されない。更には、記載されているコンポーネント及びサーバは、一般に、単一のコンポーネント又はサーバにまとめられるか、あるいは、複数のコンポーネント又はサーバに分けられてよいことが、本開示をもって理解され得る。
図2〜4、6、10及び12〜13は、API学習システムに関連した方法の例のフロー図を表す。方法は、ハードウェア(回路、専用のロジック、など)、ソフトウェア(例えば、汎用のコンピュータシステム若しくは専用の機械で実行されるもの)、又は両者の組み合わせを含んでよいプロセッシングロジックによって実施されてよい。プロセッシングロジックは、図1のジェネリックAPI生成器126、又は他のコンピュータシステム若しくはデバイスに含まれてよい。しかし、他のシステム又はシステムの組み合わせが、方法を実施するために使用されてよい。説明の簡単のために、本願で説明される方法は、動作の連続として図示及び記載される。しかし、本開示に従う動作は、様々な順序で及び/又は同時に、そして、本願で図示及び記載されていない他の動作とともに、起こってよい。更には、全ての表されている動作が、開示されている対象に従って方法を実施するために使用されなくてもよい。その上、当業者は、方法が代替的に状態図による相互関係のある状態又は事象の連続として表されてよいことを理解及び認識するだろう。加えて、本明細書で開示されている方法は、そのような方法をコンピューティングデバイスへ輸送及び転送することを容易にするよう、例えば非一時的なコンピュータ可読媒体のような製品において記憶されることが可能である。本願で使用される語「製品」は、如何なるコンピュータ可読デバイス又は記憶媒体からもアクセス可能なコンピュータプログラムを含むよう意図される。別個のブロックとして表されているが、様々なブロックは、所望の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、あるいは、削除されてもよい。
図2は、API学習システムに関連した、例となる方法200のフロー図を表す。方法200はブロック205から開始してよい。ブロック205で、プロセッシングロジックは、APIドキュメンテーションのための1つ以上のソースをクロールしてよい。例えば、プロセッシングロジックは、APIドキュメンテーションについて図1の1つ以上のAPIドキュメンテーションソース115をクロールしてよい。プロセッシングロジックは、APIドキュメンテーションを識別するためのリクエストに応答して、1つ以上のソースをクロールしてよい。例えば、ソフトウェア開発者又はエンドユーザは、API又はAPIを使用した特定の機能を使用するためのリクエストを電子的に提示してよい。
ブロック210で、プロセッシングロジックは、1つ以上のソースからAPIドキュメントをいくつでも収集してよい。APIドキュメントは、対象の人間の言語にあってよい。APIドキュメントは、1つ以上のセンテンスを含んでよい。
ブロック215で、プロセッシングロジックは、APIドキュメントをトークン化してよい。トークン化は、テキストのストリーム(例えば、センテンス)を語(words)、語句(phrases)、符号(symbols)、又はトークンと呼ばれる他の有意味な要素に分けることを指してよい。トークンのリストは、例えばパーシング(parsing)又はテキストマイニング(text mining)のような更なる処理のための入力になり得る。少なくとも1つの実施形態において、プロセッシングロジックは、図3の方法に従ってAPIドキュメントをトークン化してよい。
ブロック220で、プロセッシングロジックは、初期APIオントロジーを生成してよい。オントロジーは、例えばリソース記述フレームワーク(RDF;Resource Description Framework)フォーマットのような如何なるフォーマットにも基づき定義されてよい。一例としてRDFを使用すると、RDFは、例えば、ワールド・ワイド・ウェブ・コンソーシアム(W3C;World Wide Web Consortium)のRDFデータアクセス作業グループ(DAWG;Data Access Working Group)によって示されているSPARQLクエリ処理法のような、種々の方法によってパースされ得る。初期オントロジーは、図4に関連して図示され、更に説明されるように、そのアプリケーション、特性、記述、メソッド及びクラスに基づきAPIを分類してよい。APIドメインのための利用可能なオントロジーを有さない実施形態では、初期オントロジーは、図5に関連して図示され、更に説明されるように、APIオントロジーのルート構造を定義してよい。プロセッシングロジックは、OSベースのAPI、ウェブベースのAPI及びデバイスベースのAPIを含む様々なオントロジーに基づき、初期オントロジーを定義してよい。初期APIオントロジーを定義又は精緻化するよう、プロセッシングロジックは、多数のAPIドキュメンテーションのコーパス(corpus)を収集してよい。APIドキュメンテーションのコーパスは、新しいエンティティを加えること、初期オントロジー内のオブジェクト間の新しい関係を見つけること、又はエンティティ間の新しい関係を見つけること、などによって、初期オントロジーが拡張されることを可能にし得る。APIオントロジーを生成することはまた、APIオントロジーグラフを生成することを含んでよく、その方法は、図6に関連して図示され、更に説明される。例となるオントロジーグラフは、図9に関連して図示され、更に説明される。
ブロック225で、プロセッシングロジックは、APIドキュメント内の各センテンスについてセマンティックビューを展開してよい。例となるセマンティックビューは、図7に関連して図示され、更に説明される。プロセッシングロジックはまた、例えば、オントロジーへの新しいエンティティの追加又は初期オントロジーの拡張に応答して、セマンティックビュープロセスを更新してよい。
ブロック230で、プロセッシングロジックは、センテンスを夫々の優先順位に基づきソートしてよい。各センテンスは、例えば、夫々の優先順位を有してよい。プロセッシングロジックは、夫々の優先順位を決定してよく、あるいは、夫々の優先順位は、予め決定されてよい。夫々の優先順位は、収集されたコーパス、そして、APIドキュメンテーション内の出現する異なるセンテンスの統計値を提供するコーパスの機械学習ベースのモデルに基づき、生成されてよい。モデル内の最上位は、コーパス内のセンテンスの出現する異なるタイプの確率を示してよい。
ブロック235で、プロセッシングロジックは、最も高い優先順位のセンテンスを選択する。少なくとも1つの実施形態において、プロセッシングロジックは、最も高い優先順位を有している1つ以上のセンテンスを選択してよい。閾パラメータは、API学習が、更なる処理のために、種々の個数の最も高い優先順位を選択することを可能にしてよい。
ブロック240で、プロセッシングロジックは、選択されたセンテンスに基づきAPIドキュメントのセマンティックビューを生成してよい。ブロック245で、プロセッシングロジックは、APIドキュメントに関連した新しいオブジェクトを識別してよく、その新しいオブジェクトの更なる処理のためにブロック225へ進んでよい。
当業者は、本願で開示されているこの及び他のプロシージャ及び方法について、プロセス及び方法において行われる機能が別の順序で実施されてよいことを認識するだろう。更には、説明されているステップ及び動作は、単に例として与えられており、ステップ及び動作の一部は、開示されている実施形態から逸脱することなしに、任意であっても、より少ないステップ及び動作にまとめられても、あるいは、更なるステップへと拡張されてもよい。
図3は、APIドキュメントのトークン化に関連して、例となる方法300のフロー図を表す。APIドキュメントは1つ以上のページを含んでよい。方法300は、ブロック305から開始してよい。ブロック305で、プロセッシングロジックは、APIドキュメントの各ページをトークン化してよい。例えば、プロセッシングロジックは、ページのセンテンスをトークンへとトークン化してよい。トークンは、単一の語句又は複数の語句を含んでよい。
ブロック310で、プロセッシングロジックは、夫々のトークン化されたページの言語を検出してよい。言語は、人間が読める言語を含んでよい。
ブロック315で、プロセッシングロジックは、検出された言語が対象の言語であるかどうかを判定してよい。対象の言語は、所定の言語又は言語の組であってよく、あるいは、システム管理者によって指定されてよい。検出された言語が対象の言語でない(ブロック315での“いいえ”)場合に、プロセッシングロジックは、ブロック320で、ページを処理することを中止してよい。
検出された言語が対象の言語である(ブロック315での“はい”)場合に、プロセッシングロジックは、ブロック325で、トークン化されたページのうちの1つ以上から要素を除いてよい。それらの要素は、更なる処理のために重要でない語又は語句を含んでよい。そのような要素の例は、語“the”であってよい。ブロック330で、プロセッシングロジックは、1つ以上のトークン化されたページ内の夫々の語をトークン化してよい。ブロック335で、プロセッシングロジックは、APIドキュメントダイジェストを生成してよい。APIドキュメントダイジェストは、トークン化された語のうちの1つ以上を含んでよい。APIドキュメントダイジェストは、図4に関連して更に説明される更なる処理のために精緻化され用意されるAPIの白紙ページ(clean pages)の組を含んでよい。
図4は、APIを分類するよう初期オントロジーを生成することに関連した、例となる方法400のフロー図を表す。方法400は、ブロック405から開始してよい。ブロック405で、プロセッシングロジックは、APIドキュメント内のAPIコンテンツを読み出してよい。APIコンテンツを読み出すことは、APIドキュメント内のテキストをパース及び/又はスキャンすることを含んでよい。
ブロック410で、プロセッシングロジックは、APIドキュメントから1つ以上のセンテンスを抽出してよい。ブロック415で、プロセッシングロジックは、1つ以上の抽出されたセンテンスをトークン化してよい。これは、各センテンスを2つ以上のトークンに分けることを含んでよい。トークンは、それらがセンテンス内に現れた順序を表す順序通りであってよい。プロセッシングロジックは、センテンスの外にある如何なる更なるコンテンツも除外又は削除してよい。
ブロック420で、プロセッシングロジックは、トークン化された抽出されたセンテンスをパースしてよい。初期オントロジーは、RESTオントロジーを定義し得るオントロジーのルート構造を含んでよい。例えば、それはプロトコルタイプを含んでよく、REST APIドキュメンテーションは更なる定義をプロトコルタイプに加える。夫々のパースされたトークンは、1つ以上の要素を含んでよい。例えば、夫々のパースされたトークンは、RDFリソースの記録として記憶され得る3つの要素を生成するために使用され得る。少なくとも1つの実施形態において、要素Fi(i番目の抽出されたAPI特徴)は、RDFリソースの記録として3つの要素を使用することによって、エントリとしてオントロジーに加えられてよい。少なくとも1つの実施形態において、オントロジーは、RDFリソースとして定義されてよい。少なくとも1つの実施形態において、プロセッシングロジックは、1つ以上の抽出ルールに基づきAPI及び/又はトークン化された抽出されたセンテンスをパースしてよい。抽出されたデータは、RDFリソースとして記憶されてよい。
ブロック425で、プロセッシングロジックは、1つ以上のセンテンスから1つ以上の要素を抽出してよい。例えば、プロセッシングロジックは、各センテンスから3つの要素(例えば、主体、関係、対象)を抽出するために抽出ルールを使用してよい。プロセッシングロジックは、RDFリソースにおいて記録として記憶され得る1つ又は複数のトリプル(triples)を生成してよい。
ブロック430で、プロセッシングロジックは、抽出された要素に基づきファイルを生成してよい。例えば、プロセッシングロジックは、図5に関連して更に説明されるように、“オブジェクト記述(Object Description)”に加えられ得る抽出されたトリプルに基づき、RDFファイルを生成してよい。
図5は、初期オントロジー構造500の例を表す。初期オントロジー構造500は、ジェネリックAPI502を含んでよく、様々なタイプ(Type)504、メソッド(Method)506、及びクラス(Class)508を有してよい。タイプ504は、いくつかあるタイプの中でも、ウェブベースAPI510、OSベースAPI512、及びデバイスAPI514を含んでよい。ウェブベースAPI510は、名称(Name)516及びオブジェクト(Object)記述518を含んでよい。OSベースAPI512は、OS512及びオブジェクト記述522を含んでよい。デバイスAPI514は、タイプ524及びオブジェクト記述526を含んでよい。
メソッド506は、とりわけ、名称528、メソッドの1つ以上のパラメータ530、メソッドのデータ出力532、データタイプ534、及びコンテンツ536を含んでよい。クラス508は、名称538及びオブジェクト記述540を含んでよい。
図6は、オントロジーグラフの生成に関連した、例となる方法600のフロー図を表す。生成されるオントロジーグラフは、図9に関連して更に説明されるオントロジーグラフ900であってよい。オントロジーグラフは、初期オントロジー615及び/又は1つ以上のトークン605に基づいてよい。方法600は、ブロック610から開始してよい。ブロック610で、プロセッシングロジックは、トークン605のためのオントロジーを照合してよい。トークン605のためのオントロジーを照合するよう、プロセッシングロジックは、トークン605のための1つ以上のオントロジー(例えば、初期オントロジー615)にクエリしてよい。
ブロック620で、プロセッシングロジックは、トークン605が初期オントロジー615からの要素と適合するかどうかを判定してよい。トークン605が初期オントロジー615からの要素と適合する(ブロック620での“はい”)場合に、プロセッシングロジックは、ブロック625で、初期オントロジー615内の要素に基づきトークン605にラベルを付けてよい。ブロック630で、プロセッシングロジックは、照合するよう試みるべき更なるトークンが存在するかどうかを判定してよい。照合するよう試みるべき更なるトークンが存在する(ブロック630での“いいえ”)場合に、プロセッシングロジックは、ブロック635で、次のトークンを読み出してよい。
トークン605が初期オントロジー615からの要素と適合しない(ブロック620での“いいえ”)場合に、プロセッシングロジックはトークン605を発見してよい。トークンがブロック620での目下の照合プロセスによって拒絶される場合には、プロセッシングロジックは、更なる処理のための様々な選択肢を有してよい。例えば、2つの選択肢が存在し得る。第1に、新しいトークンは、新しい定義を初期オントロジー615に加えてよい。この場合に、ブロック620で、プロセッシングロジックは、ブロック640からの新たに発見された要素により初期オントロジーを変更してよく、そして、ブロック610で再処理されてよい。第2の可能性は、ブロック640のトークンの発見が初期オントロジー615に対する如何なる変更要件も含まないとの決定を含んでよい。この場合に、トークンは、ブロック650で断念されてよい。
ブロック645で、プロセッシングロジックは、トークン605が初期オントロジー615からの要素と適合するかどうかを判定してよい。トークン605が初期オントロジー615からの要素と適合する(ブロック645での“はい”)場合に、プロセッシングロジックは、トークン605を初期オントロジー615に加えてよい。トークン605が初期オントロジー615からの要素と適合しない(ブロック645での“いいえ”)場合に、プロセッシングロジックは、初期オントロジー615の如何なる変更もない場合には、トークン605を断念し且つ/あるいはトークン605の処理を中止してよい。
図7は、初期オントロジーのセマンティックビュー700及び初期オントロジーに基づく選択されたドキュメントのタグ付けプロセスを表す。選択されたドキュメントは、対象の人間の言語におけるドキュメント(例えば、英語におけるドキュメント)を含んでよい。
少なくとも1つの実施形態において、セマンティックビュー700は、有限な文脈自由文法(LCFG;Limited Context-Free Grammar)においてフォーマットされてよい。例えば、文脈自由文法(CFG)は、APIオントロジーに基づきAPIドキュメントについて制限されてよい。
少なくとも1つの実施形態において、APIドキュメントは、4タプルCFGとして定義され得るLCFGに基づいてよい。4タプルは、<N,Σ,R,S>を含んでよい。このとき、Nは、APIオントロジーの非終端を表す非終端の組であり、Σは、APIオントロジーの終端を表す終端の組であり、Rは、R⊆{A→β|A∈N且つβ∈(N∪Σ)}としてルールの組であり、APIドキュメントのセマンティックビューはルール(R)を定義し、Sは、開始シンボル(センテンス)である。
APIドキュメントの各ページは、各センテンスについて複数のタグを生成するために使用されてよい。1つのセンテンス(センテンス705)が、説明を容易にするために表されている。センテンスはいくつであっても考えられる。
表されているように、“hue”は、Name::Object710のためのタグであってよい。“resource web address”は、Resource::Object715のためのタグであってよい。http://<bridge IP address>/apiは、IP::Resource720のためのタグであってよい。“RESTful”は、Type::Feature730のためのタグであってよい。“talks”は、Method735のためのタグであってよい。“bridge interface”は、Type::Object740のためのタグであってよい。全ての処理されたドキュメントの集合は、図8に関連して説明されるように、異なるタグの順序を生成するために使用されてよい。
APIを使用して光源を制御する例において、色合い(hue)により制御され得る多数の特性がある。それらの特性の全ては、光源の/stateリソースと関連付けられてよい。例えば、“オン又はオフ”は、光源及び色合いの“/state”リソースであってよい。このリソースを真(true)に設定することは、光源をその最後の設定にオンしてよい。このリソースを偽(false)に設定することは、光源をオフしてよい。
他の例において、“/state”リソース“bri”は、光源の輝度をその最低輝度(例えば、0)からその最大輝度(例えば、254)まで示してよい。少なくとも1つの実施形態において、最低輝度は“オフ”でなくてよく、光源は、実際には、0に設定されるときに1を返し、255に設定されるときに254を返し得る。“bri”リソースは、特定の値に設定されてよい。例えば、次のコマンドは、光源をそれらの最大輝度の42/254に設定してよい。
Figure 0006922538
図8は、APIドキュメントのセマンティックビューのタグの夫々についてのLCFGの確率(PLCFG;Probability of LCFG)のための、例となる順位付け800を表す。PLCFGは、異なるLCFGパーサ(parsers)(例えば、確率的CKY法を使用する。)の確率を計算し、次いで、タグの順序の最上位を選択する(例えば、上位25%が選択され得る。)ことによって、抽出され得る。表されるように、グループ805は、85%のPLCFGを含んでよく、グループ810は、71%のPLCFGを含んでよく、グループ815は、25%のPLCFGを含んでよく、グループ820は、15%のPLCFGを含んでよく、グループ825は、10%のPLCFGを含んでよく、グループ830は、5%のPLCFGを含んでよい。よって、上位25%が選択されるべき場合には、グループ805、810及び815が選択され得る。
図9は、RESTオントロジー900のオントロジーグラフの例を表す。RESTオントロジー900は、1つ以上のサブクラス905を有するスーパークラスであってよい。表されるように、スーパークラスは、セグメント905a、セグメント905b及びセグメント905cを含んでよい。各サブクラスは、1つ以上の特性を含んでよい。表されるように、サブクラスセグメント905aは、特性としてType::Object910と、Method915と、Type::Feature920と、Name930を伴ったObject925とを含んでよい。サブクラスセグメント905bは、特性としてObject925(サブクラスセグメント905aと共有され得る。)と、Resource::Object935と、IP::Resource940とを含んでよい。サブクラスセグメント905cは、特性としてObject925(サブクラスセグメント905aと共有され得る。)と、Resource::Object945とを含んでよい。
図10は、API学習システムを使用することに関連した、例となる方法1000のフロー図を表す。方法1000は、ブロック1005から開始してよい。ブロック1005で、プロセッシングロジックはインターフェイス(例えば、IDE及び/又はGUI)を提供してよい。ブロック1010で、プロセッシングロジックは、APIのセマンティックビューを提供してよい。少なくとも1つの実施形態において、プロセッシングロジックは、図7に関連して説明されたセマンティックビューと同様のセマンティックビューを提供してよい。プロセッシングロジックは、セマンティックビューから特徴を抽出してよい。プロセッシングロジックはジェネリックAPIを生成してよく、ジェネリックAPIはネイティブAPIコードへマッピングされる。プロセッシングロジックは、ジェネリック関数を実行するためのリクエストを受け取ってよい。
ブロック1005で、プロセッシングロジックは、ジェネリックAPIをネイティブAPIへマッピングしてよい。例えば、プロセッシングロジックは、ジェネリックAPI関数からネイティブAPIの関連する関数へ特徴をマッピングしてよい。プロセッシングロジックは、ジェネリックコードからAPIのネイティブコードへリクエストをマッピングしてよい。ブロック1020で、プロセッシングロジックはネイティブAPIコードを実行してよい。ブロック1025で、プロセッシングロジックは、インターフェイスを介してレスポンスを提供してよい。例えば、レスポンスは、光源の色合いが低減されているとのメッセージを含んでよい。
図11は、ジェネリックAPI特徴とネイティブAPI特徴との間の例となるマッピンググラフ1100を表す。マッピンググラフ1100は、ジェネリックコードを異種ネイティブAPIコードへマッピングするために使用されてよい。マッピンググラフ1100は、オントロジーグラフの少なくとも一部を含んでよい。表されるように、マッピンググラフ1100は、図9のRESTオントロジーグラフ900の少なくとも一部を含み、セグメント905a、905b及び905cを含む。
マッピンググラフ1100は、ジェネリック関数1105の様々なクラスに基づくリンクされたオブジェクトを含んでよい。表されるように、ジェネリック関数1105は、2つのクラス、すなわち、API定義1110及びアクション1115を含んでよい。API定義1110は、サブクラスをいくつでも含んでよい。2つのサブクラスが表されている。すなわち、タイトル1120及びベースURL1125である。アクション1115は、サブクラスをいくつでも含んでよい。2つのサブクラスが表されている。すなわち、GET1130及びPUT1135である。表されるように、セグメント905aは、GET1130関数へマッピングされており、セグメント905bは、PUT1135関数へマッピングされており、セグメント905cは、GET1130関数へマッピングされている。
図12は、ネイティブAPI関数を実行するためにジェネリックAPI関数を使用することに関連した、例となる方法1200のフロー図を表す。方法1200は、ブロック1205から開始してよい。ブロック1205で、プロセッシングロジックはジェネリックAPIコードを記憶してよい。プロセッシングロジックは、開発者又はエンドユーザから、ジェネリックAPIコードの関数を実行するための命令を受け取ってよい。
ブロック1210で、プロセッシングロジックは、ジェネリックコードをネイティブAPIコード(対象コード)へ動的に変換してよい。ジェネリックコードから対象のAPIコードへ動的に変換するよう、プロセッシングロジックは、対象コード1220を識別するためにAPI関数マップ1215(例えば、図11のマッピンググラフ1100)を使用してよい。API関数マップ1215は、特定のAPI関数とジェネリックAPIとの間のマップ又は関係を提供し得る。API関数マップ1215は、API関数のキーワード又は他の表示子(indicator)を示してよい。
ブロック1225で、プロセッシングロジックは、対象APIコードリクエスト(例えば、対象API1220のコードの少なくとも一部)をAPIプラットフォームへ送ってよい。APIプラットフォームは、ローカルのコンピュータ及び/又は遠隔のコンピュータを含んでよい。少なくとも1つの実施形態において、APIプラットフォームは、図1のAPIドキュメントソース115を含む。対象APIコードリクエストは、APIプラットフォームがAPIを実行し、結果として生じるデータをプロセッシングロジックへ送るためのリクエストを含んでよい。対象APIコードリクエストはまた、プロセッシングロジックによる実行のために対象APIコードを送るためのリクエストを含んでよい。
ブロック1230で、プロセッシングロジックは、APIプラットフォームからAPIコンテンツを受け取ってよい。APIコンテンツは、APIコードの実行の結果として得られた特定のAPIコード又はデータを含んでよい。ブロック1235で、プロセッシングロジックは、APIコンテンツをジェネリックAPIコンテンツへ変換してよい。例えば、プロセッシングロジックは、APIコンテンツの実行から返されたデータを、ジェネリックAPIによって使用され得るデータに変換してよい。ブロック1240で、プロセッシングロジックは、ジェネリックAPIコンテンツをクライアントデバイスへ送ってよい。
図13は、API学習システムにおけるインターフェイスに関連した、例となる方法1300のフロー図を表す。方法1300は、ブロック1305から開始してよい。ブロック1305で、プロセッシングロジックは、開発者のためのジェネリックIDE又はエンドユーザのためのGUIを受け取ってよい。プロセッシングロジックは、ジェネリックIDE及び/又はGUIをデータストレージにおいて記憶してよい。プロセッシングロジックは、本願で説明されるように、ジェネリックAPIを生成してよい。ブロック1310で、プロセッシングロジックは、1つよりも多いネイティブAPIへのジェネリックAPIのマップを生成してよい。1つよりも多いネイティブAPIは、API1320、API1325、及びAPI1330を含んでよい。
本願で記載される実施形態は、以下で更に詳細に説明されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む特別目的の又は汎用のコンピュータの使用を含んでよい。
図14は、本願で説明される方法のうちのいずれか1つ以上をマシンに実施させる命令の組が実行され得るコンピューティングデバイス1400の形を例としてマシンの図解表現を表す。コンピューティングデバイス1400は、携帯電話機、スマートフォン、ネットブック・コンピュータ、ラックマウント・サーバ、ルータ・コンピュータ、サーバ・コンピュータ、パーソナル・コンピュータ、メインフレーム・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータなどを含んでよい。それらの中で、本願で説明される方法のうちのいずれか1つ以上をマシンに実施させる命令の組が実行されてよい。代替の実施形態において、マシンは、LAN、イントラネット、エクストラネット、又はインターネットにおいて他のマシンへ接続(例えば、ネットワーク接続)されてよい。マシンは、クライアント−サーバ・ネットワーク環境においてサーバ・マシンとして動作してよい。マシンは、パーソナル・コンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワーク・ルータ、スイッチ若しくはブリッジ、又はそのマシンによって行われる動作を特定する命令の組(シーケンス又は他)を実行可能なあらゆるマシンを含んでよい。更には、ただ1つのマシンしか表されていないが、語「マシン」はまた、本願で説明される方法のうちのいずれか1つ以上を実施するための命令の組(又は複数の組)を個々に又はまとめて実行するマシンの如何なる集合も含んでよい。
例となるコンピューティングデバイス1400は、プロセッシングデバイス(例えば、プロセッサ)1402、メインメモリ1404(例えば、リードオンリー・メモリ(ROM)、フラッシュメモリ、例えば同期DRAM(SDRAM)のような動的ランダム・アクセス・メモリ(DRAM))、静的メモリ1406(例えば、フラッシュメモリ、静的ランダム・アクセス・メモリ(SDRAM))、及びデータストレージデバイス1416を含み、それらはバス1048を介して互いに通信する。
プロセッシングデバイス1402は、例えばマイクロプロセッサ、中央演算処理装置、又は同様のもののような、1つ以上の汎用のプロセッシングデバイスに相当する。より具体的には、プロセッシングデバイス1402は、複数命令セット演算(CISC;Complex Instruction Set Computing)マイクロプロセッサ、縮小命令セット演算(RISC;Reduced Instruction Set Computing)マイクロプロセッサ、超長命令語(VLIW;Very Long Instruction Word)マイクロプロセッサ、又は他の命令セットを実装するプロセッサ若しくは命令セットの組を実装する複数のプロセッサを含んでよい。プロセッシングデバイス1402はまた、例えば、特定用途向け集積回路(ASIC;Application Specific Integrated Circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA;Field Programmable Gate Array)、デジタル信号プロセッサ(DSP;Digital Signal Processor)、ネットワーク・プロセッサ、又は同様のもののような、1つ以上の特別目的のプロセッシングデバイスを含んでよい。プロセッシングデバイス1402は、本願で説明される動作及びステップを実施するための命令1426を実行するよう構成される。
コンピューティングデバイス1400は、ネットワーク1418と通信し得るネットワーク・インターフェイス・デバイス1422を更に含んでよい。コンピューティングデバイス1400はまた、表示デバイス1410(例えば、液晶ディスプレイ(LCD;Liquid Crystal Display)又は陰極線管(CRT;Cathode Ray Tube))、英数字入力デバイス1412(例えば、キーボード)、カーソル制御デバイス1414(例えば、マウス)、及び信号生成デバイス1420(例えば、スピーカ)を含んでよい。1つの実施において、表示デバイス1410、英数字入力デバイス1412、及びカーソル制御デバイス1414は、単一のコンポーネント又はデバイス(例えば、LCDタッチスクリーン)にまとめられてよい。
データストレージデバイス1416は、本願で記載されている方法又は機能のうちのいずれか1つ以上を具現化する命令1426(例えば、デバイス110、ジェネリックAPI生成器126)の1つ以上の組が記憶されているコンピュータ可読記憶媒体1424を含んでよい。命令1426はまた、コンピューティングデバイス1400によるその実行中にメインメモリ1404内及び/又はプロセッシングデバイス1402内に完全に又は少なくとも部分的に存在してよい。メインメモリ1404及びプロセッシングデバイス1402も、コンピュータ可読媒体を構成する。命令1426は更に、ネットワーク・インターフェイス・デバイス1422を介してネットワーク1418上で送信又は受信されてよい。
コンピュータ可読記憶媒体1424は、例となる実施形態において、単一の媒体であるよう示されているが、語「コンピュータ可読記憶媒体」は、命令の1つ以上の組を記憶する単一の媒体又は複数の媒体(例えば、中央集権型又は分散型データベース及び/又は関連するキャッシュ及びサーバ)を含んでよい。語「コンピュータ可読記憶媒体」はまた、マシンによる実行のために命令の組を記憶、符号化、又は搬送することが可能であり、マシンに本開示の方法のうちのいずれか1つ以上を実施させる如何なる媒体も含んでよい。語「コンピュータ可読記憶媒体」は、固体状態メモリ、光学媒体及び磁気媒体を含むがそれらに制限されないと然るべく解釈され得る。
本願で記載される実施形態は、コンピュータ実行可能命令又はデータ構造を搬送し又はそれらを記憶しているコンピュータ可読媒体を用いて実装されてよい。そのようなコンピュータ可読媒体は、汎用又は特別目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体であってもよい。一例として、制限なしに、そのようなコンピュータ可読媒体は、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、電気的消去可能なプログラム可能リードオンリー・メモリ(EEPROM)、コンパクトディスク・リードオンリー・メモリ(CD−ROM)若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、固体状態メモリデバイス)、又はコンピュータ実行可能命令若しくはデータ構造の形で所望のプログラムコードを搬送若しくは記憶するために使用され得且つ汎用若しくは特別目的のコンピュータによってアクセスされ得る何らかの他の記憶媒体を含む非一時的なコンピュータ可読記憶媒体を含んでよい。前述の記憶媒体の組み合わせも、コンピュータ可読媒体の適用範囲内に含まれてよい。
コンピュータ実行可能命令は、例えば、汎用のコンピュータ、特別目的のコンピュータ、又は特別目的のプロセッシングデバイス(例えば、1つ以上のプロセッサ)に特定の関数又は関数のグループを実施させる命令及びデータを含んでよい。対象は、構造的特徴及び/又は方法動作に特有の言語において記載されてきたが、添付の特許請求の範囲で定義される対象は、上述された具体的な特徴又は動作に必ずしも制限されない。むしろ、上述された具体的な特徴及び動作は、特許請求の範囲を実施する形態の例として開示されている。
本願で使用されるように、語「モジュール」又は「コンポーネント」は、モジュール若しくはコンポーネントの動作を実施するよう構成された特定のハードウェア実装、及び/又はコンピューティングシステムの汎用ハードウェアによって記憶及び/又は実行され得るソフトウェア/オブジェクト又はソフトウェア・ルーチンを指してよい。いくつかの実施形態において、本願で記載される異なるコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムにおいて(例えば、別個のスレッド)として実行されるオブジェクト又はプロセスとして実装されてよい。本願で記載されるシステム及び方法のいくつかは、ソフトウェアで実装される(汎用ハードウェアによって記憶及び実行される)ものとして概して記載されているが、特定のハードウェア実装又はソフトウェアと特定のハードウェア実装との組み合わせも可能であり、考えられている。本明細書において、「コンピューティングエンティティ」は、本願で先に定義されているあらゆるコンピューティングシステム、又はコンピューティングシステムで実行されるあらゆるモジュール若しくはモジュールの組み合わせであってよい。
本願で挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び発明を読者が理解するのを助ける教育上の目的を意図され、そのような、具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本発明の実施形態は詳細に記載されてきたが、様々な変更、置換及び代替は、本発明の主旨及び適用範囲から逸脱することなしにそれらに対して行われてよいことが理解されるべきである。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
メモリと、
通信インターフェイスと、
前記メモリ及び前記通信インターフェイスへ動作上結合されるプロセッサと
を有し、
前記プロセッサは、
前記通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
少なくとも2つのセンテンスを含む前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化し、
前記少なくとも1つのトークンに基づきAPIオントロジーグラフを生成し、
前記APIオントロジーグラフに基づき前記少なくとも2つのセンテンスの夫々についてセマンティックビューを展開し、
優先順位を前記少なくとも2つのセンテンスの夫々と関連付け、
第1センテンスの第1優先順位に基づき前記少なくとも2つのセンテンスから前記第1センテンスを選択し、
前記第1センテンスに基づき前記APIドキュメントの前記セマンティックビューを修正する
ことを有する動作を実施するよう構成される、
システム。
(付記2)
前記APIドキュメントは、人間が読める言語における人間が読めるドキュメントを含む、
付記1に記載のシステム。
(付記3)
前記優先順位は、APIオントロジーに基づく有限な文脈自由文法の確率に基づく、
付記1に記載のシステム。
(付記4)
前記プロセッサは、前記APIドキュメントの更新のために前記1つ以上のソースを周期的にクロールするよう更に構成される、
付記1に記載のシステム。
(付記5)
前記プロセッサは、
前記APIドキュメントの前記更新に基づき第2トークンを生成するよう前記APIドキュメントの前記更新をトークン化し、
前記第2トークンに基づき、前記APIオントロジーグラフ、第1セマンティックビュー、又は第2セマンティックビューのうちの少なくとも1つを更新する
ことを有する動作を実施するよう更に構成される、
付記4に記載のシステム。
(付記6)
前記プロセッサは、
APIと相互作用するインターフェイスを提供し、
前記インターフェイスを介して前記APIドキュメントのセマンティックビューを提供し、
前記セマンティックビューから特徴を抽出し、
ネイティブAPIコードへマッピングされるジェネリックAPIを生成し、
ジェネリック関数を実行するためのリクエストを受け取り、
前記リクエストを前記APIのジェネリックコードからネイティブコードへマッピングし、
前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
ことを有する更なる動作を実施するよう構成される、
付記1に記載のシステム。
(付記7)
前記プロセッサは、前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングするよう更に構成される、
付記6に記載のシステム。
(付記8)
前記APIの前記ネイティブ関数は、前記APIの前記ネイティブ関数の演算、パラメータ、又はアクセシビリティのうちの少なくとも1つを含む、
付記7に記載のシステム。
(付記9)
APIは、ウェブベースAPI、デバイスAPI、又はオペレーティングシステムベースAPIのうちの少なくとも1つを含む、
付記1に記載のシステム。
(付記10)
通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
前記APIドキュメントをトークン化し、
優先順位を夫々のセンテンスと関連付け、
第1セマンティックビューのためのAPIオントロジーグラフを生成し、
機械学習法によって計算されるコーパスにおいて現れる確率に基づきセンテンスを選択し、
前記APIオントロジーグラフに基づき夫々のAPIドキュメントのために前記第1セマンティックビューを展開し、
APIドキュメントが更新されると第2セマンティックビューを生成するよう前記APIドキュメントの前記第1セマンティックビューを修正する
ことを有する方法。
(付記11)
前記1つ以上のソースは、前記APIドキュメントの更新のために周期的にクロールされる、
付記10に記載の方法。
(付記12)
前記APIドキュメントの前記更新に基づき第2トークンを生成するよう前記APIドキュメントの前記更新をトークン化し、
前記第2トークンに基づき、前記APIオントロジーグラフ、前記第1セマンティックビュー、又は前記第2セマンティックビューのうちの少なくとも1つを更新する
ことを更に有する付記11に記載の方法。
(付記13)
APIと相互作用するインターフェイスを提供し、
前記インターフェイスを介して前記APIドキュメントの前記第2セマンティックビューを提供し、
前記APIドキュメントに基づきジェネリック関数を実行するためのリクエストを受け取り、
前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
ことを更に有する付記10に記載の方法。
(付記14)
前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングする
ことを更に有する付記13に記載の方法。
(付記15)
前記APIの前記ネイティブ関数は、前記APIの前記ネイティブ関数の演算、パラメータ、又はアクセシビリティのうちの少なくとも1つを含む、
付記14に記載の方法。
(付記16)
通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
少なくとも2つのセンテンスを含む前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化し、
APIオントロジーグラフを生成し、
出現するセンテンスの確率を関連付け、
最も高い確率から1つ以上を選択し、
前記1つ以上の選択された最も高い確率に基づき前記APIドキュメントの第1セマンティックビューを生成し、
前記APIドキュメントの前記第1セマンティックビューを修正する
ことを有する動作を実施するようプロセッサによって実行可能なプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
(付記17)
前記1つ以上のソースは、前記APIドキュメントの更新のために周期的にクロールされる、
付記16に記載の非一時的なコンピュータ可読媒体。
(付記18)
前記動作は、
前記APIドキュメントの前記更新に基づき第2トークンを生成するよう前記APIドキュメントの前記更新をトークン化し、
前記第2トークンに基づき、第2セマンティックビューを生成するよう前記APIオントロジーグラフ又は前記第1セマンティックビューのうちの少なくとも1つを更新する
ことを更に有する、
付記17に記載の非一時的なコンピュータ可読媒体。
(付記19)
前記動作は、
APIと相互作用するインターフェイスを提供し、
前記インターフェイスを介して前記APIドキュメントのセマンティックビューを提供し、
前記APIドキュメントに基づきジェネリック関数を実行するためのリクエストを受け取り、
前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
ことを更に有する、
付記16に記載の非一時的なコンピュータ可読媒体。
(付記20)
前記動作は、前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングすることを更に有する、
付記19に記載の非一時的なコンピュータ可読媒体。
100 動作環境
110 デバイス
115 APIドキュメントソース
124 ネットワーク
126 ジェネリックAPI生成器
128 データストレージ
145,900 オントロジーグラフ
150 APIドキュメントの処理された組
155 抽出された特徴の組
160,1100 マッピンググラフ
500 初期オントロジー構造
502 ジェネリックAPI
605 トークン
615 初期オントロジー
700 セマンティックビュー
705 センテンス
800 セマンティックモデル
1105 ジェネリック関数
1400 コンピューティングデバイス
1402 プロセッシングデバイス
1424 コンピュータ可読記憶媒体

Claims (17)

  1. メモリと、
    通信インターフェイスと、
    前記メモリ及び前記通信インターフェイスへ動作上結合されるプロセッサと
    を有し、
    前記プロセッサは、
    前記通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
    前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
    少なくとも2つのセンテンスを含む前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化し、
    前記少なくとも1つのトークンに基づきAPIオントロジーグラフを生成し、
    前記APIオントロジーグラフに基づき前記少なくとも2つのセンテンスの夫々についてセマンティックビューを展開し、
    センテンスごとに予め決定されている優先順位に基づいて、又はコーパス内でのセンテンスの出現確率を提供する機械学習ベースのモデルに基づいて、前記少なくとも2つのセンテンスの夫々の優先順位を決定し
    第1センテンスの第1優先順位に基づき前記少なくとも2つのセンテンスから前記第1センテンスを選択し、
    前記第1センテンスに基づき第1セマンティックビューを生成する
    ことを有する動作を実施するよう構成され
    前記プロセッサは、
    APIと相互作用するインターフェイスを提供し、
    前記インターフェイスを介して前記APIドキュメントのセマンティックビューを提供し、
    前記セマンティックビューから特徴を抽出し、
    ネイティブAPIコードへマッピングされるジェネリックAPIを生成し、
    ジェネリック関数を実行するためのリクエストを受け取り、
    前記リクエストを前記APIのジェネリックコードからネイティブコードへマッピングし、
    前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
    前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
    ことを有する更なる動作を実施するよう構成される
    システム。
  2. 前記APIドキュメントは、人間が読める言語における人間が読めるドキュメントを含む、
    請求項1に記載のシステム。
  3. 前記優先順位は、前記APIドキュメントについて制限された確率文脈自由文法に基づく、
    請求項1に記載のシステム。
  4. 前記プロセッサは、前記APIドキュメントの更新のために前記1つ以上のソースを周期的にクロールするよう更に構成される、
    請求項1に記載のシステム。
  5. 前記プロセッサは、
    前記APIドキュメントが更新された場合に、該更新されたAPIドキュメントをトークン化して第2トークンを生成し
    前記第2トークンを、前記APIオントロジーグラフによって表される、更新前のオントロジーと照合し、前記第2トークンが前記更新前のオントロジーからの要素と適合するか否かに基づき前記更新前のオントロジーを変更し該変更に応答して、第2セマンティックビューを生成するよう前記第1セマンティックビューを更新する
    ことを有する動作を実施するよう更に構成される、
    請求項4に記載のシステム。
  6. 前記プロセッサは、前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングするよう更に構成される、
    請求項に記載のシステム。
  7. 前記APIの前記ネイティブ関数は、前記APIの前記ネイティブ関数の演算、パラメータ、又はアクセシビリティのうちの少なくとも1つを含む、
    請求項に記載のシステム。
  8. APIは、ウェブベースAPI、デバイスAPI、又はオペレーティングシステムベースAPIのうちの少なくとも1つを含む、
    請求項1に記載のシステム。
  9. 通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
    前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
    少なくとも2つのセンテンスを含む前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化し、
    前記少なくとも1つのトークンに基づきAPIオントロジーグラフを生成し、
    前記APIオントロジーグラフに基づき前記少なくとも2つのセンテンスの夫々についてセマンティックビューを展開し、
    センテンスごとに予め決定されている優先順位に基づいて、又はコーパス内でのセンテンスの出現確率を提供する機械学習ベースのモデルに基づいて、前記少なくとも2つのセンテンスの夫々の優先順位を決定し
    第1センテンスの第1優先順位に基づき前記少なくとも2つのセンテンスから前記第1センテンスを選択し、
    前記第1センテンスに基づき第1セマンティックビューを生成し、
    APIと相互作用するインターフェイスを提供し、
    前記インターフェイスを介して前記APIドキュメントのセマンティックビューを提供し、
    前記APIドキュメントに基づきジェネリック関数を実行するためのリクエストを受け取り、
    前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
    前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
    ことを有する方法。
  10. 前記1つ以上のソースは、前記APIドキュメントの更新のために周期的にクロールされる、
    請求項に記載の方法。
  11. 前記APIドキュメントが更新された場合に、該更新されたAPIドキュメントをトークン化して第2トークンを生成し
    前記第2トークンを、前記APIオントロジーグラフによって表される、更新前のオントロジーと照合し、前記第2トークンが前記更新前のオントロジーからの要素と適合するか否かに基づき前記更新前のオントロジーを変更し該変更に応答して、第2セマンティックビューを生成するよう前記第1セマンティックビューを更新する
    ことを更に有する請求項10に記載の方法。
  12. 前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングする
    ことを更に有する請求項に記載の方法。
  13. 前記APIの前記ネイティブ関数は、前記APIの前記ネイティブ関数の演算、パラメータ、又はアクセシビリティのうちの少なくとも1つを含む、
    請求項12に記載の方法。
  14. 通信インターフェイスを介して、アプリケーションプログラムインターフェイス(API)ドキュメンテーションのための1つ以上のソースをクロールし、
    前記通信インターフェイスを介して、前記1つ以上のソースからAPIドキュメントを収集し、
    少なくとも2つのセンテンスを含む前記APIドキュメントのコンテンツに基づき少なくとも1つのトークンを生成するよう前記APIドキュメントをトークン化し、
    少なくとも1つのトークンに基づきAPIオントロジーグラフを生成し、
    前記APIオントロジーグラフに基づき前記少なくとも2つのセンテンスの夫々についてセマンティックビューを展開し、
    センテンスごとに予め決定されている優先順位に基づいて、又はコーパス内でのセンテンスの出現確率を提供する機械学習ベースのモデルに基づいて、前記少なくとも2つのセンテンスの夫々の優先順位を決定し
    第1センテンスの第1優先順位に基づき前記少なくとも2つのセンテンスから前記第1センテンスを選択し、
    前記第1センテンスに基づき前記APIドキュメントの第1セマンティックビューを生成し、
    APIと相互作用するインターフェイスを提供し、
    前記インターフェイスを介して前記APIドキュメントのセマンティックビューを提供し、
    前記APIドキュメントに基づきジェネリック関数を実行するためのリクエストを受け取り、
    前記ジェネリック関数に対応する前記APIのネイティブ関数が実行されるようにし、
    前記インターフェイスを介して、前記APIの前記ネイティブ関数の実行に基づきレスポンスを供給する
    ことを有する動作を実施するようプロセッサによって実行可能なプログラミングコードが符号化されている非一時的なコンピュータ可読媒体。
  15. 前記1つ以上のソースは、前記APIドキュメントの更新のために周期的にクロールされる、
    請求項14に記載の非一時的なコンピュータ可読媒体。
  16. 前記動作は、
    前記APIドキュメントが更新された場合に、該更新されたAPIドキュメントをトークン化して第2トークンを生成し
    前記第2トークンを、前記APIオントロジーグラフによって表される、更新前のオントロジーと照合し、前記第2トークンが前記更新前のオントロジーからの要素と適合するか否かに基づき前記更新前のオントロジーを変更し該変更に応答して、第2セマンティックビューを生成するよう前記第1セマンティックビューを更新する
    ことを更に有する、
    請求項15に記載の非一時的なコンピュータ可読媒体。
  17. 前記動作は、前記ジェネリック関数を前記APIの前記ネイティブ関数へマッピングすることを更に有する、
    請求項14に記載の非一時的なコンピュータ可読媒体。
JP2017153959A 2016-12-09 2017-08-09 Api学習 Active JP6922538B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/374,798 US10691507B2 (en) 2016-12-09 2016-12-09 API learning
US15/374,798 2016-12-09

Publications (2)

Publication Number Publication Date
JP2018097846A JP2018097846A (ja) 2018-06-21
JP6922538B2 true JP6922538B2 (ja) 2021-08-18

Family

ID=62201991

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017153959A Active JP6922538B2 (ja) 2016-12-09 2017-08-09 Api学習

Country Status (3)

Country Link
US (1) US10691507B2 (ja)
JP (1) JP6922538B2 (ja)
DE (1) DE102017111438A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018200135A1 (en) * 2017-04-25 2018-11-01 Intento, Inc. Intent-based organisation of apis
US10572370B2 (en) * 2017-09-26 2020-02-25 Fujitsu Limited Test-assisted application programming interface (API) learning
US10698664B2 (en) * 2017-12-21 2020-06-30 Fujitsu Limited API mashup generation
US10628282B2 (en) * 2018-06-28 2020-04-21 International Business Machines Corporation Generating semantic flow graphs representing computer programs
US11500914B2 (en) * 2018-09-05 2022-11-15 International Business Machines Corporation Query recommendation to locate an application programming interface
US10579372B1 (en) 2018-12-08 2020-03-03 Fujitsu Limited Metadata-based API attribute extraction
US11263062B2 (en) 2019-02-06 2022-03-01 Fujitsu Limited API mashup exploration and recommendation
US11361323B2 (en) 2019-05-08 2022-06-14 ZenPayroll, Inc. User provisioning management in a database system
US11163620B2 (en) 2019-05-20 2021-11-02 Fujitsu Limited Predicting API endpoint descriptions from API documentation
US11762926B2 (en) 2019-05-20 2023-09-19 Fujitsu Limited Recommending web API's and associated endpoints
US10853150B1 (en) * 2019-12-31 2020-12-01 Fujitsu Limited Generating application programming interface knowledge graphs
US11231979B2 (en) * 2020-03-19 2022-01-25 Intuit Inc. Method and system for generating an application programming interface based on declarative schemas for individual services
US11360745B2 (en) 2020-03-31 2022-06-14 Fujitsu Limited Code generation for log-based mashups
US11409585B2 (en) 2020-05-27 2022-08-09 Fujitsu Limited Automatic code generation for API mashups
US11487596B2 (en) * 2020-08-31 2022-11-01 Fujitsu Limited API mashup infrastructure generation on computing systems
US20230176877A1 (en) * 2021-12-07 2023-06-08 Sap Se Dynamic plug and play resource discovery
US11687675B1 (en) * 2022-09-08 2023-06-27 Pezo Tech Llc Method and system for improving coupling and cohesion of at least one educational program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
EP2480987A4 (en) * 2009-09-26 2013-09-25 Hamish Ogilvy SYSTEM AND METHOD FOR DOCUMENT ANALYSIS AND ASSIGNMENT
KR20110036385A (ko) * 2009-10-01 2011-04-07 삼성전자주식회사 사용자 의도 분석 장치 및 방법
US8881127B2 (en) 2011-06-14 2014-11-04 Sap Ag Systems and methods to automatically generate classes from API source code
US8893077B1 (en) 2011-10-12 2014-11-18 Google Inc. Service to generate API libraries from a description

Also Published As

Publication number Publication date
DE102017111438A1 (de) 2018-06-14
US10691507B2 (en) 2020-06-23
US20180165135A1 (en) 2018-06-14
JP2018097846A (ja) 2018-06-21

Similar Documents

Publication Publication Date Title
JP6922538B2 (ja) Api学習
EP3514694B1 (en) Query translation
US10031973B2 (en) Method and system for identifying a sensor to be deployed in a physical environment
US11200291B2 (en) Automated generation of web API descriptions from usage data
WO2020108063A1 (zh) 特征词的确定方法、装置和服务器
US9015657B2 (en) Systems and methods for developing and delivering platform adaptive web and native application content
US10002128B2 (en) System for tokenizing text in languages without inter-word separation
CN110704479A (zh) 任务处理方法、装置、电子设备及存储介质
WO2021017735A1 (zh) 一种智能合约的形式化验证方法、电子装置及存储介质
US20160188570A1 (en) Automated ontology building
JP2019133621A (ja) Apiドキュメンテーションの収集
US10191946B2 (en) Answering natural language table queries through semantic table representation
US20180260389A1 (en) Electronic document segmentation and relation discovery between elements for natural language processing
EP3846089B1 (en) Generating a knowledge graph of multiple application programming interfaces
JP2022091986A (ja) インテリジェント対話方法、装置、電子機器及び記憶媒体
US9898467B1 (en) System for data normalization
CN113704420A (zh) 文本中的角色识别方法、装置、电子设备及存储介质
JP2024507029A (ja) ウェブページ識別方法、装置、電子機器、媒体およびコンピュータプログラム
US10698931B1 (en) Input prediction for document text search
JP2020035427A (ja) 情報を更新するための方法と装置
RU2610585C2 (ru) Способ и система для модификации текста в документе
CN113032586B (zh) 对文本中的时间信息进行提取的方法、装置及电子设备
US20220114189A1 (en) Extraction of structured information from unstructured documents
US11038765B2 (en) Cloud software defined networking application programming interface converter
Beek The'K'in'Semantic Web'Stands for'Knowledge'

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210420

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210512

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210629

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210712

R150 Certificate of patent or registration of utility model

Ref document number: 6922538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150