(57)【要約】      （修正有）【課題】データ処理ソフトウェア・サービスへのユーザー・アクセスを容易にする。【解決手段】複数のユーザー入力コマンドについてデータ処理要求および定義されたデータ処理対象のレコードを維持するよう構成された知識ベースを保有する。各ユーザー入力コマンドについて、パーサーからデータ処理要求を取得し、データ処理要求を充足するためのソフトウェア・サービスのスケジュールをまとめる。各ユーザー入力コマンドについて、ソフトウェア・サービスのスケジュールの実行を制御して処理結果を出力する。処理結果を取得して、知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドとして、データ処理要求候補を、データ処理対象として定義された処理結果と一緒に出力する。【選択図】図２
2018088242.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって：
複数のソフトウェア・サービスを記憶しているソフトウェア・ライブラリであって、各実行可能なソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、ソフトウェア・ライブラリと；
複数のユーザー入力コマンドを受け取るよう構成されたユーザー・インターフェースであって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、ユーザー・インターフェースと；
各ユーザー入力コマンドから：
ドメイン固有言語からのデータ処理要求；および
定義されたデータ処理対象を抽出するよう構成されているパーサーと；
前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持するよう構成された知識ベースと；
各ユーザー入力コマンドについて、前記パーサーから前記データ処理要求を取得し、前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめるよう構成されたソフトウェア・サービス実行スケジューラと；
各ユーザー入力コマンドについて、一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御して該制御された実行の処理結果を出力するよう構成されたソフトウェア・サービス実行コントローラであって、前記定義されたデータ処理対象が前記制御された実行への入力データである、ソフトウェア・サービス実行コントローラと；
前記出力された処理結果を取得して、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドとしてユーザーに対して前記ユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力するよう構成された結果処理器とを有する、
データ処理装置。
【請求項２】
前記パーサーは、ユーザー入力のドメイン固有言語からの前記データ処理要求を抽出することを、少なくとも：
前記ドメイン固有言語を一連のドメイン固有言語要素にパースし；
ドメイン固有言語要素の語彙の各構成員をデータ処理要求要素にマッピングするドメイン固有言語マップに問い合わせて、前記一連のドメイン固有言語要素の各構成員にマッピングされたデータ処理要求要素を得て；
得られたデータ処理要求要素を組み合わせて前記データ処理要求を形成することによって行なうよう構成されている、
請求項１記載のデータ処理装置。
【請求項３】
前記ソフトウェア・サービス実行スケジューラは、ソフトウェア・サービス・レジストリを維持するよう構成されており、前記ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定し、
前記データ処理機能はそれぞれ、一つまたは複数のデータ処理要求要素として指定され、該データ処理要求要素に前記ドメイン固有言語要素がマッピングされており；
前記ソフトウェア・サービス実行スケジューラは、前記データ処理要求からのデータ処理要求要素を諸ソフトウェア・サービスと照合することによって、前記スケジュールに含めるためのソフトウェア・サービスを選択するよう構成されており、照合される諸ソフトウェア・サービスは、それぞれのデータ処理要求要素が、当該レジストリ・エントリーにおける指定されたデータ処理機能に含まれるところのものである、
請求項２記載のデータ処理装置。
【請求項４】
前記結果処理器がさらに、得られた処理結果を、前記ユーザー・インターフェースを介してユーザーに対して出力するよう構成されている、請求項１記載のデータ処理装置。
【請求項５】
前記データ処理要求候補の同定のベースとなるデータ処理要求および定義されたデータ処理対象のレコードは、同定されたデータ処理要求候補が出力される対象となるのと同じユーザーによって前記ユーザー・インターフェースに入力されたデータ処理要求および定義されたデータ処理対象のレコードに制約される、請求項１記載のデータ処理装置。
【請求項６】
前記知識ベースによって維持されるデータ処理要求および定義されたデータ処理対象のレコードは、それぞれの定義されたデータ処理対象について：
そのデータ処理対象におけるデータの特徴付けを含み、
前記結果処理器は、前記処理結果に対する実行のためのデータ処理要求候補を同定することを、前記処理結果における一部のまたは全部のデータを特徴付けし、定義されたデータ処理対象におけるデータの特徴付けが前記処理結果におけるデータの前記特徴付けと同じまたは同様であるユーザー入力コマンドについての知識ベース・レコード内のデータ処理要求を、前記候補として同定することによって行なうよう構成されている、
請求項１記載のデータ処理装置。
【請求項７】
同定される前記データ処理要求候補は、前記知識ベースによって維持されるレコードの有意な部分集合のうちから最もよくあるデータ処理要求を決定することによって選択され、レコードの前記有意な部分集合は、前記定義されたデータ処理対象におけるデータの特徴付けと前記処理結果におけるデータの特徴付けとの間の類似性の定量化があらかじめ定義された閾値より高いレコードである、請求項６記載のデータ処理装置。
【請求項８】
前記ユーザー・インターフェースが：
ウェブ・インターフェース；
アプリケーション・プログラミング・インターフェース；
コマンドライン・インターフェース；
ユーザー音声コマンド・インターフェース；および
グラフィカル・ユーザー・インターフェース
のうちの一つまたは複数を含む、請求項１記載のデータ処理装置。
【請求項９】
前記パーサーは、ユーザー入力からデータ処理要求を抽出することを、少なくとも：
ユーザー入力から不完全なデータ処理要求を抽出し；
該不完全なデータ処理要求を完成させる情報を求めるプロンプトを前記ユーザー・インターフェースを介してユーザーに対して出力し；
ユーザーからの該プロンプトへの応答を前記ユーザー・インターフェースを介して受け取り；
受け取られた応答を用いて前記不完全なデータ処理要求を完成させることによって行なうよう構成されている、請求項１記載のデータ処理装置。
【請求項１０】
前記ソフトウェア・サービス実行スケジューラは：
ソフトウェア・サービス・レジストリを維持する段階であって、前記ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定する、段階と；
前記データ処理要求を一つまたは複数の命令されたデータ処理機能の系列に分割する段階と；
それぞれのデータ処理要求を充足するために前記レジストリにおいて同定された前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスの実行スケジュールをまとめる段階であって、前記一つまたは複数の命令されたデータ処理機能のそれぞれについて、前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能に一致するソフトウェア・サービスを同定し、同定されたソフトウェア・サービスを前記実行スケジュールに含めることによって行なわれる、段階とを実行するよう構成されている、
請求項１記載の装置。
【請求項１１】
前記まとめることが、前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能の一つに一致するソフトウェア・サービスが二つ以上同定される場合に、当該装置のユーザーによる手動選択候補としての該二つ以上のソフトウェア・サービスのうちからの一つのソフトウェア・サービスの選択を要求し、要求された選択をユーザーから受け取ることを含み；
前記ソフトウェア・サービス実行スケジューラは、それぞれの命令されたデータ処理機能についての前記実行スケジュールをまとめる処理のレコードを維持し、該レコードに、前記手動選択候補の識別情報および受け取られたユーザー選択の指示を含めるよう構成され；
前記ソフトウェア・サービス実行スケジューラは、要求されたデータ処理機能を実行するために同定された二つ以上のソフトウェア・サービスのうちから一つのソフトウェア・サービスを選択することを、少なくとも部分的には、該二つ以上のソフトウェア・サービスに一致する手動選択候補のうちからの受け取られたユーザー選択の記録されている指示に基づいて自動化するよう構成される、
データ処理装置。
【請求項１２】
データ処理方法であって：
複数のソフトウェア・サービスを記憶することであって、各ソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、ことと；
複数のユーザー入力コマンドをユーザー・インターフェースを介して受け取ることであって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、ことと；
各ユーザー入力コマンドから：
ドメイン固有言語からのデータ処理要求；および
定義されたデータ処理対象を抽出することと；
前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持することと；
各ユーザー入力コマンドについて、
パーサーから前記データ処理要求を取得する段階；
前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめる段階；
一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御する段階であって、前記定義されたデータ処理対象が前記制御された実行への入力データである、段階と；
前記制御された実行の処理結果を出力する段階とを実行することと；
前記出力された処理結果を取得して、知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドをユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力することとを含む、
方法。
【請求項１３】
コンピューティング装置によって実行されたときに該コンピューティング装置に請求項１２記載の方法を実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態はデータ処理の分野にあり、詳細にはユーザー・インターフェースを介したソフトウェア・サービスの実行に関する。
【背景技術】
【０００２】
データ科学は、さまざまな形の、構造化されたまたは構造化されていないデータから知識または洞察を抽出するプロセスおよびシステムについての学際的な分野であり、これは統計学、データマイニングおよび予測解析といったいくつかのデータ解析分野の継続である。
【０００３】
ニューヨークタイムズによれば、典型的なデータ科学プロジェクトの80%がデータの調達、クリーニングおよび準備であり、残り20%が実際のデータ解析である。よって、データ・アナリスト／科学者は、繰り返しの、時間のかかるタスクを実行する。
【０００４】
データ科学におけるソフトウェア・サービスは構成設定するのに時間がかかる。手動のデータ処理を自動化するためにソフトウェア・サービスを使うことによって得られる時間節約は、実行すべきソフトウェア・サービスの構成設定の時間的オーバーヘッドのために、失われることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ処理ソフトウェア・サービスへのユーザー・アクセスを容易にすることが望ましい。
【課題を解決するための手段】
【０００６】
諸実施形態は、データ処理装置を含み、該装置は：複数のソフトウェア・サービスを記憶しているソフトウェア・ライブラリであって、各実行可能なソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、ソフトウェア・ライブラリと；複数のユーザー入力コマンドを受け取るよう構成されたユーザー・インターフェースであって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、ユーザー・インターフェースと；パーサーとを有する。パーサーは、各ユーザー入力コマンドから：ドメイン固有言語からのデータ処理要求；および定義されたデータ処理対象を抽出するよう構成される。本装置はさらに：前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持するよう構成された知識ベースと；各ユーザー入力コマンドについて、パーサーから前記データ処理要求を取得し、前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめる（compile）よう構成されたソフトウェア・サービス実行スケジューラと；各ユーザー入力コマンドについて、一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御して該制御された実行の処理結果を出力するよう構成されたソフトウェア・サービス実行コントローラであって、前記定義されたデータ処理対象が前記制御された実行への入力データである、ソフトウェア・サービス実行コントローラと；前記出力された処理結果を取得して、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドとしてユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力するよう構成された結果処理器とを有する。
【０００７】
有利には、上記で定義されたデータ処理装置は、ユーザーが、ドメイン固有言語で単一のユーザー・インターフェースと対話することによって複数のソフトウェア・サービスの機能にアクセスすることを可能にし、ユーザーが個々のソフトウェア・サービスのシンタックスおよびセマンティクスの知識をもつ必要をなくす。さらに、結果処理器は前のユーザー・アクションに基づいてユーザーに対して次のアクションを推薦し、それによりユーザーが本装置の経験から受益できるようにする。結果処理器は、前のデータ処理要求に基づいて、処理結果の追加的な処理についてのオプションを提案することによって、処理対象の解析を容易にする。
【０００８】
データ処理要求は、たとえば出力データの意味的な記述子を指定することによってまたは出力データのデータ型を指定することによって、所望されるデータ処理結果を指定する。ソフトウェア・サービス実行スケジューラは、データ処理要求をソフトウェア・サービスのスケジュールに変換し、次いで該ソフトウェア・サービスがソフトウェア・サービス実行コントローラによって実行するよう命令される。
【０００９】
ドメイン固有言語（domain  specific  language）は、非常に高レベルで動作を記述する自然言語文を使うことを許容する制御された語彙を含み、ユーザーにとって自然な言語を使って本装置のデータ処理機能と対話するための自然な仕方を提供する。
【００１０】
パーサーは、ドメイン固有言語で表わされたユーザー入力を、データ処理装置による処理のためのクエリー（データ処理要求）に変換する。
【００１１】
ソフトウェア・サービスはデータ科学ソフトウェア・サービスであってもよい。すなわち、ソフトウェア・サービスが実行されたときにソフトウェア・サービスによって実行されるデータ処理機能は、データ科学処理機能である。データ科学は、データ自身の属性の研究および解析である。
【００１２】
データ処理装置はウェブ・サーバーであってもよく、ソフトウェア・サービスはウェブ・サービスであってもよい。ソフトウェア・サービスは、ウェブ・サービスであってもそれ以外であっても、マイクロサービスであってもよい。
【００１３】
各マイクロサービスは、システムにおける何らかの原子的機能を実装する（またはそれを実装する外部リソースをラッピングする）。マイクロサービスは、それらが実行する動作の意味内容についてのメタ情報をもって注釈付けされてもよい。
【００１４】
パーサーは、ユーザー入力のドメイン固有言語からデータ処理要求を抽出することを、少なくとも：前記ドメイン固有言語を一連のドメイン固有言語要素にパースし；ドメイン固有言語要素の語彙の各構成員をデータ処理要求要素にマッピングするドメイン固有言語マップに問い合わせて、前記一連のドメイン固有言語要素の各構成員にマッピングされたデータ処理要求要素を得て；得られたデータ処理要求要素を組み合わせて前記データ処理要求を形成することによって行なうよう構成されてもよい。
【００１５】
ドメイン固有言語マップは、ユーザー・インターフェースを介して当該装置と対話する際にユーザーが用いるドメイン固有言語から、ソフトウェア・サービス実行スケジューラによってソフトウェア・サービスの実行のスケジュールのための基礎として使われることのできるデータ処理要求へと変換する。
【００１６】
任意的に、ソフトウェア・サービス実行スケジューラは、ソフトウェア・サービス・レジストリを維持するよう構成される。ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定する。各データ処理機能は、一つまたは複数のデータ処理要求要素として指定され、それにドメイン固有言語要素がマッピングされている。前記ソフトウェア・サービス実行スケジューラは、データ処理要求からのデータ処理要求要素を諸ソフトウェア・サービスと照合することによって、前記スケジュールに含めるためのソフトウェア・サービスを選択する。照合される諸ソフトウェア・サービスは、それぞれのデータ処理要求要素が、当該レジストリ・エントリーにおける指定されたデータ処理機能に含まれるところのものである。
【００１７】
データ処理要求要素は、たとえば、データ処理機能の意味的記述子である。ソフトウェア・サービス・レジストリ・エントリーは、ソフトウェア・サービスをソフトウェア・ライブラリに追加する際に本装置のシステム管理者によって生成されてもよい。有利には、諸ユーザー・エントリーがマッピングされているデータ処理要求要素のためおよびソフトウェア・サービスのデータ処理機能の指定のための意味的記述子の共通の集合を使うことで、ソフトウェア・サービス実行コントローラは、実行すべき特定のソフトウェア・サービスに関してデータ処理要求を解釈できる。
【００１８】
結果処理器のある個別的実装では、結果処理器はさらに、得られた処理結果を、ユーザー・インターフェースを介してユーザーに対して出力するよう構成される。
【００１９】
処理結果は、完全な形または要約された形でユーザーに対して出力されうる。たとえば、結果処理器は、処理結果から要約を抽出するための処理論理を有していてもよい。ソフトウェア・サービスは、該ソフトウェア・サービスについて指定された特定のURL（一様リソース位置指定子）またはURI（一様リソース識別子）に処理結果を出力するよう構成されてもよい。よって、出力される処理結果は、前記URLまたはURIへのリンクまたは参照であってもよく、あるいはそれからコピーされたデータを含んでいてもよい。
【００２０】
任意的に、データ処理要求候補の同定のベースとなるデータ処理要求および定義されたデータ処理対象のレコードは、同定されたデータ処理要求候補が出力される対象となる同じユーザーによってユーザー・インターフェースに入力されたデータ処理要求および定義されたデータ処理対象のレコードに制約される。
【００２１】
データ処理装置はさらに、ユーザー名およびパスワードによってまたはトークンによってユーザーを認証するよう構成されたユーザー認証プロセッサを有していてもよい。
【００２２】
有利なことに、特定のユーザーのレコードに制約することは、特異なユーザー挙動が、ユーザーに対して出力される提案される次のアクション（データ処理要求候補）に反映されることを可能にするとともに、ユーザーを、他者の特異な挙動から保護する。さらに、ユーザーは自分のアクションを他者が発見できないことを望むことがありうる。同じユーザーのレコードに制約することは、あるユーザーのアクションが、匿名とはいえ提案される次のアクションという形で別のユーザーに発見可能となることを防ぐ。
【００２３】
レコードは知識ベースによって維持される。特に、知識ベースによって維持されるデータ処理要求および定義されたデータ処理対象のレコードは、それぞれの定義されたデータ処理対象について：そのデータ処理対象におけるデータの一つまたは複数のデータ型を含んでいてもよい；結果処理器は、処理結果に対する実行のためのデータ処理要求候補を同定することを、処理結果におけるデータのデータ型を認識し、定義されたデータ処理対象が該認識されたデータ型のデータを含むものとして記録されているユーザー入力コマンドについての知識ベース・レコードにおけるデータ処理要求を、前記候補として同定することによって行なうよう構成されてもよい。
【００２４】
データ型とは、データ項目が取ることのできる値、使用されるプログラミング言語またはそれに対して実行されることのできる動作によって定義される、データ項目の特定の種類である。
【００２５】
結果処理器は、前のユーザー・アクションの知識を活用して、ユーザーに対して提案するアクション（データ処理要求候補）のセレクションを通知する。したがって、結果処理器は、機械学習機構または人工知能機構として振る舞う。データ型は、有意なレコードを関連しないレコードから区別する基準となる特性を提供する。たとえば、ユーザーが典型的に時系列データのさらなる解析を開始する場合、そのことは、結果処理器によって、データ処理対象が時系列データを含む当該ユーザーについての諸知識ベース・レコードを見出す際に発見される。
【００２６】
さらに、同定されたデータ処理要求候補は、知識ベースによって維持されるレコードの有意な部分集合のうちから最もよくあるデータ処理要求を決定することによって選択されるのでもよい。レコードの有意な部分集合は、定義されたデータ処理対象におけるデータの特徴付けと処理結果におけるデータの特徴付けとの間の類似性の定量化があらかじめ定義された閾値より高いレコードである。
【００２７】
特徴付け（characterisation）は、一つまたは複数の特性（characteristics）の値を含んでいてもよい。類似性の定量化は、たとえば、値を表わすベクトルの余弦距離であってもよい。余弦距離比較のために、数値でない値が数値にマッピングされてもよい。余弦距離への代替として（または余弦距離と組み合わされるべき追加的な定量化として）、類似性の定量化はマハラノビス距離であってもよい。たとえば、本装置は、特性の値を表わす二つのベクトルを入力として受け入れ、二つの入力ベクトルの間のマハラノビス距離を表わす値を出力するよう構成されたサポートベクターマシンを含む。
【００２８】
ユーザー・インターフェースは、ユーザーと対話するために下記のうちからの一つまたは複数を含むインターフェースによって実装されてもよい：ウェブ・インターフェース；アプリケーション・プログラミング・インターフェース；コマンドライン・インターフェース；ユーザー音声コマンド・インターフェース；およびグラフィカル・ユーザー・インターフェース。
【００２９】
ユーザー・インターフェースの複数の実装が上記で挙げられている。任意的に、システムはいくつかの異なるモードで動作可能であって、各モードがユーザー・インターフェースの特定の実装に関連付けられているのでもよい。
【００３０】
パーサーは、ユーザー入力からデータ処理要求を抽出するよう構成される。そのような抽出は、少なくとも：ユーザー入力から不完全なデータ処理要求を抽出し；該不完全なデータ処理要求を完成させる情報を求めるプロンプトをユーザー・インターフェースを介してユーザーに対して出力し；ユーザーからの該プロンプトへの応答をユーザー・インターフェースを介して受け取り；前記不完全なデータ処理要求を受け取られた応答と組み合わせることを含んでいてもよい。
【００３１】
任意的に、ソフトウェア・サービス実行スケジューラは：ソフトウェア・サービス・レジストリを維持する段階であって、前記ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定する、段階と；前記データ処理要求を一連の一つまたは複数の命令されたデータ処理機能に分割する段階と；それぞれのデータ処理要求を充足するために前記レジストリにおいて同定された前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスの実行スケジュールをまとめる段階であって、前記一つまたは複数の命令されたデータ処理機能のそれぞれについて、前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能に一致するソフトウェア・サービスを同定し、同定されたソフトウェア・サービスを前記実行スケジュールに含めることによって行なわれる、段階とを実行するよう構成される。
【００３２】
前記ソフトウェア・サービス実行コントローラは、前記スケジュールをまとめることを、少なくとも：前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能の一つに一致するソフトウェア・サービスが二つ以上同定されるとき、本装置のユーザーによる手動選択候補としての該二つ以上のソフトウェア・サービスのうちからの一つのソフトウェア・サービスの選択を要求し、要求された選択をユーザーから受け取ることによって行なうよう構成される。さらに、ソフトウェア・サービス実行スケジューラは、それぞれの命令されたデータ処理機能についての前記実行スケジュールをまとめる処理のレコードを維持するよう構成される。該レコードには、前記手動選択候補の識別情報および受け取られたユーザー選択の指示が含められる。ソフトウェア・サービス実行スケジューラは、要求されたデータ処理機能を実行するために同定された二つ以上のソフトウェア・サービスのうちから一つのソフトウェア・サービスを選択することを、少なくとも部分的には、該二つ以上のソフトウェア・サービスに一致する手動選択候補のうちからの受け取られたユーザー選択の記録されている指示に基づいて自動化するよう構成される。
【００３３】
ソフトウェア・サービス実行スケジューラは、ユーザーによってなされた選択の維持されている諸レコードに基づいて、複数の候補のうちから選択をする。そのようなレコードは、そこから前記選択がなされた諸ソフトウェア・サービスによる処理のためのデータ処理対象の特徴付け（characterisation）（すなわち、データの一つまたは複数の特性の値：データ・サイズ；データ型；データによってインスタンス化される概念の意味的表現）と一緒に記憶されてもよい。命令されたデータ処理機能のデータ処理対象は、同様に（すなわち、同じ特性の値をもって）特徴付けられる。よって、データ特徴付けは、有意なレコードと関連のないレコードとの間の区別をする基礎を提供し、たとえば有意なレコードのうちで最もよくある選択が自動化された選択となる。有意と無関係との間の区別は、命令されたデータ処理機能（そのための自動化された選択が求められるところのもの）のデータ処理対象とレコードが維持されているデータ処理対象との特徴付けを表わすベクトルの間に閾値となる最小余弦距離を課すことによって達成されてもよい。
【００３４】
有利なことに、ソフトウェア・サービス実行スケジューラのそのような機械学習側面は、手動入力がないときに、受け取られたデータ処理要求を満たす諸ソフトウェア・サービスの知的なスケジューリングを可能にする。以前のデータ処理要求を満たす際の手動入力が、機械学習機構によって利用されてもよい。
【００３５】
別の側面の諸実施形態は、データ処理方法であって：複数のソフトウェア・サービスを記憶する段階であって、各ソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、段階と；複数のユーザー入力コマンドをユーザー・インターフェースを介して受け取る段階であって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、段階と；各ユーザー入力コマンドから：ドメイン固有言語からのデータ処理要求；および定義されたデータ処理対象を抽出する段階とを含む、方法を含む。本方法はさらに：前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持する段階と；各ユーザー入力コマンドについて、パーサーから前記データ処理要求を取得し、前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめ、一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御して該制御された実行の処理結果を出力する段階を含む。前記定義されたデータ処理対象が前記制御された実行への入力データである。本方法はさらに、前記出力された処理結果を取得して、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドをユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力することを含む。
【００３６】
別の側面の諸実施形態は、コンピューティング装置によって実行されたときに該コンピューティング装置に発明実施形態として請求項において定義されるシステムとして機能させるコンピュータ・プログラムを含む。
【００３７】
別の側面の諸実施形態は、コンピューティング装置によって実行されたときに該コンピューティング装置に発明実施形態として本稿において上記または他所で定義される方法を実行させるコンピュータ・プログラムを含む。
【００３８】
別の側面の諸実施形態は、複数の相互接続されたコンピューティング装置によって実行されたときに該複数の相互接続されたコンピューティング装置に本発明を具現するシステムとして動作させるコンピュータ・プログラムまたはコンピュータ・プログラムのスイートを含む。
【００３９】
上記のいずれの側面においても、さまざまな特徴はハードウェアで、または一つまたは複数のプロセッサで走るソフトウェア・モジュールとして実装されうる。ある側面の特徴は他の側面の任意のものに適用されうる。
【００４０】
本発明は、本稿に記載される方法のいずれかを実行するためのコンピュータ・プログラムまたはコンピュータ・プログラム・プロダクトならびに本稿に記載される方法のいずれかを実行するためのプログラムを記憶しているコンピュータ可読媒体をも提供する。本発明を具現するコンピュータ・プログラムはコンピュータ可読媒体上に記憶されていてもよく、あるいはたとえばインターネット・ウェブサイトから提供されるダウンロード可能なデータ信号のような信号の形であることができ、あるいは他のいかなる形であることもできる。
【００４１】
付属の図面を参照しつつ、実施形態の詳細な説明をこれから与える。
【図面の簡単な説明】
【００４２】
【図１】データ処理装置を示す図である。
【図２】データ処理方法を示す図である。
【図３】データ処理装置によってユーザーに対して出力されるユーザー入力およびメッセージを示す図である。
【図４】データ処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００４３】
図１は、データ処理装置１０を示している。データ処理装置１０はユーザー・インターフェース１１、パーサー３、ソフトウェア・サービス実行スケジューラ１４、ソフトウェア・サービス実行コントローラ１５、結果処理器１６および知識ベース１７を有しており、これらのコンポーネントの集まりがまとめて仮想アシスタントと称されてもよい。これらのコンポーネントは、ソフトウェア・ライブラリ１２内のソフトウェア・サービスによって提供される機能にアクセスする際にユーザーに対して知的な（経験に基づく）サポートを提供するからである。
【００４４】
図２は、ある実施形態のデータ処理方法を示している。
【００４５】
複数のソフトウェア・サービスを記憶する段階であって、各ソフトウェア・サービスは実行されたときにそれぞれのデータ処理機能を実行するよう構成されている、段階が図２において段階S201によって表わされている。段階S201に交わる線はこの記憶が段階S202ないしS208の実行の間持続することを示している。段階S201におけるソフトウェア・サービスの記憶は図１のソフトウェア・ライブラリ１２によって実行されてもよい。
【００４６】
ソフトウェア・ライブラリ１２は複数の実行可能なソフトウェア・サービスを記憶する。たとえば、ソフトウェア・サービスはウェブ・サービスであってもよく、ウェブ・サービスであれそれ以外であれ、ソフトウェア・サービスはマイクロサービスであってもよい。
【００４７】
マイクロサービスは、データ処理装置における原子的なサービスである。この文脈での原子的とは、単一の責任または単一の機能を意味する。マイクロサービスは、一般的なウェブ・サービスからは、サービスの範囲によって区別される。たとえば、一般的なウェブ・サービスは、より幅広い機能の一部として何らかの形の認証を含むであろう。マイクロサービス・ベースの装置では、認証は専用のマイクロサービスである。
【００４８】
ソフトウェア・サービスは、マイクロサービスであれそれ以外であれ、RESTフルな（RESTful）ソフトウェア・サービスであってもよく、各サービスがGETおよびPOSTおよび／またはPUT要求のためのメソッドを定義する。
【００４９】
REST（Representational  State  Transfer〔代表状態転送〕）は、機械のためのウェブにおける参加者の適正な挙動を支配するアーキテクチャー・スタイルである。RESTは、システム・アーキテクチャーについての制約条件を規定しており、それに準拠することが「RESTフル」であると記述される。制約条件の第一は、アーキテクチャーがクライアント‐サーバー構成をもち、クライアントが一様なインターフェースによってサーバーから分離されているということである。クライアントとサーバーとの間のインターフェースの四つの指導原理があり、これらの原理に従って開発されたインターフェースは「RESTフル」であると記述されることができる。たとえば、ソフトウェア・サービスへの諸インターフェースのためのREST指導原理に従ってAPIを書くことができ、よってそれは「RESTフルなAPI」として記述される。ソフトウェア・サービスについてのそのようなRESTフルなAPIは、ソフトウェア・サービス実行スケジューラ１４によって記憶されるソフトウェア・サービスについてのレジストリ・エントリーに記憶されてもよく、あるいは該レジストリにおける参照によって（たとえば参照によって）アクセス可能にされる位置に記憶されてもよい。プロトコルとしてのHTTPはRESTフルな仕方で使われることができ、RESTフルなHTTPは機械のためのウェブに好適である。RESTフルなインターフェース（API）は、いくつかのキーとなる理由により人気がある：堅固なアーキテクチャー原理をもつ立証済みの基盤の上に構築された基本プロトコルの単純さがあり、結果はウェブ開発者によってアプローチ可能であり使用可能である。
【００５０】
手短かには、RESTアーキテクチャー・スタイルはシステム・アーキテクチャーに関して、次のような六つの制約条件を記述する（六つのうちの一つは任意的）：
・アーキテクチャーはクライアント‐サーバー式であるべきである；
・クライアントとサーバーは一様なインターフェースによって分離される；
・アーキテクチャーはステートレスである。つまり、クライアントからの要求と要求の間にはサーバー上にクライアント・コンテキストは保存されず、各要求はその要求をサービスするために必要な情報のすべてを含んでおり、状態情報はクライアント自身に保持される；
・クライアントは応答をキャッシュすることができる；
・（任意的）クライアントが実行できる論理をサーバーがクライアントに転送することによって機能が拡張されてもよい。
【００５１】
ソフトウェア・サービス実行システムのコンテキストでは、クライアントは、データ処理要求をするエンティティであり、サーバーはソフトウェア・サービスを実行するウェブ・サーバーまたは他のコンピューティング装置である。データ処理装置１０は、ソフトウェア・ライブラリ１２の一部としてまたは他の仕方で、前記複数のソフトウェア・サービスについての実行プラットフォーム、たとえばプロセッサおよびメモリを有していてもよい。処理されているデータを記憶し、ソフトウェア・サービスの処理論理を実行するためである。ソフトウェア・ライブラリ１２によって記憶される前記複数のソフトウェア・サービスは、データ処理装置１０による実行のためのスタンドアローンのソフトウェア・サービスであってもよく、あるいは外部で保持され実行されるソフトウェア・サービスのラッパーであってもよい。
【００５２】
一様なインターフェースについての指導原理は手短かには次のようにまとめられる：
・クライアントからの要求において同定される（これはウェブ・ベースのシステムではURI（一様リソース識別子）を介してであろう）ことのできるドメイン内の個別の資源。資源自身は、クライアントに返される表現とは別個のエンティティである；
・クライアントによって保持される資源の表現は、サーバー上の資源を修正または削除するために十分な情報をクライアントに与えるのに十分である；
・クライアントとサーバーとの間の各メッセージは、受信者が該メッセージを処理するための十分な情報を含む。
・サーバーからクライアントに提供される資源の表現は、関係した資源へのハイパーテキスト・リンクを含むべきである。
【００５３】
RESTアーキテクチャー・スタイルの肯定的な側面は、情報モデルとうまくつながるということである。情報モデルとは、ドメイン内の項目およびそれらの項目間の関係の形式化された記述である。RESTフルなAPIにおいて許容される動作は制約（固定）されており、これが、通例はインターフェースを情報モデルとつなぐ際に問題につながる貧弱なプログラミング挙動の望まれない副作用を避ける。
【００５４】
実のところ、特定のドメインについてのRESTフルなAPIは、純粋にそのドメインのための情報モデルに関して、該モデルが種々のデータ・フォーマットの内部でどのように見えるかによって、定義されてもよい。データ・フォーマットは情報モデルのワイヤ・レベル（低レベルまたは実装レベル）の顕現である。残念ながら、現在使われている諸APIは、情報モデル化へのアプローチ、これがデータ・フォーマットにおいてどのように見えるか、およびHTTPの意味内容が問題のAPI（単数または複数）の特定ドメインにおいてどのように使用されるかに関して不一致を示している。この一貫性の欠如は、RESTフルなプロトコルの潜在的な恩恵、たとえば使用可能なツールキット（たとえば標準コード）および汎用クライアント・エージェント（ブラウザーと等価）の可能性が失われるので、問題である。
【００５５】
仮想アシスタント・コンポーネントは、メモリに記憶され、プロセッサによって実行される命令によって実現されてもよい。
【００５６】
複数のユーザー入力コマンドをユーザー・インターフェースを介して受け取る段階であって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、段階は、図２ではS202によって表わされる。段階S202においてユーザー・コマンドを受け取ることは、図１のユーザー・インターフェース１１によって実行されてもよい。
【００５７】
ユーザー・インターフェース１１は、複数のユーザー入力コマンドを受け取るよう構成されている。各ユーザー入力コマンドは少なくとも部分的には、ドメイン固有言語において表現されており、データ処理対象およびデータ処理要求を定義する。データ処理対象は、該データ処理対象（すなわち、ファイルのような何らかのデータ）がアクセス可能であるURIまたはURLによって定義されてもよい。ドメイン固有言語は、データ処理対象を、ユーザー入力の次の部分がデータ処理対象であることを示す何らかのシンタックスまたは意味的情報、たとえば[VERB][TARGET]によって、データ処理対象（data  processing  target）を定義してもよい。それにより、ユーザー入力のドメイン固有言語における動詞（verb）の使用はデータ処理対象が次にくることを示す。
【００５８】
ドメイン固有言語（domain  specific  language）は、自然言語入力のうちで認識可能であり、装置１０においてデータ処理要求の特定の要素にマッピングされる用語の語彙である。
【００５９】
ユーザー・インターフェース１１は、ユーザー入力コマンドが装置１０に入力されることができるようにするためにユーザーと対話する。ユーザー・インターフェース１１は、ユーザーと対話するための少なくとも一つの手段を有する。たとえば、ユーザー・インターフェースは：ウェブ・インターフェース；アプリケーション・プログラミング・インターフェース；コマンドライン・インターフェース；ユーザー音声コマンド・インターフェース；およびグラフィカル・ユーザー・インターフェースのうちの少なくとも一つを含む。ユーザー・インターフェース１１によって受け取られるユーザー入力は少なくとも部分的にはドメイン固有言語で表わされる。ユーザー・インターフェース１１によって受け取られたユーザー入力からドメイン固有言語が完全に不在であれば、ユーザー・インターフェースは新たな入力を求めるメッセージを出力してもよい。パーサー１３は、ユーザー・インターフェース１１に、ユーザー入力においてドメイン固有言語が不在か否かを通知することを要求されてもよい。
【００６０】
ユーザー・インターフェース１１は、処理結果を、完全なまたは要約された形でユーザーに対して出力する手段をも提供する。ユーザー・インターフェース１１は、ユーザーに対して次のデータ処理アクションを、ドメイン固有言語で表現され（よってユーザーにとって理解可能であり）ユーザー入力としてユーザーによって選択されることのできるデータ処理要求候補の形で、提案する手段をも提供する。たとえば、そのようなデータ処理要求候補は、「私に［データ処理対象の定義］を［データ処理機能の意味的表現］してほしいですか？」のような文において出力されてもよい。これに対して、ユーザーからの「はい（yes）」が、定義されたデータ処理対象に対してデータ処理機能を実行するソフトウェア・サービスの実行を開始するのに十分であろう。
【００６１】
各ユーザー入力コマンドから：ドメイン固有言語からのデータ処理要求；および定義されたデータ処理対象を抽出する段階は、図２において段階S203によって表わされている。抽出されたデータ処理要求およびデータ処理対象の略称として用語、パラメータが使われることを注意しておく。図２の段階S203においてユーザー・コマンドからパラメータを抽出することは、図１のパーサー１３によって実行されてもよい。
【００６２】
パーサー１３は、ユーザー入力から、ソフトウェア・サービスの実行を制御するために使用できる情報を抽出するよう構成される。ソフトウェア・サービスはそれぞれ入力データに対して単一のデータ処理機能を実行することに留意すると、抽出することが要求される情報は、要求されたデータ処理機能（単数または複数）および処理するための入力データがアクセス可能な位置である。具体的には、パーサー１３は、各ユーザー入力コマンドから：ドメイン固有言語からのデータ処理要求；および定義されたデータ処理対象を抽出するよう構成される。
【００６３】
パーサー１３は、ユーザー入力が表現されているドメイン固有言語と、ソフトウェア・サービス実行スケジューラの語彙との間の翻訳機のはたらきをし、それがユーザーによって定義されたデータ処理要求を充足するために実行すべきソフトウェア・サービスを選択する。その目的に向け、パーサー１３はドメイン固有言語マップを記憶していてもよい。該ドメイン固有言語マップは、ドメイン固有言語要素の語彙の各構成員をデータ処理要求要素にマッピングする。
【００６４】
パースされたデータ処理要求およびデータ処理対象は、パーサー１３によって出力され、ソフトウェア・サービス実行スケジューラ１４および知識ベース１７の両方によって取得される。
【００６５】
前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持する段階は、図２の段階S204によって表わされる。もちろん、該維持は当該方法の複数の実行を通じて持続する。ユーザー・コマンドおよびパラメータのレコードを維持する図２の段階S204は、図１の知識ベース１７によって実行されてもよい。
【００６６】
したがって、知識ベース１７は、ユーザーによって命令されたデータ処理およびそれに対して該データ処理が命令されているデータのレコードを記憶のために受け取る。データは、そのレコードにおいて、たとえば該データのうちのデータ項目の一つまたは複数のデータ型によって特徴付けられてもよい。
【００６７】
パーサーから前記データ処理要求を取得し、前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめる段階は、図２において段階S205によって表わされている。スケジュールをまとめる段階S205は、図１のソフトウェア・サービス実行スケジューラ１４によって実行されてもよい。
【００６８】
パースされたデータ処理要求は、一つまたは複数のデータ処理機能を定義する。パースされたデータ処理要求の何らかの処理が、構成要素データ処理機能（単数または複数）を決定するために、ソフトウェア・サービス実行スケジューラ１４によって実行されるのであってもよい。すなわち、構成要素データ処理要求は暗黙的に前記パースされたデータ処理要求によって定義されていて、ソフトウェア・サービス実行スケジューラ１４によって抽出されて（すなわち明示的にされて）もよい。これはたとえば、ソフトウェア・サービス自身を、またはサービス実行スケジューラ１４によって維持されているソフトウェア・サービスのレジストリを参照することによる。たとえば、パースされたデータ処理要求は、「要約する（summarize）」であってもよく、データ処理対象は複数の別個のリレーショナル・データベースであってもよい。あるソフトウェア・サービスは、それが要約するデータ処理機能を実行することを示すレジストリ・エントリーをもつが、レジストリ・エントリーは、入力データが単一のテーブルとしてローカルに記憶されるべきであることを指定する。別のソフトウェア・サービスは、それがロードするデータ処理機能を実行することを示すレジストリ・エントリーをもち、入力データは外部データベースであり、データ処理結果はデータのローカルに記憶されたテーブルである。別のソフトウェア・サービスは、それがローカルに記憶されたテーブルに対するテーブル結合を実行することを示すレジストリ・エントリーをもち、複数のローカルに記憶されたテーブルを入力として取り、処理結果として、単一のローカルに記憶されたテーブルを生成する。この複合例は、ソフトウェア・サービス実行スケジュールをまとめるための技法を例解する。
【００６９】
要するに、データ処理要求は、処理結果に関して定義されてもよい。ソフトウェア・サービス実行スケジューラ１４は、ソフトウェア・ライブラリ１２の諸ソフトウェア・サービスのレジストリを記憶し、諸ソフトウェア・サービスは、それらが動作できる対象となる入力データおよび生成される出力に関して定義される（たとえば、入力および出力の両方がデータ型またはその意味的記述子によって定義される）。ソフトウェア・サービス実行コントローラ１４は、パースされたデータ処理対象のデータの型を識別すると、パースされたデータ処理対象のデータの型からデータ処理要求の処理結果のデータ型へと進む段階的な仕方でソフトウェア・サービスを選択することによってスケジュールをまとめる。
【００７０】
より単純な例では、それぞれのパースされたデータ処理要求は、特定のソフトウェア・サービスによって実行される単一のデータ処理機能に対応していてもよく、よってスケジュールをまとめることは単に、そのデータ処理機能をそのソフトウェア・サービスにマッチさせるプロセスである。
【００７１】
データ処理要求を充足するために構成要素データ処理機能が実行される順序も、パースされたデータ処理要求によって定義されてもよい。
【００７２】
実行スケジュールまたは実行プランとも称されうるスケジュールは、どのソフトウェア・サービスをどの順序で（順序は複数のソフトウェア・サービスの並列の実行を含んでいてもよいことに注意）どの入力データを用いて実行すべきかを同定する計画である。スケジュールの編纂および実行の制御は必ずしも直列に実行される段階ではない。まとめる処理が、規定されているまたはあらかじめ決定されているのではなく適応的であってもよい。実行スケジュールのある要素をまとめることは、実行スケジュールにおいて先行する諸ソフトウェア・サービスの実行の帰結に依存してもよい。スケジュールは、ソフトウェア・サービス実行コントローラ１４によって出力され、ソフトウェア・サービス実行コントローラ１５によって取得される。適応的なまとめに使うために、ソフトウェア・サービスからの処理結果がソフトウェア・サービス実行スケジューラ１４に入力されてもよいことを注意しておく。
【００７３】
スケジュールは、たとえばソフトウェア・サービスのデータ処理機能についての注釈を使って、パースされたデータ処理要求を充足するためにソフトウェア・サービス実行スケジューラ１４によってまとめられる。該注釈はレジストリに記憶されていてもよい。たとえば、パースされたデータ処理要求が、処理結果として求められる特定のデータ型を指定していてもよく、たとえば該特定のデータ型を意味的にまたは特定のファイル名もしくはファイル名の群を使って指定してもよい。実行スケジュールは、ソフトウェア・サービス実行スケジューラ１４によって、ソフトウェア・ライブラリ１２によって記憶されているソフトウェア・サービスまたはソフトウェア・サービスの系列を決定することによって、まとめられる。決定されるソフトウェア・サービスまたはソフトウェア・サービスの系列は、実行されたときに（系列の場合には、該系列における先行する諸ソフトウェア・サービスとともに、該系列における一つまたは複数の先行するソフトウェア・サービスの処理結果（単数または複数）を入力として取って）パーサー１３によって出力されたデータ処理対象を、処理結果として求められている、パースされたデータ処理要求によって指定されている特定のデータ型に変換するものである。
【００７４】
各ソフトウェア・サービスは、それぞれのデータ処理機能を実行するよう構成される。各ソフトウェア・サービスによって実行されるデータ処理は、特定の型の入力データを特定の型の出力データに変換する。この単一の入力型対出力型の関係の例外は、時間切れなど、その出力型の出力データを生成しない、ソフトウェア・サービスの失敗の事象である。型は、データの型を意味し、たとえば単一のまたは一群のファイル名拡張子またはファイル型によっておよび／またはデータの意味的な記述子（単数または複数）によって指定されてもよい。
【００７５】
一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御する段階であって、前記定義されたデータ処理対象が前記制御された実行への入力データである、段階は、図２では段階S206によって表わされている。スケジュールの実行を制御する段階S206は、図１のソフトウェア・サービス実行コントローラ１５によって実行されてもよい。制御された実行の処理結果を出力する段階は図２ではS207によって表わされており、図１のソフトウェア・サービス実行コントローラ１５によって実行されてもよい。
【００７６】
スケジュールは、ソフトウェア・サービス実行スケジューラ１４によって出力され、ソフトウェア・サービス実行コントローラ１５によって取得される。ソフトウェア・サービス実行コントローラ１５は、各ユーザー入力コマンドについて、一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御して、該制御された実行の処理結果を出力するよう構成される。定義されたデータ処理対象が制御された実行への入力データである。ソフトウェア・サービス実行コントローラ１５によってスケジュールの実行を制御することは、スケジュールによって決定された順序／タイミングで、スケジュールによって指定された入力データをもって、実行すべきそれぞれのソフトウェア・サービスへの呼び出しを発するプロセスである。図１においてソフトウェア・サービス実行コントローラ１５とソフトウェア・ライブラリ１２との間の「実行制御」と記された線は、この実行の制御を示している。たとえば、実行を制御することは、スケジュールに含まれるソフトウェア・サービスのそれぞれを、呼び出しにおいて指定される入力データに対してそれぞれのデータ処理機能を実行するために呼び出すことを含む。スケジュール中のソフトウェア・サービスの系列の最初のものに対する入力データは、ユーザー入力において定義されているデータ処理対象であり、スケジュール中のその後のソフトウェア・サービスの入力データはスケジュール中の隣接する先行するソフトウェア・サービスの処理結果である。入力データは、それがアクセスできるURIまたはURLの参照によって指定されてもよい。
【００７７】
図２は、処理結果が装置から（たとえばユーザーに）、また装置内のさらなるプロセスに出力されてもよいことを示している。
【００７８】
実行の帰結は、それぞれのユーザー入力についてのスケジュールの残りの部分をまとめる／編纂する／コンパイルすることにおいて使うため、実行呼び出しに応答してソフトウェア・サービス実行スケジューラ１４に返されてもよい。該帰結はたとえば、処理結果が生成されたかどうかまたは実行が時間切れになったかどうかの指示であってもよい。任意的に、応答は、実行されたソフトウェア・サービスによって処理結果として出力されるデータのサイズの指標のような情報を含んでいてもよい。
【００７９】
任意的に、ソフトウェア・サービス実行スケジューラ１４は、ユーザー・インターフェース１１を介して、特定のデータ処理機能を実行するために好適な複数のソフトウェア・サービスの間で選択をするようユーザーに頼るよう構成されていてもよい。
【００８０】
ソフトウェア・サービス実行スケジューラ１４は、ソフトウェア・サービス毎のエントリーをもつ諸ソフトウェア・サービスのレジストリを記憶していてもよい。エントリーは、ソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を定義する。該定義は、ドメイン固有言語またはドメイン固有言語にマッピングされる言語で表わされていてもよい、データ処理機能の意味的な記述子を用いていてもよい。レジストリにおいてソフトウェア・サービスについて指定されているデータ処理機能とデータ処理要求の一部をなすデータ処理機能（命令されたデータ処理機能）との間の一致が、その処理機能が指定されているソフトウェア・サービスが、命令されたデータ処理機能を実行するために好適であることの指示である。一致は、命令されたデータ処理機能およびレジストリ内のソフトウェア・サービスについて指定されているデータ処理機能の定義に基づく。一致は、意味内容に基づいていてもよい。たとえば、データ処理機能はレジストリにおいて意味的に定義され（たとえば「トークン化する」（tokenize）；「ロードする」（load）；「要約する」（summarize）；「比較する」（compare））、命令されたデータ処理機能が同じまたは同様の用語（単数または複数）を使って意味的に定義され、よって、要求されたデータ処理機能の意味的定義とデータ処理機能の意味的定義の間の意味的比較が閾値より高い類似性スコアを与えることが、「一致」〔マッチ〕であると見なされる。代替的または追加的に、命令されたデータ処理機能の定義は、入力データおよび要求される処理結果を用いて定義されてもよく、それぞれをデータ型の意味的記述子（「表データ」、「マトリクス」、「文書」、「ベクトル」）またはファイル名拡張子によって定義してもよい。レジストリにおいて指定されるデータ処理機能は同じ仕方で定義されてもよく、よって、一致は、一致する入力および出力のファイル名拡張子または一致する（すなわち閾値より高い意味的類似性の）入力および出力の意味的データ型記述子である。意味的データ型記述子は、データによってインスタンス化される概念の意味的表現である。
【００８１】
前記出力された処理結果を取得して、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドをユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力する段階は、図２の段階S208によって表わされている。要求候補を同定して出力する図２の段階S208は、図１の結果処理器１７によって実行されてもよい。
【００８２】
ひとたびスケジュールの実行が完了したら、処理結果は結果処理器１６に出力される。たとえば、スケジュールがソフトウェア・サービスの系列を定義していて、各ソフトウェア・サービスが系列中の先行部分の処理結果を入力データとして取る場合、前記処理結果は、系列中の最後のソフトウェア・サービスの処理結果であってもよい。図１では特定的に図示していないが、結果処理器１６は、パースされたデータ処理要求を、特に、パースされたデータ処理要求の、ユーザー入力に応答して求められている出力データの形または宛先を示す何らかの特定の要素を、通知されてもよい。
【００８３】
結果処理器１６は、出力された処理結果を取得し、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドとして、ユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力するよう構成される。換言すれば、結果処理器１６は、どのデータ処理要求がどの対象データに対して実行されたかのレコードを参照して、ユーザーに提案すべき次のデータ処理要求を決定する。
【００８４】
単純な例では、知識ベースにおけるデータ処理対象のレコードは、データ処理対象の一つまたは複数の特徴付けの値を含む。そのような特徴付けは：データの量；（シンタックスに関する）データ型；意味的記述子（データによってインスタンス化される概念の意味的表現）を含みうる。結果処理器１６は、処理結果についての前記特徴付けのうち一つまたは複数の特徴付けの値を取得する。単一の処理結果が種々の型のデータおよび種々の意味的記述子をもつデータを含んでいてもよいことを注意しておく。その場合、複数の特徴付けがそれぞれ、処理結果のそれぞれの部分（たとえば各列）に当てはまり、候補となるデータ処理要求を見出す手順は、その単一の処理結果について複数回実行されることができる。
【００８５】
処理結果（の全部または一部）の特徴付けは、データ処理要求候補の選択を通知するために多くの仕方で使用されることができる。二つの具体的技法を述べる。
【００８６】
第一の技法では、処理結果特徴付けは、記録されている処理対象特徴付けと（たとえばベクトル距離比較を使って）比較され、処理結果特徴付けと、それぞれの処理対象特徴付けとの間の類似性の定量化を得る。閾値が設定され（あらかじめ定義されていてもよく、または固定した比率で設定されてもよい）、類似性の定量化が閾値を超える記録されている処理対象特徴付けのみが考慮される。考慮されるもののうち、最もよくある対応するデータ処理要求が決定され（各レコードはデータ処理要求およびデータ処理対象を含むことに注意）、ユーザーに対してデータ処理要求候補として提案するために選択される。
【００８７】
第二の技法では、処理結果特徴付けは、記録されている処理対象特徴付けと（たとえばベクトル距離比較を使って）比較され、処理結果特徴付けと、それぞれの処理対象特徴付けとの間の類似性の定量化を得る。最もよくある対応するデータ処理要求を見出すための頻度カウントへの寄与が、類似性の定量化に従って重み付けされる。よって、たとえば、前記処理結果とは非常に異なる特徴付けがされるデータに対してよく実行されるデータ処理要求は、相対的に小さな頻度カウントを積み上げる。一方、それほどよくではないが、前記処理結果と非常に類似した特徴付けのデータに対して実行されるデータ処理要求は、相対的により大きな頻度カウントを積み上げる（前記処理結果は、次のデータ処理要求が実行される対象となるデータであることに注意）。
【００８８】
知識ベース１７によって維持されるレコードを使って結果処理器１６によって選択されたデータ処理要求候補は、ドメイン固有言語で表現されて、ユーザー・インターフェースを介してユーザーに対して出力され、処理結果（の全部または一部）を処理対象として同定する。ユーザーは、以前のユーザー・アクションの経験に基づいて到達された次のデータ処理要求についての提案を提示され、該次のデータ処理要求は、他のユーザー入力と同じようにパースし、スケジュールし、実行するために、ユーザーによって選択可能である。
【００８９】
図３は、ユーザーとデータ処理装置の間の例示的なやりとりを示している。データ処理装置はイニシャルAIDA〔アイーダ〕（Artificial  Intelligence  for  Data  Analytics［データ解析のための人工知能］）によって表わされている。図３の例におけるソフトウェア・サービスのデータ処理機能はデータ解析処理機能である。
【００９０】
図３の例におけるユーザー・インターフェースは対話的シェルである。他の形のやりとりが用いられることもできる。たとえば、電子メール、チャット・ウィンドー、対話的ウェブページ、音声コマンド（多くのアシスタントについて普通であるような）、ジェスチャーなどである。
【００９１】
図３の例は、データ処理装置１０の機能のさまざまな要素を例示する。
【００９２】
ライン１では、ユーザーがセッションを開始する。用語「やあ」（Hi）は、ドメイン固有言語であり、パーサー１３によってユーザー・セッションを開始するものとして解釈される。
【００９３】
ライン２では、ユーザー認証の結果がユーザー・インターフェース１１によって出力される。ユーザーID「デーヴ」が認証プロセスを介して取得されている。本例では、認証処理はデータ処理装置１０によって、ユーザーに対して透明な仕方で実行され、トークン・ベースである。ユーザー認証は、ユーザー・セッションを開始するライン１のユーザー入力によってトリガーされる。ユーザーが認証されることができない場合には、ユーザーが新規ユーザーである可能性がある。新規ユーザーについては、ユーザーおよびパスワードの組み合わせが要求される。
【００９４】
データ処理装置１０はユーザー毎にユーザー選好を記憶していて、認証に際してそれが位置特定され、実装される。認証に続いて、知識ベースによって維持されているレコードを使ってユーザーに提示するためのデータ処理要求候補を選択する機械学習アルゴリズムが、認証されたユーザーからの過去のデータ処理要求に関係するレコードを使って、トレーニングされ、または他の仕方で実行のために準備されてもよい。たとえば、そのようなレコードは、機械学習アルゴリズムがアクセスできるキャッシュにロードされてもよい。
【００９５】
ソフトウェア・サービスは、データ科学およびデータ解析のためのデータ処理機能を実行する。ライン３のようにユーザーによって出された質問に応答してデータ処理装置１０によって出力される情報は、データ科学専門家に有用な情報を提供するよう調整される。たとえば、ライン４において、ユーザー・インターフェースはユーザーに対して、サポート目的のために使用できる正確な情報を出力する。
【００９６】
ユーザー入力はパーサー１３によってパースされる。ライン３の例では、用語「ねえ」（tell  me）はドメイン固有言語として認識されず、パーサー１３によって無視される。他方、用語「君の名前は？」（what  is  your  name）は、データ処理装置１０、特にその仮想アシスタント・コンポーネントについてのシステム情報を出力させる命令にマッピングされるドメイン固有言語である。
【００９７】
ユーザーが情報を省いて、ユーザー入力が部分的なデータ処理要求を定義するだけである、またはデータ処理対象を曖昧さなく特定しないときは、パーサー１３は次のような処理を実行する：
可能なときには欠けている情報を推定する。
ユーザー・インターフェースを介して曖昧なコンテキストにおける一組の可能性を表示する。
上記のオプションが現実的でないときにはユーザー・インターフェースを介して欠けている情報を求めるプロンプトをユーザーに対して出力する。
上記のすべてが失敗するときには文を表現し直すようユーザーに対する要求をユーザー・インターフェースを介して出力する。
【００９８】
ライン１５の例では、パーサー１３は、自然言語処理およびドメイン固有言語マッピングを使って入力文を処理することによって、「それ」（it）をデータ処理対象として識別している。推定により、データ処理対象が指定されない場合、最も最近入力された、ユーザーによって指定されたデータ処理対象が指定されたデータ処理対象であると推定するという推定規則を使う。パーサー１３は、ユーザー・インターフェース１１を介して、推定された情報の確認をユーザーに求めてもよい。
【００９９】
ライン５は、仮想アシスタント・コンポーネントが非常に高レベルのプログラミング言語として機能する機能を示している。ユーザー・インターフェース１１およびパーサー１３を介して、変数を定義し、それらに値を割り当てるユーザー入力が受領される。ライン５の例では、データ処理対象はhttp://example.com/file.csvとして指定され、「として」（英語の例ではas）がドメイン固有言語として認識され、パーサー１３はその前（英語の例では後）に、指定されたURLに記憶されているデータに割り当てられる名前がくることを知っている。パーサー１３は、同じセッションにおける将来のユーザー入力をパースするとき、「データセット１」（dataset1）を、指定されたURLに保持されているデータを定義しているものとして解釈する。
【０１００】
ユーザーによって利用される用語「探訪」（explore）は、いくつかのソフトウェア・サービスがソフトウェア・サービス実行スケジューラ１４によってスケジュールされることを引き起こす。用語「探訪」はドメイン固有言語であって、パーサー１３によって、データ処理対象を要約するデータ処理要求として解釈される。要約は、前記ソフトウェア・サービスのうち一つまたは複数のソフトウェア・サービスのデータ処理機能であり、ソフトウェア・サービス実行スケジューラ１４は、これが要約を生成するデータ処理要求に対応することを知っている。ソフトウェア・サービス実行スケジューラ１４は、データ処理対象の要約を出力するために、実行スケジュールをまとめるよう構成されている。ソフトウェア・サービス実行スケジューラ１４によって保持される情報に基づいて、リモートに保持されているCSVファイルの入力を用いて要約という処理結果を生成することのできるソフトウェア・サービスはないが、レジストリ・エントリーがローカルに保持されたCSVファイルの入力からの要約という処理結果を示しているソフトウェア・サービスと、レジストリ・エントリーがリモートに保持されたCSVファイルの入力からローカルに保持されたCSVファイルという処理結果を示している別のソフトウェア・サービスがある。
【０１０１】
まとめられたスケジュールは、ソフトウェア・サービス実行コントローラ１５に出力され、ソフトウェア・サービスはデータ処理対象に対して実行される。処理結果は、ライン６において結果処理器１６を介してユーザーに出力される。ライン６に表示される要約は代表的であり、ソフトウェア・サービスはデータ処理対象のずっと詳細な要約を生成してもよいことを注意しておく。
【０１０２】
より複雑な例では、未知のコンテンツをもつウェブページをポイントするURLを探訪する命令が、適応的に動作するソフトウェア・サービス実行スケジューラ１４によって異なる仕方で扱われてもよい。まず、ウェブページの内容にアクセスするためにプロトコル（単数または複数）を確立するためにソフトウェア・サービスの実行をスケジュールし、その後、該ソフトウェア・サービスの実行に続いて、該ソフトウェア・サービスから（一つまたは複数のプロトコルを定義する）処理結果を受け取り、次いで定義されたプロトコル（単数または複数）に基づいてソフトウェア・サービスの新たなスケジュールをまとめる。このようにして、データ処理装置１０は、ユーザーには透明な仕方で、ソフトウェア・ライブラリ１２に記憶されているソフトウェア・サービスを使って、いくつかの異なるプロトコルを扱う（http、https、ftp、sftpなど）。データ処理装置１０は、自然言語構造およびドメイン固有言語要素に基づく直観的なインターフェースをユーザーに提供する。
【０１０３】
ライン６は、結果処理器１６が処理結果を（行ごとまたは列ごとに）特徴付け、該特徴付けを同じユーザーからの以前に（知識ベース１７に）記録された関連するデータ処理要求を見出すためのキーとして使って、今の処理結果の特徴付けと特徴付けを共有するデータ処理対象のレコードと、記録された事例におけるユーザーのデータ処理要求とを見出すことを例証している。機械学習アルゴリズムがデータ特徴付けをキーとして使って関連するレコードを検索し、見出し、それらの関連するレコードにおけるデータ処理要求のうちから、どれをユーザーに対して、データ処理要求候補として出力する（ライン６、８、１０に例示）かを決定する。関連するレコードにおいて複数が定義されている場合に機械学習アルゴリズムが複数から一つのデータ処理要求を決定する基礎となるものは、実装依存である。第一の例示的な技法では、機械学習アルゴリズムは単に最も最近のレコード（レコードはタイムスタンプ付けされているとする）または最も最近のn（たとえばn＝10）個のレコードのうちで最も人気のあるレコードを見出してもよい。第二の例示的技法では、機械学習アルゴリズムは、記録されたデータ処理対象の、問題となっている処理結果に対する特徴付けの類似性に基づいて、各レコードの関連性（relevance）を定量化して（ここで、レコードが関連すると見なされるために、定量化に対して、閾値となる最小値が課される）、記録されている各データ処理要求についてスコアが計算されてもよい。ここで、スコアは、そのデータ処理要求が定義されている関連するレコードのカウントである。任意的に、レコードのカウントへの寄与は、それぞれの関連性の定量化に従って重み付けされてもよい。
【０１０４】
処理結果の全部または一部のデータを特徴付けすることによって、結果処理器１６は、ファイルの内容を理解していると見なされることができ、機械学習アルゴリズムを使って、ユーザーの以前の決定を知的に使って、現在のコンテキスト（すなわち、データ特徴付けおよびユーザーの以前の決定および選好によって与えられるコンテキスト）において何が理にかなうかに基づいて、次のデータ処理動作を提案する。この特定の例では、システムは、データセット中の一つの列の型を検出し、時系列解析を実行する。
【０１０５】
ライン１０は、結果処理器１６が、特定のデータ処理要求候補を出力した動機の表現をも出力してもよいことを例証している。加えて、ライン１０は、データセットに対して実行されるデータ処理機能が、たとえば回帰モデルのトレーニングのような非常に高レベルをもつことを例示している。
【０１０６】
ライン１３は、データ処理装置１３に対する持続レイヤーのアクセス可能性を示している。ソフトウェア・ライブラリ１２からのソフトウェア・サービスは、「記憶する」（store）ユーザー入力に際して持続レイヤーにデータ処理対象を書き込む動作を実行するよう構成される。持続レイヤーは、ライン１３の例のようにユーザーの明示的な命令に際してアクセスされてもよく、あるいはユーザーからの明示的な命令なしに他のソフトウェア・サービスによって自動的に使われてもよい。これは実行される動作、データの特性およびユーザーの以前の選好に依存する。システムがもつ情報が所与のコンテキストにおいて決定をするのに十分でない場合には、システムは、ユーザー・インターフェース１１を介してユーザーに質問をプロンプト出力してもよい。
【０１０７】
ライン１５は、自然言語のシンタックスと整合して、コンマ／読点を使って動作の諸シーケンスを分離するためのシンタックスを例証している。事前の構成設定なしには、システムは他のセパレーターおよびそれらの組み合わせを使う自由を提供する。たとえば、「，」、「．」、「および」（and）または「次いで」（then）である。
【０１０８】
データ処理装置１０の知能のもう一つの例として、ライン１６において、ソフトウェア・サービス実行コントローラ１６ソフトウェアの制御のもとでのソフトウェア・サービスの実行があらかじめ定義された閾値時間長さよりも長くかかるまたはかかると期待されるときは、タスクは自動的にバックグラウンドに送られ、ユーザーはユーザー・インターフェース１１を介して通知され（ライン１６参照）、新しいユーザー入力が実行中に提出されることができることが見て取れる。
【０１０９】
結果処理器１６が関連するレコードをみつけられない、すなわち、処理結果の全部または一部の特徴付けに基づいて、データ処理要求の知識ベース１７に、データ処理対象として同様の特徴付けのデータをもつレコードがない場合がありうる。ライン８では、ユーザーが動作について確認を求められていることが見て取れる。たとえば、関連するレコードがないとき、そのような提案は、代わりに、問題の処理結果と同じまたは同様の仕方で特徴付けされる入力データを定義するソフトウェア・サービスについてのレジストリ・エントリーに基づいていてもよい。数回の逐次反復後、結果処理器は機械学習機能を使って、同様な特徴付けのデータに関して通例なされる動作を先を見越して実行する、または決して使われない動作についての質問をスキップするのでもよい。
【０１１０】
図４は、本発明を具現し、ある実施形態のデータ処理方法を実装するために使用されうるウェブ・サーバーのようなコンピューティング装置のブロック図である。本コンピューティング装置は、プロセッサ９９３およびメモリ９９４を有する。任意的に、本コンピューティング装置は、他のコンピューティング装置との、たとえば発明実施形態の他のコンピューティング装置との通信のためにネットワーク・インターフェース９９７をも含む。
【０１１１】
たとえば、ある実施形態は、そのようなコンピューティング装置のネットワークから構成されていてもよい。任意的に、コンピューティング装置は、キーボードおよびマウスのような一つまたは複数の入力機構９９６および一つまたは複数のモニターのようなディスプレイ・ユニット９９５をも含む。これらのコンポーネントはバス９９２を介して互いに接続可能である。
【０１１２】
メモリ９９４はコンピュータ可読媒体を含んでいてもよい。この用語は、コンピュータ実行可能命令を担持するまたはデータ構造が記憶されるよう構成された単一の媒体または複数の媒体（たとえば、中央集中式のまたは分散式のデータベースおよび／または関連するキャッシュおよびサーバー）を指しうる。コンピュータ実行可能命令はたとえば、汎用コンピュータ、特殊目的コンピュータまたは特殊目的処理装置（たとえば一つまたは複数のプロセッサ）に一つまたは複数の機能または動作を実行させることによってアクセス可能な命令およびデータを含んでいてもよい。このように、用語「コンピュータ可読記憶媒体」は、機械による実行のための、該機械に本開示の方法の任意の一つまたは複数を実行させる一組の命令を、記憶、エンコードまたは担持することのできるいかなる媒体をも含みうる。このように、用語「コンピュータ可読記憶媒体」は、半導体メモリ、光学式媒体および磁気式媒体を含むがそれに限られないと解釈されうる。限定ではなく例として、そのようなコンピュータ可読媒体は、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM）、コンパクトディスク読み出し専用メモリ（CD-ROM）または他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）を含みうる。
【０１１３】
プロセッサ９９３は、コンピューティング装置を制御し、処理動作を実行する、たとえばメモリに記憶されたコードを実行して、本稿および請求項に記載されるソフトウェア・ライブラリ、ユーザー・インターフェース、パーサー１３、知識ベース、ソフトウェア・サービス実行スケジューラ、ソフトウェア・サービス実行コントローラおよび結果処理器のさまざまな異なる機能を実装するよう構成される。メモリ９９４はプロセッサ９９３によって読み書きされるデータを記憶する。本稿で言及されるところでは、プロセッサは、マイクロプロセッサ、中央処理ユニットなどといった一つまたは複数の汎用処理装置を含んでいてもよい。プロセッサは、複雑命令セット・コンピューティング（CISC）マイクロプロセッサ、縮小命令セット・コンピューティング（RISC）マイクロプロセッサ、超長命令語（VLIW:  very  long  instruction  word）マイクロプロセッサまたは他の命令セットを実装するプロセッサまたは命令セットの組み合わせを実装する諸プロセッサを含みうる。プロセッサは、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、デジタル信号プロセッサ（DSP）、ネットワーク・プロセッサなどといった一つまたは複数の特殊目的処理装置をも含みうる。一つまたは複数の実施形態では、プロセッサは、本稿で論じられる動作および段階を実行するための命令を実行するよう構成されている。
【０１１４】
ディスプレイ・ユニット９９７は、コンピューティング装置によって記憶されているデータの表現を表示し、カーソルおよびダイアログ・ボックスならびにスクリーンを表示し、ユーザーとコンピューティング装置に記憶されているプログラムおよびデータとの間の対話を可能にする。入力機構９９６はユーザーがデータおよび命令をコンピューティング装置に入力できるようにしうる。
【０１１５】
ネットワーク・インターフェース（ネットワークI/F）９９７はインターネットのようなネットワークに接続されてもよく、該ネットワークを介して他のそのようなコンピューティング装置に接続可能である。ネットワークI/F  ９９７はネットワークを介した他の装置との間のデータ入出力を制御しうる。マイクロフォン、スピーカー、プリンター、電源ユニット、ファン、ケース、スキャナ、トラックボールなどといった他の周辺装置がコンピューティング装置に含まれていてもよい。
【０１１６】
図１のソフトウェア・ライブラリ１２および図２の複数のソフトウェア・サービスを記憶する段階S201は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行して、ネットワークI/F  ９９７を介してデータを交換することであってもよい。特に、プロセッサ９９３は、図１において「実行制御」の矢印によって示されるように、ネットワークI/Fを介してまたは他の仕方で、ソフトウェア・サービス実行コントローラ１５から実行制御を受け取り、受け取った実行制御によって示されるソフトウェア・サービスを実行するための処理命令を実行する。さらに、プロセッサ９９３は、接続された記憶ユニット上のソフトウェア・ライブラリ１２にソフトウェア・サービスを記憶するための処理命令を実行してもよい。さらに、プロセッサ９９３は、ネットワークI/F  ９９７を介して、処理結果を結果処理器１６に処理のために送信するための処理命令を実行してもよい。
【０１１７】
図１のユーザー・インターフェース１１および図２のユーザー・コマンドを受け取る段階S202はプロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行し、ネットワークI/F  ９９７または他の入力手段を介してユーザーとデータを交換することであってもよい。特に、プロセッサ９９３は、ネットワークI/F  ９９７または他の入力手段を介してユーザーからユーザー入力を受け取り、図１の「ユーザー入力」矢印によって示されるように該ユーザー入力をパーサー１３に伝送するための処理命令を実行する。加えて、ユーザー・インターフェースは、データ処理要求候補をユーザーに対して選択可能なユーザー入力コマンドとして出力するための処理命令を実行する。
【０１１８】
図１のパーサー１３および図２のユーザー・コマンドからパラメータを抽出する段階S203は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶されている処理命令（プログラム）を実行して、ユーザー・インターフェース１１およびソフトウェア・サービス実行スケジューラ１４とネットワークI/F  ９９７または別のデータ交換手段を介してデータを交換することであってもよい。特に、プロセッサ９９３は、ユーザー・インターフェース１１からユーザー入力コマンドを受け取り、ユーザー入力コマンドからデータ処理要求および定義されたデータ処理対象を抽出し、図１で「データ処理要求」および「データ処理対象」と印された矢印によって示されるように、抽出された情報を知識ベース１７およびソフトウェア・サービス実行スケジューラに出力するための処理命令を実行する。さらに、プロセッサ９９３は、抽出された情報を知識ベースにレコードとして記憶するための処理命令を実行する。
【０１１９】
図１の知識ベース１７および図２のユーザー・コマンドおよびパラメータのレコードを維持する段階S204は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行して、ネットワークI/F  ９９７または別のデータ交換手段を介してデータを交換することであってもよい。特に、プロセッサ９９３は、ユーザー入力からパーサー１３によって抽出された情報をネットワークI/Fを介してパーサー１３から受け取り、抽出された情報をレコードをして記憶するための処理命令を実行する。さらに、知識ベース１７によって維持されるレコードは、データ処理要求候補を同定する際に結果処理器１６によってアクセス可能である。さらに、プロセッサ９９３は、接続された記憶ユニット上の維持されているレコードを記憶するおよび／または維持されているレコードの特定のユーザー（および処理結果）に関連するものを処理のために結果処理器１６にネットワークI/F  ９９７を介して送信するための処理命令を実行してもよい。
【０１２０】
図１のソフトウェア・サービス実行スケジューラ１４および図２のスケジュールをコンパイルする段階S205は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行して、ネットワークI/F  ９９７または別のデータ交換手段を介してデータを交換することであってもよい。特に、プロセッサ９９３は、パーサー１３によってユーザー入力から抽出されたデータ処理要求およびデータ処理対象をネットワークI/Fを介してまたは他の仕方で受け取り、前記データ処理対象を入力データとして前記データ処理要求を充足するための諸ソフトウェア・サービスのスケジュールをコンパイルし、図１において「スケジュール」の矢印で示されるように、該スケジュールを出力するための処理命令を実行する。さらに、プロセッサ９９３は、接続された記憶ユニット上に前記スケジュールを記憶するおよび／または前記スケジュールをソフトウェア・サービス実行コントローラ１５に実行のためにネットワークI/F  ９９７を介して送信するための処理命令を実行してもよい。
【０１２１】
図１のソフトウェア・サービス実行コントローラ１５、図２の実行を制御する段階S206および図２の出力する段階S207は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行して、ネットワークI/F  ９９７または別のデータ交換手段を介してデータを交換することであってもよい。特に、プロセッサ９９３は、図１の「実行制御」の矢印によって示されるように、ソフトウェア・サービス実行スケジュールによって出力されたスケジュールをネットワークI/Fまたは別の形のデータ交換を介して受け取り、ソフトウェア・ライブラリのソフトウェア・サービスによる該スケジュールの実行を制御する。
【０１２２】
図１の結果処理器１６および図２の要求候補を識別し、出力する段階S207は、プロセッサ９９３（または複数のプロセッサ）がメモリ９９４に記憶された処理命令（プログラム）を実行して、ネットワークI/F  ９９７または別の形のデータ交換を介してデータを交換することであってもよい。特に、プロセッサ９９３は、ソフトウェア・サービス実行コントローラ１５の制御のもとで実行されるソフトウェア・ライブラリ１２のソフトウェア・サービスから処理結果をネットワークI/Fを介してまたは他の仕方で受け取り、（機械学習アルゴリズムを使って）知識ベースによって保持されているレコードのうちからデータ処理要求候補を同定するための処理命令を実行する。さらに、プロセッサ９９３は、接続された記憶ユニット上に同定されたデータ処理要求候補を記憶するおよび／または同定されたデータ処理要求候補をユーザー・インターフェース１１を介してユーザーに対してネットワークI/F  ９９７を介してまたは他の仕方で送信するための処理命令を実行してもよい。
【０１２３】
本発明を具現する方法は、図４に示されるようなコンピューティング装置で実行されてもよい。そのようなコンピューティング装置は図４に示されるすべてのコンポーネントを有する必要はなく、それらのコンポーネントの部分集合から構成されていてもよい。本発明を具現する方法は、一つまたは複数のデータ記憶サーバーとネットワークを介して通信する単一のコンピューティング装置によって実行されてもよい。該コンピューティング装置は、知識ベース１７および処理結果を記憶するデータ記憶自身であってもよい。
【０１２４】
本発明を具現する方法は、互いと協働して動作する複数のコンピューティング装置によって実行されてもよい。前記複数のコンピューティング装置の一つまたは複数は、知識ベース１７および処理結果の少なくとも一部を記憶するデータ記憶サーバーであってもよい。
【０１２５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
データ処理装置であって：
複数のソフトウェア・サービスを記憶しているソフトウェア・ライブラリであって、各実行可能なソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、ソフトウェア・ライブラリと；
複数のユーザー入力コマンドを受け取るよう構成されたユーザー・インターフェースであって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、ユーザー・インターフェースと；
各ユーザー入力コマンドから：
ドメイン固有言語からのデータ処理要求；および
定義されたデータ処理対象を抽出するよう構成されているパーサーと；
前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持するよう構成された知識ベースと；
各ユーザー入力コマンドについて、前記パーサーから前記データ処理要求を取得し、前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめるよう構成されたソフトウェア・サービス実行スケジューラと；
各ユーザー入力コマンドについて、一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御して該制御された実行の処理結果を出力するよう構成されたソフトウェア・サービス実行コントローラであって、前記定義されたデータ処理対象が前記制御された実行への入力データである、ソフトウェア・サービス実行コントローラと；
前記出力された処理結果を取得して、前記知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドとしてユーザーに対して前記ユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力するよう構成された結果処理器とを有する、
データ処理装置。
（付記２）
前記パーサーは、ユーザー入力のドメイン固有言語からの前記データ処理要求を抽出することを、少なくとも：
前記ドメイン固有言語を一連のドメイン固有言語要素にパースし；
ドメイン固有言語要素の語彙の各構成員をデータ処理要求要素にマッピングするドメイン固有言語マップに問い合わせて、前記一連のドメイン固有言語要素の各構成員にマッピングされたデータ処理要求要素を得て；
得られたデータ処理要求要素を組み合わせて前記データ処理要求を形成することによって行なうよう構成されている、
付記１記載のデータ処理装置。
（付記３）
前記ソフトウェア・サービス実行スケジューラは、ソフトウェア・サービス・レジストリを維持するよう構成されており、前記ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定し、
前記データ処理機能はそれぞれ、一つまたは複数のデータ処理要求要素として指定され、該データ処理要求要素に前記ドメイン固有言語要素がマッピングされており；
前記ソフトウェア・サービス実行スケジューラは、前記データ処理要求からのデータ処理要求要素を諸ソフトウェア・サービスと照合することによって、前記スケジュールに含めるためのソフトウェア・サービスを選択するよう構成されており、照合される諸ソフトウェア・サービスは、それぞれのデータ処理要求要素が、当該レジストリ・エントリーにおける指定されたデータ処理機能に含まれるところのものである、
付記２記載のデータ処理装置。
（付記４）
前記結果処理器がさらに、得られた処理結果を、前記ユーザー・インターフェースを介してユーザーに対して出力するよう構成されている、付記１記載のデータ処理装置。
（付記５）
前記データ処理要求候補の同定のベースとなるデータ処理要求および定義されたデータ処理対象のレコードは、同定されたデータ処理要求候補が出力される対象となるのと同じユーザーによって前記ユーザー・インターフェースに入力されたデータ処理要求および定義されたデータ処理対象のレコードに制約される、付記１記載のデータ処理装置。
（付記６）
前記知識ベースによって維持されるデータ処理要求および定義されたデータ処理対象のレコードは、それぞれの定義されたデータ処理対象について：
そのデータ処理対象におけるデータの特徴付けを含み、
前記結果処理器は、前記処理結果に対する実行のためのデータ処理要求候補を同定することを、前記処理結果における一部のまたは全部のデータを特徴付けし、定義されたデータ処理対象におけるデータの特徴付けが前記処理結果におけるデータの前記特徴付けと同じまたは同様であるユーザー入力コマンドについての知識ベース・レコード内のデータ処理要求を、前記候補として同定することによって行なうよう構成されている、
付記１記載のデータ処理装置。
（付記７）
同定される前記データ処理要求候補は、前記知識ベースによって維持されるレコードの有意な部分集合のうちから最もよくあるデータ処理要求を決定することによって選択され、レコードの前記有意な部分集合は、前記定義されたデータ処理対象におけるデータの特徴付けと前記処理結果におけるデータの特徴付けとの間の類似性の定量化があらかじめ定義された閾値より高いレコードである、付記６記載のデータ処理装置。
（付記８）
前記ユーザー・インターフェースが：
ウェブ・インターフェース；
アプリケーション・プログラミング・インターフェース；
コマンドライン・インターフェース；
ユーザー音声コマンド・インターフェース；および
グラフィカル・ユーザー・インターフェース
のうちの一つまたは複数を含む、付記１記載のデータ処理装置。
（付記９）
前記パーサーは、ユーザー入力からデータ処理要求を抽出することを、少なくとも：
ユーザー入力から不完全なデータ処理要求を抽出し；
該不完全なデータ処理要求を完成させる情報を求めるプロンプトを前記ユーザー・インターフェースを介してユーザーに対して出力し；
ユーザーからの該プロンプトへの応答を前記ユーザー・インターフェースを介して受け取り；
受け取られた応答を用いて前記不完全なデータ処理要求を完成させることによって行なうよう構成されている、付記１記載のデータ処理装置。
（付記１０）
前記ソフトウェア・サービス実行スケジューラは：
ソフトウェア・サービス・レジストリを維持する段階であって、前記ソフトウェア・サービス・レジストリは前記複数のソフトウェア・サービスのそれぞれについてのエントリーを含み、該エントリーはそれぞれのソフトウェア・サービスを同定し、該ソフトウェア・サービスが実行されたときに該ソフトウェア・サービスによって実行されるデータ処理機能を指定する、段階と；
前記データ処理要求を一つまたは複数の命令されたデータ処理機能の系列に分割する段階と；
それぞれのデータ処理要求を充足するために前記レジストリにおいて同定された前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスの実行スケジュールをまとめる段階であって、前記一つまたは複数の命令されたデータ処理機能のそれぞれについて、前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能に一致するソフトウェア・サービスを同定し、同定されたソフトウェア・サービスを前記実行スケジュールに含めることによって行なわれる、段階とを実行するよう構成されている、
付記１記載の装置。
（付記１１）
前記まとめることが、前記レジストリにおいて指定されている処理機能が要求されたデータ処理機能の一つに一致するソフトウェア・サービスが二つ以上同定される場合に、当該装置のユーザーによる手動選択候補としての該二つ以上のソフトウェア・サービスのうちからの一つのソフトウェア・サービスの選択を要求し、要求された選択をユーザーから受け取ることを含み；
前記ソフトウェア・サービス実行スケジューラは、それぞれの命令されたデータ処理機能についての前記実行スケジュールをまとめる処理のレコードを維持し、該レコードに、前記手動選択候補の識別情報および受け取られたユーザー選択の指示を含めるよう構成され；
前記ソフトウェア・サービス実行スケジューラは、要求されたデータ処理機能を実行するために同定された二つ以上のソフトウェア・サービスのうちから一つのソフトウェア・サービスを選択することを、少なくとも部分的には、該二つ以上のソフトウェア・サービスに一致する手動選択候補のうちからの受け取られたユーザー選択の記録されている指示に基づいて自動化するよう構成される、
データ処理装置。
（付記１２）
データ処理方法であって：
複数のソフトウェア・サービスを記憶することであって、各ソフトウェア・サービスはそれぞれのデータ処理機能を実行するよう構成されている、ことと；
複数のユーザー入力コマンドをユーザー・インターフェースを介して受け取ることであって、各ユーザー入力コマンドはドメイン固有言語で表現されていて、データ処理対象およびデータ処理要求を定義している、ことと；
各ユーザー入力コマンドから：
ドメイン固有言語からのデータ処理要求；および
定義されたデータ処理対象を抽出することと；
前記複数のユーザー入力コマンドのそれぞれについてデータ処理要求および定義されたデータ処理対象のレコードを維持することと；
各ユーザー入力コマンドについて、
パーサーから前記データ処理要求を取得する段階；
前記データ処理要求を充足するために前記複数のソフトウェア・サービスのうちから一つまたは複数のソフトウェア・サービスのスケジュールをまとめる段階；
一つまたは複数のソフトウェア・サービスのまとめられたスケジュールの実行を制御する段階であって、前記定義されたデータ処理対象が前記制御された実行への入力データである、段階と；
前記制御された実行の処理結果を出力する段階とを実行することと；
前記出力された処理結果を取得して、知識ベースによって維持されているデータ処理要求および定義されたデータ処理対象のレコードに基づいて、前記処理結果に対する実行のためのデータ処理要求候補を同定して、ドメイン固有言語で表わされた選択可能なユーザー入力コマンドをユーザーに対してユーザー・インターフェースを介して、同定されたデータ処理要求候補を、データ処理対象として定義された前記処理結果と一緒に出力することとを含む、
方法。
（付記１３）
コンピューティング装置によって実行されたときに該コンピューティング装置に付記１２記載の方法を実行させるコンピュータ・プログラム。
【符号の説明】
【０１２６】
１０  データ処理装置
１１  ユーザー・インターフェース
１２  ソフトウェア・ライブラリ
１３  パーサー
１４  ソフトウェア・サービス実行スケジューラ
１５  ソフトウェア・サービス実行コントローラ
１６  結果処理器
１７  知識ベース
S201  複数のソフトウェア・サービスを記憶
S202  ユーザー・コマンドを受領
S203  ユーザー・コマンドからパラメータを抽出
S204  ユーザー・コマンドおよびパラメータのレコードを維持
S205  スケジュールをコンパイル
S206  スケジュールの実行を制御
S207  処理結果を出力
S208  要求候補を同定し、出力
１  やあ、アイーダ
２  こんにちは、デーヴ。何をお手伝いしましょうか？
３  ねえ、君の名前は？
４  私はアイーダv0.2です
５  http://example.com/file.csvをDataset1として探訪
６  そのURLはCSVファイルを指しているようです。要約：
サイズ：2MB  行数：200  列数：10
行１はタイムスタンプのようです。時系列解析を実行しますか？  はい／いいえ
７  はい
８  Dataset1は2008/1/1から2015/12/31の情報を含んでいます。各行は一意的なタイムスタンプをもっています。
残りの列の間の相関を探しますか？  はい／いいえ
９  はい
１０  列３（ラベルは「風速」）と列１０（ラベルは「Env_NO2」）は逆の相関があるようです。
回帰モデルをトレーニングしますか？  はい／いいえ
１１  いいえ
１２  私は何をすべきでしょうか？
１３  Dataset1を保存
１４  動作成功。
次はどうしますか？
１５  完全解析を実行、レポートを生成、それをメール
１６  Dataset1を最後の最近使われた変数として想定  /ラベル{ライン：省略
バックグランドでタスクを実行中……
命令を待っています
１７  じゃあね、アイーダ
１８  セッション終了。よい一日を！
９９３  プロセッサ
９９４  メモリ
９９５  ディスプレイ
９９６  入力
９９７  ネットワークI/F
【図１】
2018088242.tif 000003
【図２】
2018088242.tif 000004
【図３】
2018088242.tif 000005
【図４】
2018088242.tif 000006
【外国語明細書】
2018088242000001.pdf