(57)【要約】【課題】ソフトウェアサービス実行システム及び方法の提供。【解決手段】システムは、入力ＵＲＩからのデータを処理し処理結果を出力ＵＲＩに出力するサービスを記憶したライブラリ；主頂点と目的頂点との関係を規定した述部で識別可能で、主頂点が入力ＵＲＩを記憶し、述部でラベル付けされたエッジで出力ＵＲＩを記憶した目的頂点に結び付けられたサービスを表現したメタデータグラフ；述部でラベル付けされたエッジに沿った探索パスにより元頂点に結び付けられたクエリ頂点を要求し、その値がグラフクエリ言語のクエリにより指定されたクエリを受信するクエリインタフェース；探索パスにおけるエッジの述部により識別されたサービスの実行を制御するコントローラ；を有し、クエリインタフェースがクエリ頂点の値でクエリに応答し、値が、元頂点から探索パスに沿ってクエリ頂点に結び付けているエッジのラベルで識別されたサービスを実行して生成される。【選択図】図１
2018067280.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェアサービスを記憶しているソフトウェアライブラリであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ソフトウェアライブラリと、
前記複数のソフトウェアサービスを表現しているメタデータグラフであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、メタデータグラフと、
グラフクエリ言語を用いたクエリを受信するよう構成されているメタデータグラフクエリインタフェースであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、メタデータグラフクエリインタフェースと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するよう構成されているソフトウェアサービス実行コントローラと、
を有し、
前記メタデータグラフクエリインタフェースは、前記クエリ頂点の値をもって、受信された前記クエリに応答するよう構成されており、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ソフトウェアサービス実行システム。
【請求項２】
前記元頂点の値は、明示的に規定された値、又は、前記クエリ頂点への前記規定されている探索パスに沿って前記元頂点に結び付けているラベル付けされた前記エッジにより識別された前記ソフトウェアサービスにより処理されるデータの元の位置のＵＲＩ、により指定される、請求項１に記載のソフトウェアサービス実行システム。
【請求項３】
受信された前記クエリに応じて出力される前記クエリ頂点の値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスの前記指定された出力ＵＲＩ、又は、該ソフトウェアサービスの処理の結果である、請求項１に記載のソフトウェアサービス実行システム。
【請求項４】
前記ソフトウェアサービス実行コントローラは、前記元頂点と前記規定されている探索パスにおける前記クエリ頂点との間の頂点又は各頂点について、入力データとして、それぞれの頂点の元頂点側のラベル付けされたエッジにより識別されたソフトウェアサービスの処理の結果を、それぞれの頂点のクエリ頂点側のソフトウェアサービスに提供することにより、前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を制御するよう構成されている、請求項１に記載のソフトウェアサービス実行システム。
【請求項５】
前記ソフトウェアサービスは、マイクロサービスである、請求項１に記載のソフトウェアサービス実行システム。
【請求項６】
前記ソフトウェアサービスは、ＲＥＳＴｆｕｌなソフトウェアサービスであり、各ＲＥＳＴｆｕｌなソフトウェアサービスは、ＧＥＴ要求、並びにＰＯＳＴ要求及び／又はＰＵＴ要求についてのメソッドを規定している、請求項１に記載のソフトウェアサービス実行システム。
【請求項７】
前記ソフトウェアサービス実行コントローラは、元頂点からクエリ頂点へと前記規定されている探索パスを進行し、それぞれのソフトウェアサービスを識別する前記指定された述部を用いてラベル付けされたエッジが、前記指定された述部の主頂点から、前記指定された述部の目的頂点へと探索される場合に、前記ソフトウェアサービスにＧＥＴ要求を発行することにより、前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を制御するよう構成されている、請求項６に記載のソフトウェアサービス実行システム。
【請求項８】
ソフトウェアサービスは、前記メタデータグラフにおいて前記述部により識別可能であり、前記述部は、該ソフトウェアサービスのＵＲＩ又はＵＲＬである、請求項１に記載のソフトウェアサービス実行システム。
【請求項９】
前記述部は、それぞれのソフトウェアサービスにより実行される処理の意味記述子である、請求項８に記載のソフトウェアサービス実行システム。
【請求項１０】
前記ソフトウェアサービス実行コントローラは、ナレッジベースを含み、前記ソフトウェアサービス実行コントローラは、各探索パスについて、当該探索パスと、１以上の前記クエリ頂点と、前記元頂点と、を記録したレコードを前記ナレッジベースに追加するよう構成されており、前記ソフトウェアサービスは、１以上の前記クエリ頂点の結果を得る際に前記ソフトウェアサービス実行コントローラにより実行され、
前記ソフトウェアサービス実行コントローラは、規定されている探索パスに対する応答を生成する際にソフトウェアサービスを実行する制御を最適化するために、該規定されている探索パスを、前記ナレッジベースに記録された探索パスと比較するよう構成されている、請求項１乃至９いずれか一項に記載のソフトウェアサービス実行システム。
【請求項１１】
複数のソフトウェアサービスを記憶するステップであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ステップと、
前記複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、ステップと、
グラフクエリ言語を用いたクエリを受信するステップであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、ステップと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の記憶された前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するステップと、
前記クエリ頂点の値をもって、受信された前記クエリに応答するステップであって、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ステップと、
を含むソフトウェアサービス実行方法。
【請求項１２】
コンピューティングデバイスにより実行されたときに、前記コンピューティングデバイスに、
複数のソフトウェアサービスを記憶するステップであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ステップと、
前記複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、ステップと、
グラフクエリ言語を用いたクエリを受信するステップであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、ステップと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の記憶された前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するステップと、
前記クエリ頂点の値をもって、受信された前記クエリに応答するステップであって、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ステップと、
を含む方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、データ処理アーキテクチャの分野に属し、詳細には、ウェブソフトウェアサービス等のソフトウェアサービスの自動編成に関する。
【背景技術】
【０００２】
既存のマイクロサービスであるウェブサービス等のソフトウェアサービスの自動的な編成及び複合は、一般的ではなく、最新の技術アプローチは、ウェブサービスの重い注釈に依拠している。
【０００３】
ウェブサービスの編成及び複合を自動化しようとする既存の技術は、以下の２つの広義のグループに分類される：
１．いかなる決定も行わない技術：実行されるべき全ての可能性が実行され、結果が、集合意味論に起因して等価である。
２．形式論理に基づいて決定を行う技術であって、最先端のケースでは以下の２つの要素を有する技術：
ａ．サービスにより提供される、サービス品質に関する何らかのメタデータ。
ｂ．上記メタデータを使用して、ユーザ又は規則の集合により要求された品質に適応するプランを見つけ出す編成アルゴリズム。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
課題は、上記の編成が自律的ではなく、注釈が重すぎることである。新たなサービスに注釈付けすることは難しく、実行プラン化は厄介です。
【課題を解決するための手段】
【０００５】
実施形態は、複数のソフトウェアサービスを記憶しているソフトウェアライブラリであって、複数のソフトウェアサービスの各々は、実行されると、指定された入力ＵＲＩ（ユニフォームリソース識別子）から入力データを得て、得られた入力データに対して処理を実行し、処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ソフトウェアライブラリと、複数のソフトウェアサービスを表現しているメタデータグラフであって、複数のソフトウェアサービスの各々は、主頂点（subject  vertex）と目的頂点（object  vertex）との間の関係を規定している述部（predicate）により、メタデータグラフにおいて識別可能であり、主頂点は、指定された入力ＵＲＩを記憶しており、述部を用いてラベル付けされた有向エッジにより、指定された出力ＵＲＩを記憶している目的頂点に結び付けられている、メタデータグラフと、グラフクエリ言語を用いたクエリを受信するよう構成されているメタデータグラフクエリインタフェースであって、受信されたクエリは、各エッジが、メタデータグラフにおける述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点（source  vertex）に結び付けられているクエリ頂点を、変数として要求し、変数の値が、受信されたクエリにより指定されている、メタデータグラフクエリインタフェースと、規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上のソフトウェアサービスの実行を、規定されている探索パスにより判別された順番で制御するよう構成されているソフトウェアサービス実行コントローラと、を有するソフトウェアサービス実行システムを含む。メタデータグラフクエリインタフェースは、クエリ頂点の値をもって、受信されたクエリに応答するよう構成されており、クエリ頂点の値は、元頂点から規定されている探索パスに沿ってクエリ頂点に結び付けているラベル付けされたエッジのラベルにより識別されたソフトウェアサービスを実行することにより生成される。
【０００６】
有利なことに、実施形態は、グラフクエリ言語を用いたクエリを、ソフトウェアサービスの実行プランに変換する。クエリ言語は、クライアント／ユーザからソフトウェアサービスアーキテクチャの複雑さをマスクしたメタデータグラフへのアクセスを提供する。データ処理タスクを実行する際にソフトウェアサービスを得ることが容易にされる。
【０００７】
ソフトウェアサービスの編成のための既存のプラン化アルゴリズムは、自律的ではなく、（シンタックス及びロジックの点で）重い注釈に依拠している。例えば、述部として動作の意味を規定する、本明細書で定められ説明されるソフトウェアサービス実行システムの実施形態は、以下のようないくつかの利点を有する：
−高水準グラフクエリ言語は、要求された型の結び付けられたマイクロサービス処理の終端の結果だけでなく、いくつかの中間結果も、クエリが要求することを可能にする。
−グラフクエリ言語は、結果が、どのように得られるか、及び、結果が、元々の入力とどのように関連するかと（中間結果の場合には）結果の間でどのように関連するかと、についてのさらなる制御を、クライアント／ユーザに提供する。
−クエリ言語の統合が、型システムよりも自然であるのと同じやり方で、他のシステムとの統合がより自然である。
−より良い統合機能に起因して、例えば、クエリ再記述を介して、システムのより良い拡張性が可能にされる。
【０００８】
ソフトウェアサービス実行システムは、受信されたグラフクエリを、受信されたクエリにおいて規定されているグラフ探索パスにおいて識別されたソフトウェアサービスの実行に変換するためのメカニズムを提供する。受信されたグラフクエリに応じたグラフ探索パスの進行は、グラフ探索パスに対応するソフトウェアサービスの実行に変換される。
【０００９】
受信されたクエリは、グラフクエリである。グラフクエリとは、グラフデータストアに適用可能なデータクエリを指す。グラフクエリのための言語の例は、（ＲＤＦでのトリプルストアのための）ＳＰＡＲＱＬ、及び、（Ｎｅｏ４ｊのための）Ｃｙｐｈｅｒである。グラフクエリ言語は、それらの表現性及び簡潔性のため有利である。なぜならば、スキーマは、（標準的なデータベースにおけるように）予め指定される必要はなく、新たなデータがシステムに追加されるたびに指定することができるからである。これは、ソフトウェアサービスの追加／除去の容易さが望まれるソフトウェアサービスアーキテクチャにおいて、特に有利である。
【００１０】
受信されたクエリにより規定されている探索パスは、クエリに対する応答を生成する際に進行されるべき探索パスである。メタデータグラフクエリインタフェースは、受信されたクエリを、１以上の探索パスに変換するよう構成されている。各探索パスは、互いにオーバーラップする探索パスが出力結果を共有し得ることに留意しながら、メタデータグラフクエリインタフェース及びソフトウェアサービス実行コントローラにより独立して処理され得るので、同じ入力データを伴って２つの規定されている探索パスにおいて生じるソフトウェアサービスは、２回以上実行される必要がない。
【００１１】
複数のソフトウェアサービスの各々は、主頂点と目的頂点との間の関係を規定している述部により、メタデータグラフにおいて識別可能である。識別可能であることは、複数のソフトウェアサービスの中から区別できることを意味する。例えば、述部は、ソフトウェアサービスにリンクしているＵＲＩ又はＵＲＬ（ユニフォームリソースロケータ）であり得る。述部（及びソフトウェアサービスのＵＲＩ又はＵＲＬ）は、ソフトウェアサービスが実行されたときにソフトウェアサービスにより実行されるデータ処理の意味記述子であってもよいし、そのような意味記述子を含んでもよい。
【００１２】
任意的に、元頂点の値は、明示的に規定された値、又は、クエリ頂点への規定されている探索パスに沿って元頂点に結び付けているラベル付けされたエッジにより識別されたソフトウェアサービスにより処理されるデータの元の位置のＵＲＩ又はＵＲＬ、により指定される。
【００１３】
元頂点は、受信されたクエリについて、既知の開始点を、それが１つの値であるか又は規定されたファイル若しくはデータベースに記憶されているデータであるかにかかわらず、効果的に規定する。クエリにより規定されている探索パスは、元頂点から１以上のクエリ頂点への、メタデータグラフの一連のラベル付けされたエッジに沿った経路である。ソフトウェアサービス実行コントローラは、元頂点により規定されている値又はデータにアクセスし、当該値又はデータを、クエリ頂点への規定されている探索パスに沿って元頂点に結び付けているラベル付けされたエッジにより識別されたソフトウェアサービスに提供するよう構成されている。
【００１４】
受信されたクエリに応じて出力されるクエリ頂点の値は、元頂点から規定されている探索パスに沿ってクエリ頂点に結び付けているラベル付けされたエッジのラベルにより識別されたソフトウェアサービスの指定された出力ＵＲＩ、又は、このソフトウェアサービスの処理の結果であり得る。
【００１５】
指定された出力ＵＲＩは、例えば、ＵＲＬであり得る。クエリの目的は、未知なものの値を得ることである。ソフトウェアサービス実行システムのコンテキストにおいて、未知なものは、受信されたグラフクエリにおいて識別され、メタデータグラフクエリインタフェースにより抽出されるクエリ頂点である。ソフトウェアサービス実行コントローラにより進行される探索パスは、特定の境界条件（すなわち、元頂点及び１以上の指定された述部）を所与としてクエリ頂点の値を得るための一連の処理タスク（ソフトウェアサービスの実行）である。クエリ頂点の値は、ソフトウェアサービス実行コントローラが、探索パスに従ってソフトウェアサービスの実行を制御することにより得られる。規定されている探索パスに沿ってクエリ頂点に結び付けているラベル付けされたエッジのラベルにより識別されたソフトウェアサービスのアイデンティティ（identity）が、処理結果の性質を決定する。型は、ＵＲＩ又はＵＲＬであることに制約され得るが、ソフトウェアサービスにより指定されたＵＲＩ又はＵＲＬに記憶されているデータは、制約されず、例えば、１つのデータ値であってもよいし、データ値のベクトルであってもよいし、画像であってもよいし、データベースであってもよいし、ソフトウェアサービスの処理を実行することにより得られる何らかの他の形態のデータであってもよい。
【００１６】
任意的に、ソフトウェアサービス実行コントローラは、元頂点と規定されている探索パスにおけるクエリ頂点との間の頂点又は各頂点について、入力データとして、それぞれの頂点の元頂点側のラベル付けされたエッジにより識別されたソフトウェアサービスの処理の結果を、それぞれの頂点のクエリ頂点側のソフトウェアサービスに提供することにより、規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上のソフトウェアサービスの実行を制御するよう構成される。
【００１７】
換言すると、探索パスが、１以上の「中間頂点」、すなわち、元頂点でもクエリ頂点でもない頂点を含む場合には、この頂点は、探索パスにおける中間頂点の両側のラベル付けされたエッジにより識別された２つのソフトウェアサービスの間のデータの共有を示す。データの共有は、先行するソフトウェアサービス（すなわち、元頂点側のエッジの述部により識別されたソフトウェアサービス）の処理結果が、入力データとして、次のソフトウェアサービス（すなわち、クエリ頂点側のエッジの述部により識別されたソフトウェアサービス）に提供されることを意味する。
【００１８】
ソフトウェアサービスは、ウェブサービスであり得る。ウェブサービスであるか又は他のサービスであるかにかかわらず、ソフトウェアサービスは、マイクロサービスであり得る。
【００１９】
マイクロサービスは、データ処理装置におけるアトミックサービス（atomic  service）である。このコンテキストにおける「アトミック」とは、１つの役割又は１つの機能を意味する。マイクロサービスは、サービスのディメンジョンにより、一般ウェブサービスとは区別される。例えば、一般ウェブサービスは、より広範な機能の一部として、何らかの形態の認証を含むであろう。マイクロサービスベースの装置において、認証は、専用マイクロサービスである。
【００２０】
特定の例のソフトウェアサービスとして、ソフトウェアサービスは、ＲＥＳＴｆｕｌ（ＲＥＳＴフル）なソフトウェアサービスであり、各ＲＥＳＴｆｕｌなソフトウェアサービスは、ＧＥＴ要求、並びにＰＯＳＴ要求及び／又はＰＵＴ要求についてのメソッドを規定している。ＲＥＳＴ（representational  state  transfer）は、マシンについてウェブにおける参加者の適切な挙動を支配するアーキテクチャスタイルである。ＲＥＳＴは、「ＲＥＳＴｆｕｌ」であるとして適合（conforming）が表されるシステムアーキテクチャについての制約を提示しており、その制約の第１は、アーキテクチャが、クライアントが一様インタフェース（uniform  interface）によりサーバから分離されるクライアント−サーバ構成を有することである。クライアントとサーバとの間にはインタフェースの４つの指導原則が（guiding  principle）が存在し、これらの原則に従って開発されるインタフェースは、「ＲＥＳＴｆｕｌ」であるとして表され得る。例えば、ＡＰＩは、ソフトウェアサービスへのインタフェースのためのＲＥＳＴ指導原則に従って記述され得、したがって、「ＲＥＳＴｆｕｌなＡＰＩ」として表されるであろう。プロトコルとしてのＨＴＴＰが、ＲＥＳＴｆｕｌな方式において使用され得、ＲＥＳＴｆｕｌなＨＴＴＰが、マシンについてウェブに適している。ＲＥＳＴｆｕｌなインタフェース（ＡＰＩ）は、次のようないくつかの主な理由により普及している：信頼できるアーキテクチャ原則を用いて実績のある基盤の上に構築された基本プロトコルの簡潔さが存在し、結果が、ウェブ開発者により分かりやすく使用可能である。
【００２１】
簡潔に言えば、ＲＥＳＴアーキテクチャスタイルは、以下のような、システムアーキテクチャについての６つの制約（６つの制約のうちの１つの制約は任意的である）を記述している：
−アーキテクチャは、クライアント−サーバ型であるべきである；
−クライアント及びサーバは、一様インタフェースにより分離される；
−アーキテクチャは、クライアントコンテキストが、クライアントからの要求の間でサーバに記憶されない−各要求は、要求をサービスするのに必要な情報の全てを含み、状態情報は、クライアント自体に保持される−ことを意味するステートレスである；
−クライアントは、応答をキャッシュすることができる；
−（任意的）機能は、サーバ転送ロジックによりクライアントに拡張されてもよく、クライアントが、機能を実行してもよい。
【００２２】
ソフトウェアサービス実行システムのコンテキストにおいて、クライアントは、メタデータグラフクエリインタフェースであり、サーバは、ウェブサーバ、又はソフトウェアサービスを実行する他のコンピューティングデバイスである。
【００２３】
一様インタフェースのための指導原則は、以下のように簡潔にまとめられる：
−ドメイン内の個々のリソースは、クライアントからの要求において識別され得る（これは、ウェブベースのシステムにおいてＵＲＩを介するであろう）。これらのリソース自体は、クライアントに返される表現とは別個のエンティティである；
−クライアントにより保持されるリソースの表現は、サーバ上のリソースを変更又は削除する（パーミッションにより許容される）のに十分な情報をクライアントに与えるのに十分である；
−クライアントとサーバとの間の各メッセージは、受信側が当該メッセージを処理するのに十分な情報を含む；
−サーバからクライアントに提供されるリソースの表現は、関連リソースへのハイパーテキストリンクを含むべきである。
【００２４】
ＲＥＳＴアーキテクチャスタイルの肯定的な側面は、情報モデルとよくリンクすることである。情報モデルは、ドメイン内のアイテム及びアイテム間の関係の形式化された記述である。ＲＥＳＴｆｕｌなＡＰＩにおいて許容される動作は、制約され（固定され）、これは、そうでなければインタフェースを情報モデルとリンクする際に通常問題につながるであろう貧弱なプログラミング挙動の望まれない副次的作用を回避する。
【００２５】
実際、特定のドメインについてのＲＥＳＴｆｕｌなＡＰＩは、当該ドメインについての情報モデルの観点で純粋に、次いで、異なるデータフォーマット内部でこのモデルがどのように見えるかにより定義され得る。ここで、データフォーマットは、情報モデルのワイヤレベル（低レベル又は実装レベル）の明示（manifestation）である。残念なことに、現在使用されているＡＰＩは、情報モデリングに対するアプローチ、これがデータフォーマット内部でどのように見えるか、及び、ＨＴＴＰのセマンティクスが、当該の１以上のＡＰＩの固有のドメイン内で使用するために、どのように引き起こされるかに関して相違を示している。このような一貫性の欠如は、例えば、再利用可能なツールキット（例えば、標準コード）及び（ブラウザと等価な）汎用クライアントエージェントの潜在的可能性といった、ＲＥＳＴｆｕｌなプロトコルの潜在的な恩恵が失われるので、問題である。
【００２６】
４つのリストされる規定されたメソッドが、ソフトウェアサービスのためのＲＥＳＴｆｕｌなインタフェースのコンテンツの例示である。
【００２７】
ソフトウェアサービスがＲＥＳＴｆｕｌである実施形態において、ソフトウェアサービス実行コントローラは、元頂点からクエリ頂点へと規定されている探索パスを進行し、それぞれのソフトウェアサービスを識別する指定された述部を用いてラベル付けされたエッジが、指定された述部の主頂点から、指定された述部の目的頂点へと探索される場合に、ソフトウェアサービスにＧＥＴ要求を発行することにより、規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上のソフトウェアサービスの実行を制御するよう構成され得る。
【００２８】
例えば、それぞれのソフトウェアサービスのＡＰＩにより指定され得るＧＥＴ要求は、ソフトウェアサービスのためのＲＥＳＴｆｕｌな実行メソッドである。ソフトウェアサービス実行コントローラは、元頂点により、又は探索パスにおける先行するソフトウェアサービスの処理結果により規定された入力データに関して、ラベル付けされたエッジにより識別されたソフトウェアサービスにＧＥＴ要求を発行して、メタデータグラフクエリインタフェースにより抽出された探索パスを進行する。
【００２９】
任意的に、ソフトウェアサービスは、メタデータグラフにおいて述部により識別可能であり、述部は、ソフトウェアサービスのＵＲＩ又はＵＲＬである。
【００３０】
有向エッジがメタデータグラフにおいて入力と出力とを結びつける述部は、それぞれのソフトウェアサービスにより実行される処理の意味記述子である。有利なことに、そのような実施形態におけるセマンティクスは、軽量であり、さらなる注釈を要することなく、サービスのＵＲＬにおいて指定され得る。
【００３１】
既存のソフトウェアサービス実行システムにおいては、利用可能なソフトウェアサービスについての情報を保持するために、レジストリが必要である。ソフトウェアサービスＵＲＬに対する述部のマッチングは、そのようなレジストリの必要性をなくす。クエリにおいて使用される述部は、ソフトウェアサービスのＵＲＬに直接マッピングされる。したがって、関連情報が、クエリにおいて提供され、別途登録される必要はない。
【００３２】
ソフトウェアサービス実行コントローラの特定の実装において、ソフトウェアサービス実行コントローラは、ナレッジベースを含み、ソフトウェアサービス実行コントローラは、各探索パスについて、当該探索パスと、１以上のクエリ頂点と、元頂点と、を記録したレコードをナレッジベースに追加するよう構成され、ソフトウェアサービスは、１以上のクエリ頂点の結果を得る際にソフトウェアサービス実行コントローラにより実行され；ソフトウェアサービス実行コントローラは、規定されている探索パスに対する応答を生成する際にソフトウェアサービスを実行する制御を最適化するために、規定されている探索パスを、ナレッジベースに記録された探索パスと比較するよう構成される。
【００３３】
有利なことに、そのようなナレッジベースは、ソフトウェア実行制御が、ソフトウェアサービスの選択及び実行を最適化するために、以前の実行プランから学習することを可能にする。
【００３４】
別の態様の実施形態は、複数のソフトウェアサービスを記憶するステップであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた入力データに対して処理を実行し、処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ステップと、複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、メタデータグラフにおいて識別可能であり、主頂点は、指定された入力ＵＲＩを記憶しており、述部を用いてラベル付けされた有向エッジにより、指定された出力ＵＲＩを記憶している目的頂点に結び付けられている、ステップと、グラフクエリ言語を用いたクエリを受信するステップであって、受信されたクエリは、各エッジが、メタデータグラフにおける述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、変数の値が、受信されたクエリにより指定されている、ステップと、規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上の記憶されたソフトウェアサービスの実行を、規定されている探索パスにより判別された順番で制御するステップと、クエリ頂点の値をもって、受信されたクエリに応答するステップであって、クエリ頂点の値は、元頂点から規定されている探索パスに沿ってクエリ頂点に結び付けているラベル付けされたエッジのラベルにより識別されたソフトウェアサービスを実行することにより生成される、ステップと、を含むソフトウェアサービス実行方法を含む。
【００３５】
別の態様の実施形態は、コンピューティング装置により実行されたときに、コンピューティング装置を、本発明の実施形態として請求項に記載されたシステムとして機能させるコンピュータプログラムを含む。
【００３６】
別の態様の実施形態は、コンピューティング装置により実行されたときに、コンピューティング装置に、本発明の実施形態として上記に記載された方法又は本文書において別の場所に記載された方法を実行させるコンピュータプログラムを含む。
【００３７】
さらに、本発明の実施形態は、複数の相互接続されたコンピューティングデバイスにより実行されたときに、複数の相互接続されたコンピューティングデバイスを、本発明を具現化するシステムとして動作させる１つのコンピュータプログラム又は一式のコンピュータプログラムを含む。
【００３８】
上記の態様のいずれにおいても、様々な特徴は、ハードウェアにより実装されてもよいし、１以上のプロセッサ上で実行されるソフトウェアモジュールとして実装されてもよい。１つの態様の特徴は、他の態様のいずれにも適用することができる。
【００３９】
本発明の実施形態はまた、本明細書に記載の方法のいずれかを実行するためのコンピュータプログラム又はコンピュータプログラム製品と、本明細書に記載の方法のいずれかを実行するためのプログラムを記憶したコンピュータ読み取り可能な媒体と、を提供する。本発明を具現化するコンピュータプログラムは、コンピュータ読み取り可能な媒体に記憶されてもよいし、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号等の信号の形態であってもよいし、任意の他の形態であってもよい。
【図面の簡単な説明】
【００４０】
本発明の実施形態の好ましい特徴が、添付の図面を参照しながら、単に例として説明される。
【図１】ソフトウェアサービス実行システムを示す図。
【図２】ソフトウェアサービス実行方法を示す図。
【図３】例示的なソフトウェアサービスの表現を示す図。
【図４】実施形態のハードウェア構成を示す図。
【発明を実施するための形態】
【００４１】
図１は、ソフトウェアサービス実行システム１０を示している。ソフトウェアサービス実行システム１０は、ソフトウェアライブラリ１２、複数のソフトウェアサービス１２１、メタデータグラフ１４、メタデータグラフクエリインタフェース１６、及びソフトウェアサービス実行コントローラ１８を有する。ソフトウェアサービス実行システム１０は、例えば、１つのウェブサーバ又は複数の相互接続されたウェブサーバであり得る。
【００４２】
図２は、ソフトウェアサービス実行方法を示している。
【００４３】
ソフトウェアライブラリ１２は、複数のソフトウェアサービス１２１を記憶するよう構成され、各ソフトウェアサービス１２１は、実行されると、指定された入力ＵＲＩから入力データを得て、得られた入力データに対して処理を実行し、処理の結果を指定された出力ＵＲＩに出力するよう構成される。
【００４４】
各ソフトウェアサービスが、実行されると、指定された入力ＵＲＩから入力データを得て、得られた入力データに対して処理を実行し、処理の結果を指定された出力ＵＲＩに出力するよう構成される複数のソフトウェアサービスの記憶は、図２におけるステップＳ２０１により示されている。記憶を示すステップＳ２０１に交差している線は、ステップＳ２０３〜Ｓ２０５の実行の間持続する。ステップＳ２０１におけるソフトウェアサービスの記憶は、図１のソフトウェアライブラリ１２により実行され得る。
【００４５】
ソフトウェアライブラリ１２は、実行可能なソフトウェアとして、ソフトウェアサービス１２１を記憶する。ソフトウェアサービス１２１は、ウェブサービスであり得る。ウェブサービスは、マイクロサービスであり得る。複数のソフトウェアサービス１２１は、ウェブサーバ等の１つのサーバに記憶されてもよいし、相互接続されたウェブサーバのネットワークを介して分散されてもよい。指定された入力ＵＲＩは、例えば、ＵＲＬであり得る。指定された出力ＵＲＩは、例えば、ＵＲＬであり得る。
【００４６】
ソフトウェアサービス１２１は、処理ロジックを実行するためのプロセッサ（ＣＰＵ）及び処理ロジックを記憶するとともに処理されているデータを記憶するためのメモリであり得る。
【００４７】
ソフトウェアライブラリ１２はまた、例えば、それぞれのソフトウェアサービスの処理機能がどのようにトリガされ得るかと、入力をどのように指定するかと、どこで処理結果にアクセスするかと、を規定する、ＡＰＩ等のインタフェースを記憶することができる。ソフトウェアライブラリ１２はまた、ソフトウェアサービス１２１を実行するのに必要とされるプロセッサ及び他のハードウェアを含み得る。例えば、ソフトウェアサービス１２１は、ウェブサービスであり得、ソフトウェアライブラリ１２は、ウェブサーバであり得る。
【００４８】
ＡＰＩとは、アプリケーションプログラミングインタフェースの略である。インタフェースは、何らかのソフトウェア要素（プログラム、ライブラリ等）が、異なるソフトウェア要素（プログラム、ライブラリ等）から使用されることを可能にする。
【００４９】
メタデータグラフ１４は、ソフトウェアライブラリ１２により記憶された複数のソフトウェアサービスのモデル（表現）である。ソフトウェアサービスの各々は、述部により識別可能であり、この述部は、それぞれのソフトウェアサービスにより実行される処理の意味記述子であり得る。メタデータグラフ１４におけるエッジは、有向であり、これは、入力データを出力結果に変換する、各ソフトウェアサービスにより実行されるデフォルトプロセスが存在することを反映している。２つの頂点を連結する有向エッジの方向が、２つの頂点のうちどちらが主頂点でありどちらが目的頂点であるかを決定する。
【００５０】
複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスが、主頂点と目的頂点との間の関係を規定している述部により、メタデータグラフにおいて識別可能であり、主頂点が、指定された入力ＵＲＩを記憶しており、述部を用いてラベル付けされた有向エッジにより、指定された出力ＵＲＩを記憶している目的頂点に結び付けられている、記憶するステップが、図２においてステップＳ２０２により示されている。記憶を示すステップＳ２０２に交差している線は、ステップＳ２０３〜Ｓ２０５の実行の間持続する。ステップＳ２０２において記憶されるメタデータグラフは、図１のメタデータグラフ１４であり得る。
【００５１】
メタデータグラフ１４は、例えば、ＲＤＦトリプル等のトリプルとして符号化され得る。各トリプルは、３つのデータ要素、すなわち、主部、述部、及び目的部の各々の値を有する。それぞれのデータ要素の値は、全頂点（又は、述部の場合はラベル）を記憶してもよいし、上記の全頂点（又は、述部の場合は上記のラベル）にアクセスすることができる元である記憶位置に対する識別子を記憶してもよい。
【００５２】
メタデータグラフ１４は、サーバ等の１つのコンピューティングデバイスにより記憶されてもよいし、互いと協働する複数のコンピューティングデバイスにより記憶されてもよい。メタデータグラフ１４は、ソフトウェアライブラリ１２が記憶されて実行可能である同一のサーバにより記憶されてもよい。
【００５３】
メタデータグラフ１４の表現は、パブリックにされ得る、又は、ソフトウェアサービス実行システム１０のクライアント／ユーザに利用可能にされ得る。
【００５４】
メタデータグラフ１４は、メタデータグラフクエリインタフェース１６を介して、クライアント／ユーザによりアクセス可能である。図１に示されるように、クエリは、インタフェース１６により受信される。
【００５５】
グラフクエリ言語を用いたクエリを受信するステップであって、受信されたクエリは、各エッジが、メタデータグラフにおける述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、その変数の値が、受信されたクエリにより指定されている、受信するステップが、図２においてステップＳ２０３により示されている。ステップＳ２０３におけるクエリの受信は、例えば、図１のメタデータグラフクエリインタフェース１６により実行され得る。
【００５６】
メタデータグラフクエリインタフェース１６は、クライアント／ユーザが、本明細書でより詳細に説明される、図１におけるラベル付けされた矢印によりハイライトされている処理のフローを介して、複数のソフトウェアサービスのデータ処理機能にアクセスするためのメカニズムを提供する。メタデータグラフクエリインタフェース１６は、クライアント／ユーザから、図１における「クエリ」矢印により示されるクエリを受信する。受信されたクエリは、例えば、ＳＰＡＲＱＬ又はＣｙｐｈｅｒといったグラフクエリ言語である。メタデータグラフクエリインタフェース１６は、受信されたクエリをパースし、受信されたクエリにより規定されている探索パスと、受信されたクエリにおいて宣言変数として識別され、クエリに応じて（例えば、ＳＥＬＥＣＴ節により）要求された１以上のクエリ頂点と、元頂点と、を抽出する（これらの抽出された要素は、「探索パス」としてまとめられ得る。なぜならば、元頂点及び１以上のクエリ頂点は、探索パスの構成要素であるからである。）。元頂点は、受信されたクエリについて、既知の開始点を、それが１つの値であるか又は規定されたファイル若しくはデータベースに記憶されているデータであるかにかかわらず、効果的に規定する。規定されている探索パスは、メタデータグラフにおける複数の相互連結されている頂点であり、ここで、「相互連結されている」とは、メタデータグラフにおけるエッジを介して「結び付けられている」ことを表す。探索パスは、グラフクエリにより規定される。なぜならば、探索パスは、クエリに回答するために進行さければならない、グラフにわたるパスを設定するからである。複合クエリは、複数の探索パスを規定することができる。ソフトウェアサービス実行システム１０は、複合クエリを一連の探索パスにコンパイルし、各探索パスについて規定されているように、ソフトウェアサービス実行コントローラ及びメタデータグラフクエリインタフェースにおいて一連の探索パスの各々を処理するよう構成される。
【００５７】
任意的に、メタデータグラフクエリインタフェース１６は、ドメイン固有言語を用いたメタデータグラフクエリを受信し、ドメイン固有言語をグラフクエリ言語に変換するよう構成される。
【００５８】
メタデータグラフクエリインタフェース１６は、図１における「探索パス」矢印により示されるように、受信されたクエリにより規定されている抽出された探索パスを、ソフトウェアサービス実行コントローラに出力する。
【００５９】
規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上の記憶されているソフトウェアサービスの実行を、規定されている探索パスにより判別された順番で制御するステップが、図２におけるステップＳ２０４により示されている。ステップＳ２０４におけるソフトウェアサービスの実行の制御は、例えば、図１のソフトウェアサービス実行コントローラ１８により実行され得る。
【００６０】
ソフトウェアサービス実行コントローラ１８は、ソフトウェアライブラリとインタラクトして、ソフトウェアサービス１２１の実行を制御し、必要とされるランタイムパラメータ（例えば、入力データを識別するパラメータ）を設定する。ソフトウェアサービス実行コントローラ１８は、規定されている探索パスにおけるエッジをラベル付けしている１以上の指定された述部により識別された１以上のソフトウェアサービス１２１の実行を、規定されている探索パスにより判別された順番で制御するよう構成される。ソフトウェアサービス実行コントローラ１８は、ソフトウェアサービス１２１の相対的タイミングを制御し、進行されている探索パスに従って、１つのソフトウェアサービス１２１の出力結果を、別のソフトウェアサービス１２１の入力に結び付ける。ソフトウェアサービス実行コントローラ１８によるソフトウェアサービス１２１の実行の制御が、図１における「実行制御」矢印により示されている。
【００６１】
クエリ頂点の値をもって、受信されたクエリに応答するステップであって、元頂点から規定されている探索パスに沿ってクエリ頂点に結び付けているラベル付けされたエッジのラベルにより識別されたソフトウェアサービスを実行することにより、この値が生成される、応答するステップが、図２においてステップＳ２０５により示されている。Ｓ２０５における受信されたクエリへの応答は、例えば、図１のメタデータグラフクエリインタフェース１６により実行され得る。
【００６２】
探索パスにおける頂点のうちの１以上の頂点が、受信されたグラフクエリにより要求されている。参照を容易にするために、上記１以上の頂点は、クエリ頂点と呼ばれる。メタデータグラフクエリインタフェース１６は、探索パスにおけるそれぞれのクエリ頂点に先行する述部により識別されたソフトウェアサービス１２１の処理の結果を（明示的に、又は、結果にアクセスすることができる元の位置への参照を出力することによって）出力することにより、受信されたクエリに応答するよう構成される。ソフトウェアサービス実行コントローラ１８は、ソフトウェアサービス１２１による頂点値の出力（すなわち、処理結果）を制御する。ソフトウェアサービス１２１からのクエリ頂点の値の、クエリインタフェース１６への、次いで、クライアント／ユーザへの、出力が、図１における「クエリ頂点値」矢印により示されている。
【００６３】
図３は、例示的なＡＰＩであって、ソフトウェアライブラリ１２におけるソフトウェアサービス１２１が当該例示的なＡＰＩを介して実行可能である、例示的なＡＰＩを示している。図３の例において、ソフトウェアサービス１２１は、マイクロサービスである。
【００６４】
マイクロサービスの各々は、マイクロサービスのＵＲＬにより、グラフクエリ言語を用いた述部にマッピングされる（このマッピングは、暗示的であり得る）。
【００６５】
マイクロサービスの各々は、例えば、ＪＳＯＮ、ＲＤＦ、ＪＳＯＮ−ＬＤ等といった文書にマッピングされ、別のどこか（ファイルシステム、Ｒｅｄｉｓ、ＭｏｎｇｏＤＢ、又は任意の文書／ファイル記憶部）に記憶されるＵＲＩ又はＵＲＬといった一意な１つの値を許容及び生成する。
【００６６】
各マイクロサービスは、メタデータグラフ１４のエッジに対応し、それらのそれぞれの出力及び入力が、メタデータグラフ１４の頂点である。それぞれのＡＰＩの上にある注釈「ｌｏａｄ（ロードする）」、「ｓｕｍｍａｒｉｚｅ（要約する）」、「ｔｒａｎｓｆｏｒｍ（変換する）」は、マイクロサービスが実行されたときにマイクロサービスにより実行される処理の意味記述子であり、それぞれのエッジがメタデータグラフ１４においてラベル付けされる述部である。
【００６７】
グラフクエリ言語（例えば、ＳＰＡＲＱＬ、Ｃｙｐｈｅｒ等）を用いた受信されたクエリは、例えば、宣言変数を使用することによってグラフクエリにおける変数として要求された処理結果に対応する頂点を指定することにより、マイクロサービスの入力及び／又は出力（処理結果）の取得を可能にする。
【００６８】
ソフトウェアサービス実行システム１０は、メタデータグラフクエリインタフェース１６を介して、グラフクエリ言語を用いたクエリを受け入れ、ソフトウェアサービス実行コントローラ１８は、グラフクエリ言語を用いて指定され、他のマイクロサービスから得られた値（すなわち、入力データ）を用いて、グラフクエリ言語を用いた述部により識別されたマイクロサービスを呼び出し、メタデータグラフクエリインタフェース１６を介して、クエリにおける変数に対応する値を返す。
【００６９】
図３のマイクロサービスの実施形態において、マイクロサービスについてのＵＲＬは、クエリにおける述部から直接得ることが可能である。すなわち、メタデータグラフにおける述部は、マイクロサービスＵＲＬである。
【００７０】
図３により例示されるマイクロサービスアーキテクチャにおいて、各マイクロサービスは、以下の特徴を有する：
−各マイクロサービスは、１つの入力変数及び１つの出力変数のみを指定する。
−指定される入力変数及び指定される出力変数は、ＵＲＬのタイプである。
−任意的に、マイクロサービスのＵＲＬは、入力と出力との間の意味関係を規定する。
−各マイクロサービスは、対応する入力値と出力値との間の関係について、ＲＥＳＴメソッドのＧＥＴ、ＰＵＴ、ＰＯＳＴ、及びＤＥＬＥＴＥを規定する。
−ＧＥＴは、入力から出力を得る。実施形態において、処理結果は、持続され、キャッシュされ、記憶され、又は、これらの組合せの処理が実行され、他のマイクロサービスに利用可能にされ得る。
−ＰＵＴ及びＰＯＳＴは、特定の入力について返されなければならない処理結果を設定することを可能にする。いくつかの実施形態において、機械学習アルゴリズムが、マイクロサービスを再構成するために、ＰＵＴ及びＰＯＳＴに応じてトリガされる。
−ＤＥＬＥＴＥは、特定の実装において使用されている場合（すなわち、いくつかの実装においては、マイクロサービスの処理結果が、記憶されるかどうか／どこに記憶されるか／どのように記憶されるかに応じて、マイクロサービスＤＥＬＥＴＥオプションが存在しないことがある）、持続性レイヤ又はキャッシュから処理結果を削除することを可能にする。
【００７１】
図３のマイクロサービスは、一実施形態におけるソフトウェアライブラリ１２を例示している。図１の残りの特徴は、図１の記載におけるソフトウェアライブラリ１２及びソフトウェアサービス１２１に関連して説明したのと同じやり方で、図３のマイクロサービスとインタラクトする。
【００７２】
マイクロサービスは、グラフクエリ言語を用いてメタデータグラフクエリインタフェース１６を考慮することしか必要としないより高いソフトウェアレイヤ（ソフトウェアサービス実行システム１０のクライアント／ユーザ）に対して抽象化される。このようなレイヤにトランスペアレントに、マイクロサービスが、ソフトウェアサービス実行コントローラ１８により呼び出されて実行され、これは、いくつかの場合において、又は、他の場合における複雑な計算において、副次的作用を示す。マイクロサービスにおけるパラメータとして（及びグラフにおける頂点として）使用されるＵＲＬに対応する値は、それらの対応するＵＲＬを介してアクセス可能であり、これは、以下のことを意味する：
・マイクロサービスが実行されるときに、マイクロサービスがそれらの動作において使用されるために、それらの値はアクセス可能である。
・システムの最終応答の表現のために、それらの値はアクセス可能である。
【００７３】
頂点におけるＵＲＬとエッジにおける（マイクロサービスに対応する）述部とを伴う、システムにより使用されるグラフは、メタデータグラフであり、データは、エッジにおけるＵＲＬを介してアクセス可能であり、頂点におけるデータを計算するためのプロセスは、エッジのＵＲＬに対応するマイクロサービスとしてアクセス可能である。
【００７４】
図３は、ソフトウェアライブラリ１２におけるアルゴリズム（マイクロサービス）の高水準な記述を示している。図示されるマイクロサービスは、エッジとしてメタデータグラフにマッピングされ、それぞれのエッジのラベルは、図３におけるマイクロサービスのタイトル、すなわち、「ｌｏａｄ」、「ｓｕｍｍａｒｉｚｅ」、「ｔｒａｎｓｆｏｒｍ」に対応する。任意的に、ナレッジベースのロギング及び使用が、クエリから生成される、クエリ実行プランの最適化のために利用される。この最適化は、冗長な回答を回避すること、及び、回答が等しく適切である（健全且つ完全である）ときには、いくつかの動作を異なる順番で実行することを可能にし、その実行は、例えば、同じ動作を実行する複数のオプションの間で１つのマイクロサービスを選択することにより、より効率的である。
【００７５】
図３の例において、文書の解析のための動作、詳細には、「ｌｏａｄ」、「ｔｒａｎｓｆｏｒｍ」、及び「ｓｕｍｍａｒｉｚｅ」という動作を実装しているマイクロサービスについてのドキュメンテーションが示されている。図３は、ＯｐｅｎＡＰＩにより生成された、これらのサービスのドキュメンテーションを示している。
【００７６】
クエリは、以下のように、ＳＰＡＲＱＬクエリ言語を用いて、メタデータグラフクエリインタフェース１６により受信される：
SELECT  ?summary  WHERE  {
<http://fle.fujitsu.com/resources/example.csv>  :load  ?loadedResource  .
?loadedResource  :transform  ?processedResource  .
?processedResource  :summarize  ?summary  .
}
【００７７】
このようなクエリにより規定される探索パスは：
元頂点（ＵＲＬ：  http://example.com/resources/example.csv）  −  述部（load）  −  中間頂点（変数：  ?loadedResource）  −  述部（transform）  −  中間頂点（変数：  ?processedResource）  −  述部（summarize）  −  クエリ頂点（変数：  ?summary）
である。
【００７８】
ソフトウェアサービス実行コントローラ１８は、規定されている探索パスに応じて、以下のようにマイクロサービスの実行を制御する：
１．リモートＵＲＬにおけるファイル、この場合は、
<http://fle.fujitsu.com/resources/example.csv>が、ロードされ、ロードされた（ローカル）リソースになる。
２．ローカルリソースとして、これが、変換され得、例えば、ＣＳＶファイルが、（一般的には）マトリクスに、又は、（この対象としている例では）データフレームに、パースされ得る。したがって、processedResourceは、そのようなデータフレームの位置を現在示しているＵＲＬである。
３．述部：summarizeは、前のステップのデータフレームを使用して要約を生成することができるマイクロサービスに対応する。（ＵＲＬとしての）要約結果は、変数?summaryの値であり、この値が、受信されたクエリに応じて返される。なぜならば、これが、クエリの識別された変数である（すなわち、ＳＥＬＥＣＴ節にある）からである。
【００７９】
このようにして、ユーザは、要求された要約を示すＵＲＬを得る。ユーザが、何らかのソフトウェアである場合、このソフトウェアは、ＵＲＬのコンテンツにアクセスし、例えば、人間のユーザに対して何らかのＧＵＩにおいてコンテンツを表示するといった任意の目的のために、コンテンツを使用することができる。これらの動作は、宣言的に高水準でクエリ言語の一部として規定される。結果として、システムにより自動的に実行され可能にされ得るいくつかの最適化及び利点が存在する。例えば、ＵＲＬ<http://fle.fujitsu.com/resources/example.csv>におけるリソースが、直近に既にロードされていた場合（又は、直近ではないが、何らかの理由により持続されている場合）。そのようなリモートアクセスは、再度実行されることはなく、?loadedResourceのＵＲＬが、以前の動作で得られており、リモートリソースに再度アクセスすることなく、且つ、そのような動作が示す時間（及び潜在的な経済的コスト）を招くことなく、再度返されることになるであろう。
【００８０】
図４は、本発明を具現化し、ソフトウェアサービス実行方法の実施形態の方法を実施するために使用され得る、ウェブサーバ等のコンピューティングデバイスのブロック図である。コンピューティングデバイスは、プロセッサ９９３及びメモリ９９４を有する。任意的に、コンピューティングデバイスは、例えば、本発明の実施形態の他のコンピューティングデバイスといった他のコンピューティングデバイスと通信するためのネットワークインタフェース９９７も含む。
【００８１】
例えば、一実施形態は、そのようなコンピューティングデバイス群のネットワークを含み得る。任意的に、コンピューティングデバイスは、キーボード及びマウス等の１以上の入力機構９９６及び１以上のモニタ等のディスプレイユニット９９５も含む。これらのコンポーネントは、バス９９２を介して互いに接続可能である。
【００８２】
メモリ９９４は、コンピュータ読み取り可能な媒体を含み得る。コンピュータ読み取り可能な媒体という用語は、コンピュータ実行可能な命令を運ぶ又はデータ構造を記憶するよう構成された１つの媒体又は複数の媒体（例えば、集中データベース若しくは分散データベース並びに／又は関連するキャッシュ及びサーバ）を指し得る。コンピュータ実行可能な命令は、例えば、汎用コンピュータ、特殊目的コンピュータ、又は特殊目的処理デバイス（例えば、１以上のプロセッサ）によりアクセス可能であり、これらに１以上の機能又は動作を実行させる命令及びデータを含み得る。したがって、「コンピュータ読み取り可能な記憶媒体」という用語も、機械により実行され、機械に本開示の方法のうちの１以上を実行させる命令のセットを記憶する、符号化する、又は運ぶことができる任意の媒体を含み得る。したがって、「コンピュータ読み取り可能な記憶媒体」という用語は、ソリッドステートメモリ、光媒体、及び磁気媒体を含むが、これらに限定されるものではないと解釈され得る。限定ではなく例として、そのようなコンピュータ読み取り可能な媒体は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）又は他の光ディスクストレージ、磁気ディスクストレージ又は他の磁気記憶デバイス、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）を含む非一時的なコンピュータ読み取り可能な記憶媒体を含み得る。
【００８３】
プロセッサ９９３は、コンピューティングデバイスを制御し、例えば、本明細書及び特許請求の範囲に記載の、ソフトウェアサービス実行システムのコンポーネントの様々な異なる機能を実装するようにメモリに記憶されたコードを実行する等の処理動作を実行するよう構成される。メモリ９９４は、プロセッサ９９３により読み書きされているデータを記憶する。本明細書で言及されているように、プロセッサは、マイクロプロセッサ、中央処理装置等といった１以上の汎用処理デバイスを含み得る。プロセッサは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、又は、他の命令セットを実装しているプロセッサ若しくは命令セットの組合せを実装しているプロセッサを含み得る。プロセッサはまた、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ等といった１以上の特殊目的処理デバイスを含み得る。１以上の実施形態において、プロセッサは、本明細書に記載の動作及びステップを実行するための命令を実行するよう構成される。
【００８４】
ディスプレイユニット９９７は、コンピューティングデバイスにより記憶されているデータの表現を表示することができ、ユーザとコンピューティングデバイスに記憶されているプログラム及びデータとの間のインタラクションを可能にするカーソル及びダイアログボックス並びにスクリーンも表示することができる。
【００８５】
入力機構９９６は、ユーザが、コンピューティングデバイスにデータ及び命令を入力することを可能にし得る。
【００８６】
ネットワークインタフェース（ネットワークＩ／Ｆ）９９７は、インターネット等のネットワークに接続され得るものであり、ネットワークを介して他のそのようなコンピューティングデバイスに接続可能である。ネットワークＩ／Ｆ９９７は、ネットワークを介した他の装置から／へのデータ入力／出力を制御することができる。マイクロフォン、スピーカ、プリンタ、電力供給ユニット、ファン、ケース、スキャナ、トラッカボール等といった他の周辺デバイスも、コンピューティングデバイスに含められ得る。
【００８７】
図１のソフトウェアライブラリ１２及び図２の複数のソフトウェアサービスを記憶するステップＳ２０１は、ソフトウェアサービス１２１を記憶するメモリ９９４であり得、任意的に、ソフトウェアサービス１２１の処理命令（プログラム）を実行し、入力データにアクセスし処理結果をポストするようにネットワークＩ／Ｆ９９７を介してデータを交換する１つのプロセッサ９９３（又は複数のプロセッサ）でもある。詳細には、プロセッサ９９３は、特定のソフトウェアサービスによる入力データについて指定されたＵＲＬから、ネットワークＩ／Ｆを介して入力データを受信し、処理結果を生成するためにソフトウェアサービス１２１の処理を実行するための処理命令を実行する。さらに、プロセッサ９９３は、接続されている記憶ユニットに、例えば、ＪＳＯＮ文書、ＲＤＦ文書、ＪＳＯＮ−ＬＤ文書等において処理結果を記憶し、且つ／又は、クライアント／ユーザへの出力のために、ネットワークＩ／Ｆ９９７を介して、処理結果をメタデータグラフクエリインタフェースに送信するための処理命令を実行することができる。ソフトウェアライブラリ１２によるソフトウェアサービスの実行は、ソフトウェアサービス実行コントローラ１８の制御下で行われる。
【００８８】
図１のメタデータグラフ１４及び図２のメタデータグラフを記憶するステップＳ２０２、並びに、図１の関連するメタデータグラフクエリインタフェース１６、図２の受信するステップＳ２０３、及び図２のクエリに応答するステップＳ２０５は、メタデータグラフ１４を記憶するメモリ９９４、及び、メモリ９９４に記憶されている処理命令（プログラム）を実行し、受信されたクエリを処理し規定されている探索パスを抽出するようにネットワークＩ／Ｆ９９７を介してデータを交換する１つのプロセッサ９９３（又は複数のプロセッサ）であり得る。詳細には、プロセッサ９９３は、クライアント／ユーザ（例えば、より高レベルのソフトウェアエンティティ）から、ネットワークＩ／Ｆを介してメタデータグラフ１４に対するクエリを受信し、受信されたクエリから規定されている探索パスを抽出するための処理命令を実行する。さらに、プロセッサ９９３は、接続されている記憶ユニットに、抽出された探索パスを記憶し、且つ／又は、処理のために、ネットワークＩ／Ｆ９９７を介して、抽出された探索パスをソフトウェアサービス実行コントローラに送信するための処理命令を実行することができる。
【００８９】
図１のソフトウェアサービス実行コントローラ１８及び図２のソフトウェアサービスの実行を制御するステップＳ２０４は、メモリ９９４に記憶されている処理命令（プログラム）を実行し、ネットワークＩ／Ｆ９９７を介してデータを交換する１つのプロセッサ９９３（又は複数のプロセッサ）であり得る。詳細には、プロセッサ９９３は、メタデータグラフクエリインタフェース１６から、ネットワークＩ／Ｆを介して、受信されたクエリにおいて規定されていて、メタデータグラフクエリインタフェース１６により抽出された探索パスを受信し、受信された探索パスを呼び出しの集合（例えば、ＲＥＳＴメソッドへの呼び出し）に変換するための処理命令、又は、探索パスにおける述部により識別されたソフトウェアサービス１２１を実行するためのソフトウェアライブラリ１２に対する他の実行命令を実行する。さらに、プロセッサ９９３は、接続されている記憶ユニット（ナレッジベース）に、探索パス及び実行制御のレコードを記憶するための処理命令を実行することができる。
【００９０】
本発明を具現化する方法は、図４に示されるコンピューティングデバイス等のコンピューティングデバイス上で実行され得る。そのようなコンピューティングデバイスは、図４に示される全てのコンポーネントを有する必要はなく、これらのコンポーネントのサブセットを含んでもよい。本発明を具現化する方法は、ネットワークを介して１以上のデータ記憶サーバと通信する１つのコンピューティングデバイスにより実行され得る。コンピューティングデバイスは、受信されたクエリにおけるクエリ頂点に対応する処理結果を記憶するデータ記憶デバイス自身であってもよい。
【００９１】
本発明を具現化する方法は、互いと協働して動作する複数のコンピューティングデバイスにより実行されてもよい。複数のコンピューティングデバイスのうちの１以上のコンピューティングデバイスは、メタデータグラフ及び／又はソフトウェアライブラリ１２におけるソフトウェアサービス１２１の処理結果の少なくとも一部を記憶するデータ記憶サーバであってもよい。
【００９２】
以上の実施形態に関し、さらに以下の付記を開示する。
【００９３】
（付記１）
複数のソフトウェアサービスを記憶しているソフトウェアライブラリであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力する、ソフトウェアライブラリと、
前記複数のソフトウェアサービスを表現しているメタデータグラフであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、メタデータグラフと、
グラフクエリ言語を用いたクエリを受信するよう構成されているメタデータグラフクエリインタフェースであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、メタデータグラフクエリインタフェースと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するよう構成されているソフトウェアサービス実行コントローラと、
を有し、
前記メタデータグラフクエリインタフェースは、前記クエリ頂点の値をもって、受信された前記クエリに応答するよう構成されており、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ソフトウェアサービス実行システム。
【００９４】
（付記２）
前記元頂点の値は、明示的に規定された値、又は、前記クエリ頂点への前記規定されている探索パスに沿って前記元頂点に結び付けているラベル付けされた前記エッジにより識別された前記ソフトウェアサービスにより処理されるデータの元の位置のＵＲＩ、により指定される、付記１に記載のソフトウェアサービス実行システム。
【００９５】
（付記３）
受信された前記クエリに応じて出力される前記クエリ頂点の値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスの前記指定された出力ＵＲＩ、又は、該ソフトウェアサービスの処理の結果である、付記１に記載のソフトウェアサービス実行システム。
【００９６】
（付記４）
前記ソフトウェアサービス実行コントローラは、前記元頂点と前記規定されている探索パスにおける前記クエリ頂点との間の頂点又は各頂点について、入力データとして、それぞれの頂点の元頂点側のラベル付けされたエッジにより識別されたソフトウェアサービスの処理の結果を、それぞれの頂点のクエリ頂点側のソフトウェアサービスに提供することにより、前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を制御するよう構成されている、付記１に記載のソフトウェアサービス実行システム。
【００９７】
（付記５）
前記ソフトウェアサービスは、マイクロサービスである、付記１に記載のソフトウェアサービス実行システム。
【００９８】
（付記６）
前記ソフトウェアサービスは、ＲＥＳＴｆｕｌなソフトウェアサービスであり、各ＲＥＳＴｆｕｌなソフトウェアサービスは、ＧＥＴ要求、並びにＰＯＳＴ要求及び／又はＰＵＴ要求についてのメソッドを規定している、付記１に記載のソフトウェアサービス実行システム。
【００９９】
（付記７）
前記ソフトウェアサービス実行コントローラは、元頂点からクエリ頂点へと前記規定されている探索パスを進行し、それぞれのソフトウェアサービスを識別する前記指定された述部を用いてラベル付けされたエッジが、前記指定された述部の主頂点から、前記指定された述部の目的頂点へと探索される場合に、前記ソフトウェアサービスにＧＥＴ要求を発行することにより、前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の前記ソフトウェアサービスの実行を制御するよう構成されている、付記６に記載のソフトウェアサービス実行システム。
【０１００】
（付記８）
ソフトウェアサービスは、前記メタデータグラフにおいて前記述部により識別可能であり、前記述部は、該ソフトウェアサービスのＵＲＩ又はＵＲＬである、付記１に記載のソフトウェアサービス実行システム。
【０１０１】
（付記９）
前記述部は、それぞれのソフトウェアサービスにより実行される処理の意味記述子である、付記８に記載のソフトウェアサービス実行システム。
【０１０２】
（付記１０）
前記ソフトウェアサービス実行コントローラは、ナレッジベースを含み、前記ソフトウェアサービス実行コントローラは、各探索パスについて、当該探索パスと、１以上の前記クエリ頂点と、前記元頂点と、を記録したレコードを前記ナレッジベースに追加するよう構成されており、前記ソフトウェアサービスは、１以上の前記クエリ頂点の結果を得る際に前記ソフトウェアサービス実行コントローラにより実行され、
前記ソフトウェアサービス実行コントローラは、規定されている探索パスに対する応答を生成する際にソフトウェアサービスを実行する制御を最適化するために、該規定されている探索パスを、前記ナレッジベースに記録された探索パスと比較するよう構成されている、付記１乃至９いずれかに記載のソフトウェアサービス実行システム。
【０１０３】
（付記１１）
複数のソフトウェアサービスを記憶するステップであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ステップと、
前記複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、ステップと、
グラフクエリ言語を用いたクエリを受信するステップであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、ステップと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の記憶された前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するステップと、
前記クエリ頂点の値をもって、受信された前記クエリに応答するステップであって、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ステップと、
を含むソフトウェアサービス実行方法。
【０１０４】
（付記１２）
コンピューティングデバイスにより実行されたときに、前記コンピューティングデバイスに、
複数のソフトウェアサービスを記憶するステップであって、各ソフトウェアサービスは、実行されると、指定された入力ＵＲＩから入力データを得て、得られた前記入力データに対して処理を実行し、前記処理の結果を指定された出力ＵＲＩに出力するよう構成されている、ステップと、
前記複数のソフトウェアサービスを表現しているメタデータグラフを記憶するステップであって、各ソフトウェアサービスは、主頂点と目的頂点との間の関係を規定している述部により、前記メタデータグラフにおいて識別可能であり、前記主頂点は、前記指定された入力ＵＲＩを記憶しており、前記述部を用いてラベル付けされた有向エッジにより、前記指定された出力ＵＲＩを記憶している前記目的頂点に結び付けられている、ステップと、
グラフクエリ言語を用いたクエリを受信するステップであって、受信された前記クエリは、各エッジが、前記メタデータグラフにおける前記述部のうちのそれぞれの指定された述部を用いてラベル付けされた１以上のエッジに沿った規定されている探索パスにより元頂点に結び付けられているクエリ頂点を、変数として要求し、前記変数の値が、受信された前記クエリにより指定されている、ステップと、
前記規定されている探索パスにおけるエッジをラベル付けしている１以上の前記指定された述部により識別された１以上の記憶された前記ソフトウェアサービスの実行を、前記規定されている探索パスにより判別された順番で制御するステップと、
前記クエリ頂点の値をもって、受信された前記クエリに応答するステップであって、前記クエリ頂点の前記値は、前記元頂点から前記規定されている探索パスに沿って前記クエリ頂点に結び付けているラベル付けされた前記エッジのラベルにより識別された前記ソフトウェアサービスを実行することにより生成される、ステップと、
を含む方法を実行させるコンピュータプログラム。
【符号の説明】
【０１０５】
１０    ソフトウェアサービス実行システム
１２    ソフトウェアライブラリ
１２１  サービス
１４    メタデータグラフ
１６    メタデータグラフクエリインタフェース
１８    ソフトウェアサービス実行コントローラ
９９２  バス
９９３  プロセッサ
９９４  メモリ
９９５  ディスプレイユニット
９９６  入力機構
９９７  ネットワークインタフェース
【図１】
2018067280.tif 000003
【図２】
2018067280.tif 000004
【図３】
2018067280.tif 000005
【図４】
2018067280.tif 000006
【外国語明細書】
2018067280000001.pdf