(57)【要約】  １又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフ（４００）の記述を含む仕様が受信される。グラフインターフェース（１２６）は第１の複数のコンポーネントのために形成され、グラフインターフェースの第１のインターフェースエレメントを形成するステップであって、第１のインターフェースエレメントが、第１の数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、ステップと、第１のコンポーネントの第１のポートが第１のインターフェースエレメントの１又は２以上の特性と一致するように、第１のインターフェースエレメントの１又は２以上の特性を設定するステップとを含む。グラフインターフェースの第１の実装形態（１２４）は、第１の数のコンポーネントを含むように形成され、形成するステップは、第１の数のコンポーネントの第１のコンポーネントの第１のインターフェースエレメントと第１のポートとの間に第１の対応関係を形成するステップを含む。
2019505885.tif 000002
【特許請求の範囲】
【請求項１】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するための方法であって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの第１のインターフェースエレメントを形成するステップであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、ステップと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの前記１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの１又は２以上の特性を設定するステップと
を含む、前記グラフインターフェースを形成するステップと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成するステップであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成するステップを含む、前記グラフインターフェースの第１の実装形態を形成するステップと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶するステップと
を含む、前記方法。
【請求項２】
１又は２以上の有向リンクの第２のセットによって相互接続された第２の複数のコンポーネントを含む第２の有向グラフの記述を含む仕様をデータストレージシステムに記憶するステップと、前記第２の有向グラフにおける第１の有向グラフの１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントのインスタンスを識別するステップと、前記第２の有向グラフ内の１又は２以上の有向リンクの前記第１のセットによって相互接続された前記第１の複数のコンポーネントの識別されたインスタンスをグラフインターフェースに置き換えるステップとをさらに含む、請求項１に記載の方法。
【請求項３】
第１のインターフェースエレメントの１又は２以上の特性を設定するステップが、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するステップと、決定された１又は２以上の記述子に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定するステップとを含む、請求項１又は２に記載の方法。
【請求項４】
決定された１又は２以上の記述子に基づいて第１のインターフェースエレメントの１又は２以上の特性を設定するステップが、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、決定された伝播の方向に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定するステップとを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播するポートとして前記第１のポートを識別するステップと、識別に基づいて、前記第１のインターフェースエレメントに伝播の外向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前に、データ又は計算特性の記述子の伝播中に使用される、請求項４に記載の方法。
【請求項６】
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播しないポートとして前記第１のポートを識別するステップと、識別に基づいて、前記第１のインターフェースエレメントに伝播の内向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前にデータ又は計算特性の記述子の伝播中に使用される、請求項４に記載の方法。
【請求項７】
グラフインターフェースを形成するステップが、
前記グラフインターフェースの第２のインターフェースエレメントを形成するステップであって、前記第２のインターフェースエレメントが、第１の複数のコンポーネントのうちの第２のコンポーネントの第２のポートに関連付けられている、前記形成するステップと、
データ又は計算特性の記述子を前記第２のインターフェースエレメントに伝播しないポートとして前記第２のポートを識別するステップと、識別に基づいて、前記第２のインターフェースエレメントへの伝播の内向き方向を割り当てるステップとを含む、前記第２のコンポーネントの前記第２のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の前記１又は２以上の記述子と、前記第２のコンポーネントの前記第２のポートに関連付けられるデータ又は計算特性の前記１又は２以上の記述子との間の関係を識別し、第１のインターフェースエレメントと前記第２のインターフェースエレメントとの間の識別された関係の表現を形成するステップと
を含む、請求項６に記載の方法。
【請求項８】
関係の表現が、第１のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子が、第２のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子と同じであることを示す制約を含む、請求項７に記載の方法。
【請求項９】
１又は２以上の他のコンポーネントのポートが第１のインターフェースエレメントの１又は２以上の特性に準拠するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップをさらに含む、請求項１〜８のいずれかに記載の方法。
【請求項１０】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、ユーザ入力を受信し、前記ユーザ入力に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップを含む、請求項９に記載の方法。
【請求項１１】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するために、前記１又は２以上の他のコンポーネントを解析するステップと、前記１又は２以上の他のコンポーネントの前記ポートに関連付けられる、決定された１又は２以上のデータ又は計算特性の記述子に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップとを含む、請求項９又は１０に記載の方法。
【請求項１２】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するために、前記１又は２以上の他のコンポーネントを解析するステップと、決定された伝播の方向に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップとを含む、請求項９〜１１のいずれかに記載の方法。
【請求項１３】
グラフインターフェースを形成するステップが、第１の複数のコンポーネントに関連付けられるパラメータを識別するステップと、前記パラメータに関連付けられるインターフェースエレメントを前記グラフインターフェースに追加するステップとをさらに含む、請求項１〜１２のいずれかに記載の方法。
【請求項１４】
パラメータに対応するパラメータ値を識別するステップと、識別されたパラメータ値をデフォルト値として使用するためにグラフインターフェースを設定するステップとをさらに含む、請求項１３に記載の方法。
【請求項１５】
実行のために第２の有向グラフを準備するステップであって、
グラフインターフェースの第１の実装形態をデータストレージシステムから読み出すステップと、
第１のインターフェースエレメントと、前記グラフインターフェースの前記第１の実装形態における第１の複数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係に基づいて、前記グラフインターフェースの前記第１の実装形態における前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートと、前記グラフインターフェースの前記第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第１の実装形態を前記第２の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項２に従属する場合、請求項１〜１４のいずれかに記載の方法。
【請求項１６】
実行のために第２の有向グラフを準備するステップであって、
グラフインターフェースの第１の実装形態とは異なる前記グラフインターフェースの第２の実装形態をデータストレージシステムから読み出すステップと、
第１のインターフェースエレメントと前記グラフインターフェースの前記第２の実装形態におけるコンポーネントのポートとの間の第２の対応関係に基づいて、前記グラフインターフェースの前記第２の実装形態における前記コンポーネントの前記ポートと、前記グラフインターフェースの前記第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第２の実装形態を前記第２の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項２に従属する場合、請求項１〜１５のいずれかに記載の方法。
【請求項１７】
第１のインターフェースエレメントが、第１の複数のコンポーネントの第１のコンポーネントの第１のポートに接続された有向リンクを、前記第１の複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項１〜１６のいずれかに記載の方法。
【請求項１８】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、
前記第１の複数のコンポーネントのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を行わせるための命令を含む、前記ソフトウェア。
【請求項１９】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも１つのプロセッサであって、前記処理することが、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項２０】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項２１】
グラフインターフェースを決定するための方法であって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、
前記第１の有向グラフ用のグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成するステップであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成するステップと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析するステップと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定するステップと
を含む、前記方法。
【請求項２２】
インターフェースエレメントに関連付けられるメタデータ記述子特性が、前記インターフェースエレメントを介して転送されるデータのデータ特性、或いは複数のコンポーネントのうちの１又は２以上のものの計算特性を含む、請求項２１に記載の方法。
【請求項２３】
データ特性が、転送されたデータ内のレコードのフィールドのフォーマットを含む、請求項２２に記載の方法。
【請求項２４】
計算特性が、複数のコンポーネントのうちの１又は２以上によって表される計算の実行の並列度を含む、請求項２２又は２３に記載の方法。
【請求項２５】
第１の有向グラフ用のグラフインターフェースを形成するステップが、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる１又は２以上の特性が、前記インターフェースエレメントが、前記グラフインターフェースを介してパラメータ値を転送するように設定されていることを特定することを決定するために、前記第１の有向グラフを解析するステップをさらに含む、請求項２１〜２４のいずれかに記載の方法。
【請求項２６】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播する複数のコンポーネントのうちの１つのコンポーネントの識別に基づいて、前記第１の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項２１〜２５のいずれかに記載の方法。
【請求項２７】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、複数のコンポーネントのうちのどのコンポーネントも前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播しないという決定に基づいて、前記第２の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項２１〜２５のいずれかに記載の方法。
【請求項２８】
第１の有向グラフ用のグラフインターフェースを形成するステップが、インターフェースエレメントのうちの２又は３以上が、それぞれ必然的に同じ特性に関連付けられることを決定するステップをさらに含む、請求項２１〜２７のいずれかに記載の方法。
【請求項２９】
グラフインターフェースの表現及び第１の有向グラフの表現をデータストレージシステムに記憶するステップをさらに含む、請求項２１〜２８のいずれかに記載の方法。
【請求項３０】
１又は２以上のインターフェースエレメントのうちの少なくとも一部が、複数のコンポーネントのうちの１つのコンポーネントのポートに接続された有向リンクを、前記複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項２１〜２９のいずれかに記載の方法。
【請求項３１】
グラフインターフェースを決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成することであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記グラフインターフェースを形成することとを行わせるための命令を含む、前記ソフトウェア。
【請求項３２】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも１つのプロセッサとを含み、前記処理することが、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成するステップであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【請求項３３】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成することであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年１２月２１日に出願された米国特許出願第６２／２７０，１６３号に対する優先権を主張する。
【０００２】
本明細書は、動的にリンクされたサブグラフのサブグラフインターフェースの生成に関する。
【背景技術】
【０００３】
データを処理するための多くのソフトウェアアプリケーションが存在する。これらのソフトウェアアプリケーションの一部は、データフローグラフとして指定されている。データフローグラフは、通常、いくつかのデータ処理コンポーネントを含み、それらはリンクによって相互接続され、「フロー」と呼ばれることもある。
【０００４】
動作中、データ（例えば、データセット）は、データベースから、又は何らかの他のデータストレージシステムから、データフローグラフによって受信される。受信されたデータは、コンポーネント及びフローの相互接続によって画定された依存性に従って、フローを通ってコンポーネントに伝播することによって、データフローグラフを通って進む。各コンポーネントは、処理されたデータを１又は２以上のフローを介して出力データとして提供する前に、コンポーネントに関連付けられるあらかじめ定められた機能に従って、受信したデータを処理する。データフローグラフの出力において、処理されたデータは、例えば、別のデータストレージシステムに記憶されるか、別の下流システムに提供されるか、又はユーザに提示される。
【０００５】
データフローグラフの開発者は、一般に、データフローグラフが所望の機能性を実装するように、コンポーネントを表すブロックをグラフィカル開発環境（ＧＤＥ，graphical development environment）によって提供されるグラフィカルワーキングエリア（又は「キャンバス」）上にドラッグし、データフローを表すリンクにコンポーネントを相互接続することによって、グラフを指定する。開発者がデータフローグラフの実装形態に満足すると、後で使用するためにデータフローグラフをストレージに保存することができる。一般に、開発者がデータフローグラフの実装形態を後に変更する必要がある場合、ＧＤＥに、保存されたデータフローグラフをストレージから読み込ませ、データフローグラフを変更させ、次いで、変更されたデータフローグラフをストレージに再保存させる。
【０００６】
いくつかの例では、データフローグラフのコンポーネントは、それ自体、「サブグラフ」と呼ばれるデータフローグラフを使用して実装される。所与のデータフローグラフにおいて使用されているコンポーネントのサブグラフを変更するために、データフローグラフがディスクから読み込まれ、そのサブグラフが編集され得るようにサブグラフコンポーネントが開かれ、サブグラフへの変更が行われ、データフローグラフ自体がストレージに再保存され、それによって、サブグラフへの変更が保存されたデータフローグラフに埋め込まれる。
【発明の概要】
【課題を解決するための手段】
【０００７】
一般的な態様において、方法は、１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、第１の数のコンポーネントのグラフインターフェースを形成するステップとを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成するステップは、グラフインターフェースの第１のインターフェースエレメントを形成するステップであって、第１のインターフェースエレメントが、第１の数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、ステップと、第１のコンポーネントの第１のポートが第１のインターフェースエレメントの１又は２以上の特性と一致するように、第１のインターフェースエレメントの１又は２以上の特性を設定するステップとを含み、第１の数のコンポーネントを含むグラフインターフェースの第１の実装形態を形成するステップであって、第１のインターフェースエレメントと第１の数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係を形成するステップを含む、前記第１の実装形態を形成するステップと、グラフインターフェースの第１の実装形態をデータストレージシステムに記憶するステップとを含む。
【０００８】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【０００９】
本方法は、１又は２以上の有向リンクの第２のセットによって相互接続された第２の数のコンポーネントを含む第２の有向グラフの記述を含む仕様をデータストレージシステムに記憶するステップと、第２の有向グラフにおける第１の有向グラフの１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントのインスタンスを識別するステップと、第２の有向グラフ内の１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントの識別されたインスタンスをグラフインターフェースに置き換えるステップとを含み得る。第１のインターフェースエレメントの１又は２以上の特性を設定するステップは、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するステップと、決定された１又は２以上の記述子に基づいて、第１のインターフェースエレメントの１又は２以上の特性を設定するステップとを含み得る。
【００１０】
決定された１又は２以上の記述子に基づいて第１のインターフェースエレメントの１又は２以上の特性を設定するステップは、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、決定された伝播の方向に基づいて、第１のインターフェースエレメントの１又は２以上の特性を設定するステップとを含み得る。
【００１１】
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップは、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播するポートとして第１のポートを識別するステップと、識別に基づいて、第１のインターフェースエレメントに伝播の外向き方向を割り当てるステップとを含み得る。第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップは、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播しないポートとして第１のポートを識別するステップと、識別に基づいて、第１のインターフェースエレメントに伝播の内向き方向を割り当てるステップとを含み得る。次いで、割り当てられた伝播の方向は、グラフインターフェースの第１の実装形態を含むコンテナグラフの実行前に、データ又は計算特性の記述子の伝播中に使用される。
【００１２】
グラフインターフェースを形成するステップは、グラフインターフェースの第２のインターフェースエレメントを形成するステップであって、第２のインターフェースエレメントが、第１の数のコンポーネントの第２のコンポーネントの第２のポートに関連付けられている、前記形成するステップと、データ又は計算特性の記述子を第２のインターフェースエレメントに伝播しないポートとして第２のポートを識別するステップと、識別に基づいて、第２のインターフェースエレメントへの伝播の内向き方向を割り当てるステップとを含む、第２のコンポーネントの第２のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子と、第２のコンポーネントの第２のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子との間の関係を識別し、第１のインターフェースエレメントと第２のインターフェースエレメントとの間の識別された関係の表現を形成するステップとを含み得る。
【００１３】
関係の表現は、第１のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子が、第２のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子と同じであることを示す制約を含み得る。本方法は、１又は２以上の他のコンポーネントのポートが第１のインターフェースエレメントの１又は２以上の特性に準拠するように、第１のインターフェースエレメントの１又は２以上の特性を変更するステップを含み得る。第１のインターフェースエレメントの１又は２以上の特性を変更するステップは、ユーザ入力を受信し、ユーザ入力に基づいて、第１のインターフェースエレメントの１又は２以上の特性を変更するステップを含み得る。第１のインターフェースエレメントの１又は２以上の特性を変更するステップは、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するために、１又は２以上の他のコンポーネントを解析するステップと、１又は２以上の他のコンポーネントのポートに関連付けられる、決定された１又は２以上のデータ又は計算特性の記述子に基づいて、第１のインターフェースエレメントの１又は２以上の特性を変更するステップとを含み得る。
【００１４】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップは、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するために、１又は２以上の他のコンポーネントを解析するステップと、決定された伝播の方向に基づいて、第１のインターフェースエレメントの１又は２以上の特性を変更するステップとを含み得る。グラフインターフェースを形成するステップは、第１の数のコンポーネントに関連付けられるパラメータを識別するステップと、そのパラメータに関連付けられるインターフェースエレメントをグラフインターフェースに追加するステップとを含み得る。本方法は、パラメータに対応するパラメータ値を識別するステップと、識別されたパラメータ値をデフォルト値として使用するためにグラフインターフェースを設定するステップとを含み得る。
【００１５】
本方法は、実行のために第２の有向グラフを準備するステップであって、グラフインターフェースの第１の実装形態をデータストレージシステムから読み出すステップと、第１のインターフェースエレメントと、グラフインターフェースの第１の実装形態における第１の数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係に基づいて、グラフインターフェースの第１の実装形態における第１の数のコンポーネントの第１のコンポーネントの第１のポートと、グラフインターフェースの第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、第１の実装形態を第２の有向グラフに挿入するステップとを含む、前記準備するステップを含み得る。本方法は、実行のために第２の有向グラフを準備するステップであって、グラフインターフェースの第１の実装形態とは異なるグラフインターフェースの第２の実装形態をデータストレージシステムから読み出すステップと、第１のインターフェースエレメントとグラフインターフェースの第２の実装形態におけるコンポーネントのポートとの間の第２の対応関係に基づいて、グラフインターフェースの第２の実装形態におけるコンポーネントのポートと、グラフインターフェースの第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、第２の実装形態を第２の有向グラフに挿入するステップとを含む、前記準備するステップを含み得る。
【００１６】
第１のインターフェースエレメントは、第１の数のコンポーネントの第１のコンポーネントの第１のポートに接続された有向リンクを、第１の数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含み得る。
【００１７】
別の一般的な態様では、ソフトウェアは、グラフインターフェース及びグラフインターフェースの実装形態を決定するために、コンピュータ可読媒体上に非一時的な形態で記憶される。ソフトウェアは、コンピューティングシステムに、１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、第１の数のコンポーネントのグラフインターフェースを形成することとを行わせるための命令を含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第１のインターフェースエレメントを形成することであって、第１のインターフェースエレメントが、第１の数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、ステップと、第１のコンポーネントの第１のポートが第１のインターフェースエレメントの１又は２以上の特性と一致するように、第１のインターフェースエレメントの１又は２以上の特性を設定することとを含み、第１の数のコンポーネントを含むグラフインターフェースの第１の実装形態を形成することであって、第１のインターフェースエレメントと第１の数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係を形成することを含む、ことと、グラフインターフェースの第１の実装形態をデータストレージシステムに記憶することとを含む。
【００１８】
別の一般的な態様では、グラフインターフェース及びグラフインターフェースの実装形態を決定するためのコンピューティングシステムは、１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、仕様を処理するように設定された少なくとも１つのプロセッサとを含む。処理することは、第１の数のコンポーネントのグラフインターフェースを形成することを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第１のインターフェースエレメントを形成することであって、第１のインターフェースエレメントが、第１の数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられることと、第１のコンポーネントの第１のポートが第１のインターフェースエレメントの１又は２以上の特性と一致するように、第１のインターフェースエレメントの１又は２以上の特性を設定することとを含み、第１の数のコンポーネントを含むグラフインターフェースの第１の実装形態を形成することであって、第１のインターフェースエレメントと第１の数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係を形成することを含む、ことと、グラフインターフェースの第１の実装形態をデータストレージシステムに記憶することとを含む。
【００１９】
別の一般的な態様では、グラフインターフェース及びグラフインターフェースの実装形態を決定するためのコンピューティングシステムは、１又は２以上の有向リンクの第１のセットによって相互接続された第１の数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、仕様を処理するための手段とを含む。処理することは、第１の数のコンポーネントのグラフインターフェースを形成することを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第１のインターフェースエレメントを形成することであって、第１のインターフェースエレメントが、第１の数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられることと、第１のコンポーネントの第１のポートが第１のインターフェースエレメントの１又は２以上の特性と一致するように、第１のインターフェースエレメントの１又は２以上の特性を設定することとを含み、第１の数のコンポーネントを含むグラフインターフェースの第１の実装形態を形成することであって、第１のインターフェースエレメントと第１の数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係を形成することを含む、ことと、グラフインターフェースの第１の実装形態をデータストレージシステムに記憶することとを含む。
【００２０】
別の一般的な態様では、グラフインターフェースを決定するための方法は、有向リンクによって相互接続されたいくつかのコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、第１の有向グラフ用のグラフインターフェースを形成するステップとを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成するステップは、グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために第１の有向グラフを解析し、１又は２以上のインターフェースエレメントを形成するステップであって、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、ステップと、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第２の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第１の有向グラフを解析するステップと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定するステップとを含む。
【００２１】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【００２２】
インターフェースエレメントに関連付けられるメタデータ記述子特性は、インターフェースエレメントを介して転送されるデータのデータ特性、或いは多数のコンポーネントのうちの１又は２以上のものの計算特性を含み得る。データ特性は、転送されたデータ内のレコードのフィールドのフォーマットを含み得る。計算特性は、多数のコンポーネントのうちの１又は２以上によって表される計算の実行の並列度を含み得る。第１の有向グラフ用のグラフインターフェースを形成するステップは、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられる１又は２以上の特性が、インターフェースエレメントが、グラフインターフェースを介してパラメータ値を転送するように設定されていることを特定することを決定するために、第１の有向グラフを解析するステップを含み得る。インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又は第２の有向グラフからインターフェースエレメントに伝播されるかを決定するステップは、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、メタデータ記述子特性の値をインターフェースエレメントに伝播する多数のコンポーネントのうちの１つのコンポーネントの識別に基づいて、第１の有向グラフからインターフェースエレメントに伝播されると決定するステップを含み得る。
【００２３】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又は第２の有向グラフからインターフェースエレメントに伝播されるかを決定するステップは、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、複数のコンポーネントのうちのどのコンポーネントもメタデータ記述子特性の値をインターフェースエレメントに伝播しないという決定に基づいて、第２の有向グラフからインターフェースエレメントに伝播されると決定するステップを含み得る。第１の有向グラフ用のグラフインターフェースを形成するステップは、インターフェースエレメントのうちの２又は３以上は、それぞれ必然的に同じ特性に関連付けられることを決定するステップを含み得る。本方法は、グラフインターフェースの表現及び第１の有向グラフの表現をデータストレージシステムに記憶するステップを含み得る。１又は２以上のインターフェースエレメントのうちの少なくとも一部は、多数のコンポーネントのうちの１つのコンポーネントのポートに接続された有向リンクを、多数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含み得る。
【００２４】
別の一般的な態様では、グラフインターフェースを決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアは、コンピューティングシステムに、有向リンクによって相互接続されたいくつかのコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、第１の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを行わせるための命令を含み、グラフインターフェースを形成することが、グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために第１の有向グラフを解析し、１又は２以上のインターフェースエレメントを形成することであって、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、ことと、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第２の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第１の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【００２５】
別の一般的な態様では、グラフインターフェースを決定するためのコンピューティングシステムは、有向リンクによって相互接続されたいくつかのコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、仕様を処理するように設定された少なくとも１つのプロセッサとを含み、処理することが、第１の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを含み、グラフインターフェースを形成することが、グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために第１の有向グラフを解析し、１又は２以上のインターフェースエレメントを形成することであって、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、ことと、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第２の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第１の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【００２６】
別の一般的な態様では、グラフインターフェースを決定するためのコンピューティングシステムは、有向リンクによって相互接続されたいくつかのコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、仕様を処理するための手段とを含み、処理することが、第１の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを含み、グラフインターフェースを形成することが、グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために第１の有向グラフを解析し、１又は２以上のインターフェースエレメントを形成することであって、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、ことと、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第２の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第１の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【００２７】
態様は、以下の利点のうちの１又は２以上を含むことができる。
【００２８】
データフローグラフソフトウェア開発の状況では、静的にリンクされたサブグラフを、サブグラフインターフェース及び対応する実装サブグラフを含む動的にリンクされたサブグラフに変換する能力が必要である。いくつかの例では、静的にリンクされたサブグラフがそのコンテナグラフから切り取られると、メタデータ伝播に重大な障害が発生する可能性があるため、そうすることは困難である。
【００２９】
例えば、サブグラフインターフェースの実装形態がコンテナグラフにおいてインスタンス化される場合、メタデータ伝播プロセスは、実装サブグラフをそのすべての頂点がネイティブグラフ頂点であるかのように扱う。メタデータ伝播プロセスがメタデータを実装サブグラフに伝播する場合、コンテナグラフからのメタデータは実装サブグラフからのメタデータと混合され、予期せぬ結果をもたらす可能性がある。この混合は、レイアウトアルゴリズムが、レイアウトを割り当てるための重みのグローバルな考慮に複雑に依存するため、レイアウトメタデータの場合に悪化する。レイアウトメタデータは、例えば、実行され得るコンポーネントのインスタンスの数（例えば、実行され得る最大数、及び／又は実行される必要がある最小数）を指定することによって、並列度などの計算特性、及び任意で、１又は２以上のインスタンスが実行される特定のホストなどの他の情報を指定する。
【００３０】
さらに、複数の異なるコンテナグラフ及び実装サブグラフは、それぞれがサブグラフインターフェースを通じて異なって潜在的に伝播する任意の所与のサブグラフインターフェースを使用することができる。したがって、実装サブグラフに固有の特性を、いずれかのコンテナ又は実装サブグラフにおいて偶然真である特性と分離することは有益である。
【００３１】
そうするために、本明細書に記載される態様は、指定されたサブグラフからサブグラフインターフェースを自動的に生じさせ、ユーザは、自動的に生じさせられるサブグラフインターフェースに関連付けられるメタデータ制約を強化するか緩めることが許容されていてもよい。
【００３２】
他の利点の中でも、態様は、いくつかのコンテナグラフ及びサブグラフ実装形態に準拠する、動的にリンクされたサブグラフインターフェースの作成を容易にし、結果として、より汎用性があり再利用可能なサブグラフインターフェースをもたらす。
【００３３】
態様は、ユーザ入力を受信していてもよく、再利用可能なサブグラフインターフェースを含む動的にリンクされたサブグラフの作成をもたらす、いくつかのステップを自動的に進めることができる。
【００３４】
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００３５】
【図１】サブグラフインターフェースの生成のためのシステムのブロック図である。
【図２Ａ】サブグラフインターフェースを含むデータフローグラフである。
【図２Ｂ】サブグラフインターフェースの実装形態を示す図である。
【図２Ｃ】結合されたデータフローグラフである。
【図３】動的にリンクされたサブグラフ生成のために指定されたデータフローグラフである。
【図４】動的にリンクされたサブグラフ生成のための開発環境のブロック図である。
【図５】自動の動的なサブグラフジェネレータのブロック図である。
【図６】第１の編集時メタデータ伝播プロセスを示す図である。
【図７】そのフロージャンクションに対して決定されたメタデータ伝播の方向を有する初期サブグラフインターフェースを示す図である。
【図８】第２の編集時メタデータ伝播プロセスを示す図である。
【図９】メタデータルールを含む初期サブグラフインターフェースを示す図である。
【図１０】サブグラフインターフェースパラメータを含む初期サブグラフインターフェースを示す図である。
【図１１】完成した初期サブグラフインターフェースを示す図である。
【図１２】サブグラフインターフェース精製ウィザードのフロージャンクション設定画面を示す図である。
【図１３】サブグラフインターフェース精製ウィザードの伝播ルール設定画面を示す図である。
【図１４】サブグラフインターフェース設定ウィザードのレイアウト設定画面を示す図である。
【図１５】サブグラフインターフェース設定ウィザードのパラメータ設定画面を示す図である。
【図１６】最終サブグラフインターフェースを示す図である。
【発明を実施するための形態】
【００３６】
図１は、サブグラフインターフェースの生成技法が使用され得るデータ処理システム１００の一例を示す。システム１００は、オンラインデータストリームへのストレージデバイス又は接続などの１又は２以上のデータのソースを含み得るデータソース１０２を含み、データストリームの各々は、様々なフォーマット（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブ形式）のいずれかにおいてデータを記憶又は提供し得る。実行環境１０４は、前処理モジュール１０６及び実行モジュール１１２を含む。実行環境１０４は、例えば、ＵＮＩＸオペレーティングシステムのバージョンなどの適切なオペレーティングシステムの制御下で、１又は２以上の汎用コンピュータ上でホストされ得る。例えば、実行環境１０４は、ローカル（例えば、対称型マルチプロセッシング（ＳＭＰ，symmetric multi-processing）コンピュータなどのマルチプロセッサシステム）又はローカル分散型（例えば、クラスタ又は大規模並列処理（ＭＰＰ，massively parallel processing）システムとして接続された複数のプロセッサ、或いは遠隔の、又は遠隔分散された（例えば、ローカルエリアネットワーク（ＬＡＮ，local area network）及び／又はワイドエリアネットワーク（ＷＡＮ，wide-area network）を介して接続された複数のプロセッサ）、或いはそれらの任意の組合せである、複数の中央処理装置（ＣＰＵ，central processing unit）又はプロセッサコアを使用するコンピュータシステムの設定を含む複数ノードの並列コンピューティング環境を含むことができる。
【００３７】
前処理モジュール１０６は、データストレージシステム１１６から１又は２以上のデータフローグラフ１１４を読み出し、実行モジュール１１２による実行のためにデータフローグラフを準備する。この準備プロセスの一部は、場合によっては、データフローグラフ１１４内の任意のサブグラフインターフェースに準拠する任意の実装サブグラフを動的にリンクすることを含む。この動的リンクには通常、メタデータ伝播が含まれる。本明細書に記載の技法を使用して自動的に生じさせられる任意のサブグラフインターフェースは、以下に詳細に説明するように、特性がこのメタデータ伝播を容易にするように設定された、フロージャンクション又はパラメータなどのエレメント（「インターフェースエレメント」と呼ばれる）を含む。次いで、前処理モジュール１０６は、コンテナデータフローグラフ内のサブグラフインターフェースに「準拠する」（すなわち、一致する）特定の動的にリンクされた実装サブグラフを、実行モジュール１１２による実行の直前にそのコンテナデータフローグラフにロードする。例えば、準拠する実装サブグラフは、サブグラフインターフェース上のフロージャンクションと一致するポートを有するべきであり、サブグラフインターフェースに関連付けられるパラメータと一致するパラメータ値を有するべきである。
【００３８】
実行環境１０４は、異なる形式のデータベースシステムを含む、データソース１０２を具体化し得る様々なタイプのシステムからデータを受信することができる。データは、ヌル値を含む可能性がある各フィールド（「属性」又は「列」とも呼ばれる）の値を有するレコードとして編成され得る。データソースから最初にデータを読み出す場合、実行モジュール１１２は、通常、そのデータソース内のレコードに関するいくつかの初期フォーマット情報から開始する。状況によっては、データソースのレコード構造が最初に分かっていなくてもよく、代わりにデータソース又はデータの解析後に決定されてもよい。レコードに関する初期情報は、例えば、個別の値を表すビットの数、レコード内のフィールドの順序、及びビットによって表される値のタイプ（例えば、文字列、符号付き／符号なし整数）を含むことができる。
【００３９】
データソース１０２を提供するストレージデバイスは、例えば、実行環境１０４（例えば、ハードドライブ１０８）をホストするコンピュータに接続されたストレージ媒体に記憶されている実行環境１０４に対してローカルであってもよく、又は、例えば、遠隔接続（例えば、クラウドコンピューティングインフラストラクチャによって提供される）を介して、実行環境１０４をホストするコンピュータと通信する遠隔システム（例えば、メインフレーム１１０）上でホストされている実行環境１０４に対して遠隔であってもよい。
【００４０】
実行モジュール１１２は、出力データを生じさせるために、前処理モジュール１０６によって準備されたデータを処理する。出力データは、実行環境１０４にアクセス可能なデータソース１０２又はデータストレージシステム１１６に戻って記憶されてもよく、そうでなければ使用されてもよい。
【００４１】
データストレージシステム１１６はまた、開発環境１１８にアクセス可能である。開発者１２０は、頂点間の有向リンク（ワークエレメントの流れ、すなわちデータを表す）によって接続された頂点（データ処理コンポーネント又はデータセットを表す）を含むデータフローグラフとしてアプリケーションを開発するために、開発環境１１８を使用することができる。例えば、そのような環境は、参照により本明細書に組み込まれる、「Managing Parameters for Graph-Based Applications」（グラフに基づくアプリケーションのためのパラメーター管理）と題する米国特許出願公開第２００７／００１１６６８号明細書により詳細に記載されている。そのようなグラフベースの計算を実行するためのシステムは、参照により本明細書に組み込まれる、「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」（グラフとして表現された計算実行）と題する米国特許第５，９６６，０７２号明細書に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個々のプロセスに出入りする情報を取得し、プロセス間で情報を移動し、プロセスの実行順序を定義するための方法を提供する。このシステムは、利用可能な方法からプロセス間通信方法を選択するアルゴリズムを含む（例えば、グラフのリンクに従う通信パスは、ＴＣＰ／ＩＰ又はＵＮＩＸドメインソケットを使用することもでき、プロセス間でデータを渡すために共有メモリを使用することもできる）。
【００４２】
いくつかの例では、開発環境１１８は、以下でより詳細に説明するように、従来のサブグラフから動的なサブグラフを生成するための動的なサブグラフジェネレータ１２１を含む。
【００４３】
１  動的にリンクされたサブグラフ
開発環境１１８において開発され得るデータフローグラフの１つの特定のタイプは、「動的にリンクされたサブグラフ」と呼ばれる。一般に、動的にリンクされたサブグラフは、サブグラフインターフェースと、サブグラフインターフェースに準拠する実装サブグラフとの、２つの別々の関連するコンポーネントを含む。サブグラフインターフェースは、コンテナグラフ内のフローとサブグラフインターフェースに関連付けられるサブグラフとの間の接続点を定義する、１又は２以上の「フロージャンクション」を含む。各フロージャンクションは、第１のデータフローグラフのコンポーネント上のポートへの、又はそこからのデータのフローと、第２のデータフローグラフのコンポーネント上のポートへの、又はそこからのデータのフローとの間の接続（又は「ジャンクション」）を表す。
【００４４】
開発者は、データフローグラフを開発する際に、サブグラフインターフェースをデータフローグラフ内の実装サブグラフのプレースホルダとして使用することができる。いくつかの例では、サブグラフインターフェースを含むデータフローグラフは、「コンテナデータフローグラフ」又は単に「コンテナグラフ」と呼ばれる。
【００４５】
図２Ａを参照すると、コンテナデータフローグラフ２００の一例は、いくつかのコンポーネント２０８Ａ〜２０８Ｂとサブグラフインターフェース２１０にデータを提供する、又はそこからデータを受信する、いくつかのデータセット２０２Ａ〜２０２Ｃを含み、それらのすべてがフロー２０６Ａ〜２０６Ｅによって相互接続されたポート２０４Ａ〜２０４Ｊを有する。コンテナデータフローグラフ２００においては、サブグラフインターフェース２１０の代わりにデータフローグラフに静的にリンクされたコンポーネントは存在しない。代わりに、サブグラフインターフェース２１０は、データフローグラフ２００内のプレースホルダとして機能し、後にサブグラフインターフェース２１０に準拠する実装サブグラフによって後に置き換えられる。
【００４６】
図２Ｂを参照すると、図２Ａのサブグラフインターフェース２１０に対応する実装サブグラフ２０１の一例は、フロー２０６Ｆ〜２０６Ｉによって相互接続された、いくつかのコンポーネント２０８Ｃ〜２０８Ｄ及びポート２０４Ｄ、２０４Ｆ、２０４Ｇ、及び２０４Ｋ〜２０４Ｏを含む。実装サブグラフ２０１は、図２Ａのサブグラフインターフェース２１０の実装形態であるので、実装サブグラフは、サブグラフインターフェース２１０上の入力ポートに対応する入力フロー２０６Ｇ、２０６Ｆと、サブグラフインターフェース２１０上の出力ポートに対応する出力フローとを有する。
【００４７】
コンテナデータフローグラフ２００の開発後のある時点で（例えば、コンテナデータフローグラフ２００を実行する直前など）、データフローグラフが実行のために準備される。実行のためにデータフローグラフを準備する際の１つのステップは、実装サブグラフ２０１をコンテナデータフローグラフ２００にリンクするステップを含み、それによって、コンテナデータフローグラフ２００内のサブグラフインターフェース２１０を実装サブグラフ２０１に置き換えることによって、結合されたデータフローグラフを形成する。
【００４８】
例えば、図２Ｃを参照すると、結合されたデータフローグラフ３００は、サブグラフインターフェース２１０の代わりにリンクされた図２Ｂの実装データフローグラフ２０１を有する図２Ａのコンテナデータフローグラフ２００を含む。実装データフローグラフ２０１はサブグラフインターフェース２１０に準拠するので、実装データフローグラフ２０１の入力ポート及び出力ポートのすべてが、フローを介してコンテナデータフローグラフ２００のコンポーネントに接続される。実装サブグラフ２０１をコンテナデータフローグラフ２００にリンクすることによって結合されたデータフローグラフ３００を形成した後、結合されたデータフローグラフ３００はコンパイルされて実行され得る。
【００４９】
動的にリンクされたサブグラフの上記の説明は、対象に関する説明として役立つことが意図されており、対象の包括的な説明ではない。動的にリンクされたサブグラフのより詳細な説明は、参照により本明細書に組み込まれる、「MANAGING INTERFACES FOR SUB-GRAPHS」（サブグラフのためのインターフェース管理）と題する米国特許出願第１４／５６１，４９４号に見出すことができる。
【００５０】
２  動的にリンクされたサブグラフの生成
「MANAGING INTERFACES FOR SUB-GRAPHS」（サブグラフのためのインターフェース管理）と題する米国特許出願第１４／５６１，４９４号において説明されるようないくつかの例において、サブグラフインターフェースはユーザ指定であり、ユーザがサブグラフインターフェースに準拠する実装サブグラフを書く。他の例では、既存の従来の（すなわち、静的にリンクされた）サブグラフから、サブグラフインターフェース及び実装サブグラフを生じさせる必要がある。
【００５１】
例えば、図３を参照すると、従来のサブグラフから動的にリンクされたサブグラフの生成を開始するために、従来のサブグラフ４００は、最初に開発環境１１８を使用して（例えば、ユーザがディスクから従来のサブグラフ４００を表すファイルを選択することによって）指定される。
【００５２】
２．１  指定されたサブグラフの概要
この例では、指定されたサブグラフ４００のブロック図は、いくつかのコンポーネント３０２Ａ〜３０２Ｃを使用して第１の入力ポート３０４Ａ及び第２の入力ポート３０４Ｂから受信したデータを処理し、処理されたデータを、第１の出力ポート３０４Ｃと、第２の出力ポート３０４Ｄと、第３の出力ポート３０４Ｅとに書き込むように設定される。サブグラフ４００は、第１のコンポーネント３０２Ａ、第２のコンポーネント３０２Ｂ、第３のコンポーネント３０２Ｃ、及び第４のコンポーネント３０２Ｄを含む。コンポーネントの各々は、入力データを受信するための入力ポートと、出力データを提供するための出力ポート（例えば、ポート３０４Ｆ〜３０４Ｎ）の一方又は両方を有する。一般に、各コンポーネントは、その入力ポートに流入する入力データに１又は２以上の計算を適用し、計算の結果をその出力ポートを介して出力として提供する。特定のタイプのコンポーネント（例えば、第３のコンポーネント３０２Ｃ）は、入力ポートのみ又は出力ポートのみを含み得る点に留意されたい。
【００５３】
サブグラフ４００の入力ポートと出力ポートは、サブグラフ４００のポートとコンポーネントとの間でデータがどのように伝播するかを定義するフロー３０６Ａ〜３０６Ｇによって相互接続される。具体的には、サブグラフ４００の境界に含まれる第１の入力ポート３０４Ａは、第１のフロー３０６Ａによって第１のコンポーネント３０２Ａに含まれる第３の入力ポート３０４Ｆに接続される。サブグラフ４００の境界に含まれる第２の入力ポート３０４Ｂは、第２のフロー３０６Ｂによって第２のコンポーネント３０２Ｂに含まれる第４の入力ポート３０４Ｇに接続される。第１のコンポーネント３０２Ａに含まれる第４の出力ポート３０４Ｈは、第３のフロー３０６Ｃによって第４のコンポーネント３０２Ｄに含まれる第５の入力ポート３０４Ｊに接続される。第２のコンポーネント３０２Ｂに含まれる第５の出力ポート３０４Ｉは、第４フロー３０６Ｄによって第４のコンポーネント３０２Ｄに含まれる第６の入力ポート３０４Ｋに接続される。
【００５４】
第３のコンポーネント３０２Ｃに含まれる第６の出力ポート３０４Ｎは、第５のフロー３０６Ｅによってサブグラフ４００の境界上の第３の出力ポート３０４Ｅに接続される。第４のコンポーネント３０２Ｄに含まれる第７の出力ポート３０４Ｌは、第６のフロー３０６Ｆによってサブグラフ４００の境界上の第１の出力ポート３０４Ｃに接続される。第４のコンポーネント３０２Ｄに含まれる第８の出力ポート３０４Ｍは、第７のフロー３０６Ｇによってサブグラフ４００の境界上の第２の出力ポート３０４Ｄに接続される。第３のコンポーネント３０２Ｃは、パラメータＰ１によって設定可能である。
【００５５】
２．２  動的なサブグラフジェネレータ
図４を参照すると、指定されたサブグラフ４００から動的にリンクされたサブグラフを生じさせるために、指定されたサブグラフ４００がまず開発環境１１８の動的なサブグラフジェネレータ１２１に読み込まれる。いくつかの例では、サブグラフジェネレータ１２１は、自動の動的なサブグラフジェネレータ１２２及びサブグラフインターフェース精製モジュール１２８を含む。非常に一般的に、自動の動的なサブグラフジェネレータ１２２は、初期サブグラフインターフェース１２６、及び任意で指定されたサブグラフ４００のための実装サブグラフ１２４を自動的に生じさせ、サブグラフインターフェース精製モジュール１２８は、最終サブグラフインターフェース１３０を生じさせるために初期サブグラフインターフェース１２６を変更するために、任意でユーザ入力を受信するように設定された自動化された精製プロセスを実施する。いくつかの例では、最終サブグラフインターフェース１３０は、最終サブグラフインターフェース１３０がより多くの実装サブグラフを収容できるように、インターフェース１３０上の特定のポートがオプションとして指定され得るか、インターフェース１３０上の特定のポートに関連付けられるメタデータ制約が緩和され得るという意味において、初期サブグラフインターフェース１２６の特性よりも多かれ少なかれ制限的な特性を有する。最終サブグラフインターフェース１３０は、後で使用するためにデータストレージ１１６に記憶されていてもよい。
【００５６】
いくつかの例では、サブグラフインターフェース１２６に行われた変更のうちの少なくとも一部について、サブグラフインターフェース精製モジュール１２８は、実装サブグラフ１２４に対応する変更も行う。いくつかの例では、実装サブグラフ１２４は生じさせられず、サブグラフインターフェース１３０は、１又は２以上の実装サブグラフの潜在的な将来の開発のために単独で使用される。
【００５７】
２．２．１  自動の動的なサブグラフジェネレータ
図５を参照すると、自動の動的なサブグラフジェネレータ１２２は、指定されたサブグラフ４００を受信し、指定されたサブグラフ４００を、実装サブグラフ形成モジュール１３２及びメタデータ伝播方向識別モジュール１３４に提供する。
【００５８】
２．２．１．１  実装サブグラフの形成
実装サブグラフ形成モジュール１３２は、出力として動的なサブグラフジェネレータ１２２から渡される実装サブグラフ１２４を生じさせるために、指定されたサブグラフ４００を処理する。いくつかの例では、実装サブグラフ１２４は、まず、指定されたサブグラフ４００のコピーを作成することによって形成される。次いで、上述したように、サブグラフインターフェース１２６に行われた少なくともいくつかの変更について、実装サブグラフ１２４を形成するために、サブグラフインターフェース精製モジュール１２８は、指定されたサブグラフ４００のコピーに対応する変更も行う。例えば、サブグラフインターフェース１２６上を伝播する「内向き」としてマーク付けされたフロージャンクションは、実装サブグラフ１２４上を伝播する「内向き」としてマーク付けされてもよい。さらに、指定された伝播方向をサポートするために、実装サブグラフ１２４の内部構造に対する特定の編集が行われる必要があり得る。
【００５９】
２．２．１．２  メタデータ伝播方向の識別
メタデータ伝播方向識別モジュール１３４は、指定されたサブグラフの境界上のポートに対応するフロージャンクションを識別することによって初期サブグラフインターフェースを形成し、識別されたフロージャンクションの各々についてメタデータ伝播の方向を決定する。
【００６０】
メタデータ伝播方向識別モジュール１３４の動作を説明する前に、メタデータ伝播に関する簡単な説明を提示する。データフローグラフでは、データフローグラフ内のコンポーネントのポートに関連付けられるメタデータ、及び／又はコンポーネント自体に関連付けられるメタデータが管理されることが重要である。いくつかの例では、メタデータは、データの記述子（例えば、ポートに流入又は流出するレコードのフィールド及びデータタイプのシーケンスを含むポートのレコードフォーマット）、又は計算特性（例えば、コンポーネントの分割又はレイアウト）を含む。他の例では、メタデータは、コンポーネントが使用し得るメモリ量、コンポーネントが使用し得るコンピューティングリソース、ソート、圧縮方法、文字セット、バイナリ表現（例えば、ビッグエンディアン、リトルエンディアン）、又はデータ変換を含み得る。
【００６１】
メタデータ管理は、手動で、自動的に、又は手動及び自動メタデータ管理の組合せを使用することによって実現され得る。手動メタデータ管理の場合、メタデータは、例えばグラフ開発者又はグラフユーザによって供給される。自動メタデータ管理の場合、既知の（すなわち、明示的に画定された）メタデータを有するグラフの部分から、未知のメタデータを有するグラフの部分にメタデータが伝播される。メタデータの伝播は、所与のポート又はコンポーネントのメタデータがグラフユーザ又はグラフ開発者によって直接供給されない場合に必要である。そのような場合、所与のポート又はコンポーネントのメタデータは、グラフにおける他のポート又はコンポーネントから派生する必要がある。本明細書で使用されるメタデータ伝播という用語は、この導出プロセスを指す。
【００６２】
従来のコンポーネント及びデータセットを含む従来のデータフローグラフでは、データフローグラフを介して明示的に画定されたメタデータのこの伝播により、メタデータがデータフローグラフ内のすべてのコンポーネントに関連付けられる。メタデータの伝播において発生する任意の競合は、一般に開発者の介入の対象となる。しかしながら、サブグラフインターフェースを含むデータフローグラフのメタデータ伝播は、通常、従来のコンポーネントのみを含むデータフローグラフのメタデータ伝播とは異なる方法で処理される。特に、メタデータは、編集時メタデータ伝播段階とリンク時メタデータ解決段階の２つの段階で伝播され得る。
【００６３】
この２つの段階の手法は、編集時に、サブグラフインターフェースの代わりにリンクされるコンテナグラフ（すなわち、サブグラフインターフェースをコンポーネントとして含むグラフ）及び実装サブグラフ（すなわち、サブグラフインターフェースに準拠するサブグラフ）が、互いのメタデータ情報を認識しないために使用される。この情報にアクセスすることなしには、従来のメタデータ伝播は、メタデータを実装サブグラフへの「内向き」方向に伝播されるべきか（すなわち、コンテナグラフが実装サブグラフのメタデータのソースとして機能する）、又は実装サブグラフからの「外向き」方向に伝播されるべきか（すなわち、コンテナグラフは、実装サブグラフからのメタデータのためのシンクとして機能する）を知る方法を持たない。
【００６４】
したがって、サブグラフインターフェースを含むデータフローグラフ内のメタデータ伝播を可能にするために、サブグラフインターフェースの各フロージャンクションは、メタデータ伝播の方向を指定する。いくつかの例では、メタデータ伝播の可能な方向のセットは、「内向き」伝播及び「外向き」伝播を含む。
【００６５】
サブグラフインターフェース上のフロージャンクションが「内向き」のメタデータ伝播方向を有するものとして宣言されると、コンテナグラフ内のメタデータ伝播は、フロージャンクションに（及び、最終的に、実装サブグラフ内のフローに接続されたポートに）接続されたフローを介してメタデータ定義を供給する。すなわち、コンテナグラフにおいて、編集時メタデータ伝播は、フロージャンクションをメタデータシンクとして扱う。
【００６６】
サブグラフインターフェース上のフロージャンクションが「外向き」のメタデータ伝播方向を有するものとして宣言されると、実装サブグラフ内のメタデータ伝播は、フロージャンクションのメタデータ定義をコンテナグラフに供給する。すなわち、コンテナグラフにおいて、編集時メタデータ伝播は、メタデータの編集時定義が存在しない場合でも（定義はリンク時の実装サブグラフからのみ利用可能であるため）、フロージャンクションをメタデータソースとして扱う。
【００６７】
メタデータ伝播方向識別モジュール１３４は、指定されたサブグラフ４００の境界上のポート、及び初期サブグラフインターフェース１２６上のそれらの対応するフロージャンクションのメタデータ伝播の方向を決定するために、指定されたサブグラフ４００内のメタデータの既知のソース（例えば、ポート）を識別し、識別されたソースから発するメタデータ伝播プロセスを実施する。
【００６８】
図６を参照すると、動作中、メタデータ伝播方向識別モジュール１３４は、指定されたサブグラフ４００の第１の入力ポート３０４Ａに対応する第１のフロージャンクションｉ０６４４と、指定されたサブグラフ４００の第２の入力ポート３０４Ｂに対応する第２のフロージャンクションｉ１６４６と、指定されたサブグラフの第１の出力ポート３０４Ｃに対応する第３のフロージャンクションｏ０６４８と、指定されたサブグラフ４００の第２の出力ポート３０４Ｄに対応する第４のフロージャンクションｏ１６５０と、指定されたサブグラフ４００の第３の出力ポート３０４Ｅに対応する第５のフロージャンクションｏ２を含む、初期サブグラフインターフェース１２６を生じさせる。
【００６９】
次いで、メタデータ伝播方向識別モジュール１３４は、指定されたサブグラフ４００の第１のコンポーネント３０２Ａに含まれる第４の出力ポート３０４Ｈと、指定されたサブグラフ４００の第３のコンポーネント３０２Ｃに含まれる第６の出力ポート３０４Ｎとをメタデータの既知のソースとして識別する（例えば、ポートの特性を解析することによって）。図６において、第４の出力ポート３０４Ｈ及び第６の出力ポート３０４Ｎに関連付けられるメタデータは、それぞれＭ１及びＭ２で示されている。しかしながら、表記Ｍ１及びＭ２は、任意の特定のメタデータ値が既知のメタデータのソースに関連付けられることを意味することが意図されるものではないことに留意されたい。実際、いくつかの例では、既知のメタデータのソースに関連付けられる特定のメタデータ値は未知であり、Ｍ１及びＭ２は伝播に使用され得る単純なプレースホルダメタデータ値である。もちろん、プレースホルダメタデータ値は、コンテナグラフが実行された時点で知られている。他の例では、Ｍ１及びＭ２は、既知のメタデータのソースに関連付けられる特定のメタデータ値を参照し得る。
【００７０】
既知のメタデータのソースが識別された状態で、メタデータ伝播方向識別モジュール１３４は、既知のメタデータのソースの両方に対して編集時メタデータ伝播プロセスを実施する。
【００７１】
実施する際、メタデータ伝播方向識別モジュール１３４は、第４の出力ポート３０４ＨからＭ１を上流方向（すなわち、第１のフロージャンクションｉ０６４４に向かう方向）に、及び下流方向（すなわち、第３のフロージャンクションｏ０６４８及び第４のフロージャンクションｏ１６５０に向かう方向）に伝播する。
【００７２】
上流方向では、編集時メタデータ伝播プロセスは、第１のコンポーネント３０２Ａがメタデータにいかなる変換も適用せず、したがってコンポーネント３０２Ａを通じてメタデータＭ１を伝播し、第１のコンポーネント３０２Ａ上の第３の入力ポート３０４Ｆに関連付けると決定する。いくつかの例では、この関連付けは、メタデータが伝播されたポートから、メタデータが発信されたポートを指し、そこで終わる矢印（例えば、第３の入力ポート３０４ｆから第４の出力ポート３０４Ｈを指す矢印）（時には「同じ」矢印と呼ばれる）によって表される。次いで、Ｍ１は、指定されたサブグラフ４００の境界上の第３の入力ポート３０４Ｆから第１の入力ポート３０４Ａに伝播され（結果として、第１の入力ポート３０４ａから第４の出力ポート３０４Ｈを指す「同じ」矢印をもたらす）、及び第１の入力ポート３０４Ａに関連付けられる第１のフロージャンクションｉ０６４４に伝播される。メタデータ（すなわち、Ｍ１）は、既知のメタデータのソースからフロージャンクション６４４に伝播されるので、第１のフロージャンクションｉ０６４４には、「外向き」のメタデータ伝播方向が割り当てられる。
【００７３】
下流方向では、編集時間メタデータ伝播プロセスは、Ｍ１を第１のコンポーネント３０２Ａ上の第４の出力ポート３０４Ｈから第４のコンポーネント３０２Ｄ上の第５の入力ポート３０４Ｊに伝播する（結果として、第５の入力ポート３０４Ｊから第４の出力ポート３０４Ｈを指す「同じ」矢印をもたらす）。編集時メタデータ伝播プロセスは、第４のコンポーネント３０２Ｄがメタデータに変換を適用し、したがってＭ１を下流方向にさらに伝播しないことを決定する。
【００７４】
編集時メタデータ伝播プロセスはまた、Ｍ２を第３のコンポーネント３０２Ｃ上の第６の出力ポート３０４Ｎから、指定されたサブグラフ４００の境界上の第３の出力ポート３０４Ｅに、及び第３の出力ポート３０４Ｅに関連付けられる第５のフロージャンクションｏ２６５２に伝播する（結果として、第３の出力ポート３０４Ｅから第６の出力ポート３０４Ｎを指す「同じ」矢印をもたらす）。第５のフロージャンクションｏ２６５２には、メタデータ（すなわちＭ２）が既知のメタデータのソースからフロージャンクション６５２に伝播されるので、「外向き」のメタデータ伝播方向が割り当てられる。
【００７５】
編集時メタデータ伝播プロセスの終了時に、「外向き」のメタデータ伝播方向を有するものとしてマーク付けされていない（すなわち、伝播されたメタデータを受信していない）任意のフロージャンクションは、「内向き」のメタデータ伝播方向を有するものとしてマーク付けされる。図７を参照すると、この例では、第１のフロージャンクションｉ０６４４及び第５のフロージャンクションｏ２６５２のみが、メタデータ伝播方向識別モジュール１３４によって「外向き」のメタデータ伝播方向を有するものとしてマーク付けされ、第２のフロージャンクションｉ１６４６、第３のフロージャンクションｏ０６４８、及び第４のフロージャンクションｏ１６５０は、メタデータ伝播方向識別モジュール１３４によって、「内向き」のメタデータ伝播方向を有するものとしてマーク付けされる。いくつかの例では、メタデータ伝播方向識別モジュール１３４によって実施された伝播の表現は、実装サブグラフ１２４とともに記憶される。
【００７６】
２．２．１．３  メタデータルールの識別
初期サブグラフインターフェース１２６上のすべてのフロージャンクションについてのメタデータ伝播の方向が決定されると、初期サブグラフインターフェース１２６に含めるためのメタデータルールを決定するために、初期サブグラフインターフェース１２６及び指定されたサブグラフ４００が、指定されたサブグラフ４００を解析するメタデータルール識別モジュール１３６に提供される。
【００７７】
そうするために、メタデータルール識別モジュール１３６は、指定されたサブグラフ４００の境界上のポート間に存在する関係を発見するために、メタデータ伝播の「内向き」方向を有するフロージャンクションの各々にプレースホルダ値を割り当て、別の編集時メタデータ伝播プロセスを実施する。メタデータルール識別モジュール１３６は、メタデータルールを初期サブグラフインターフェース１２６のフロージャンクションに割り当てるために、発見された任意の関係を使用する。例えば、図８を参照すると、プレースホルダメタデータＤ１が第２のフロージャンクションｉ１６４６に割り当てられ、プレースホルダメタデータＤ２が第３のフロージャンクションｏ０６４８に割り当てられ、プレースホルダメタデータＤ３が第４のフロージャンクションｏ１６５０に割り当てられる。
【００７８】
メタデータルール識別モジュール１３６は、指定されたサブグラフ４００の境界上の第２の入力ポート３０４Ｂから第２のコンポーネント３０２Ｂ上の第４の入力ポート３０４ＧにＤ１を伝播する（結果として、第４の入力ポート３０４Ｇから第２の入力ポート３０４Ｂを指す「同じ」矢印をもたらす）。編集時メタデータ伝播プロセスは、第２のコンポーネント３０２Ｂがメタデータにいかなる変換も適用せず、したがって第２のコンポーネント３０２Ｂを介して第５の出力ポート３０４ＩにＤ１を伝播すると決定する（結果として、第５の出力ポート３０４Ｉから第２の入力ポート３０４Ｂを指す「同じ」矢印をもたらす）。
【００７９】
また、メタデータルール識別モジュール１３６は、第１の出力ポート３０４Ｃから第７の出力ポート３０４ＬにＤ２を伝播する（結果として、第１の出力ポート３０４Ｃから第７の出力ポート３０４Ｌを指す「同じ」矢印をもたらす）。編集時メタデータ伝播プロセスは、第４のコンポーネント３０２ＤがメタデータＤ２に変換を適用し、したがってそれ以上Ｄ２を伝播しないことを決定する。
【００８０】
メタデータルール識別モジュール１３６は、Ｄ３を第２の出力ポート３０４Ｄから第８の出力ポート３０４Ｍに伝播する（結果として、第８の出力ポート３０４Ｍから第２の出力ポート３０４Ｄを指す「同じ」矢印をもたらす）。編集時メタデータ伝播プロセスは、第４のコンポーネント３０２ＤがメタデータＤ３にいかなる変換も適用せず、したがって第４のコンポーネント３０２Ｄを通じて第６の入力ポート３０４ＫにＤ３を伝播すると決定する（結果として、第６の入力ポート３０４ｋから第２の出力ポート３０４Ｄを指す「同じ」矢印をもたらす）。
【００８１】
「内向きの」伝播方向を有するものとしてマーク付けされたすべてのポートからメタデータが伝播されると、メタデータルール識別モジュール１３６は、Ｄ１及びＤ３の伝播に基づいて、第２の入力ポート３０４Ｂに関連付けられる任意のメタデータは、第２の出力ポート３０４Ｄに関連付けられるメタデータと等しくなくてはならないと決定する。図９を参照すると、メタデータルール識別モジュール１３６は、第２のフロージャンクションｉ１６４６と第４のフロージャンクションｏ１６５０との間の等しいメタデータ関係を表すために、初期サブグラフインターフェース１２６上に「コピー」メタデータルール７５４を含む。
【００８２】
２．２．１．４  パラメータの識別
再び図５を参照すると、識別されたメタデータルールを用いて、初期サブグラフインターフェース１２６及び指定されたサブグラフ４００は、パラメータ識別モジュール１３８に提供され、パラメータ識別モジュール１３８は、編集時メタデータ伝播プロセスによって到達可能ではないが、指定されたサブグラフ４００にデフォルト値を有しない指定されたサブグラフに関連付けられるパラメータを使用して設定可能な、指定されたサブグラフ４００の任意のポート又はコンポーネントを識別する。パラメータ識別モジュール１３８は、それが識別する任意のパラメータのために、サブグラフインターフェースパラメータを初期サブグラフインターフェース１２６に追加する。
【００８３】
図１０を参照すると、パラメータ識別モジュール１３８は、指定されたサブグラフ４００内にデフォルト値を有しないパラメータＰ１を使用して第３のコンポーネント３０２Ｃが設定可能であると決定する。したがって、パラメータ識別モジュール１３８は、サブグラフインターフェースパラメータＰ１１０５８を初期サブグラフインターフェース１２６に追加する。
【００８４】
図１１を参照すると、パラメータ識別モジュール１３８の結果は、完全な初期サブグラフインターフェース１２６である。完全な初期サブグラフインターフェース１２６は、自動の動的なサブグラフジェネレータ１２２から渡される。
【００８５】
いくつかの例では、自動の動的なサブグラフジェネレータ１２２の様々なステップは、上述の例示的な順序以外の順序で実施される点に留意されたい。
【００８６】
２．２．２  サブグラフインターフェースの精製
再び図４を参照すると、自動のサブグラフジェネレータ１２２によって出力される初期サブグラフインターフェース１２６は、サブグラフインターフェース精製モジュール１２８に提供され、最終サブグラフインターフェース１３０を生じさせるために、ユーザ（又は、自動化された精製プロセス）が初期サブグラフインターフェース１２８を変更することを可能にする。
【００８７】
いくつかの例では、サブグラフインターフェース精製モジュール１２８は、初期サブグラフインターフェース１２６のユーザ精製を容易にするいくつかのスクリーンを含む「ウィザード」として実装される。
【００８８】
図１２を参照すると、ウィザード１２６０の第１の画面１２６２は、自動のサブグラフジェネレータ１２２によって自動的に発見された初期サブグラフインターフェース１２６のフロージャンクションを設定するためのテーブル１２６４を含む。テーブルは、発見されたフロージャンクションの名前のリストを含む第１の列１２６５と、フロージャンクションの各々が最終サブグラフインターフェース１０３上で「必要」であるかどうかを示すためのチェックボックス１２６８を含む第２の列１２６６と、フロージャンクションの各々が「ファンできる」かどうかを示すためのチェックボックス１２７２を含む第３の列１２７０とを含む。
【００８９】
第２の列１２６６内の所与のフロージャンクションに対応するチェックボックスをチェックすることは、所与のフロージャンクションが最終的なグラフインターフェース１３０上の「必要な」フロージャンクションであることを示す。所与のフロージャンクションに対応するチェックボックスのチェックを外すことは、所与のフロージャンクションが最終的なグラフインターフェース１３０上で必要ではないか、又は「任意」であることを示す。非常に一般的に、「必要」であるサブグラフインターフェース上のフロージャンクションは、コンテナグラフがコンパイルされて実行され得る前に、コンテナグラフ内のフローに接続される必要がある。「任意」であるサブグラフインターフェース上のフロージャンクションは、コンテナグラフ内のフローに接続されていても接続されていなくてもよく、コンテナグラフは、任意のフロージャンクションがコンテナグラフ内のフローに接続されているかどうかにかかわらず、コンパイルして実行する。
【００９０】
第３の列１２７０内の所与のフロージャンクションに対応するチェックボックスをチェックすることは、フロージャンクションが実装サブグラフ内の入力ポートに関連付けられる場合、所与のフロージャンクションが「ファンイン」(fan-in)することを許容されるか、フロージャンクションが実装サブグラフの出力ポートに関連付けられる場合、「ファンアウト」(fan-out)することを許容されることを示す。第３の列１２７０内の所与のフロージャンクションに対応するチェックボックスのチェックを外すことは、所与のフロージャンクションが「ファンイン」又は「ファンアウト」することを許容されていないことを示す。
【００９１】
図１２の例では、ユーザは、第１のフロージャンクションｉ０６４４が必要であり、ファンインできることを示すことと、第２のフロージャンクションｉ１６４６が必要であり、ファンインできることを示すことと、第３のフロージャンクションｏ０６４８が必要であり、ファンアウトできないことを示すことと、第４のフロージャンクションｏ１６５０が必要であり、ファンアウトできないことを示すことと、第５のフロージャンクションｏ２６５２が任意であり、ファンアウトできないことを示すこととによって、フロージャンクションを設定している。
【００９２】
ユーザがフロージャンクションの設定に満足すると、ウィザード１２６０内の「ＯＫ」ボタン１２７４をクリックし、ウィザード１２６０をウィザード１２６０の伝播ルール設定画面に進める。
【００９３】
図１３を参照すると、伝播ルール設定画面１３７５は、内向きメタデータ伝播方向を有する初期サブグラフインターフェース１２６上のすべてのフロージャンクションを含む第１のテーブル１３７６と、外向きメタデータ伝播方向を有する初期サブグラフインターフェース１２６上のすべてのフロージャンクションを含む第２のテーブル１３７８との２つのテーブルを含む。第１のテーブル１３７６では、同じメタデータを有することが要求されるフロージャンクション（すなわち、「コピー」メタデータ伝播ルールの一部であるフロージャンクション）が一緒にグループ化される。
【００９４】
例えば、図１３において、第１のテーブル１３７６は、第３のフロージャンクションｏ０６４８を含む第１のグループ１３８０と、第２のフロージャンクションｉ１６４６及び第４のフロージャンクションｏ１６５０を含む第２のグループ１３８２との２つのグループを含む。第３のフロージャンクションｏ０６４８は「コピー」メタデータ伝播ルールの一部ではないので、第１のグループ１３８０における唯一のフロージャンクションである。第２のフロージャンクションｉ１６４６と第４のフロージャンクションｏ１６５０は「コピー」メタデータ伝播ルールの一部であるので（上記の例において説明したように）、それらは両方とも同じグループ（すなわち、第２のグループ１３８２）内にある。
【００９５】
第２のテーブル１３７８は、第１のフロージャンクションｉ０６４４を含む第３のグループ１３８４と、第５のフロージャンクションｏ２６５２を含む第４のグループ１３８６との２つのグループを含む。
【００９６】
ウィザードのユーザは、例えば「コピー」メタデータ伝播ルールを形成するためにグループをマージするか、「コピー」メタデータ伝播ルールを削除するためにグループを分割することによって、メタデータ伝播ルールを設定するために、伝播ルール設定画面１３７５を使用することができる。例えば、ユーザが、第２のグループ１３８２によって指定された「コピー」メタデータ伝播ルールが最終サブグラフインターフェース１３０に含まれることを望まない場合、第２のグループ１３８２を２つの異なるグループに分割し、一方は第２のフロージャンクションｉ１６４６を含み、もう一方は第４のフロージャンクションｏ１６５０を含む。
【００９７】
ユーザがサブグラフインターフェースの伝播ルールの設定に満足すると、ウィザード１２６０内の「ＯＫ」ボタン１３７４をクリックし、ウィザード１２６０をウィザード１２６０のレイアウト設定画面に進める。
【００９８】
図１４を参照すると、レイアウト設定画面１４８８は２つのオプションを有するラジオボタンを含む。第１のオプション１４９０は、最終的なグラフインターフェース１３０のすべてのフロージャンクションが、レイアウトパラメータ１４９２によって指定されたものと同じレイアウトメタデータを使用するべきであることを示す。第２のオプション１４９４は、ユーザが、テーブル１４９６を使用して、最終的なグラフインターフェースのフロージャンクションのカスタムレイアウト特性を指定することを可能にする。テーブル１４９６は、ユーザがフロージャンクションの各々に関連付けられるレイアウトメタデータの伝播の方向を指定し、等しいレイアウトメタデータを有するフロージャンクションをグループ化することを可能にする。
【００９９】
図１４において、ユーザは、すべてのフロージャンクションが「レイアウト」と名付けられたレイアウトパラメータによって指定されたものと同じレイアウトメタデータを有することを示す第１のオプション１４９０を選択している。
【０１００】
ユーザがサブグラフインターフェース１３０のレイアウトの設定に満足すると、ウィザード１２６０内の「ＯＫ」ボタン１４７４をクリックし、ウィザード１２６０をウィザード１２６０のパラメータ設定画面に進める。
【０１０１】
図１５を参照すると、ウィザード１２６０のパラメータ設定画面１５４９は、最終サブグラフインターフェース１３０に含めるために、初期サブグラフインターフェース１２６に関連付けられるサブグラフインターフェースパラメータを選択するためのテーブル１５９７を含む。テーブル１５９７は、初期サブグラフインターフェース１２６上のサブグラフインターフェースパラメータに関連付けられるパラメータの名前のリストを含む第１の列１５９８と、第１の列１５９８内にリストされたパラメータの各々のサブグラフインターフェースパラメータが最終サブグラフインターフェースに含まれるかどうかを示すためのチェックボックス１５６８を含む第２の列１５９９とを含む。
【０１０２】
図１５の例では、１つのパラメータＰ１のみが第１の列１５９８に含まれ、Ｐ１に関連付けられるチェックボックス１５６８がチェックされ、Ｐ１のためのサブグラフインターフェースパラメータが最終サブグラフインターフェース１３０に含まれることを示す。
【０１０３】
ユーザがサブグラフインターフェース１３０のサブグラフインターフェースパラメータの設定に満足すると、ウィザード１２６０内の「ＯＫ」ボタン１５７４をクリックし、ウィザード１２６０を完了させ、最終サブグラフインターフェース１３０を出力させる。
【０１０４】
図１６を参照すると、最終サブグラフインターフェース１３０は、必要であり、メタデータ伝播の外向き方向を有する第１のフロージャンクションｉ０６４４と、必要であり、メタデータ伝播の内向き方向を有する第２のフロージャンクションｉ１６４６と、必要であり、メタデータ伝播の内向き方向を有する第３のフロージャンクションｏ０６４８と、必要であり、メタデータ伝播の内向き方向を有する第４のフロージャンクションｏ１６５０と、任意であり、メタデータ伝播の外向き方向を有する第５のフロージャンクションｏ２６５２とを含む。最終サブグラフインターフェース１３０はまた、第２のフロージャンクションｉ１６４６と第４のフロージャンクションｏ１６５０との間に、サブグラフインターフェースパラメータ１０５８Ｐ１と、「コピー」メタデータルール７５４とを含む。
【０１０５】
最終サブグラフインターフェース１３０は、図２Ａ〜図２Ｃのサブグラフインターフェース２１０が使用されるのと同じ方法でコンテナグラフにおいて使用され得る。さらに、ユーザによってサブグラフインターフェース１３０に行われた精製に応じて、前処理モジュール１０６は、それらがサブグラフインターフェース１３０に準拠することを条件に、自動的に生じさせられる実装サブグラフ１２４を含むいくつかの異なる実装サブグラフを動的にリンク及びロードすることが可能であり得る。
【０１０６】
３  代替案
いくつかの例では、ディスク上にサブグラフを指定するのではなく、ユーザは、動的にリンクされたサブグラフを生成するために、既存のデータフローグラフ内のコンポーネントのセットを選択することができる。動的にリンクされたサブグラフの生成が完了すると、選択されるコンポーネントのセットは、データフローグラフ内で生じさせられる動的にリンクされたサブグラフのサブグラフインターフェースによって置換される。
【０１０７】
４  実装形態
上述のサブグラフインターフェースの生成手法は、例えば、適切なソフトウェア命令を実行するプログラマブル計算システムを使用して実装されてもよく、フィールドプログラマブルゲートアレイ（ＦＰＧＡ，field-programmable gate array）などの適切なハードウェアにおいて、又は何らかのハイブリッド形態で実装されてもよい。例えば、プログラムされた手法では、ソフトウェアは、１又は２以上のプログラムされた或いはプログラマブルコンピューティングシステム（分散型、クライアント／サーバ型、又はグリッドなどの様々なアーキテクチャのものであり得る）上で実行される１又は２以上のコンピュータプログラムにおける手順を含み得、それぞれが、少なくとも１つのプロセッサと、少なくとも１つのデータストレージシステム（揮発性及び／又は不揮発性のメモリ並びに／或いはストレージエレメントを含む）と、少なくとも１つのユーザインターフェース（少なくとも１つの入力デバイス又はポートを使用して入力を受信するための、及び少なくとも１つの出力デバイス又はポートを使用して出力を提供するための）とを含む。ソフトウェアは、例えば、データフローグラフの設計、設定、及び実行に関連するサービスを提供する、より大きなプログラムの１又は２以上のモジュールを含み得る。プログラムのモジュール（例えば、データフローグラフのエレメント）は、データ構造又はデータリポジトリに記憶されたデータモデルに準拠する他の組織化データとして実装され得る。
【０１０８】
ソフトウェアは、ある期間（例えば、ダイナミックＲＡＭなどのダイナミックメモリデバイスのリフレッシュ期間の間の時間）の間、媒体の物理的特性（例えば、表面ピット及びランド、磁区、又は電荷）を使用して、揮発性又は不揮発性ストレージ媒体、或いは他の任意の非一時的媒体に具体化されるような非一時的な形態で記憶され得る。命令をロードするための準備において、ソフトウェアは、ＣＤ−ＲＯＭ又は他のコンピュータ可読媒体（例えば、汎用又は専用コンピューティングシステム或いはデバイスによって可読である）などの有形の非一時的媒体上に提供されてもよく、ネットワークの通信媒体を介して、それが実行されるコンピューティングシステムの有形の非一時的媒体に配信（例えば、伝播信号で符号化）されてもよい。処理の一部又は全部は、専用コンピュータ上で、或いはコプロセッサ又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は専用の特定用途向け集積回路（ＡＳＩＣ，application-specific integrated circuits）などの専用ハードウェアを使用して実施され得る。処理は、ソフトウェアによって指定された計算の異なる部分が異なるコンピューティングエレメントによって実施される分散方式で実装され得る。そのような各コンピュータプログラムは、本明細書に記載の処理を実施するためにコンピュータによってストレージデバイス媒体が読み出されたときに、コンピュータを設定し、動作するために、汎用又は専用のプログラマブルコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体（例えば、固体メモリ又は媒体、或いは磁気又は光学媒体）に記憶されるか、又はダウンロードされることが望ましい。また、本発明のシステムは、コンピュータプログラムで設定された有形の非一時的媒体として実装されると考えられてもよく、そのように設定された媒体は、本明細書に記載の処理ステップのうちの１又は２以上を実施するために、コンピュータを特定の事前に画定された方法で動作させる。
【０１０９】
本発明のいくつかの実施形態について説明した。それでもなお、前述の説明は、本発明の範囲を限定するものではなく本発明の範囲を例示することが意図されており、本発明の範囲は特許請求の範囲によって画定されるものと理解されるべきである。したがって、他の実施形態も以下の特許請求の範囲内にある。例えば、本発明の範囲から逸脱することなしに、様々な変更が行われ得る。さらに、上述のステップのうちのいくつかは、順序に依存しなくてよく、したがって、記載された順序とは異なる順序で実施され得る。
【図１】
2019505885.tif 000003
【図２Ａ】
2019505885.tif 000004
【図２Ｂ】
2019505885.tif 000005
【図２Ｃ】
2019505885.tif 000006
【図３】
2019505885.tif 000007
【図４】
2019505885.tif 000008
【図５】
2019505885.tif 000009
【図６】
2019505885.tif 000010
【図７】
2019505885.tif 000011
【図８】
2019505885.tif 000012
【図９】
2019505885.tif 000013
【図１０】
2019505885.tif 000014
【図１１】
2019505885.tif 000015
【図１２】
2019505885.tif 000016
【図１３】
2019505885.tif 000017
【図１４】
2019505885.tif 000018
【図１５】
2019505885.tif 000019
【図１６】
2019505885.tif 000020
【手続補正書】
【提出日】平成30年7月31日(2018.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するための方法であって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの第１のインターフェースエレメントを形成するステップであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、ステップと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの前記１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの１又は２以上の特性を設定するステップと
を含む、前記グラフインターフェースを形成するステップと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成するステップであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成するステップを含む、前記グラフインターフェースの第１の実装形態を形成するステップと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶するステップと
を含む、前記方法。
【請求項２】
１又は２以上の有向リンクの第２のセットによって相互接続された第２の複数のコンポーネントを含む第２の有向グラフの記述を含む仕様をデータストレージシステムに記憶するステップと、前記第２の有向グラフにおける第１の有向グラフの１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントのインスタンスを識別するステップと、前記第２の有向グラフ内の１又は２以上の有向リンクの前記第１のセットによって相互接続された前記第１の複数のコンポーネントの識別されたインスタンスをグラフインターフェースに置き換えるステップとをさらに含む、請求項１に記載の方法。
【請求項３】
第１のインターフェースエレメントの１又は２以上の特性を設定するステップが、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するステップと、決定された１又は２以上の記述子に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定するステップとを含む、請求項１又は２に記載の方法。
【請求項４】
決定された１又は２以上の記述子に基づいて第１のインターフェースエレメントの１又は２以上の特性を設定するステップが、第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、決定された伝播の方向に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定するステップとを含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播するポートとして前記第１のポートを識別するステップと、識別に基づいて、前記第１のインターフェースエレメントに伝播の外向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前に、データ又は計算特性の記述子の伝播中に使用される、請求項４に記載の方法。
【請求項６】
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第１のインターフェースエレメントに伝播しないポートとして前記第１のポートを識別するステップと、識別に基づいて、前記第１のインターフェースエレメントに伝播の内向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前にデータ又は計算特性の記述子の伝播中に使用される、請求項４に記載の方法。
【請求項７】
グラフインターフェースを形成するステップが、
前記グラフインターフェースの第２のインターフェースエレメントを形成するステップであって、前記第２のインターフェースエレメントが、第１の複数のコンポーネントのうちの第２のコンポーネントの第２のポートに関連付けられている、前記形成するステップと、
データ又は計算特性の記述子を前記第２のインターフェースエレメントに伝播しないポートとして前記第２のポートを識別するステップと、識別に基づいて、前記第２のインターフェースエレメントへの伝播の内向き方向を割り当てるステップとを含む、前記第２のコンポーネントの前記第２のポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するステップと、
第１のコンポーネントの第１のポートに関連付けられるデータ又は計算特性の前記１又は２以上の記述子と、前記第２のコンポーネントの前記第２のポートに関連付けられるデータ又は計算特性の前記１又は２以上の記述子との間の関係を識別し、第１のインターフェースエレメントと前記第２のインターフェースエレメントとの間の識別された関係の表現を形成するステップと
を含む、請求項６に記載の方法。
【請求項８】
関係の表現が、第１のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子が、第２のインターフェースエレメントに関連付けられるデータ又は計算特性の１又は２以上の記述子と同じであることを示す制約を含む、請求項７に記載の方法。
【請求項９】
１又は２以上の他のコンポーネントのポートが第１のインターフェースエレメントの１又は２以上の特性に準拠するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップをさらに含む、請求項１〜８のいずれかに記載の方法。
【請求項１０】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、ユーザ入力を受信し、前記ユーザ入力に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップを含む、請求項９に記載の方法。
【請求項１１】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子を決定するために、前記１又は２以上の他のコンポーネントを解析するステップと、前記１又は２以上の他のコンポーネントの前記ポートに関連付けられる、決定された１又は２以上のデータ又は計算特性の記述子に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップとを含む、請求項９又は１０に記載の方法。
【請求項１２】
第１のインターフェースエレメントの１又は２以上の特性を変更するステップが、１又は２以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の１又は２以上の記述子の伝播の方向を決定するために、前記１又は２以上の他のコンポーネントを解析するステップと、決定された伝播の方向に基づいて、前記第１のインターフェースエレメントの前記１又は２以上の特性を変更するステップとを含む、請求項９〜１１のいずれかに記載の方法。
【請求項１３】
グラフインターフェースを形成するステップが、第１の複数のコンポーネントに関連付けられるパラメータを識別するステップと、前記パラメータに関連付けられるインターフェースエレメントを前記グラフインターフェースに追加するステップとをさらに含む、請求項１〜１２のいずれかに記載の方法。
【請求項１４】
パラメータに対応するパラメータ値を識別するステップと、識別されたパラメータ値をデフォルト値として使用するためにグラフインターフェースを設定するステップとをさらに含む、請求項１３に記載の方法。
【請求項１５】
実行のために第２の有向グラフを準備するステップであって、
グラフインターフェースの第１の実装形態をデータストレージシステムから読み出すステップと、
第１のインターフェースエレメントと、前記グラフインターフェースの前記第１の実装形態における第１の複数のコンポーネントの第１のコンポーネントの第１のポートとの間の第１の対応関係に基づいて、前記グラフインターフェースの前記第１の実装形態における前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートと、前記グラフインターフェースの前記第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第１の実装形態を前記第２の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項２に記載の方法。
【請求項１６】
実行のために第２の有向グラフを準備するステップであって、
グラフインターフェースの第１の実装形態とは異なる前記グラフインターフェースの第２の実装形態をデータストレージシステムから読み出すステップと、
第１のインターフェースエレメントと前記グラフインターフェースの前記第２の実装形態におけるコンポーネントのポートとの間の第２の対応関係に基づいて、前記グラフインターフェースの前記第２の実装形態における前記コンポーネントの前記ポートと、前記グラフインターフェースの前記第１のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第２の実装形態を前記第２の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項２に記載の方法。
【請求項１７】
第１のインターフェースエレメントが、第１の複数のコンポーネントの第１のコンポーネントの第１のポートに接続された有向リンクを、前記第１の複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項１〜１６のいずれかに記載の方法。
【請求項１８】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、
前記第１の複数のコンポーネントのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を行わせるための命令を含む、前記ソフトウェア。
【請求項１９】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも１つのプロセッサであって、前記処理することが、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項２０】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
１又は２以上の有向リンクの第１のセットによって相互接続された第１の複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第１の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第１のインターフェースエレメントを形成することであって、前記第１のインターフェースエレメントが、前記第１の複数のコンポーネントの第１のコンポーネントの第１のポートに関連付けられる、前記第１のインターフェースエレメントを形成することと、
前記第１のコンポーネントの前記第１のポートが前記第１のインターフェースエレメントの１又は２以上の特性と一致するように、前記第１のインターフェースエレメントの前記１又は２以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第１の複数のコンポーネントを含む前記グラフインターフェースの第１の実装形態を形成することであって、前記第１のインターフェースエレメントと前記第１の複数のコンポーネントの前記第１のコンポーネントの前記第１のポートとの間の第１の対応関係を形成することを含む、前記第１の実装形態を形成することと、
前記グラフインターフェースの前記第１の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項２１】
グラフインターフェースを決定するための方法であって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するステップと、
前記第１の有向グラフ用のグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成するステップであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成するステップと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析するステップと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定するステップと
を含む、前記方法。
【請求項２２】
インターフェースエレメントに関連付けられるメタデータ記述子特性が、前記インターフェースエレメントを介して転送されるデータのデータ特性、或いは複数のコンポーネントのうちの１又は２以上のものの計算特性を含む、請求項２１に記載の方法。
【請求項２３】
データ特性が、転送されたデータ内のレコードのフィールドのフォーマットを含む、請求項２２に記載の方法。
【請求項２４】
計算特性が、複数のコンポーネントのうちの１又は２以上によって表される計算の実行の並列度を含む、請求項２２又は２３に記載の方法。
【請求項２５】
第１の有向グラフ用のグラフインターフェースを形成するステップが、１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる１又は２以上の特性が、前記インターフェースエレメントが、前記グラフインターフェースを介してパラメータ値を転送するように設定されていることを特定することを決定するために、前記第１の有向グラフを解析するステップをさらに含む、請求項２１〜２４のいずれかに記載の方法。
【請求項２６】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播する複数のコンポーネントのうちの１つのコンポーネントの識別に基づいて、前記第１の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項２１〜２５のいずれかに記載の方法。
【請求項２７】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、複数のコンポーネントのうちのどのコンポーネントも前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播しないという決定に基づいて、前記第２の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項２１〜２５のいずれかに記載の方法。
【請求項２８】
第１の有向グラフ用のグラフインターフェースを形成するステップが、インターフェースエレメントのうちの２又は３以上が、それぞれ必然的に同じ特性に関連付けられることを決定するステップをさらに含む、請求項２１〜２７のいずれかに記載の方法。
【請求項２９】
グラフインターフェースの表現及び第１の有向グラフの表現をデータストレージシステムに記憶するステップをさらに含む、請求項２１〜２８のいずれかに記載の方法。
【請求項３０】
１又は２以上のインターフェースエレメントのうちの少なくとも一部が、複数のコンポーネントのうちの１つのコンポーネントのポートに接続された有向リンクを、前記複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項２１〜２９のいずれかに記載の方法。
【請求項３１】
グラフインターフェースを決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信することと、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成することであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記グラフインターフェースを形成することとを行わせるための命令を含む、前記ソフトウェア。
【請求項３２】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも１つのプロセッサとを含み、前記処理することが、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成するステップであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【請求項３３】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第１の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第１の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの１又は２以上のインターフェースエレメントを形成するための情報を識別するために前記第１の有向グラフを解析し、前記１又は２以上のインターフェースエレメントを形成することであって、前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも１つを含む１又は２以上の特性に関連付けられる、前記１又は２以上のインターフェースエレメントを形成することと、
前記１又は２以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第１の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第２の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第１の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【国際調査報告】
2019505885.tif 000021
2019505885.tif 000022
2019505885.tif 000023
2019505885.tif 000024