特許第6584672号(P6584672)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アビニシオ テクノロジー エルエルシーの特許一覧

<>
  • 特許6584672-サブグラフインターフェースの生成 図000002
  • 特許6584672-サブグラフインターフェースの生成 図000003
  • 特許6584672-サブグラフインターフェースの生成 図000004
  • 特許6584672-サブグラフインターフェースの生成 図000005
  • 特許6584672-サブグラフインターフェースの生成 図000006
  • 特許6584672-サブグラフインターフェースの生成 図000007
  • 特許6584672-サブグラフインターフェースの生成 図000008
  • 特許6584672-サブグラフインターフェースの生成 図000009
  • 特許6584672-サブグラフインターフェースの生成 図000010
  • 特許6584672-サブグラフインターフェースの生成 図000011
  • 特許6584672-サブグラフインターフェースの生成 図000012
  • 特許6584672-サブグラフインターフェースの生成 図000013
  • 特許6584672-サブグラフインターフェースの生成 図000014
  • 特許6584672-サブグラフインターフェースの生成 図000015
  • 特許6584672-サブグラフインターフェースの生成 図000016
  • 特許6584672-サブグラフインターフェースの生成 図000017
  • 特許6584672-サブグラフインターフェースの生成 図000018
  • 特許6584672-サブグラフインターフェースの生成 図000019
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6584672
(24)【登録日】2019年9月13日
(45)【発行日】2019年10月2日
(54)【発明の名称】サブグラフインターフェースの生成
(51)【国際特許分類】
   G06F 8/34 20180101AFI20190919BHJP
【FI】
   G06F8/34
【請求項の数】33
【全頁数】34
(21)【出願番号】特願2018-529623(P2018-529623)
(86)(22)【出願日】2016年12月20日
(65)【公表番号】特表2019-505885(P2019-505885A)
(43)【公表日】2019年2月28日
(86)【国際出願番号】US2016067742
(87)【国際公開番号】WO2017112654
(87)【国際公開日】20170629
【審査請求日】2018年7月31日
(31)【優先権主張番号】62/270,163
(32)【優先日】2015年12月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100107984
【弁理士】
【氏名又は名称】廣田 雅紀
(74)【代理人】
【識別番号】100102255
【弁理士】
【氏名又は名称】小澤 誠次
(74)【代理人】
【識別番号】100096482
【弁理士】
【氏名又は名称】東海 裕作
(74)【代理人】
【識別番号】100188352
【弁理士】
【氏名又は名称】松田 一弘
(74)【代理人】
【識別番号】100113860
【弁理士】
【氏名又は名称】松橋 泰典
(74)【代理人】
【識別番号】100131093
【弁理士】
【氏名又は名称】堀内 真
(74)【代理人】
【識別番号】100150902
【弁理士】
【氏名又は名称】山内 正子
(74)【代理人】
【識別番号】100141391
【弁理士】
【氏名又は名称】園元 修一
(74)【代理人】
【識別番号】100198074
【弁理士】
【氏名又は名称】山村 昭裕
(74)【代理人】
【識別番号】100145920
【弁理士】
【氏名又は名称】森川 聡
(74)【代理人】
【識別番号】100096013
【弁理士】
【氏名又は名称】富田 博行
(72)【発明者】
【氏名】アバヤ ヴィクトール ティー.
(72)【発明者】
【氏名】ブライアン ラッセル エル.
(72)【発明者】
【氏名】ラーソン ブロンド
(72)【発明者】
【氏名】オフナー カール
(72)【発明者】
【氏名】テベン ダニエル ジェイ.
【審査官】 塚田 肇
(56)【参考文献】
【文献】 米国特許出願公開第2015/0160926(US,A1)
【文献】 特表2008−547134(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/34
(57)【特許請求の範囲】
【請求項1】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するための方法であって、
1又は2以上の有向リンクの第1のセットによって相互接続された第1の複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するステップと、
前記第1の複数のコンポーネントのためのグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの第1のインターフェースエレメントを形成するステップであって、前記第1のインターフェースエレメントが、前記第1の複数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、ステップと、
前記第1のコンポーネントの前記第1のポートが前記第1のインターフェースエレメントの前記1又は2以上の特性と一致するように、前記第1のインターフェースエレメントの1又は2以上の特性を設定するステップと
を含む、前記グラフインターフェースを形成するステップと、
前記第1の複数のコンポーネントを含む前記グラフインターフェースの第1の実装形態を形成するステップであって、前記第1のインターフェースエレメントと前記第1の複数のコンポーネントの前記第1のコンポーネントの前記第1のポートとの間の第1の対応関係を形成するステップを含む、前記グラフインターフェースの第1の実装形態を形成するステップと、
前記グラフインターフェースの前記第1の実装形態をデータストレージシステムに記憶するステップと
を含む、前記方法。
【請求項2】
1又は2以上の有向リンクの第2のセットによって相互接続された第2の複数のコンポーネントを含む第2の有向グラフの記述を含む仕様をデータストレージシステムに記憶するステップと、前記第2の有向グラフにおける第1の有向グラフの1又は2以上の有向リンクの第1のセットによって相互接続された第1の複数のコンポーネントのインスタンスを識別するステップと、前記第2の有向グラフ内の1又は2以上の有向リンクの前記第1のセットによって相互接続された前記第1の複数のコンポーネントの識別されたインスタンスをグラフインターフェースに置き換えるステップとをさらに含む、請求項1に記載の方法。
【請求項3】
第1のインターフェースエレメントの1又は2以上の特性を設定するステップが、第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子を決定するステップと、決定された1又は2以上の記述子に基づいて、前記第1のインターフェースエレメントの前記1又は2以上の特性を設定するステップとを含む、請求項1又は2に記載の方法。
【請求項4】
決定された1又は2以上の記述子に基づいて第1のインターフェースエレメントの1又は2以上の特性を設定するステップが、第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップと、決定された伝播の方向に基づいて、前記第1のインターフェースエレメントの前記1又は2以上の特性を設定するステップとを含む、請求項1〜3のいずれかに記載の方法。
【請求項5】
第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第1のインターフェースエレメントに伝播するポートとして前記第1のポートを識別するステップと、識別に基づいて、前記第1のインターフェースエレメントに伝播の外向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前に、データ又は計算特性の記述子の伝播中に使用される、請求項4に記載の方法。
【請求項6】
第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップが、データ又は計算特性の記述子を第1のインターフェースエレメントに伝播しないポートとして前記第1のポートを識別するステップと、識別に基づいて、前記第1のインターフェースエレメントに伝播の内向き方向を割り当てるステップとを含み、割り当てられた伝播の方向が、コンテナグラフの実行前にデータ又は計算特性の記述子の伝播中に使用される、請求項4に記載の方法。
【請求項7】
グラフインターフェースを形成するステップが、
前記グラフインターフェースの第2のインターフェースエレメントを形成するステップであって、前記第2のインターフェースエレメントが、第1の複数のコンポーネントのうちの第2のコンポーネントの第2のポートに関連付けられている、前記形成するステップと、
データ又は計算特性の記述子を前記第2のインターフェースエレメントに伝播しないポートとして前記第2のポートを識別するステップと、識別に基づいて、前記第2のインターフェースエレメントへの伝播の内向き方向を割り当てるステップとを含む、前記第2のコンポーネントの前記第2のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップと、
第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の前記1又は2以上の記述子と、前記第2のコンポーネントの前記第2のポートに関連付けられるデータ又は計算特性の前記1又は2以上の記述子との間の関係を識別し、第1のインターフェースエレメントと前記第2のインターフェースエレメントとの間の識別された関係の表現を形成するステップと
を含む、請求項6に記載の方法。
【請求項8】
関係の表現が、第1のインターフェースエレメントに関連付けられるデータ又は計算特性の1又は2以上の記述子が、第2のインターフェースエレメントに関連付けられるデータ又は計算特性の1又は2以上の記述子と同じであることを示す制約を含む、請求項7に記載の方法。
【請求項9】
1又は2以上の他のコンポーネントのポートが第1のインターフェースエレメントの1又は2以上の特性に準拠するように、前記第1のインターフェースエレメントの前記1又は2以上の特性を変更するステップをさらに含む、請求項1〜8のいずれかに記載の方法。
【請求項10】
第1のインターフェースエレメントの1又は2以上の特性を変更するステップが、ユーザ入力を受信し、前記ユーザ入力に基づいて、前記第1のインターフェースエレメントの前記1又は2以上の特性を変更するステップを含む、請求項9に記載の方法。
【請求項11】
第1のインターフェースエレメントの1又は2以上の特性を変更するステップが、1又は2以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の1又は2以上の記述子を決定するために、前記1又は2以上の他のコンポーネントを解析するステップと、前記1又は2以上の他のコンポーネントの前記ポートに関連付けられる、決定された1又は2以上のデータ又は計算特性の記述子に基づいて、前記第1のインターフェースエレメントの前記1又は2以上の特性を変更するステップとを含む、請求項9又は10に記載の方法。
【請求項12】
第1のインターフェースエレメントの1又は2以上の特性を変更するステップが、1又は2以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するために、前記1又は2以上の他のコンポーネントを解析するステップと、決定された伝播の方向に基づいて、前記第1のインターフェースエレメントの前記1又は2以上の特性を変更するステップとを含む、請求項9〜11のいずれかに記載の方法。
【請求項13】
グラフインターフェースを形成するステップが、第1の複数のコンポーネントに関連付けられるパラメータを識別するステップと、前記パラメータに関連付けられるインターフェースエレメントを前記グラフインターフェースに追加するステップとをさらに含む、請求項1〜12のいずれかに記載の方法。
【請求項14】
パラメータに対応するパラメータ値を識別するステップと、識別されたパラメータ値をデフォルト値として使用するためにグラフインターフェースを設定するステップとをさらに含む、請求項13に記載の方法。
【請求項15】
実行のために第2の有向グラフを準備するステップであって、
グラフインターフェースの第1の実装形態をデータストレージシステムから読み出すステップと、
第1のインターフェースエレメントと、前記グラフインターフェースの前記第1の実装形態における第1の複数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係に基づいて、前記グラフインターフェースの前記第1の実装形態における前記第1の複数のコンポーネントの前記第1のコンポーネントの前記第1のポートと、前記グラフインターフェースの前記第1のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第1の実装形態を前記第2の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項2に記載の方法。
【請求項16】
実行のために第2の有向グラフを準備するステップであって、
グラフインターフェースの第1の実装形態とは異なる前記グラフインターフェースの第2の実装形態をデータストレージシステムから読み出すステップと、
第1のインターフェースエレメントと前記グラフインターフェースの前記第2の実装形態におけるコンポーネントのポートとの間の第2の対応関係に基づいて、前記グラフインターフェースの前記第2の実装形態における前記コンポーネントの前記ポートと、前記グラフインターフェースの前記第1のインターフェースエレメントとの間の有向リンクを確立するステップを含む、前記第2の実装形態を前記第2の有向グラフに挿入するステップと
を含む、前記準備するステップをさらに含む、請求項2に記載の方法。
【請求項17】
第1のインターフェースエレメントが、第1の複数のコンポーネントの第1のコンポーネントの第1のポートに接続された有向リンクを、前記第1の複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項1〜16のいずれかに記載の方法。
【請求項18】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
1又は2以上の有向リンクの第1のセットによって相互接続された第1の複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信することと、
前記第1の複数のコンポーネントのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第1のインターフェースエレメントを形成することであって、前記第1のインターフェースエレメントが、前記第1の複数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、前記第1のインターフェースエレメントを形成することと、
前記第1のコンポーネントの前記第1のポートが前記第1のインターフェースエレメントの1又は2以上の特性と一致するように、前記第1のインターフェースエレメントの前記1又は2以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第1の複数のコンポーネントを含む前記グラフインターフェースの第1の実装形態を形成することであって、前記第1のインターフェースエレメントと前記第1の複数のコンポーネントの前記第1のコンポーネントの前記第1のポートとの間の第1の対応関係を形成することを含む、前記第1の実装形態を形成することと、
前記グラフインターフェースの前記第1の実装形態をデータストレージシステムに記憶することと
を行わせるための命令を含む、前記ソフトウェア。
【請求項19】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
1又は2以上の有向リンクの第1のセットによって相互接続された第1の複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも1つのプロセッサであって、前記処理することが、
前記第1の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第1のインターフェースエレメントを形成することであって、前記第1のインターフェースエレメントが、前記第1の複数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、前記第1のインターフェースエレメントを形成することと、
前記第1のコンポーネントの前記第1のポートが前記第1のインターフェースエレメントの1又は2以上の特性と一致するように、前記第1のインターフェースエレメントの前記1又は2以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第1の複数のコンポーネントを含む前記グラフインターフェースの第1の実装形態を形成することであって、前記第1のインターフェースエレメントと前記第1の複数のコンポーネントの前記第1のコンポーネントの前記第1のポートとの間の第1の対応関係を形成することを含む、前記第1の実装形態を形成することと、
前記グラフインターフェースの前記第1の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項20】
グラフインターフェース及び前記グラフインターフェースの実装形態を決定するためのコンピューティングシステムであって、
1又は2以上の有向リンクの第1のセットによって相互接続された第1の複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第1の複数のコンポーネントのためのグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの第1のインターフェースエレメントを形成することであって、前記第1のインターフェースエレメントが、前記第1の複数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、前記第1のインターフェースエレメントを形成することと、
前記第1のコンポーネントの前記第1のポートが前記第1のインターフェースエレメントの1又は2以上の特性と一致するように、前記第1のインターフェースエレメントの前記1又は2以上の特性を設定することと
を含む、前記グラフインターフェースを形成することと、
前記第1の複数のコンポーネントを含む前記グラフインターフェースの第1の実装形態を形成することであって、前記第1のインターフェースエレメントと前記第1の複数のコンポーネントの前記第1のコンポーネントの前記第1のポートとの間の第1の対応関係を形成することを含む、前記第1の実装形態を形成することと、
前記グラフインターフェースの前記第1の実装形態をデータストレージシステムに記憶することと
を含む、前記コンピューティングシステム。
【請求項21】
グラフインターフェースを決定するための方法であって、
有向リンクによって相互接続された複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するステップと、
前記第1の有向グラフ用のグラフインターフェースを形成するステップであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成するステップが、
前記グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために前記第1の有向グラフを解析し、前記1又は2以上のインターフェースエレメントを形成するステップであって、前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、前記1又は2以上のインターフェースエレメントを形成するステップと、
前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第1の有向グラフを解析するステップと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定するステップと
を含む、前記方法。
【請求項22】
インターフェースエレメントに関連付けられるメタデータ記述子特性が、前記インターフェースエレメントを介して転送されるデータのデータ特性、或いは複数のコンポーネントのうちの1又は2以上のものの計算特性を含む、請求項21に記載の方法。
【請求項23】
データ特性が、転送されたデータ内のレコードのフィールドのフォーマットを含む、請求項22に記載の方法。
【請求項24】
計算特性が、複数のコンポーネントのうちの1又は2以上によって表される計算の実行の並列度を含む、請求項22又は23に記載の方法。
【請求項25】
第1の有向グラフ用のグラフインターフェースを形成するステップが、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる1又は2以上の特性が、前記インターフェースエレメントが、前記グラフインターフェースを介してパラメータ値を転送するように設定されていることを特定することを決定するために、前記第1の有向グラフを解析するステップをさらに含む、請求項21〜24のいずれかに記載の方法。
【請求項26】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播する複数のコンポーネントのうちの1つのコンポーネントの識別に基づいて、前記第1の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項21〜25のいずれかに記載の方法。
【請求項27】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するステップが、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の前記値が、複数のコンポーネントのうちのどのコンポーネントも前記メタデータ記述子特性の値を前記インターフェースエレメントに伝播しないという決定に基づいて、前記第2の有向グラフから前記インターフェースエレメントに伝播されると決定するステップを含む、請求項21〜25のいずれかに記載の方法。
【請求項28】
第1の有向グラフ用のグラフインターフェースを形成するステップが、インターフェースエレメントのうちの2又は3以上が、それぞれ必然的に同じ特性に関連付けられることを決定するステップをさらに含む、請求項21〜27のいずれかに記載の方法。
【請求項29】
グラフインターフェースの表現及び第1の有向グラフの表現をデータストレージシステムに記憶するステップをさらに含む、請求項21〜28のいずれかに記載の方法。
【請求項30】
1又は2以上のインターフェースエレメントのうちの少なくとも一部が、複数のコンポーネントのうちの1つのコンポーネントのポートに接続された有向リンクを、前記複数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含む、請求項21〜29のいずれかに記載の方法。
【請求項31】
グラフインターフェースを決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアであって、コンピューティングシステムに、
有向リンクによって相互接続された複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信することと、
前記第1の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために前記第1の有向グラフを解析し、前記1又は2以上のインターフェースエレメントを形成することであって、前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、前記1又は2以上のインターフェースエレメントを形成することと、
前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第1の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記グラフインターフェースを形成することとを行わせるための命令を含む、前記ソフトウェア。
【請求項32】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、
前記仕様を処理するように設定された少なくとも1つのプロセッサとを含み、前記処理することが、
前記第1の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために前記第1の有向グラフを解析し、前記1又は2以上のインターフェースエレメントを形成するステップであって、前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、前記1又は2以上のインターフェースエレメントを形成することと、
前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第1の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【請求項33】
グラフインターフェースを決定するためのコンピューティングシステムであって、
有向リンクによって相互接続された複数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するための手段と、
前記仕様を処理するための手段と
を含み、前記処理することが、
前記第1の有向グラフ用のグラフインターフェースを形成することであって、前記グラフインターフェースが、コンテナグラフの実行前に前記グラフインターフェースに準拠する実装形態に置き換えられることになる前記コンテナグラフ内のプレースホルダであり、前記グラフインターフェースを形成することが、
前記グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために前記第1の有向グラフを解析し、前記1又は2以上のインターフェースエレメントを形成することであって、前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、前記1又は2以上のインターフェースエレメントを形成することと、
前記1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、前記インターフェースエレメントに関連付けられる前記メタデータ記述子特性の値が、前記第1の有向グラフから前記インターフェースエレメントに伝播されるか、又は前記グラフインターフェースが利用されるコンテナグラフである第2の有向グラフから前記インターフェースエレメントに伝播されるかを決定するために、前記第1の有向グラフを解析することと、前記解析結果に基づいて、前記インターフェースエレメントのメタデータ伝播特性の前記方向を設定することと
を含む、前記コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2015年12月21日に出願された米国特許出願第62/270,163号に対する優先権を主張する。
【0002】
本明細書は、動的にリンクされたサブグラフのサブグラフインターフェースの生成に関する。
【背景技術】
【0003】
データを処理するための多くのソフトウェアアプリケーションが存在する。これらのソフトウェアアプリケーションの一部は、データフローグラフとして指定されている。データフローグラフは、通常、いくつかのデータ処理コンポーネントを含み、それらはリンクによって相互接続され、「フロー」と呼ばれることもある。
【0004】
動作中、データ(例えば、データセット)は、データベースから、又は何らかの他のデータストレージシステムから、データフローグラフによって受信される。受信されたデータは、コンポーネント及びフローの相互接続によって画定された依存性に従って、フローを通ってコンポーネントに伝播することによって、データフローグラフを通って進む。各コンポーネントは、処理されたデータを1又は2以上のフローを介して出力データとして提供する前に、コンポーネントに関連付けられるあらかじめ定められた機能に従って、受信したデータを処理する。データフローグラフの出力において、処理されたデータは、例えば、別のデータストレージシステムに記憶されるか、別の下流システムに提供されるか、又はユーザに提示される。
【0005】
データフローグラフの開発者は、一般に、データフローグラフが所望の機能性を実装するように、コンポーネントを表すブロックをグラフィカル開発環境(GDE,graphical development environment)によって提供されるグラフィカルワーキングエリア(又は「キャンバス」)上にドラッグし、データフローを表すリンクにコンポーネントを相互接続することによって、グラフを指定する。開発者がデータフローグラフの実装形態に満足すると、後で使用するためにデータフローグラフをストレージに保存することができる。一般に、開発者がデータフローグラフの実装形態を後に変更する必要がある場合、GDEに、保存されたデータフローグラフをストレージから読み込ませ、データフローグラフを変更させ、次いで、変更されたデータフローグラフをストレージに再保存させる。
【0006】
いくつかの例では、データフローグラフのコンポーネントは、それ自体、「サブグラフ」と呼ばれるデータフローグラフを使用して実装される。所与のデータフローグラフにおいて使用されているコンポーネントのサブグラフを変更するために、データフローグラフがディスクから読み込まれ、そのサブグラフが編集され得るようにサブグラフコンポーネントが開かれ、サブグラフへの変更が行われ、データフローグラフ自体がストレージに再保存され、それによって、サブグラフへの変更が保存されたデータフローグラフに埋め込まれる。
【発明の概要】
【課題を解決するための手段】
【0007】
一般的な態様において、方法は、1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するステップと、第1の数のコンポーネントのグラフインターフェースを形成するステップとを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成するステップは、グラフインターフェースの第1のインターフェースエレメントを形成するステップであって、第1のインターフェースエレメントが、第1の数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、ステップと、第1のコンポーネントの第1のポートが第1のインターフェースエレメントの1又は2以上の特性と一致するように、第1のインターフェースエレメントの1又は2以上の特性を設定するステップとを含み、第1の数のコンポーネントを含むグラフインターフェースの第1の実装形態を形成するステップであって、第1のインターフェースエレメントと第1の数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係を形成するステップを含む、前記第1の実装形態を形成するステップと、グラフインターフェースの第1の実装形態をデータストレージシステムに記憶するステップとを含む。
【0008】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0009】
本方法は、1又は2以上の有向リンクの第2のセットによって相互接続された第2の数のコンポーネントを含む第2の有向グラフの記述を含む仕様をデータストレージシステムに記憶するステップと、第2の有向グラフにおける第1の有向グラフの1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントのインスタンスを識別するステップと、第2の有向グラフ内の1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントの識別されたインスタンスをグラフインターフェースに置き換えるステップとを含み得る。第1のインターフェースエレメントの1又は2以上の特性を設定するステップは、第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子を決定するステップと、決定された1又は2以上の記述子に基づいて、第1のインターフェースエレメントの1又は2以上の特性を設定するステップとを含み得る。
【0010】
決定された1又は2以上の記述子に基づいて第1のインターフェースエレメントの1又は2以上の特性を設定するステップは、第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップと、決定された伝播の方向に基づいて、第1のインターフェースエレメントの1又は2以上の特性を設定するステップとを含み得る。
【0011】
第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップは、データ又は計算特性の記述子を第1のインターフェースエレメントに伝播するポートとして第1のポートを識別するステップと、識別に基づいて、第1のインターフェースエレメントに伝播の外向き方向を割り当てるステップとを含み得る。第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップは、データ又は計算特性の記述子を第1のインターフェースエレメントに伝播しないポートとして第1のポートを識別するステップと、識別に基づいて、第1のインターフェースエレメントに伝播の内向き方向を割り当てるステップとを含み得る。次いで、割り当てられた伝播の方向は、グラフインターフェースの第1の実装形態を含むコンテナグラフの実行前に、データ又は計算特性の記述子の伝播中に使用される。
【0012】
グラフインターフェースを形成するステップは、グラフインターフェースの第2のインターフェースエレメントを形成するステップであって、第2のインターフェースエレメントが、第1の数のコンポーネントの第2のコンポーネントの第2のポートに関連付けられている、前記形成するステップと、データ又は計算特性の記述子を第2のインターフェースエレメントに伝播しないポートとして第2のポートを識別するステップと、識別に基づいて、第2のインターフェースエレメントへの伝播の内向き方向を割り当てるステップとを含む、第2のコンポーネントの第2のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するステップと、第1のコンポーネントの第1のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子と、第2のコンポーネントの第2のポートに関連付けられるデータ又は計算特性の1又は2以上の記述子との間の関係を識別し、第1のインターフェースエレメントと第2のインターフェースエレメントとの間の識別された関係の表現を形成するステップとを含み得る。
【0013】
関係の表現は、第1のインターフェースエレメントに関連付けられるデータ又は計算特性の1又は2以上の記述子が、第2のインターフェースエレメントに関連付けられるデータ又は計算特性の1又は2以上の記述子と同じであることを示す制約を含み得る。本方法は、1又は2以上の他のコンポーネントのポートが第1のインターフェースエレメントの1又は2以上の特性に準拠するように、第1のインターフェースエレメントの1又は2以上の特性を変更するステップを含み得る。第1のインターフェースエレメントの1又は2以上の特性を変更するステップは、ユーザ入力を受信し、ユーザ入力に基づいて、第1のインターフェースエレメントの1又は2以上の特性を変更するステップを含み得る。第1のインターフェースエレメントの1又は2以上の特性を変更するステップは、1又は2以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の1又は2以上の記述子を決定するために、1又は2以上の他のコンポーネントを解析するステップと、1又は2以上の他のコンポーネントのポートに関連付けられる、決定された1又は2以上のデータ又は計算特性の記述子に基づいて、第1のインターフェースエレメントの1又は2以上の特性を変更するステップとを含み得る。
【0014】
第1のインターフェースエレメントの1又は2以上の特性を変更するステップは、1又は2以上の他のコンポーネントのポートに関連付けられるデータ又は計算特性の1又は2以上の記述子の伝播の方向を決定するために、1又は2以上の他のコンポーネントを解析するステップと、決定された伝播の方向に基づいて、第1のインターフェースエレメントの1又は2以上の特性を変更するステップとを含み得る。グラフインターフェースを形成するステップは、第1の数のコンポーネントに関連付けられるパラメータを識別するステップと、そのパラメータに関連付けられるインターフェースエレメントをグラフインターフェースに追加するステップとを含み得る。本方法は、パラメータに対応するパラメータ値を識別するステップと、識別されたパラメータ値をデフォルト値として使用するためにグラフインターフェースを設定するステップとを含み得る。
【0015】
本方法は、実行のために第2の有向グラフを準備するステップであって、グラフインターフェースの第1の実装形態をデータストレージシステムから読み出すステップと、第1のインターフェースエレメントと、グラフインターフェースの第1の実装形態における第1の数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係に基づいて、グラフインターフェースの第1の実装形態における第1の数のコンポーネントの第1のコンポーネントの第1のポートと、グラフインターフェースの第1のインターフェースエレメントとの間の有向リンクを確立するステップを含む、第1の実装形態を第2の有向グラフに挿入するステップとを含む、前記準備するステップを含み得る。本方法は、実行のために第2の有向グラフを準備するステップであって、グラフインターフェースの第1の実装形態とは異なるグラフインターフェースの第2の実装形態をデータストレージシステムから読み出すステップと、第1のインターフェースエレメントとグラフインターフェースの第2の実装形態におけるコンポーネントのポートとの間の第2の対応関係に基づいて、グラフインターフェースの第2の実装形態におけるコンポーネントのポートと、グラフインターフェースの第1のインターフェースエレメントとの間の有向リンクを確立するステップを含む、第2の実装形態を第2の有向グラフに挿入するステップとを含む、前記準備するステップを含み得る。
【0016】
第1のインターフェースエレメントは、第1の数のコンポーネントの第1のコンポーネントの第1のポートに接続された有向リンクを、第1の数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含み得る。
【0017】
別の一般的な態様では、ソフトウェアは、グラフインターフェース及びグラフインターフェースの実装形態を決定するために、コンピュータ可読媒体上に非一時的な形態で記憶される。ソフトウェアは、コンピューティングシステムに、1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信することと、第1の数のコンポーネントのグラフインターフェースを形成することとを行わせるための命令を含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第1のインターフェースエレメントを形成することであって、第1のインターフェースエレメントが、第1の数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられる、ステップと、第1のコンポーネントの第1のポートが第1のインターフェースエレメントの1又は2以上の特性と一致するように、第1のインターフェースエレメントの1又は2以上の特性を設定することとを含み、第1の数のコンポーネントを含むグラフインターフェースの第1の実装形態を形成することであって、第1のインターフェースエレメントと第1の数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係を形成することを含む、ことと、グラフインターフェースの第1の実装形態をデータストレージシステムに記憶することとを含む。
【0018】
別の一般的な態様では、グラフインターフェース及びグラフインターフェースの実装形態を決定するためのコンピューティングシステムは、1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、仕様を処理するように設定された少なくとも1つのプロセッサとを含む。処理することは、第1の数のコンポーネントのグラフインターフェースを形成することを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第1のインターフェースエレメントを形成することであって、第1のインターフェースエレメントが、第1の数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられることと、第1のコンポーネントの第1のポートが第1のインターフェースエレメントの1又は2以上の特性と一致するように、第1のインターフェースエレメントの1又は2以上の特性を設定することとを含み、第1の数のコンポーネントを含むグラフインターフェースの第1の実装形態を形成することであって、第1のインターフェースエレメントと第1の数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係を形成することを含む、ことと、グラフインターフェースの第1の実装形態をデータストレージシステムに記憶することとを含む。
【0019】
別の一般的な態様では、グラフインターフェース及びグラフインターフェースの実装形態を決定するためのコンピューティングシステムは、1又は2以上の有向リンクの第1のセットによって相互接続された第1の数のコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するための手段と、仕様を処理するための手段とを含む。処理することは、第1の数のコンポーネントのグラフインターフェースを形成することを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成することは、グラフインターフェースの第1のインターフェースエレメントを形成することであって、第1のインターフェースエレメントが、第1の数のコンポーネントの第1のコンポーネントの第1のポートに関連付けられることと、第1のコンポーネントの第1のポートが第1のインターフェースエレメントの1又は2以上の特性と一致するように、第1のインターフェースエレメントの1又は2以上の特性を設定することとを含み、第1の数のコンポーネントを含むグラフインターフェースの第1の実装形態を形成することであって、第1のインターフェースエレメントと第1の数のコンポーネントの第1のコンポーネントの第1のポートとの間の第1の対応関係を形成することを含む、ことと、グラフインターフェースの第1の実装形態をデータストレージシステムに記憶することとを含む。
【0020】
別の一般的な態様では、グラフインターフェースを決定するための方法は、有向リンクによって相互接続されたいくつかのコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するステップと、第1の有向グラフ用のグラフインターフェースを形成するステップとを含む。グラフインターフェースは、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである。グラフインターフェースを形成するステップは、グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために第1の有向グラフを解析し、1又は2以上のインターフェースエレメントを形成するステップであって、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、ステップと、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第2の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第1の有向グラフを解析するステップと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定するステップとを含む。
【0021】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0022】
インターフェースエレメントに関連付けられるメタデータ記述子特性は、インターフェースエレメントを介して転送されるデータのデータ特性、或いは多数のコンポーネントのうちの1又は2以上のものの計算特性を含み得る。データ特性は、転送されたデータ内のレコードのフィールドのフォーマットを含み得る。計算特性は、多数のコンポーネントのうちの1又は2以上によって表される計算の実行の並列度を含み得る。第1の有向グラフ用のグラフインターフェースを形成するステップは、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられる1又は2以上の特性が、インターフェースエレメントが、グラフインターフェースを介してパラメータ値を転送するように設定されていることを特定することを決定するために、第1の有向グラフを解析するステップを含み得る。インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又は第2の有向グラフからインターフェースエレメントに伝播されるかを決定するステップは、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、メタデータ記述子特性の値をインターフェースエレメントに伝播する多数のコンポーネントのうちの1つのコンポーネントの識別に基づいて、第1の有向グラフからインターフェースエレメントに伝播されると決定するステップを含み得る。
【0023】
インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又は第2の有向グラフからインターフェースエレメントに伝播されるかを決定するステップは、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、複数のコンポーネントのうちのどのコンポーネントもメタデータ記述子特性の値をインターフェースエレメントに伝播しないという決定に基づいて、第2の有向グラフからインターフェースエレメントに伝播されると決定するステップを含み得る。第1の有向グラフ用のグラフインターフェースを形成するステップは、インターフェースエレメントのうちの2又は3以上は、それぞれ必然的に同じ特性に関連付けられることを決定するステップを含み得る。本方法は、グラフインターフェースの表現及び第1の有向グラフの表現をデータストレージシステムに記憶するステップを含み得る。1又は2以上のインターフェースエレメントのうちの少なくとも一部は、多数のコンポーネントのうちの1つのコンポーネントのポートに接続された有向リンクを、多数のコンポーネントに含まれない別のコンポーネントのポートに結合するためのフロージャンクションを含み得る。
【0024】
別の一般的な態様では、グラフインターフェースを決定するために、コンピュータ可読媒体上に非一時的な形態で記憶されるソフトウェアは、コンピューティングシステムに、有向リンクによって相互接続されたいくつかのコンポーネントを含む第1の有向グラフの記述を含む仕様を受信することと、第1の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを行わせるための命令を含み、グラフインターフェースを形成することが、グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために第1の有向グラフを解析し、1又は2以上のインターフェースエレメントを形成することであって、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、ことと、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第2の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第1の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【0025】
別の一般的な態様では、グラフインターフェースを決定するためのコンピューティングシステムは、有向リンクによって相互接続されたいくつかのコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するように設定された入力デバイスと、仕様を処理するように設定された少なくとも1つのプロセッサとを含み、処理することが、第1の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを含み、グラフインターフェースを形成することが、グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために第1の有向グラフを解析し、1又は2以上のインターフェースエレメントを形成することであって、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、ことと、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第2の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第1の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【0026】
別の一般的な態様では、グラフインターフェースを決定するためのコンピューティングシステムは、有向リンクによって相互接続されたいくつかのコンポーネントを含む第1の有向グラフの記述を含む仕様を受信するための手段と、仕様を処理するための手段とを含み、処理することが、第1の有向グラフ用のグラフインターフェースを形成することであって、グラフインターフェースが、コンテナグラフの実行前にグラフインターフェースに準拠する実装形態に置き換えられることになるコンテナグラフ内のプレースホルダである、こととを含み、グラフインターフェースを形成することが、グラフインターフェースの1又は2以上のインターフェースエレメントを形成するための情報を識別するために第1の有向グラフを解析し、1又は2以上のインターフェースエレメントを形成することであって、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントの各々が、メタデータ記述子特性又はメタデータ伝播特性の方向の少なくとも1つを含む1又は2以上の特性に関連付けられる、ことと、1又は2以上のインターフェースエレメントのうちの少なくともいくつかのインターフェースエレメントごとに、インターフェースエレメントに関連付けられるメタデータ記述子特性の値が、第1の有向グラフからインターフェースエレメントに伝播されるか、又はグラフインターフェースが利用されるコンテナグラフである第2の有向グラフからインターフェースエレメントに伝播されるかを決定するために、第1の有向グラフを解析することと、その解析結果に基づいて、インターフェースエレメントのメタデータ伝播特性の方向を設定することとを含む。
【0027】
態様は、以下の利点のうちの1又は2以上を含むことができる。
【0028】
データフローグラフソフトウェア開発の状況では、静的にリンクされたサブグラフを、サブグラフインターフェース及び対応する実装サブグラフを含む動的にリンクされたサブグラフに変換する能力が必要である。いくつかの例では、静的にリンクされたサブグラフがそのコンテナグラフから切り取られると、メタデータ伝播に重大な障害が発生する可能性があるため、そうすることは困難である。
【0029】
例えば、サブグラフインターフェースの実装形態がコンテナグラフにおいてインスタンス化される場合、メタデータ伝播プロセスは、実装サブグラフをそのすべての頂点がネイティブグラフ頂点であるかのように扱う。メタデータ伝播プロセスがメタデータを実装サブグラフに伝播する場合、コンテナグラフからのメタデータは実装サブグラフからのメタデータと混合され、予期せぬ結果をもたらす可能性がある。この混合は、レイアウトアルゴリズムが、レイアウトを割り当てるための重みのグローバルな考慮に複雑に依存するため、レイアウトメタデータの場合に悪化する。レイアウトメタデータは、例えば、実行され得るコンポーネントのインスタンスの数(例えば、実行され得る最大数、及び/又は実行される必要がある最小数)を指定することによって、並列度などの計算特性、及び任意で、1又は2以上のインスタンスが実行される特定のホストなどの他の情報を指定する。
【0030】
さらに、複数の異なるコンテナグラフ及び実装サブグラフは、それぞれがサブグラフインターフェースを通じて異なって潜在的に伝播する任意の所与のサブグラフインターフェースを使用することができる。したがって、実装サブグラフに固有の特性を、いずれかのコンテナ又は実装サブグラフにおいて偶然真である特性と分離することは有益である。
【0031】
そうするために、本明細書に記載される態様は、指定されたサブグラフからサブグラフインターフェースを自動的に生じさせ、ユーザは、自動的に生じさせられるサブグラフインターフェースに関連付けられるメタデータ制約を強化するか緩めることが許容されていてもよい。
【0032】
他の利点の中でも、態様は、いくつかのコンテナグラフ及びサブグラフ実装形態に準拠する、動的にリンクされたサブグラフインターフェースの作成を容易にし、結果として、より汎用性があり再利用可能なサブグラフインターフェースをもたらす。
【0033】
態様は、ユーザ入力を受信していてもよく、再利用可能なサブグラフインターフェースを含む動的にリンクされたサブグラフの作成をもたらす、いくつかのステップを自動的に進めることができる。
【0034】
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0035】
図1】サブグラフインターフェースの生成のためのシステムのブロック図である。
図2A】サブグラフインターフェースを含むデータフローグラフである。
図2B】サブグラフインターフェースの実装形態を示す図である。
図2C】結合されたデータフローグラフである。
図3】動的にリンクされたサブグラフ生成のために指定されたデータフローグラフである。
図4】動的にリンクされたサブグラフ生成のための開発環境のブロック図である。
図5】自動の動的なサブグラフジェネレータのブロック図である。
図6】第1の編集時メタデータ伝播プロセスを示す図である。
図7】そのフロージャンクションに対して決定されたメタデータ伝播の方向を有する初期サブグラフインターフェースを示す図である。
図8】第2の編集時メタデータ伝播プロセスを示す図である。
図9】メタデータルールを含む初期サブグラフインターフェースを示す図である。
図10】サブグラフインターフェースパラメータを含む初期サブグラフインターフェースを示す図である。
図11】完成した初期サブグラフインターフェースを示す図である。
図12】サブグラフインターフェース精製ウィザードのフロージャンクション設定画面を示す図である。
図13】サブグラフインターフェース精製ウィザードの伝播ルール設定画面を示す図である。
図14】サブグラフインターフェース設定ウィザードのレイアウト設定画面を示す図である。
図15】サブグラフインターフェース設定ウィザードのパラメータ設定画面を示す図である。
図16】最終サブグラフインターフェースを示す図である。
【発明を実施するための形態】
【0036】
図1は、サブグラフインターフェースの生成技法が使用され得るデータ処理システム100の一例を示す。システム100は、オンラインデータストリームへのストレージデバイス又は接続などの1又は2以上のデータのソースを含み得るデータソース102を含み、データストリームの各々は、様々なフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブ形式)のいずれかにおいてデータを記憶又は提供し得る。実行環境104は、前処理モジュール106及び実行モジュール112を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョンなどの適切なオペレーティングシステムの制御下で、1又は2以上の汎用コンピュータ上でホストされ得る。例えば、実行環境104は、ローカル(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカル分散型(例えば、クラスタ又は大規模並列処理(MPP,massively parallel processing)システムとして接続された複数のプロセッサ、或いは遠隔の、又は遠隔分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/又はワイドエリアネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)、或いはそれらの任意の組合せである、複数の中央処理装置(CPU,central processing unit)又はプロセッサコアを使用するコンピュータシステムの設定を含む複数ノードの並列コンピューティング環境を含むことができる。
【0037】
前処理モジュール106は、データストレージシステム116から1又は2以上のデータフローグラフ114を読み出し、実行モジュール112による実行のためにデータフローグラフを準備する。この準備プロセスの一部は、場合によっては、データフローグラフ114内の任意のサブグラフインターフェースに準拠する任意の実装サブグラフを動的にリンクすることを含む。この動的リンクには通常、メタデータ伝播が含まれる。本明細書に記載の技法を使用して自動的に生じさせられる任意のサブグラフインターフェースは、以下に詳細に説明するように、特性がこのメタデータ伝播を容易にするように設定された、フロージャンクション又はパラメータなどのエレメント(「インターフェースエレメント」と呼ばれる)を含む。次いで、前処理モジュール106は、コンテナデータフローグラフ内のサブグラフインターフェースに「準拠する」(すなわち、一致する)特定の動的にリンクされた実装サブグラフを、実行モジュール112による実行の直前にそのコンテナデータフローグラフにロードする。例えば、準拠する実装サブグラフは、サブグラフインターフェース上のフロージャンクションと一致するポートを有するべきであり、サブグラフインターフェースに関連付けられるパラメータと一致するパラメータ値を有するべきである。
【0038】
実行環境104は、異なる形式のデータベースシステムを含む、データソース102を具体化し得る様々なタイプのシステムからデータを受信することができる。データは、ヌル値を含む可能性がある各フィールド(「属性」又は「列」とも呼ばれる)の値を有するレコードとして編成され得る。データソースから最初にデータを読み出す場合、実行モジュール112は、通常、そのデータソース内のレコードに関するいくつかの初期フォーマット情報から開始する。状況によっては、データソースのレコード構造が最初に分かっていなくてもよく、代わりにデータソース又はデータの解析後に決定されてもよい。レコードに関する初期情報は、例えば、個別の値を表すビットの数、レコード内のフィールドの順序、及びビットによって表される値のタイプ(例えば、文字列、符号付き/符号なし整数)を含むことができる。
【0039】
データソース102を提供するストレージデバイスは、例えば、実行環境104(例えば、ハードドライブ108)をホストするコンピュータに接続されたストレージ媒体に記憶されている実行環境104に対してローカルであってもよく、又は、例えば、遠隔接続(例えば、クラウドコンピューティングインフラストラクチャによって提供される)を介して、実行環境104をホストするコンピュータと通信する遠隔システム(例えば、メインフレーム110)上でホストされている実行環境104に対して遠隔であってもよい。
【0040】
実行モジュール112は、出力データを生じさせるために、前処理モジュール106によって準備されたデータを処理する。出力データは、実行環境104にアクセス可能なデータソース102又はデータストレージシステム116に戻って記憶されてもよく、そうでなければ使用されてもよい。
【0041】
データストレージシステム116はまた、開発環境118にアクセス可能である。開発者120は、頂点間の有向リンク(ワークエレメントの流れ、すなわちデータを表す)によって接続された頂点(データ処理コンポーネント又はデータセットを表す)を含むデータフローグラフとしてアプリケーションを開発するために、開発環境118を使用することができる。例えば、そのような環境は、参照により本明細書に組み込まれる、「Managing Parameters for Graph-Based Applications」(グラフに基づくアプリケーションのためのパラメーター管理)と題する米国特許出願公開第2007/0011668号明細書により詳細に記載されている。そのようなグラフベースの計算を実行するためのシステムは、参照により本明細書に組み込まれる、「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」(グラフとして表現された計算実行)と題する米国特許第5,966,072号明細書に記載されている。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表される個々のプロセスに出入りする情報を取得し、プロセス間で情報を移動し、プロセスの実行順序を定義するための方法を提供する。このシステムは、利用可能な方法からプロセス間通信方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従う通信パスは、TCP/IP又はUNIXドメインソケットを使用することもでき、プロセス間でデータを渡すために共有メモリを使用することもできる)。
【0042】
いくつかの例では、開発環境118は、以下でより詳細に説明するように、従来のサブグラフから動的なサブグラフを生成するための動的なサブグラフジェネレータ121を含む。
【0043】
1 動的にリンクされたサブグラフ
開発環境118において開発され得るデータフローグラフの1つの特定のタイプは、「動的にリンクされたサブグラフ」と呼ばれる。一般に、動的にリンクされたサブグラフは、サブグラフインターフェースと、サブグラフインターフェースに準拠する実装サブグラフとの、2つの別々の関連するコンポーネントを含む。サブグラフインターフェースは、コンテナグラフ内のフローとサブグラフインターフェースに関連付けられるサブグラフとの間の接続点を定義する、1又は2以上の「フロージャンクション」を含む。各フロージャンクションは、第1のデータフローグラフのコンポーネント上のポートへの、又はそこからのデータのフローと、第2のデータフローグラフのコンポーネント上のポートへの、又はそこからのデータのフローとの間の接続(又は「ジャンクション」)を表す。
【0044】
開発者は、データフローグラフを開発する際に、サブグラフインターフェースをデータフローグラフ内の実装サブグラフのプレースホルダとして使用することができる。いくつかの例では、サブグラフインターフェースを含むデータフローグラフは、「コンテナデータフローグラフ」又は単に「コンテナグラフ」と呼ばれる。
【0045】
図2Aを参照すると、コンテナデータフローグラフ200の一例は、いくつかのコンポーネント208A〜208Bとサブグラフインターフェース210にデータを提供する、又はそこからデータを受信する、いくつかのデータセット202A〜202Cを含み、それらのすべてがフロー206A〜206Eによって相互接続されたポート204A〜204Jを有する。コンテナデータフローグラフ200においては、サブグラフインターフェース210の代わりにデータフローグラフに静的にリンクされたコンポーネントは存在しない。代わりに、サブグラフインターフェース210は、データフローグラフ200内のプレースホルダとして機能し、後にサブグラフインターフェース210に準拠する実装サブグラフによって後に置き換えられる。
【0046】
図2Bを参照すると、図2Aのサブグラフインターフェース210に対応する実装サブグラフ201の一例は、フロー206F〜206Iによって相互接続された、いくつかのコンポーネント208C〜208D及びポート204D、204F、204G、及び204K〜204Oを含む。実装サブグラフ201は、図2Aのサブグラフインターフェース210の実装形態であるので、実装サブグラフは、サブグラフインターフェース210上の入力ポートに対応する入力フロー206G、206Fと、サブグラフインターフェース210上の出力ポートに対応する出力フローとを有する。
【0047】
コンテナデータフローグラフ200の開発後のある時点で(例えば、コンテナデータフローグラフ200を実行する直前など)、データフローグラフが実行のために準備される。実行のためにデータフローグラフを準備する際の1つのステップは、実装サブグラフ201をコンテナデータフローグラフ200にリンクするステップを含み、それによって、コンテナデータフローグラフ200内のサブグラフインターフェース210を実装サブグラフ201に置き換えることによって、結合されたデータフローグラフを形成する。
【0048】
例えば、図2Cを参照すると、結合されたデータフローグラフ300は、サブグラフインターフェース210の代わりにリンクされた図2Bの実装データフローグラフ201を有する図2Aのコンテナデータフローグラフ200を含む。実装データフローグラフ201はサブグラフインターフェース210に準拠するので、実装データフローグラフ201の入力ポート及び出力ポートのすべてが、フローを介してコンテナデータフローグラフ200のコンポーネントに接続される。実装サブグラフ201をコンテナデータフローグラフ200にリンクすることによって結合されたデータフローグラフ300を形成した後、結合されたデータフローグラフ300はコンパイルされて実行され得る。
【0049】
動的にリンクされたサブグラフの上記の説明は、対象に関する説明として役立つことが意図されており、対象の包括的な説明ではない。動的にリンクされたサブグラフのより詳細な説明は、参照により本明細書に組み込まれる、「MANAGING INTERFACES FOR SUB-GRAPHS」(サブグラフのためのインターフェース管理)と題する米国特許出願第14/561,494号に見出すことができる。
【0050】
2 動的にリンクされたサブグラフの生成
「MANAGING INTERFACES FOR SUB-GRAPHS」(サブグラフのためのインターフェース管理)と題する米国特許出願第14/561,494号において説明されるようないくつかの例において、サブグラフインターフェースはユーザ指定であり、ユーザがサブグラフインターフェースに準拠する実装サブグラフを書く。他の例では、既存の従来の(すなわち、静的にリンクされた)サブグラフから、サブグラフインターフェース及び実装サブグラフを生じさせる必要がある。
【0051】
例えば、図3を参照すると、従来のサブグラフから動的にリンクされたサブグラフの生成を開始するために、従来のサブグラフ400は、最初に開発環境118を使用して(例えば、ユーザがディスクから従来のサブグラフ400を表すファイルを選択することによって)指定される。
【0052】
2.1 指定されたサブグラフの概要
この例では、指定されたサブグラフ400のブロック図は、いくつかのコンポーネント302A〜302Cを使用して第1の入力ポート304A及び第2の入力ポート304Bから受信したデータを処理し、処理されたデータを、第1の出力ポート304Cと、第2の出力ポート304Dと、第3の出力ポート304Eとに書き込むように設定される。サブグラフ400は、第1のコンポーネント302A、第2のコンポーネント302B、第3のコンポーネント302C、及び第4のコンポーネント302Dを含む。コンポーネントの各々は、入力データを受信するための入力ポートと、出力データを提供するための出力ポート(例えば、ポート304F〜304N)の一方又は両方を有する。一般に、各コンポーネントは、その入力ポートに流入する入力データに1又は2以上の計算を適用し、計算の結果をその出力ポートを介して出力として提供する。特定のタイプのコンポーネント(例えば、第3のコンポーネント302C)は、入力ポートのみ又は出力ポートのみを含み得る点に留意されたい。
【0053】
サブグラフ400の入力ポートと出力ポートは、サブグラフ400のポートとコンポーネントとの間でデータがどのように伝播するかを定義するフロー306A〜306Gによって相互接続される。具体的には、サブグラフ400の境界に含まれる第1の入力ポート304Aは、第1のフロー306Aによって第1のコンポーネント302Aに含まれる第3の入力ポート304Fに接続される。サブグラフ400の境界に含まれる第2の入力ポート304Bは、第2のフロー306Bによって第2のコンポーネント302Bに含まれる第4の入力ポート304Gに接続される。第1のコンポーネント302Aに含まれる第4の出力ポート304Hは、第3のフロー306Cによって第4のコンポーネント302Dに含まれる第5の入力ポート304Jに接続される。第2のコンポーネント302Bに含まれる第5の出力ポート304Iは、第4フロー306Dによって第4のコンポーネント302Dに含まれる第6の入力ポート304Kに接続される。
【0054】
第3のコンポーネント302Cに含まれる第6の出力ポート304Nは、第5のフロー306Eによってサブグラフ400の境界上の第3の出力ポート304Eに接続される。第4のコンポーネント302Dに含まれる第7の出力ポート304Lは、第6のフロー306Fによってサブグラフ400の境界上の第1の出力ポート304Cに接続される。第4のコンポーネント302Dに含まれる第8の出力ポート304Mは、第7のフロー306Gによってサブグラフ400の境界上の第2の出力ポート304Dに接続される。第3のコンポーネント302Cは、パラメータPによって設定可能である。
【0055】
2.2 動的なサブグラフジェネレータ
図4を参照すると、指定されたサブグラフ400から動的にリンクされたサブグラフを生じさせるために、指定されたサブグラフ400がまず開発環境118の動的なサブグラフジェネレータ121に読み込まれる。いくつかの例では、サブグラフジェネレータ121は、自動の動的なサブグラフジェネレータ122及びサブグラフインターフェース精製モジュール128を含む。非常に一般的に、自動の動的なサブグラフジェネレータ122は、初期サブグラフインターフェース126、及び任意で指定されたサブグラフ400のための実装サブグラフ124を自動的に生じさせ、サブグラフインターフェース精製モジュール128は、最終サブグラフインターフェース130を生じさせるために初期サブグラフインターフェース126を変更するために、任意でユーザ入力を受信するように設定された自動化された精製プロセスを実施する。いくつかの例では、最終サブグラフインターフェース130は、最終サブグラフインターフェース130がより多くの実装サブグラフを収容できるように、インターフェース130上の特定のポートがオプションとして指定され得るか、インターフェース130上の特定のポートに関連付けられるメタデータ制約が緩和され得るという意味において、初期サブグラフインターフェース126の特性よりも多かれ少なかれ制限的な特性を有する。最終サブグラフインターフェース130は、後で使用するためにデータストレージ116に記憶されていてもよい。
【0056】
いくつかの例では、サブグラフインターフェース126に行われた変更のうちの少なくとも一部について、サブグラフインターフェース精製モジュール128は、実装サブグラフ124に対応する変更も行う。いくつかの例では、実装サブグラフ124は生じさせられず、サブグラフインターフェース130は、1又は2以上の実装サブグラフの潜在的な将来の開発のために単独で使用される。
【0057】
2.2.1 自動の動的なサブグラフジェネレータ
図5を参照すると、自動の動的なサブグラフジェネレータ122は、指定されたサブグラフ400を受信し、指定されたサブグラフ400を、実装サブグラフ形成モジュール132及びメタデータ伝播方向識別モジュール134に提供する。
【0058】
2.2.1.1 実装サブグラフの形成
実装サブグラフ形成モジュール132は、出力として動的なサブグラフジェネレータ122から渡される実装サブグラフ124を生じさせるために、指定されたサブグラフ400を処理する。いくつかの例では、実装サブグラフ124は、まず、指定されたサブグラフ400のコピーを作成することによって形成される。次いで、上述したように、サブグラフインターフェース126に行われた少なくともいくつかの変更について、実装サブグラフ124を形成するために、サブグラフインターフェース精製モジュール128は、指定されたサブグラフ400のコピーに対応する変更も行う。例えば、サブグラフインターフェース126上を伝播する「内向き」としてマーク付けされたフロージャンクションは、実装サブグラフ124上を伝播する「内向き」としてマーク付けされてもよい。さらに、指定された伝播方向をサポートするために、実装サブグラフ124の内部構造に対する特定の編集が行われる必要があり得る。
【0059】
2.2.1.2 メタデータ伝播方向の識別
メタデータ伝播方向識別モジュール134は、指定されたサブグラフの境界上のポートに対応するフロージャンクションを識別することによって初期サブグラフインターフェースを形成し、識別されたフロージャンクションの各々についてメタデータ伝播の方向を決定する。
【0060】
メタデータ伝播方向識別モジュール134の動作を説明する前に、メタデータ伝播に関する簡単な説明を提示する。データフローグラフでは、データフローグラフ内のコンポーネントのポートに関連付けられるメタデータ、及び/又はコンポーネント自体に関連付けられるメタデータが管理されることが重要である。いくつかの例では、メタデータは、データの記述子(例えば、ポートに流入又は流出するレコードのフィールド及びデータタイプのシーケンスを含むポートのレコードフォーマット)、又は計算特性(例えば、コンポーネントの分割又はレイアウト)を含む。他の例では、メタデータは、コンポーネントが使用し得るメモリ量、コンポーネントが使用し得るコンピューティングリソース、ソート、圧縮方法、文字セット、バイナリ表現(例えば、ビッグエンディアン、リトルエンディアン)、又はデータ変換を含み得る。
【0061】
メタデータ管理は、手動で、自動的に、又は手動及び自動メタデータ管理の組合せを使用することによって実現され得る。手動メタデータ管理の場合、メタデータは、例えばグラフ開発者又はグラフユーザによって供給される。自動メタデータ管理の場合、既知の(すなわち、明示的に画定された)メタデータを有するグラフの部分から、未知のメタデータを有するグラフの部分にメタデータが伝播される。メタデータの伝播は、所与のポート又はコンポーネントのメタデータがグラフユーザ又はグラフ開発者によって直接供給されない場合に必要である。そのような場合、所与のポート又はコンポーネントのメタデータは、グラフにおける他のポート又はコンポーネントから派生する必要がある。本明細書で使用されるメタデータ伝播という用語は、この導出プロセスを指す。
【0062】
従来のコンポーネント及びデータセットを含む従来のデータフローグラフでは、データフローグラフを介して明示的に画定されたメタデータのこの伝播により、メタデータがデータフローグラフ内のすべてのコンポーネントに関連付けられる。メタデータの伝播において発生する任意の競合は、一般に開発者の介入の対象となる。しかしながら、サブグラフインターフェースを含むデータフローグラフのメタデータ伝播は、通常、従来のコンポーネントのみを含むデータフローグラフのメタデータ伝播とは異なる方法で処理される。特に、メタデータは、編集時メタデータ伝播段階とリンク時メタデータ解決段階の2つの段階で伝播され得る。
【0063】
この2つの段階の手法は、編集時に、サブグラフインターフェースの代わりにリンクされるコンテナグラフ(すなわち、サブグラフインターフェースをコンポーネントとして含むグラフ)及び実装サブグラフ(すなわち、サブグラフインターフェースに準拠するサブグラフ)が、互いのメタデータ情報を認識しないために使用される。この情報にアクセスすることなしには、従来のメタデータ伝播は、メタデータを実装サブグラフへの「内向き」方向に伝播されるべきか(すなわち、コンテナグラフが実装サブグラフのメタデータのソースとして機能する)、又は実装サブグラフからの「外向き」方向に伝播されるべきか(すなわち、コンテナグラフは、実装サブグラフからのメタデータのためのシンクとして機能する)を知る方法を持たない。
【0064】
したがって、サブグラフインターフェースを含むデータフローグラフ内のメタデータ伝播を可能にするために、サブグラフインターフェースの各フロージャンクションは、メタデータ伝播の方向を指定する。いくつかの例では、メタデータ伝播の可能な方向のセットは、「内向き」伝播及び「外向き」伝播を含む。
【0065】
サブグラフインターフェース上のフロージャンクションが「内向き」のメタデータ伝播方向を有するものとして宣言されると、コンテナグラフ内のメタデータ伝播は、フロージャンクションに(及び、最終的に、実装サブグラフ内のフローに接続されたポートに)接続されたフローを介してメタデータ定義を供給する。すなわち、コンテナグラフにおいて、編集時メタデータ伝播は、フロージャンクションをメタデータシンクとして扱う。
【0066】
サブグラフインターフェース上のフロージャンクションが「外向き」のメタデータ伝播方向を有するものとして宣言されると、実装サブグラフ内のメタデータ伝播は、フロージャンクションのメタデータ定義をコンテナグラフに供給する。すなわち、コンテナグラフにおいて、編集時メタデータ伝播は、メタデータの編集時定義が存在しない場合でも(定義はリンク時の実装サブグラフからのみ利用可能であるため)、フロージャンクションをメタデータソースとして扱う。
【0067】
メタデータ伝播方向識別モジュール134は、指定されたサブグラフ400の境界上のポート、及び初期サブグラフインターフェース126上のそれらの対応するフロージャンクションのメタデータ伝播の方向を決定するために、指定されたサブグラフ400内のメタデータの既知のソース(例えば、ポート)を識別し、識別されたソースから発するメタデータ伝播プロセスを実施する。
【0068】
図6を参照すると、動作中、メタデータ伝播方向識別モジュール134は、指定されたサブグラフ400の第1の入力ポート304Aに対応する第1のフロージャンクションi644と、指定されたサブグラフ400の第2の入力ポート304Bに対応する第2のフロージャンクションi646と、指定されたサブグラフの第1の出力ポート304Cに対応する第3のフロージャンクションo648と、指定されたサブグラフ400の第2の出力ポート304Dに対応する第4のフロージャンクションo650と、指定されたサブグラフ400の第3の出力ポート304Eに対応する第5のフロージャンクションoを含む、初期サブグラフインターフェース126を生じさせる。
【0069】
次いで、メタデータ伝播方向識別モジュール134は、指定されたサブグラフ400の第1のコンポーネント302Aに含まれる第4の出力ポート304Hと、指定されたサブグラフ400の第3のコンポーネント302Cに含まれる第6の出力ポート304Nとをメタデータの既知のソースとして識別する(例えば、ポートの特性を解析することによって)。図6において、第4の出力ポート304H及び第6の出力ポート304Nに関連付けられるメタデータは、それぞれM及びMで示されている。しかしながら、表記M及びMは、任意の特定のメタデータ値が既知のメタデータのソースに関連付けられることを意味することが意図されるものではないことに留意されたい。実際、いくつかの例では、既知のメタデータのソースに関連付けられる特定のメタデータ値は未知であり、M及びMは伝播に使用され得る単純なプレースホルダメタデータ値である。もちろん、プレースホルダメタデータ値は、コンテナグラフが実行された時点で知られている。他の例では、M及びMは、既知のメタデータのソースに関連付けられる特定のメタデータ値を参照し得る。
【0070】
既知のメタデータのソースが識別された状態で、メタデータ伝播方向識別モジュール134は、既知のメタデータのソースの両方に対して編集時メタデータ伝播プロセスを実施する。
【0071】
実施する際、メタデータ伝播方向識別モジュール134は、第4の出力ポート304HからMを上流方向(すなわち、第1のフロージャンクションi644に向かう方向)に、及び下流方向(すなわち、第3のフロージャンクションo648及び第4のフロージャンクションo650に向かう方向)に伝播する。
【0072】
上流方向では、編集時メタデータ伝播プロセスは、第1のコンポーネント302Aがメタデータにいかなる変換も適用せず、したがってコンポーネント302Aを通じてメタデータMを伝播し、第1のコンポーネント302A上の第3の入力ポート304Fに関連付けると決定する。いくつかの例では、この関連付けは、メタデータが伝播されたポートから、メタデータが発信されたポートを指し、そこで終わる矢印(例えば、第3の入力ポート304fから第4の出力ポート304Hを指す矢印)(時には「同じ」矢印と呼ばれる)によって表される。次いで、Mは、指定されたサブグラフ400の境界上の第3の入力ポート304Fから第1の入力ポート304Aに伝播され(結果として、第1の入力ポート304aから第4の出力ポート304Hを指す「同じ」矢印をもたらす)、及び第1の入力ポート304Aに関連付けられる第1のフロージャンクションi644に伝播される。メタデータ(すなわち、M)は、既知のメタデータのソースからフロージャンクション644に伝播されるので、第1のフロージャンクションi644には、「外向き」のメタデータ伝播方向が割り当てられる。
【0073】
下流方向では、編集時間メタデータ伝播プロセスは、Mを第1のコンポーネント302A上の第4の出力ポート304Hから第4のコンポーネント302D上の第5の入力ポート304Jに伝播する(結果として、第5の入力ポート304Jから第4の出力ポート304Hを指す「同じ」矢印をもたらす)。編集時メタデータ伝播プロセスは、第4のコンポーネント302Dがメタデータに変換を適用し、したがってMを下流方向にさらに伝播しないことを決定する。
【0074】
編集時メタデータ伝播プロセスはまた、Mを第3のコンポーネント302C上の第6の出力ポート304Nから、指定されたサブグラフ400の境界上の第3の出力ポート304Eに、及び第3の出力ポート304Eに関連付けられる第5のフロージャンクションo652に伝播する(結果として、第3の出力ポート304Eから第6の出力ポート304Nを指す「同じ」矢印をもたらす)。第5のフロージャンクションo652には、メタデータ(すなわちM)が既知のメタデータのソースからフロージャンクション652に伝播されるので、「外向き」のメタデータ伝播方向が割り当てられる。
【0075】
編集時メタデータ伝播プロセスの終了時に、「外向き」のメタデータ伝播方向を有するものとしてマーク付けされていない(すなわち、伝播されたメタデータを受信していない)任意のフロージャンクションは、「内向き」のメタデータ伝播方向を有するものとしてマーク付けされる。図7を参照すると、この例では、第1のフロージャンクションi644及び第5のフロージャンクションo652のみが、メタデータ伝播方向識別モジュール134によって「外向き」のメタデータ伝播方向を有するものとしてマーク付けされ、第2のフロージャンクションi646、第3のフロージャンクションo648、及び第4のフロージャンクションo650は、メタデータ伝播方向識別モジュール134によって、「内向き」のメタデータ伝播方向を有するものとしてマーク付けされる。いくつかの例では、メタデータ伝播方向識別モジュール134によって実施された伝播の表現は、実装サブグラフ124とともに記憶される。
【0076】
2.2.1.3 メタデータルールの識別
初期サブグラフインターフェース126上のすべてのフロージャンクションについてのメタデータ伝播の方向が決定されると、初期サブグラフインターフェース126に含めるためのメタデータルールを決定するために、初期サブグラフインターフェース126及び指定されたサブグラフ400が、指定されたサブグラフ400を解析するメタデータルール識別モジュール136に提供される。
【0077】
そうするために、メタデータルール識別モジュール136は、指定されたサブグラフ400の境界上のポート間に存在する関係を発見するために、メタデータ伝播の「内向き」方向を有するフロージャンクションの各々にプレースホルダ値を割り当て、別の編集時メタデータ伝播プロセスを実施する。メタデータルール識別モジュール136は、メタデータルールを初期サブグラフインターフェース126のフロージャンクションに割り当てるために、発見された任意の関係を使用する。例えば、図8を参照すると、プレースホルダメタデータDが第2のフロージャンクションi646に割り当てられ、プレースホルダメタデータDが第3のフロージャンクションo648に割り当てられ、プレースホルダメタデータDが第4のフロージャンクションo650に割り当てられる。
【0078】
メタデータルール識別モジュール136は、指定されたサブグラフ400の境界上の第2の入力ポート304Bから第2のコンポーネント302B上の第4の入力ポート304GにDを伝播する(結果として、第4の入力ポート304Gから第2の入力ポート304Bを指す「同じ」矢印をもたらす)。編集時メタデータ伝播プロセスは、第2のコンポーネント302Bがメタデータにいかなる変換も適用せず、したがって第2のコンポーネント302Bを介して第5の出力ポート304IにDを伝播すると決定する(結果として、第5の出力ポート304Iから第2の入力ポート304Bを指す「同じ」矢印をもたらす)。
【0079】
また、メタデータルール識別モジュール136は、第1の出力ポート304Cから第7の出力ポート304LにDを伝播する(結果として、第1の出力ポート304Cから第7の出力ポート304Lを指す「同じ」矢印をもたらす)。編集時メタデータ伝播プロセスは、第4のコンポーネント302DがメタデータDに変換を適用し、したがってそれ以上Dを伝播しないことを決定する。
【0080】
メタデータルール識別モジュール136は、Dを第2の出力ポート304Dから第8の出力ポート304Mに伝播する(結果として、第8の出力ポート304Mから第2の出力ポート304Dを指す「同じ」矢印をもたらす)。編集時メタデータ伝播プロセスは、第4のコンポーネント302DがメタデータDにいかなる変換も適用せず、したがって第4のコンポーネント302Dを通じて第6の入力ポート304KにDを伝播すると決定する(結果として、第6の入力ポート304kから第2の出力ポート304Dを指す「同じ」矢印をもたらす)。
【0081】
「内向きの」伝播方向を有するものとしてマーク付けされたすべてのポートからメタデータが伝播されると、メタデータルール識別モジュール136は、D及びDの伝播に基づいて、第2の入力ポート304Bに関連付けられる任意のメタデータは、第2の出力ポート304Dに関連付けられるメタデータと等しくなくてはならないと決定する。図9を参照すると、メタデータルール識別モジュール136は、第2のフロージャンクションi646と第4のフロージャンクションo650との間の等しいメタデータ関係を表すために、初期サブグラフインターフェース126上に「コピー」メタデータルール754を含む。
【0082】
2.2.1.4 パラメータの識別
再び図5を参照すると、識別されたメタデータルールを用いて、初期サブグラフインターフェース126及び指定されたサブグラフ400は、パラメータ識別モジュール138に提供され、パラメータ識別モジュール138は、編集時メタデータ伝播プロセスによって到達可能ではないが、指定されたサブグラフ400にデフォルト値を有しない指定されたサブグラフに関連付けられるパラメータを使用して設定可能な、指定されたサブグラフ400の任意のポート又はコンポーネントを識別する。パラメータ識別モジュール138は、それが識別する任意のパラメータのために、サブグラフインターフェースパラメータを初期サブグラフインターフェース126に追加する。
【0083】
図10を参照すると、パラメータ識別モジュール138は、指定されたサブグラフ400内にデフォルト値を有しないパラメータPを使用して第3のコンポーネント302Cが設定可能であると決定する。したがって、パラメータ識別モジュール138は、サブグラフインターフェースパラメータP1058を初期サブグラフインターフェース126に追加する。
【0084】
図11を参照すると、パラメータ識別モジュール138の結果は、完全な初期サブグラフインターフェース126である。完全な初期サブグラフインターフェース126は、自動の動的なサブグラフジェネレータ122から渡される。
【0085】
いくつかの例では、自動の動的なサブグラフジェネレータ122の様々なステップは、上述の例示的な順序以外の順序で実施される点に留意されたい。
【0086】
2.2.2 サブグラフインターフェースの精製
再び図4を参照すると、自動のサブグラフジェネレータ122によって出力される初期サブグラフインターフェース126は、サブグラフインターフェース精製モジュール128に提供され、最終サブグラフインターフェース130を生じさせるために、ユーザ(又は、自動化された精製プロセス)が初期サブグラフインターフェース128を変更することを可能にする。
【0087】
いくつかの例では、サブグラフインターフェース精製モジュール128は、初期サブグラフインターフェース126のユーザ精製を容易にするいくつかのスクリーンを含む「ウィザード」として実装される。
【0088】
図12を参照すると、ウィザード1260の第1の画面1262は、自動のサブグラフジェネレータ122によって自動的に発見された初期サブグラフインターフェース126のフロージャンクションを設定するためのテーブル1264を含む。テーブルは、発見されたフロージャンクションの名前のリストを含む第1の列1265と、フロージャンクションの各々が最終サブグラフインターフェース103上で「必要」であるかどうかを示すためのチェックボックス1268を含む第2の列1266と、フロージャンクションの各々が「ファンできる」かどうかを示すためのチェックボックス1272を含む第3の列1270とを含む。
【0089】
第2の列1266内の所与のフロージャンクションに対応するチェックボックスをチェックすることは、所与のフロージャンクションが最終的なグラフインターフェース130上の「必要な」フロージャンクションであることを示す。所与のフロージャンクションに対応するチェックボックスのチェックを外すことは、所与のフロージャンクションが最終的なグラフインターフェース130上で必要ではないか、又は「任意」であることを示す。非常に一般的に、「必要」であるサブグラフインターフェース上のフロージャンクションは、コンテナグラフがコンパイルされて実行され得る前に、コンテナグラフ内のフローに接続される必要がある。「任意」であるサブグラフインターフェース上のフロージャンクションは、コンテナグラフ内のフローに接続されていても接続されていなくてもよく、コンテナグラフは、任意のフロージャンクションがコンテナグラフ内のフローに接続されているかどうかにかかわらず、コンパイルして実行する。
【0090】
第3の列1270内の所与のフロージャンクションに対応するチェックボックスをチェックすることは、フロージャンクションが実装サブグラフ内の入力ポートに関連付けられる場合、所与のフロージャンクションが「ファンイン」(fan-in)することを許容されるか、フロージャンクションが実装サブグラフの出力ポートに関連付けられる場合、「ファンアウト」(fan-out)することを許容されることを示す。第3の列1270内の所与のフロージャンクションに対応するチェックボックスのチェックを外すことは、所与のフロージャンクションが「ファンイン」又は「ファンアウト」することを許容されていないことを示す。
【0091】
図12の例では、ユーザは、第1のフロージャンクションi644が必要であり、ファンインできることを示すことと、第2のフロージャンクションi646が必要であり、ファンインできることを示すことと、第3のフロージャンクションo648が必要であり、ファンアウトできないことを示すことと、第4のフロージャンクションo650が必要であり、ファンアウトできないことを示すことと、第5のフロージャンクションo652が任意であり、ファンアウトできないことを示すこととによって、フロージャンクションを設定している。
【0092】
ユーザがフロージャンクションの設定に満足すると、ウィザード1260内の「OK」ボタン1274をクリックし、ウィザード1260をウィザード1260の伝播ルール設定画面に進める。
【0093】
図13を参照すると、伝播ルール設定画面1375は、内向きメタデータ伝播方向を有する初期サブグラフインターフェース126上のすべてのフロージャンクションを含む第1のテーブル1376と、外向きメタデータ伝播方向を有する初期サブグラフインターフェース126上のすべてのフロージャンクションを含む第2のテーブル1378との2つのテーブルを含む。第1のテーブル1376では、同じメタデータを有することが要求されるフロージャンクション(すなわち、「コピー」メタデータ伝播ルールの一部であるフロージャンクション)が一緒にグループ化される。
【0094】
例えば、図13において、第1のテーブル1376は、第3のフロージャンクションo648を含む第1のグループ1380と、第2のフロージャンクションi646及び第4のフロージャンクションo650を含む第2のグループ1382との2つのグループを含む。第3のフロージャンクションo648は「コピー」メタデータ伝播ルールの一部ではないので、第1のグループ1380における唯一のフロージャンクションである。第2のフロージャンクションi646と第4のフロージャンクションo650は「コピー」メタデータ伝播ルールの一部であるので(上記の例において説明したように)、それらは両方とも同じグループ(すなわち、第2のグループ1382)内にある。
【0095】
第2のテーブル1378は、第1のフロージャンクションi644を含む第3のグループ1384と、第5のフロージャンクションo652を含む第4のグループ1386との2つのグループを含む。
【0096】
ウィザードのユーザは、例えば「コピー」メタデータ伝播ルールを形成するためにグループをマージするか、「コピー」メタデータ伝播ルールを削除するためにグループを分割することによって、メタデータ伝播ルールを設定するために、伝播ルール設定画面1375を使用することができる。例えば、ユーザが、第2のグループ1382によって指定された「コピー」メタデータ伝播ルールが最終サブグラフインターフェース130に含まれることを望まない場合、第2のグループ1382を2つの異なるグループに分割し、一方は第2のフロージャンクションi646を含み、もう一方は第4のフロージャンクションo650を含む。
【0097】
ユーザがサブグラフインターフェースの伝播ルールの設定に満足すると、ウィザード1260内の「OK」ボタン1374をクリックし、ウィザード1260をウィザード1260のレイアウト設定画面に進める。
【0098】
図14を参照すると、レイアウト設定画面1488は2つのオプションを有するラジオボタンを含む。第1のオプション1490は、最終的なグラフインターフェース130のすべてのフロージャンクションが、レイアウトパラメータ1492によって指定されたものと同じレイアウトメタデータを使用するべきであることを示す。第2のオプション1494は、ユーザが、テーブル1496を使用して、最終的なグラフインターフェースのフロージャンクションのカスタムレイアウト特性を指定することを可能にする。テーブル1496は、ユーザがフロージャンクションの各々に関連付けられるレイアウトメタデータの伝播の方向を指定し、等しいレイアウトメタデータを有するフロージャンクションをグループ化することを可能にする。
【0099】
図14において、ユーザは、すべてのフロージャンクションが「レイアウト」と名付けられたレイアウトパラメータによって指定されたものと同じレイアウトメタデータを有することを示す第1のオプション1490を選択している。
【0100】
ユーザがサブグラフインターフェース130のレイアウトの設定に満足すると、ウィザード1260内の「OK」ボタン1474をクリックし、ウィザード1260をウィザード1260のパラメータ設定画面に進める。
【0101】
図15を参照すると、ウィザード1260のパラメータ設定画面1549は、最終サブグラフインターフェース130に含めるために、初期サブグラフインターフェース126に関連付けられるサブグラフインターフェースパラメータを選択するためのテーブル1597を含む。テーブル1597は、初期サブグラフインターフェース126上のサブグラフインターフェースパラメータに関連付けられるパラメータの名前のリストを含む第1の列1598と、第1の列1598内にリストされたパラメータの各々のサブグラフインターフェースパラメータが最終サブグラフインターフェースに含まれるかどうかを示すためのチェックボックス1568を含む第2の列1599とを含む。
【0102】
図15の例では、1つのパラメータPのみが第1の列1598に含まれ、Pに関連付けられるチェックボックス1568がチェックされ、Pのためのサブグラフインターフェースパラメータが最終サブグラフインターフェース130に含まれることを示す。
【0103】
ユーザがサブグラフインターフェース130のサブグラフインターフェースパラメータの設定に満足すると、ウィザード1260内の「OK」ボタン1574をクリックし、ウィザード1260を完了させ、最終サブグラフインターフェース130を出力させる。
【0104】
図16を参照すると、最終サブグラフインターフェース130は、必要であり、メタデータ伝播の外向き方向を有する第1のフロージャンクションi644と、必要であり、メタデータ伝播の内向き方向を有する第2のフロージャンクションi646と、必要であり、メタデータ伝播の内向き方向を有する第3のフロージャンクションo648と、必要であり、メタデータ伝播の内向き方向を有する第4のフロージャンクションo650と、任意であり、メタデータ伝播の外向き方向を有する第5のフロージャンクションo652とを含む。最終サブグラフインターフェース130はまた、第2のフロージャンクションi646と第4のフロージャンクションo650との間に、サブグラフインターフェースパラメータ1058Pと、「コピー」メタデータルール754とを含む。
【0105】
最終サブグラフインターフェース130は、図2A図2Cのサブグラフインターフェース210が使用されるのと同じ方法でコンテナグラフにおいて使用され得る。さらに、ユーザによってサブグラフインターフェース130に行われた精製に応じて、前処理モジュール106は、それらがサブグラフインターフェース130に準拠することを条件に、自動的に生じさせられる実装サブグラフ124を含むいくつかの異なる実装サブグラフを動的にリンク及びロードすることが可能であり得る。
【0106】
3 代替案
いくつかの例では、ディスク上にサブグラフを指定するのではなく、ユーザは、動的にリンクされたサブグラフを生成するために、既存のデータフローグラフ内のコンポーネントのセットを選択することができる。動的にリンクされたサブグラフの生成が完了すると、選択されるコンポーネントのセットは、データフローグラフ内で生じさせられる動的にリンクされたサブグラフのサブグラフインターフェースによって置換される。
【0107】
4 実装形態
上述のサブグラフインターフェースの生成手法は、例えば、適切なソフトウェア命令を実行するプログラマブル計算システムを使用して実装されてもよく、フィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの適切なハードウェアにおいて、又は何らかのハイブリッド形態で実装されてもよい。例えば、プログラムされた手法では、ソフトウェアは、1又は2以上のプログラムされた或いはプログラマブルコンピューティングシステム(分散型、クライアント/サーバ型、又はグリッドなどの様々なアーキテクチャのものであり得る)上で実行される1又は2以上のコンピュータプログラムにおける手順を含み得、それぞれが、少なくとも1つのプロセッサと、少なくとも1つのデータストレージシステム(揮発性及び/又は不揮発性のメモリ並びに/或いはストレージエレメントを含む)と、少なくとも1つのユーザインターフェース(少なくとも1つの入力デバイス又はポートを使用して入力を受信するための、及び少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)とを含む。ソフトウェアは、例えば、データフローグラフの設計、設定、及び実行に関連するサービスを提供する、より大きなプログラムの1又は2以上のモジュールを含み得る。プログラムのモジュール(例えば、データフローグラフのエレメント)は、データ構造又はデータリポジトリに記憶されたデータモデルに準拠する他の組織化データとして実装され得る。
【0108】
ソフトウェアは、ある期間(例えば、ダイナミックRAMなどのダイナミックメモリデバイスのリフレッシュ期間の間の時間)の間、媒体の物理的特性(例えば、表面ピット及びランド、磁区、又は電荷)を使用して、揮発性又は不揮発性ストレージ媒体、或いは他の任意の非一時的媒体に具体化されるような非一時的な形態で記憶され得る。命令をロードするための準備において、ソフトウェアは、CD−ROM又は他のコンピュータ可読媒体(例えば、汎用又は専用コンピューティングシステム或いはデバイスによって可読である)などの有形の非一時的媒体上に提供されてもよく、ネットワークの通信媒体を介して、それが実行されるコンピューティングシステムの有形の非一時的媒体に配信(例えば、伝播信号で符号化)されてもよい。処理の一部又は全部は、専用コンピュータ上で、或いはコプロセッサ又はフィールドプログラマブルゲートアレイ(FPGA)又は専用の特定用途向け集積回路(ASIC,application-specific integrated circuits)などの専用ハードウェアを使用して実施され得る。処理は、ソフトウェアによって指定された計算の異なる部分が異なるコンピューティングエレメントによって実施される分散方式で実装され得る。そのような各コンピュータプログラムは、本明細書に記載の処理を実施するためにコンピュータによってストレージデバイス媒体が読み出されたときに、コンピュータを設定し、動作するために、汎用又は専用のプログラマブルコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、固体メモリ又は媒体、或いは磁気又は光学媒体)に記憶されるか、又はダウンロードされることが望ましい。また、本発明のシステムは、コンピュータプログラムで設定された有形の非一時的媒体として実装されると考えられてもよく、そのように設定された媒体は、本明細書に記載の処理ステップのうちの1又は2以上を実施するために、コンピュータを特定の事前に画定された方法で動作させる。
【0109】
本発明のいくつかの実施形態について説明した。それでもなお、前述の説明は、本発明の範囲を限定するものではなく本発明の範囲を例示することが意図されており、本発明の範囲は特許請求の範囲によって画定されるものと理解されるべきである。したがって、他の実施形態も以下の特許請求の範囲内にある。例えば、本発明の範囲から逸脱することなしに、様々な変更が行われ得る。さらに、上述のステップのうちのいくつかは、順序に依存しなくてよく、したがって、記載された順序とは異なる順序で実施され得る。
図1
図2A
図2B
図2C
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16