JP6488317B2 - キー指定される実体の属性のマッピング - Google Patents

キー指定される実体の属性のマッピング Download PDF

Info

Publication number
JP6488317B2
JP6488317B2 JP2016554885A JP2016554885A JP6488317B2 JP 6488317 B2 JP6488317 B2 JP 6488317B2 JP 2016554885 A JP2016554885 A JP 2016554885A JP 2016554885 A JP2016554885 A JP 2016554885A JP 6488317 B2 JP6488317 B2 JP 6488317B2
Authority
JP
Japan
Prior art keywords
entity
input
attributes
output
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016554885A
Other languages
English (en)
Other versions
JP2017513100A (ja
Inventor
ジェド ロバーツ
ジェド ロバーツ
クレイグ ダブリュー. スタンフィル
クレイグ ダブリュー. スタンフィル
スコット ストゥーダー
スコット ストゥーダー
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2017513100A publication Critical patent/JP2017513100A/ja
Application granted granted Critical
Publication of JP6488317B2 publication Critical patent/JP6488317B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/067Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)
  • Input From Keyboards Or The Like (AREA)

Description

関連出願の相互参照
本出願は、2014年3月14日に出願した米国特許出願第61/953,021号明細書の優先権を主張するものである。
この説明は、キー指定される実体の属性のマッピングに関する。
さまざまなシステムが、入力(又は「発信元」)システム又はフォーマットから出力(又は「宛先」)システム又はフォーマットにデータをマッピングする能力を有する。マッピングプロセスは、入力データに変換機能を適用することと、マッピングに応じて結果を出力データとして記憶することとを含む可能性がある。入力データの属性と出力データの属性との間の関連を指定する「マッピング」が、定義され得る。マッピングプロセスにより、例えば、入力データが出力データとしてシステムにロードされる可能性があり、又は入力データが出力データへと変換される可能性があり、又はそれら両方である可能性がある。入力又は出力データの内容は、場合によっては、その他のデータの特徴を記述するメタデータを表すデータ値を含む可能性がある。一部のシステムにおいては、マッピング操作が、抽出、変換、及びロード(ETL,Extract, Transform, and Load)処理に関連して実行される。
一態様においては、概して、コンピューティングシステムが、複数の実体を表す実体データを記憶するデータストレージシステムであって、各実体が、1又は2以上の属性を有し、実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、インスタンスの少なくとも一部が、それぞれ、属性のうちの1又は2以上に関するそれぞれの値を有する、データストレージシステムと、入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを受け取るための入力デバイス又はポートであって、入力実体が、入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、出力実体が、出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、入力デバイス又はポートと、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせるために入力実体のインスタンスを処理するように構成された少なくとも1つのプロセッサとを含む。処理することは、1又は2以上のマッピングに基づいて出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定すること、及びマッピングされた入力属性を入力実体の1又は2以上のキー属性と比較して、マッピングされた入力属性が(1)入力実体のキー属性のすべてを含むのか、又は(2)入力実体のキー属性の一部のみを含むのかを判定することを含む。
態様は、以下の特徴のうちの1又は2以上を含み得る。
出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定することは、1又は2以上のマッピングされた入力属性が出力実体のそれぞれのキー属性との一対一の対応を有するかどうかを判定することを含む。
処理することは、(1)マッピングされた入力属性が入力実体のキー属性のすべてを含むと判定したことに応答して、一致するキー属性を有する出力実体のインスタンスと入力実体のインスタンスとの間の一対一の対応、又は(2)マッピングされた入力属性が入力実体のキー属性の一部のみを含むと判定したことに応答して、マッピングされた入力属性に関して同じ値を共有する入力実体の複数のインスタンスの集約に基づいて出力実体のインスタンスを生じさせることをさらに含む。
実体データは、階層に従って関連付けられる複数の出力実体を表し、少なくとも1つの根の出力実体は、階層の最高レベルにあり、1又は2以上の出力実体は、階層の最高レベル未満の1又は2以上のレベルにあり、根の実体よりも低いレベルの各出力実体は、単一の出力実体の下位実体である。
実体データは、階層に従って関連付けられる複数の入力実体を表し、少なくとも1つの根の入力実体は、階層の最高レベルにあり、1又は2以上の入力実体は、階層の最高レベル未満の1又は2以上のレベルにあり、根の実体よりも低いレベルの各入力実体は、単一の入力実体の下位実体である。
階層に従って関連付けられる複数の出力実体に関連付けられない少なくとも第1の実体は、入力データに含まれるマッピングのうちの少なくとも1つによって出力属性として参照される少なくとも1つの属性を含む。
第1の実体は、入力データに含まれるマッピングのうちの少なくとも1つによって入力属性として参照される少なくとも1つの属性を含む。
第2の実体の下位実体である第1の実体の複数のインスタンスは、それぞれ、第2の実体の特定のインスタンスを特定する第1の実体のキー属性の共通の値を含む。
第1の実体は、レコードの第1の組に対応し、第2の実体は、レコードの第2の組に対応し、第1の実体のキー属性は、レコードの第2の組の特定のレコードの主キーフィールドに含まれる値を特定するレコードの第1の組の外部キーフィールドに対応する。
第2の実体の下位実体である第1の実体の複数のインスタンスは、第2の実体の特定のインスタンスのデータ構造内に含まれるベクトルの複数の要素に対応する。
処理することは、入力実体のインスタンスを処理して出力実体のインスタンスを生じさせるためのデータフローグラフを使用して出力実体のインスタンスを生じさせることであって、データフローグラフが、実体のインスタンスに対する操作を実行するように構成された構成要素を表すノードと、構成要素の間のインスタンスのフローを表すノードの間のリンクとを含む、生じさせることをさらに含む。
データフローグラフは、1又は2以上のマッピングの入力属性に基づいて別の実体のインスタンスのデータ構造から下位実体のインスタンスの1又は2以上のベクトルを抽出するように構成される少なくとも1つの分割構成要素(split component)と、1又は2以上のマッピングの出力属性に基づいて別の実体のインスタンスのデータ構造に下位実体のインスタンスの1又は2以上のベクトルを挿入するように構成される少なくとも1つの合成構成要素(combine component)とを含む。
データフローグラフは、マッピングされた入力属性が入力実体のキー属性の一部のみを含む各マッピングに関して、マッピングされた入力属性に関して同じ値を共有する入力実体の複数のインスタンスを集約するための集約操作を実行する少なくとも1つの構成要素を含む。
コンピューティングシステムは、入力データを受け取るように構成されたユーザインターフェースを表示するための少なくとも1つの出力デバイス又はポートをさらに含む。
ユーザインターフェースは、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせた結果を特徴付ける結果情報を表示するようにさらに構成される。
結果情報は、生じさせられた出力実体のインスタンスの数を含む。
別の態様においては、概して、コンピューティングシステムが、複数の実体を表す実体データを記憶するための手段であって、各実体が、1又は2以上の属性を有し、実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、インスタンスの少なくとも一部が、それぞれ、属性のうちの1又は2以上に関するそれぞれの値を有する、手段と、入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを受け取るための手段であって、入力実体が、入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、出力実体が、出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、手段と、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせるために入力実体のインスタンスを処理するための手段とを含む。処理することは、1又は2以上のマッピングに基づいて出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定すること、及びマッピングされた入力属性を入力実体の1又は2以上のキー属性と比較して、マッピングされた入力属性が(1)入力実体のキー属性のすべてを含むのか、又は(2)入力実体のキー属性の一部のみを含むのかを判定することを含む。
別の態様においては、概して、コンピューティングシステムでデータを処理するための方法が、複数の実体を表す実体データをデータストレージシステムに記憶するステップであって、各実体が、1又は2以上の属性を有し、実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、インスタンスの少なくとも一部が、それぞれ、属性のうちの1又は2以上に関するそれぞれの値を有する、ステップと、入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを入力デバイス又はポートを介して受け取るステップであって、入力実体が、入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、出力実体が、出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、ステップと、少なくとも1つのプロセッサによって、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせるために入力実体のインスタンスを処理するステップとを含む。処理するステップは、1又は2以上のマッピングに基づいて出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定すること、及びマッピングされた入力属性を入力実体の1又は2以上のキー属性と比較して、マッピングされた入力属性が(1)入力実体のキー属性のすべてを含むのか、又は(2)入力実体のキー属性の一部のみを含むのかを判定することを含む。
別の態様においては、概して、コンピュータ可読媒体に記憶されたソフトウェアが、コンピューティングシステムに、複数の実体を表す実体データをデータストレージシステムに記憶することであって、各実体が、1又は2以上の属性を有し、実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、インスタンスの少なくとも一部が、それぞれ、属性のうちの1又は2以上に関するそれぞれの値を有する、記憶することと、入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを入力デバイス又はポートを介して受け取ることであって、入力実体が、入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、出力実体が、出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、受け取ることと、少なくとも1つのプロセッサによって、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせるために入力実体のインスタンスを処理することとを行わせるための命令を含む。処理することは、1又は2以上のマッピングに基づいて出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定すること、及びマッピングされた入力属性を入力実体の1又は2以上のキー属性と比較して、マッピングされた入力属性が(1)入力実体のキー属性のすべてを含むのか、又は(2)入力実体のキー属性の一部のみを含むのかを判定することを含む。
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
マッピング技術は、入力データ及び出力データ内に存在する特定の実体の一意のインスタンスを特定するための特定の特徴を保存しながら、入力データを出力データにマッピングする際の柔軟性を与える。入力又は出力データは、1又は2以上の実体を表す「実体データ」を含み得る。実体は、独立して存在することができるか又は一意に特定され得る、情報領域(information domain)における特定の種類の任意の数のアイテム(item)の集合の抽象化と考えられる可能性がある。例えば、「Accounts」実体が、データベースのテーブルによって、又は(例えば、区切られたレコードを有する)ファイルとして記憶されるデータセットによって表される可能性がある。データベースのテーブル又はデータセットのファイルの個々のレコード(又は「行」)は、それぞれ、例えば、財務又は商業データを管理するシステムにおいて特定の口座名義人に関するAccounts実体の異なるインスタンスを表す可能性がある。実体は、特定のクラスのデータオブジェクトの集合などの任意のその他の種類のデータ構造によって表される可能性もあり、実体の異なるインスタンスは、データオブジェクトの異なるインスタンスに対応する。各実体は、任意の数の属性を有する可能性がある。例えば、データベースのテーブルによって表される実体においては、テーブルのフィールド(又は「列」)が、その実体の特定の属性に対応する特定の種類のデータ(例えば、所定のデータ型を有する変数)を記憶するために定義される可能性がある。Accounts実体に関するテーブルは、例えば、「first_name」、「last_name」、及び(社会保障番号のための)「SSN」とラベル付けされたフィールドを含む可能性があり、(Accounts実体のインスタンスを表す)テーブルのレコードは、それぞれ、フィールドのそれぞれに関するそれぞれの値を有する可能性がある。
実体の異なるインスタンスが一意に特定され得ることを保証するために、実体の1又は2以上の属性が、実体に関する一意キーの一部である「キー属性」として特定される。場合によっては、実体は、単一のキー属性を有する。例えば、「master_account_number」とラベル付けされたフィールドは、Accounts実体のインスタンスを表す各口座レコードに一意である値を記憶し得る。そのような単一のキーフィールドは、「単純キー(simple key)」と呼ばれることがある。場合によっては、実体が、(「複合キー」とも呼ばれる)一意キーを一緒に形成する複数のキー属性を有する。例えば、フィールド「first_name」と、「last_name」と、「SSN」との組合せ(例えば、連結)は、Accounts実体のインスタンスを表すレコードを一緒に一意に特定するキー属性として働く可能性がある。(「候補キー」とも呼ばれる)一意の値を有する複数のフィールドが存在し、それらのフィールドのうちの1つ(又はフィールドの組合せ)が、(「主キー」とも呼ばれる)使用される一意キーとして使用するために選択され得る。(「サロゲートキー」とも呼ばれる)一意キーの一部として働く値を記憶するためにレコードにフィールドが追加されることがある。
データ処理システムで特定のデータを処理することを試みるユーザに起こり得る問題は、処理がキー属性として特定のフィールドを必要とする可能性があるが、既存のデータがその他のフィールドをキー属性として有する可能性があることである。しかし、キーフィールドは、データが正しいプロパティを実際に有すること(つまり、キーのそれぞれの一意の値に関して単一のレコードが存在すること)を保証せずに変更され得ない。そのような再編成は、数千又は数百万のレコードが存在する可能性がある現実の産業アプリケーションにおいてユーザが実行するのに実際的でない可能性がある。本明細書において説明される技術は、入力レコードを1レコードずつ再編成すること(又はそのようにするためにプログラムを一から書くこと)をユーザに要求することなく、たとえキーの変更が必要とされるときでも処理が効率的に行われることを可能にする。例えば、技術は、特定の状況で必要とされる可能性がある任意の集約(例えば、特定のキーの値に関して複数のレコードからデータを集約すること)が所望のフィールドをキー属性として使用して適用されることを保証する。
特定の実体及びその実体の属性を表す実体データの構造は、レコード内のフィールドを定義するデータベースのテーブル又はデータセットのファイルのためのレコードフォーマットなどのフォーマット情報によって定義される可能性がある。各フィールドに現れる値のデータ型及びバイト長に加えて、レコードフォーマットは、どのフィールドが主キーを構成するキーフィールドとして使用されるべきであるかを定義する可能性がある。マッピング手順は、ユーザが出力実体のどの属性がキー属性であるべきかを定義することができることを可能にする。それらの出力キー属性の一部は、入力キー属性にマッピングされた可能性があり、又はそれらの出力キー属性の一部は、入力実体の非キー属性にマッピングされた可能性がある。それらの出力キー属性にマッピングされた入力属性を入力キー属性と自動的に比較することによって、システムは、出力実体のインスタンスを一意に特定することができる明確に定義された(well-defined)キー属性を維持するようにしてマッピングに従って出力実体のインスタンスをどのようにして生じさせるべきかを決定することができる。出力データによって表される出力実体への入力データによって表される入力実体のマッピングは、マッピングされた出力データが入力データよりも効率的に処理される及び/又は管理されることを可能にし得る。場合によっては、複数の関連する実体に関する実体データは、下でより詳細に説明されるように、実体のインスタンスの間の階層的関連を定義し得る。マッピング手順は、そのような階層を再編成し、実体が明確に定義されたキー属性を引き続き維持することを保証することができる。
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
データ処理システムのブロック図である。 実体関連図である。 ユーザインターフェースの一部の例のスクリーンショットである。 データフローグラフを生じさせるための手順の流れ図である。 データフローグラフの図である。
図1Aは、マッピング技術が使用され得るデータ処理システム100の例を示す。システム100は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの1又は2以上のソースを含み得るデータ管理システム102を含み、それらの1又は2以上のソースのそれぞれは、さまざまなフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット)のいずれかでデータを記憶又は提供し得る。実行環境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)或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含む可能性がある。
マッピングモジュール106は、データ管理システム102から入力データを読み、実行環境104によってアクセスされ得るデータストレージシステム116に記憶された1又は2以上のマッピング114に基づいて入力データの実体を出力データの実体にマッピングするように構成される。マッピング114は、それぞれ、入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応を定義する。例えば、対応は、2つの属性の間の等式、又は1つの属性を別の属性の関数として定義する式である可能性がある。出力データは、データ管理システム102若しくはデータストレージシステム116に戻して記憶されるか、又はその他の方法で使用される可能性がある。データストレージシステム116は、任意のレベルのキャッシュメモリ、若しくはダイナミックランダムアクセスメモリ(DRAM,dynamic random access memory)内のメインメモリなどの揮発性ストレージ媒体、又は(1若しくは2以上の)磁気ハードディスクドライブなどの不揮発性ストレージを含むストレージ媒体の任意の組合せを含み得る。データ管理システム102を提供するストレージデバイスは、実行環境104のローカルにあり、例えば、実行環境104をホストするコンピュータに接続されたストレージ媒体(例えば、ハードドライブ108)に記憶される可能性があり、又は実行環境104のリモートにあり、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続を介して実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム110)でホストされる可能性がある。
実行モジュール112は、データ処理タスクを実行するためにマッピングモジュール106によって生じさせられる出力データを使用し、それらのデータ処理タスクの一部は、マッピング114によって定義された出力データのデータフォーマットに依拠する可能性がある。また、システム100は、ユーザ120がマッピング114を定義することができるユーザインターフェース118(例えば、実行環境104と通信するか又は実行環境104をホストするコンピュータのディスプレイのスクリーンに表示されるグラフィカルユーザインターフェース)と、実行モジュール112によって実行されるべきデータ処理プログラムのその他の態様とを含む。システム100は、一部の実施形態において、頂点間の(作業要素(work element)、すなわち、データのフローを表す)有向リンクによって接続された(データ処理構成要素又はデータセットを表す)頂点を含むデータフローグラフとしてアプリケーションを開発するために構成される。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」と題された米国特許出願公開第2007/0011668号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第5,966,072号明細書に説明されている。このシステムによって作成されるデータフローグラフは、プロセス間で情報を移動するため及びプロセスに関する実行の順序を定義するためにグラフの構成要素によって表される個々のプロセスに情報を出し入れするための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従った通信経路は、TCP/IP若しくはUNIXドメインソケットを使用するか、又はプロセス間でデータを渡すために共有メモリを使用する可能性がある)。
マッピングモジュール106は、例えば、データセットファイル又はデータベーステーブルを含む、データ管理システム102からアクセス可能な入力データ内で表され得るさまざまな種類の実体の属性をマッピングすることができる。実体のデータ内容は、おそらくはヌル値を含むそれぞれの属性(「フィールド」又は「カラム」とも呼ばれる)に関する値を有するレコードとして編成される可能性がある。マッピングモジュール106は、概して、その実体内のレコードについての何らかの最初のフォーマット情報から始める。場合によっては、入力データ内の実体のレコード構造は、最初は知られていない可能性があり、その代わりに、入力データの分析後に決定される可能性がある。レコードについての最初の情報は、例えば、区別可能な値を表すビットの数、レコード内のフィールドの順序、及びビットによって表される値の型(例えば、文字列、符号付き/符号なし整数)を含む可能性がある。
一部の入力データ又は出力データに関して、実体は、実体が階層によって互いに関連付けられる階層構造を有する可能性がある。概して、階層は、頂点が実体を表し、辺が実体の間の関連を表す、有向辺によって接続された頂点のグラフ(例えば、有向非循環グラフ(DAG,directed acyclic graph))として表され得る。一部の実施形態において、関連は、実体の間の主キー/外部キーの関連に対応する。その他の実施形態において、関連は、1つの実体のインスタンスの属性内に別の実体のインスタンスを入れ子にすることに対応する。各頂点は、階層の特定のレベルにある。少なくとも1つの実体(例えば、階層が木構造を有する場合の根の実体)は、階層の最も高いレベルにあり、1又は2以上の実体は、階層の最も高いレベル未満の1又は2以上のレベルにある。最も高いレベル未満のレベルの各実体は、単一のより高いレベルの実体(又は「親実体」)の下位実体(又は「子実体」)である。例えば、関連が主キー/外部キーの関連であるとき、子実体のインスタンスは、値が親実体の特定のインスタンスの一意主キーの値である外部キーフィールドを有する。関連が入れ子の関連であるとき、子実体のインスタンスは、(例えば、親インスタンスの属性内に子インスタンスのデータ構造自体又は子インスタンスのデータ構造へのポインタを記憶することによって)親実体の特定のインスタンスの属性内に含まれる。
そのような階層構造は、実体関連(ER,entity-relationship)図でグラフィカルに表され得る。図2Aは、木構造を有する実体の入力階層200の例に関するER図を示す。最も高いレベルでは、「Accounts」実体が、属性ラベルの後の「(K)」によって示されるキー属性である「master_account_number」とラベル付けされた単一の属性を有する。Accounts実体に関するその他のキー属性が存在しないので、master_account_numberの値は、Accounts実体の異なるインスタンスを一意に特定する。Accounts実体は、2つの子実体、すなわち、「CheckingAccounts」実体及び「SavingsAccounts」実体への関連に関する属性も有する。親実体とそれぞれの子実体との間の図200のコネクタ(connector)は、一対多の関連を示し、一対多の関連とは、親実体の1つのインスタンスに関して、子実体のゼロ個、1個、又は多くの関連するインスタンスが存在することを意味する。この一対多の関連は、子実体においてカラスの足(crow’s foot)で終わる、親実体と子実体との間の線として示される。
CheckingAccounts実体は、2つのキー属性、すなわち、「master_account_number」とラベル付けされた属性及び「acct_id」とラベル付けされた属性を有する。master_account_number属性は、親Accounts実体の関連するインスタンスの主キーの特定の値を記憶する外部キーである。acct_id属性は、異なる当座預金口座(checking account)を、たとえそれらの当座預金口座がAccounts実体の同じ統括口座(master account)のインスタンスの子であるとしても(例えば、特定の統括口座に関連する口座名義人が複数の当座預金口座を有する場合)互いに一意に区別する複合キーを形成する追加のキー属性である。同様に、SavingsAccounts実体は、2つのキー属性、すなわち、任意の数の普通預金口座(savings account)が互いに一意に区別されることをやはり可能にする「master_account_number」とラベル付けされた属性及び「acct_id」とラベル付けされた属性を有する。CheckingAccounts実体及びSavingsAccounts実体のそれぞれは、これらの実体に関する非キー属性であるその他の属性、すなわち、「first_name」、「last_name」、「SSN」、「balance」、及び「interest_rate」も有する。
図2Bは、やはり木構造を有する実体であるが、入力階層200とは異なる数の実体の出力階層210の例に関するER図を示す。マッピングモジュール106は、出力階層210の一部として生じさせられるべき「AccountHolders」出力実体を指定するマッピングを(例えば、ユーザから)受け取った。この例において、出力階層210の一部であるその他の出力実体(すなわち、最高レベルの実体Accounts並びにその子実体CheckingAccounts及びSavingsAccounts)は、入力階層200に見られた対応するラベル付けされた実体からマッピングされる。AccountHolders実体は、CheckingAccounts実体の1若しくは2以上のインスタンス及び/又はSavingsAccounts実体の1若しくは2以上のインスタンスから導出される各口座名義人に関する属性を有するインスタンスを有する。特に、以下でより詳細に説明されるように、AccountHolders実体のインスタンスの属性のうちの4つ(「master_account_number」、「first_name」、「last_name」、及び「SSN」)は、CheckingAccounts又はSavingsAccounts実体のうちの1つのインスタンスの対応するラベル付けされた属性から導出され、AccountHolders実体のインスタンスの属性のうちの1つ(「balance」)は、複数のインスタンスに対する集約機能に基づいて計算される。AccountHolders実体は、2つのキー属性、すなわち、master_account_number及びSSNを有する。master_account_number属性は、やはり、親Accounts実体の関連するインスタンスの主キーの特定の値を記憶する外部キーである。(口座名義人の社会保障番号を記憶する)SSN属性は、異なる口座名義人(すなわち、AccountHolders実体のインスタンス)を、たとえそれらの口座名義人がAccounts実体の同じ統括口座のインスタンスの子であるとしても、互いに一意に区別する複合キーを形成する追加のキー属性である。
図3Aは、入力セクション302A内に表示された入力階層によって出力セクション302B内に表示される出力階層を定義するためのユーザインターフェース300の例のスクリーンショットを示す。スクリーンショットに示されるユーザインターフェース300の状態は、ユーザがソーストゥターゲット(Source-to-Target)マッピングセクション304内で所望のマッピング114を定義する情報を供給し、入力階層のレコードから出力階層のレコードを生じさせるための変換を実行した例に対応する。入力階層は、システム100によって解釈され得る構文規則(例えば、データ操作言語(DML,Data Manipulation Language)の構文規則若しくは拡張可能マークアップ言語(XML,Extensible Markup Language)構文規則)によって定義されたレコードフォーマット、又はデータベーステーブルのスキーマなどの記憶されたフォーマット情報に従って表示される。以下は、この例においては、入力レコードのフィールドとして入力属性を定義するDML構文規則を用いて入力階層を指定するレコードフォーマットの例である。
record
decimal(",") master_account_number;
record
string(",") first_name;
string(",") last_name;
string(",") SSN;
string(",") acct_id;
decimal(",") balance;
decimal(",") interest_rate;
end[decimal(4)] checking_accounts;
record
string(",") first_name;
string(",") last_name;
string(",") SSN;
string(",") acct_id;
decimal(",") balance;
decimal(",") interest_rate;
end[decimal(4)] savings_accounts;
string("\n") new_line= "\n";
end;
「record」及び「end」キーワードの外側のペアは、最高レベルの(「in」)実体を表すレコードを定義する。「record」及び「end」キーワードの内側のペアは、子(checking_accounts及びsavings_accounts)実体を表すレコードを定義する。実体の属性を表すフィールドは、「record」キーワードと「end」キーワードとの間に列挙される。レコードフォーマットは、必ずしもそのレコードによって表される高レベルの実体の一部とは限らない値を記憶するためにレコードに含まれるべきフィールドを定義する可能性がある。この例においては、new_lineフィールドが、レコードフォーマットにおいてchecking_accounts及びsavings_accountsレコードの後に現れ、「in」実体の属性として使用されるのではなく、むしろ、例えば、テキストエディタに表示されるリスト内の「in」実体のインスタンスを表す異なる実際のレコードの間のハードコーティングされた改行文字を与えるための構文規則要素として使用される。
マッピングモジュール106は、ソーストゥターゲットマッピングセクション304内で定義されたマッピング114従って、「out」実体のインスタンスを表すレコードのために使用されるべき適切なレコードフォーマットを生じさせる。以下は、この例においては、出力レコードのフィールドとして出力属性を定義する同じDML構文規則を用いて出力階層を指定するレコードフォーマットの例である。
record
decimal(",") master_account_number;
record
string(",") first_name;
string(",") last_name;
string(",") SSN;
decimal(",") balance;
end[decimal(4)] account_holders;
record
string(",") acct_id;
string(",") SSN;
decimal(",") balance;
decimal(",") interest_rate;
end[decimal(4)] checking_accounts;
record
string(",") acct_id;
string(",") SSN;
decimal(",") balance;
decimal(",") interest_rate;
end[decimal(4)] savings_accounts;
string("\n") new_line= "\n";
end;
この出力レコードフォーマットは、ユーザが出力階層内のさまざまな実体の属性のためのマッピングを与えた後に生じさせられ、ユーザは、各出力実体の属性のうちのどれがキー属性として使用されるべきかを(例えば、出力セクション302B内で)特定することができる。出力実体のどの属性がキー属性であるかについてのこの情報及び入力実体のどの属性がそれらのキー属性にマッピングされたかについての情報(出力キーの「逆像(inverse image)」と呼ばれる)が、データフローグラフを生じさせるために使用され、そして、そのデータフローグラフは、以下でより詳細に説明されるように、出力階層の実体のインスタンスを表す実際のレコードを生じさせるために実行される。
表示されるユーザインターフェース300は、「in」とラベル付けされた入力セクション302Aの一番上の入力階層の最高レベルの実体を表す(テーブルを示す)アイコンと、「out」とラベル付けされた出力セクション302Bの一番上の出力階層の最高レベルの実体を表す(テーブルを示す)アイコンとを含む。各実体のインスタンスの数が、ラベルの隣に角括弧に入れて表示される。例えば、出力階層のレコードが生じさせられた後、「[5 recs]」が、両方の最高レベルの実体に関して表示され、その実体の異なるそれぞれのインスタンスの内容を記憶する5つのレコードが存在することを示す。この例において、最高レベルの入力実体及び出力実体は、図2A及び2BのER図のAccounts実体にそれぞれ対応する。これらの最高レベルの実体のそれぞれは、最高レベルの実体に関するアイコンの直下に現れるアイコンの後に表示されるキー属性master_account_numberを表すフィールドを含む、ER図に示される同じ属性及び下位実体を表すフィールドを含む。属性に対応するフィールドは、そのフィールドが「string」型の値としてレコードに現れることを示す文字「A」を示すアイコンを伴って、又はそのフィールドが「decimal」型の値としてレコードに現れることを示す数字「12」を示すアイコンを伴って表示される。ユーザインターフェース300において、キーの一部である各フィールド(すなわち、キー属性)は、フィールドのアイコンの隣に現れるキーを示すアイコンによってユーザインターフェース300内で特定される。
ユーザインターフェース300は、入力セクション302A及び出力セクション302Bが、それぞれオプションセクション306A及びオプションセクション306Bにおいて選択可能である異なるビューモードで見られることを可能にする。「階層ビューモード」においては、親実体の下位実体に関するテーブルアイコンが、その親実体の属性と同じ量だけ字下げされて表示され、親実体のキー属性を指すキー属性は、子実体においては示されない。図3Aは、入力セクション302Aと出力セクション302Bとの両方を階層ビューモードで示す。入力セクション302Aに関しては、checking_accounts実体及びsavings_accounts実体に関するテーブルアイコンが、下に現れ、master_account_numberキー属性に関するアイコンと水平方向に位置合わせされる。出力セクション302Bに関しては、account_holders実体及びchecking_accounts実体及びsavings_accounts実体に関するテーブルアイコンが、下に現れ、master_account_numberキー属性に関するアイコンと水平方向に位置合わせされる。
少なくとも1つの下位実体を有する各実体は、1又は2以上のキー属性からなるキーを有する。これは、各下位実体が、下位実体の各インスタンスに関してその下位実体に関連する親実体の一意のインスタンスを特定する対応する外部キー属性を持つことを可能にする。親実体のキーの(外部キー)値を記憶するキー属性の存在は、そのような属性を表示しない階層ビューモードにおいては暗黙的である。例えば、入力階層と出力階層との両方に関して、checking_accounts下位属性は、一緒に複合キーを形成するキーアイコンを伴うキー属性acct_idと親の最高レベルの「in」又は「out」実体のmaster_account_numberキー属性の値を記憶する別のキー属性とを有する。階層ビューモードにおいては、テーブルアイコンが、その実体の属性及び下位実体(もしあれば)を示すか又は隠すためにその実体を展開するか又は折りたたむための三角形と共に表示される。
「実体ビューモード」においては、階層の異なるレベルの実体に関するテーブルアイコンが、互いに同じ量だけ字下げされて表示され、親実体のキー属性を指すキー属性は、子実体において示される。図3Bは、入力セクション302Aと出力セクション302Bとの両方を実体ビューモードで示す。入力セクション302Aに関しては、checking_accounts実体及びsavings_accounts実体に関するテーブルアイコンが、下に現れ、「in」実体に関するアイコンと水平方向に位置合わせされる。出力セクション302Bに関しては、account_holders実体及びchecking_accounts実体及びsavings_accounts実体に関するテーブルアイコンが、下に現れ、「out」実体に関するアイコンと水平方向に位置合わせされる。実体ビューモードにおいて、親実体のキーの(外部キー)値を記憶するキー属性の存在は、明示的に示される(例えば、「in.master_account_number」及び「out.master_account_number」と名付けられたフィールド)。実体ビューモードにおいては、テーブルアイコンが、その実体の属性を示すか又は隠すためにその実体を展開するか又は折りたたむための三角形と共に表示されるが、いずれの下位実体も、独立して展開される/折りたたまれる。
図3Aと図3Bとの両方に示されたように、ソーストゥターゲットマッピングセクション304は、ソースとターゲットとの間のマッピングを定義するための、行番号308によってラベル付けされた行を含む。マッピングは、任意の順序で入力される可能性があり、ユーザは、定義されるマッピングの種類を説明するためのコメントを与えるためにいくつかの行を使用する可能性があってもよい。マッピングを定義することの一部として、ユーザは、出力階層の実体のどの属性が実体の異なるインスタンスを一意に特定するためのキー属性であるべきかを示す。マッピングモジュール106は、以下でより詳細に説明されるように、キー属性のこの指示に基づいて、どのマッピングが「マッピング」であり、どのマッピングが「集約されたマッピング(aggregated mapping)」であるかを決定する。そのままのマッピング(straight mapping)に関しては、入力階層の実体のインスタンスと出力階層の対応する実体のインスタンスとの間に既定の一対一の関連がある。しかし、以下でより詳細に説明されるように、例えば、入力実体の一部のインスタンスが、対応する出力実体のインスタンスとして現れないように除去される場合、必ずしも常に一対一の関連があるとは限らず、対応する実体は、同じ属性又は下位実体のすべてを必ずしも持たない。集約されたマッピングに関して、実行モジュール112は、以下でより詳細に説明されるように、入力実体及び/又は一時的実体によって出力実体のインスタンスを生じさせるプロセスにおいて、マッピングモジュール106によって指定されたように1又は2以上の集約操作を実行する。集約されたマッピングに関しては、概して、入力階層の実体のインスタンスと出力階層の対応する実体のインスタンスとの間に一対一の関連がない。
ソーストゥターゲットマッピングセクション304は、ユーザが入力階層からの入力実体又は一時的実体をソースとして特定するためのソース列310と、ユーザが出力階層からの出力実体又は一時的実体をターゲットとして特定するためのターゲット列312とを含む。一時的実体は、例えば、ターゲットとして定義されたが、出力階層内に含まれない一時的実体である可能性がある。除去され、マッピングされたターゲットのレコードとして伝えられないソースの特定のレコードを特定するフィルタリング機能を適用するオプションのフィルタをユーザが定義することを可能にするフィルタ列314が存在する。それぞれのソース及びターゲットの実体のインスタンスに対応するレコードの数をそれぞれ提供するレコードカウント列316A及び316Bが存在する。対応するソース又はターゲットの実体のインスタンス(すなわち、レコード)のビューにナビゲートするためにユーザがインタラクションすることができるアイコンをそれぞれ提供するビュー列318A及び318Bが存在する。
図3C及び3Dは、ソーストゥターゲットマッピングセクション304の特定の行で特定されたソースとターゲットとの間のマッピングを定義するためのユーザインターフェース320の例のスクリーンショットを示す。ユーザは、例えば、特定の行に関するマッピング列319のアイコンを選択することによってこのユーザインターフェース320にナビゲートすることができる。図3Cにおいて、スクリーンショットは、(ソーストゥターゲットマッピングセクション304の行4に関する)「in.checking_accounts」から「out.checking_accounts」へのマッピングを示す。実体名をプレフィックスとして、属性又は下位実体が属する実体を明示的に示すために、特定の文脈でドット記法が使用される。一部の文脈では、属性又は下位実体が属する実体についての曖昧性がない場合、その属性又は下位実体の名前が、プレフィックスなしに表示される(又は入力として受け取られる)可能性がある。入力セクション322は、式/規則列324にユーザによって入力された式で使用されるべき入力として利用可能な実体及びそれらの実体の属性を列挙する。出力/内部名列326は、式/規則列324のそれぞれの式によって計算されている出力実体out.checking_accountsの各属性を別々の行に含む。この例は、入力実体in.checking_accountsの対応するインスタンスと同じ値を有するものとして定義されている出力実体out.checking_accountsのインスタンスの5つの属性を含む。特に、次の属性、すなわち、out.master_account_number(親実体「out」の対応する属性の値を参照する外部キー)、out.checking_accounts.acct_id、out.checking_accounts.SSN、out.checking_accounts.balance、及びout.checking_accounts.interest_rateが定義される。in.checking_accounts実体の対応する属性だけが、式/規則列324に列挙される(入力階層からのものであると仮定されるこれらの属性名に関しては前に付く「in.」プレフィックスが必要とされない)。それは、この特定の例においてout.checking_accounts実体の対応する属性として定義されないin.checking_accounts実体の2つのその他の属性、すなわち、checking_accounts.first_name及びchecking_accounts.last_nameを残す。ユーザインターフェース320は、各行で定義された対応する出力属性の値を示す計算された値列328も含む。それらの出力属性が計算される入力属性の値も、入力セクション322において、その属性を表すフィールドの名前の後に括弧に入れて示される。種類列330は、その行で定義されたマッピングが(矢印アイコンを有する)「単純マッピング(simple mapping)」であるか又は(点で描かれたアイコンを有する)「複雑マッピング(complex mapping)」であるかを示すアイコンを示す。単純マッピングは、出力属性を同じ名前の入力属性にマッピングするか又は出力属性に一定の値を割り振る単純マッピングである。すべてのその他のマッピングは、複雑マッピングである。ユーザインターフェース300の行に関するマッピング列319は、そのマッピング列319の対応するユーザインターフェース320で定義されたマッピングのすべてが単純マッピングである場合、単純マッピングのアイコンを有し、そのマッピング列319の対応するユーザインターフェース320で定義されたマッピングのいずれかが複雑マッピングである場合、複雑マッピングのアイコンを有する。
図3Dにおいて、スクリーンショットは、(ソーストゥターゲットマッピングセクション304の行2に関する)「in.checking_accounts」から「account_holders」へのマッピングを示す。このマッピングに関する出力/内部名列326は、式/規則列324のそれぞれの式によって計算されている出力実体out.account_holdersの各属性を別々の行に含む。この例は、定義されている出力実体out.account_holdersの5つの属性を含む。5つの属性のうちの4つは、入力実体のインスタンスの対応する属性(つまり、同じフィールド名を有する)によって定義された出力実体のインスタンスの属性との単純マッピングである。5つの属性のうちの1つは、潜在的に複数の入力実体のインスタンスの属性によって(out.account_holders実体のインスタンスに関する)属性out.account_holders.balanceを定義する複雑マッピングである。この例において、out.account_holders.balanceに関する式/規則列324の式は、以下の通りである。
sum(in.checking_accounts.balance,in.checking_accounts.SSN) +
sum(in.savings_accounts.balance,in.savings_accounts.SSN==in.checking_accounts.SSN)
この式は、実行モジュール112が出力階層の出力実体のインスタンスを生じさせるときに実行されるべき集約操作を定義する。集約操作は、次の構文規則、すなわち、sum(<aggregation_attr>,<match_attr>==<key_attr>)を有するsum関数を用いて定義される合計である。この関数の第1の引数「<aggregation_attr>」は合計の被加数(summand)であるべき属性である。総和は、1つの引数の実体又は複数の引数の実体(すなわち、属性が引数<aggregation_attr>として提供される任意の実体)の複数のインスタンスに対して行われる。この関数の第2の引数「<match_attr>==<key_attr>」は、それ自体、第1の被加数引数が合計に含まれるために満たされなければならない条件を示す式である。キー属性<key_attr>は、マッピングで使用される入力実体のキー属性であり、属性<match_attr>は、そのキー属性とマッチングされるべき引数の実体の「マッチ属性(match attribute)」である。このsum関数は、属性<match_attr>が<key_attr>と同じである特別な場合にだけその属性<match_attr>が列挙されることを許容するオプションの構文規則を有する。もちろん、ユーザは、逆順の式「<key_attr>==<match_attr>」を入力することができ、効果は同じである。したがって、上の式に関して、実行される集約は、in.checking_accounts実体か又はin.savings_accounts実体かのどちらかのすべてのインスタンスの「balance」属性の値を見つけ、それらの実体のそれぞれのインスタンスのSSN属性が同じである場合にそれらの値を足し合わせる。これは、SSNの値をその実体のout.account_holders.SSN属性として有するout.account_holders実体のインスタンスのout.account_holders.balance属性に割り振られるべき、SSNのそれぞれの一意の値に関する1つの合計された総合結果をもたらす。
この例において、出力階層の出力実体のインスタンスを生じさせる実行モジュール112の結果は、集約操作が、5つの最高レベルの「in」レコードの中から見つかった8つのin.checking_accountsレコード及び4つの普通預金口座レコードの中からSSN属性の9つの一意の値を見つけたことを示す9つのout.account_holdersレコードを生じる。ユーザによって定義されたマッピングを実行した結果として生じさせられたレコードの数は、出力セクション302B内に表示され、ユーザが生じさせられたレコードの数が予測された通りであったかどうかを判定し、入力された式が正しかったことを確認するのを助けるための貴重なフィードバックを提供する。各実体に関するレコードの総数に加えて、さまざまな階層の統計(例えば、最小値及び最大値)が、入力階層と出力階層との両方に関して計算され、ユーザインターフェース300に表示される可能性がある。フィルタが使用される場合、フィルタによって拒絶された及び/又は許容されたレコードの数が、表示され得る。
一部の実施形態において、ユーザインターフェース320は、フィールドに関連する名前(例えば、ビジネスネーム(business name)、テクニカルネーム(technical name))の間の類似性の分析、及び/又はキーフィールドの間の分析に基づいて自動的に生じさせられる、入力実体のフィールドと出力実体のフィールドとの間の既定のマッピングから始める可能性がある。ユーザは、もしあれば、既定のマッピングのうちのどれを認めるかを決定することができ、又は自動マッピングの特徴をオフにすることができる。自動マッピングの特徴は、ユーザがフィールドのすべてに関するマッピングを手動で与える必要性をなくし、その代わりに、関心のある特定のフィールドに関するマッピングを与えることに集中することができる。
一部の実施形態において、実行モジュール112は、入力レコード(すなわち、入力階層の入力実体のインスタンス)を処理して出力レコード(すなわち、出力階層の出力実体のインスタンス)を生じさせるためにマッピングモジュール106によって生じさせられたデータフローグラフを実行する。図4は、そのようなデータフローグラフを自動的に生じさせるためにマッピングモジュール106によって使用される手順400の例を示す。手順400は、図5に示される例示的なデータフローグラフ500を生じさせることの説明の中で下でより詳細に説明される、データフローグラフを構築することに関わる異なるステップを含む。手順400のその他の例は、同じステップを異なる順序で実行する可能性があり、異なるループ構成を使用する可能性があり、又はデータフローグラフ(若しくはそれらのデータフローグラフの均等物)を構築する異なるステップを異なる順序で含む可能性がある。
手順400は、入力階層の実体のインスタンスを表すレコードを記憶する入力データセットを表す入力構成要素、及び出力階層の実体のインスタンスを表すレコードを記憶する出力データセットを表す出力構成要素を提供するステップ(402)を含む。手順400は、入力構成要素に接続された分割構成要素及び出力構成要素に接続された合成構成要素を提供するステップ(404)も含む。分割構成要素は、別の実体のインスタンスのデータ構造内に埋め込まれた下位実体のインスタンスを表す任意のレコード(又はその他のベクトルデータ構造)を抽出するように構成される。マッピングモジュール106は、マッピングの入力属性に基づいて分割構成要素を構成する。したがって、分割構成要素の出力ポートの少なくとも一部は、マッピングのうちの1つのソースとして使用される入力実体のインスタンスを表すレコードのフローを提供する。より低いレベルの実体のインスタンスを表すレコードがそのレコードの親レコードから取り除かれ、より高いレベルの実体のインスタンスを表すレコードがいかなる埋め込まれた子レコードも含まないように、その他のレコード内に入れ子にされたすべてのレコードが抽出される。合成構成要素は、より高いレベルの実体のインスタンスのデータ構造に下位実体のインスタンスを表す任意のレコードを挿入することによって分割構成要素の逆のプロセスを実行するように構成される。マッピングモジュール106は、マッピングの出力属性に基づいて合成構成要素を構成する。
手順400は、合成構成要素への入力が処理される外側のループ406と、分割構成要素の出力が処理される内側のループ408とを有する。外側のループ406のループ条件410は、処理される必要がある合成構成要素に関するいずれかのさらなる入力ポートが存在するかどうかを判定し、入力ポートの数は、概して、根のレベルの直下の出力階層の最も高いレベルに関して生じさせられる出力実体の数に基づく。外側のループ406において、マッピングモジュール106は、各出力実体をマッピングするための入力として使用されるべき分割構成要素の出力の数にかかわらず必要とされるデータフローグラフの任意の構成要素を生じさせる(410)。内側のループ408において、マッピングモジュール106は、マッピングへの入力として働く分割構成要素の各出力に関するさまざまな計算を実行するために必要とされるデータフローグラフの任意の構成要素を生じさせる(412)。上述のように、マッピングされた入力属性(すなわち、出力実体のキー属性にマッピングされた入力属性)が入力実体のキー属性の一部のみを含む各マッピングに関しては、少なくとも1つの構成要素が、マッピングされた入力属性に関して同じ値を共有する入力実体の複数のインスタンスを集約するための集約操作を実行する。分割構成要素によって与えられるレコードの入力属性の特徴に依存して、必要に応じて、その他の構成要素が含まれる可能性もある。
図5は、ユーザによって定義されたマッピング114の論理を具現化するためにマッピングモジュール106によって生じさせられ、それから、出力データを生じさせるために実行モジュール112によって実行されるデータフローグラフ500の例を示す。データフローグラフ500は、InputAccounts.datと呼ばれる入力階層の実体のインスタンスを表すレコードを記憶する入力データセットを表す入力構成要素502A、及びOutputAccounts.datと呼ばれる出力階層の実体のインスタンスを表すレコードを記憶する出力データセットを表す出力構成要素502Bを含む。
マッピングモジュール106は、Split構成要素504を使用して入力構成要素502Aから入力レコードを取り出し、Combine構成要素506を使用して出力構成要素502Bに出力レコードを記憶する。この例において、Split構成要素504は、上で示されたDML入力レコードフォーマットに従ってフォーマットされたフィールドの値の入れ子にされたベクトルとして任意のより低いレベルの実体の埋め込まれたレコードを含む最高レベルのレコードのフローをそのSplit構成要素504の入力ポートにおいて受け取る。代替的に、例えば、実体がデータベース内のテーブルに対応し、それらの実体のインスタンスがそれらのテーブルの行に対応する場合の、データベースを読むか又は書く構成要素などのその他の種類の構成要素が、入力レコードを受け取り、出力レコードを記憶するために使用され得る。
Split構成要素504の各出力ポートは、マッピング114のうちの1つのソースとして使用される入力実体のインスタンスを表すレコードのフローを提供する。より低いレベルの実体のインスタンスを表すレコードがそのレコードの親レコードから取り除かれ、より高いレベルの実体のインスタンスを表すレコードがいかなる子レコードも含まないように、その他のレコード内に入れ子にされたすべてのレコードが抽出される。マッピングモジュール106は、特定のマッピング114がそのままのマッピングであるか又は集約されたマッピングであるかを含め、定義されたそれらの特定のマッピング114の構造に基づいてSplit構成要素504のために必要とされる出力ポートの数を決定する。マッピングモジュール106は、Combine構成要素506のために必要とされる入力ポートの数を決定する(この例においては4つ)。
マッピングモジュール106は、(出力階層の実体又は任意の一時的実体を含む)少なくとも1つのマッピングのターゲットである実体に関してユーザが定義したキー属性に基づいて、マッピングがそのままのマッピングであるか又は集約されたマッピングであるかを判定する。(ターゲットの実体の主キーを一緒に構成する)そのターゲットの実体の各キー属性に関して、マッピングモジュール106は、そのマッピングのソースである実体(入力階層の実体又は一時的実体)の対応する入力属性を決定する。これらの「マッピングされた入力属性」は、(例えば、単純マッピングにおいて)ターゲットの実体のキー属性に直接マッピングされる可能性があり、又は(例えば、複雑マッピングにおいて)ターゲットの実体のキー属性を決定するための式で使用される可能性がある。
これらのマッピングされた入力属性の特徴に依存して、マッピングモジュール106は、マッピングを「そのままのマッピング」又は「集約されたマッピング」として分類する。マッピングモジュール106は、マッピングされた入力属性を(ソースの実体の主キーを一緒に構成する)ソースの実体の1又は2以上のキー属性と比較して、マッピングされた入力属性がソースの実体の主キーを包含するかどうかを判定する。マッピングされた入力属性は、ソースの実体のキー属性のすべてを含む場合、主キーを包含する。マッピングされた入力属性は、ソースの実体のキー属性の一部のみを含む場合、主キーを包含しない。マッピングされた入力属性が主キーを包含する場合、マッピングは、(特定のターゲットの主キーを有する)ターゲットの実体の各インスタンスに関して(特定のソースの主キーを有する)ソースの実体の一意のインスタンスを見つけることを保証され、マッピングは、「そのままのマッピング」として分類される。マッピングされた入力属性が主キーを包含しない場合、マッピングは、ターゲットの実体の各インスタンスに関してソースの実体の一意のインスタンスを発見することを保証されず、マッピングは、「集約されたマッピング」として分類される。
マッピングされた入力属性が主キーを包含するか否かを判定するとき、ターゲットの実体のキー属性とソースの実体のキー属性との間にどの種類のマッピングが存在するかを判定することも必要である可能性がある。マッピングが一対一のマッピングでない(例えば、その代わりに、多対一のマッピングである)場合、1つの主キーの値が別の主キーの値と同じ値にマッピングされ、したがって、ターゲットの実体の各インスタンスに関してソースの実体の一意のインスタンスの保証がないことがあり得る。マッピングは、ユーザによって与えられた式によって定義された関数f(x)が数学的な意味で一対一である(つまり、「!=」が等しくないことを意味する場合、x != yがf(x) != f(y)であることを示唆する)場合、一対一のマッピングである。マッピングが一対一のマッピングである場合、1又は2以上のマッピングされた入力属性は、出力実体のそれぞれのキー属性との一対一の対応を有する。
集約されたマッピングに関して、ソースの実体の複数のインスタンスがターゲットの実体の特定のインスタンスの計算に情報(例えば、ソースの実体のそれらの複数のインスタンスの属性値)を提供することを潜在的に許容するために集約操作が実行される。ターゲットの実体の主キーに合致するソースの実体の単一のインスタンスのみが存在することが判明する場合、集約操作は、単純に、マッピングで使用するためにその1つのインスタンスから情報を取得する。場合によっては、たとえターゲットの実体の主キーに合致するソースの実体の複数のインスタンスが存在するとしても、集約操作は、単純に、マッピングで使用するためにそれらのインスタンスのうちの1つだけを選択する可能性がある。
この例において、マッピングモジュール106は、3つのそのままのマッピング及び2つの集約されたマッピングが存在すると判定し、それらのマッピングを実行するために必要とされるデータフローグラフ500の構成要素を生じさせる。1つの出力ポートが、ソーストゥターゲットマッピングセクション304の行1のそのままのマッピングのためにMap構成要素512Aに最高レベルの「in」実体のインスタンスを表すレコードを提供する。その他の出力ポートは、ソーストゥターゲットマッピングセクション304の行4及び5のそのままのマッピングのためにMap−3構成要素512B及びMap−4構成要素512Cにin.checking_accounts及びin.savings_accounts実体のインスタンスを表すレコードをそれぞれ提供する。これらのそのままのマッピングのための構成要素(Map構成要素512A、Map−3構成要素512B、及びMap−4構成要素512C)は、ソースの実体のインスタンスからマッピングされた属性値を読み、Combine構成要素506のポートで受け取られるターゲットの実体の対応するインスタンスにそれらのマッピングされた属性値を書き込む操作を実行する。これらの構成要素が、対応するマッピングのために定義された任意のフィルタを適用してもよいように構成される可能性があり、又は別個の構成要素が、そのようなフィルタリングを適用するためにデータフローグラフ500に追加される可能性がある。これら3つのマッピングがそのままのマッピングである理由は、出力実体の主キーを形成するキー属性が入力実体の完全な主キーを一緒に形成するそれぞれのキー属性にマッピングされるからである。例えば、行4のマッピングに関して、out.checking_accounts実体の主キーは、キー属性in.checking_accounts.acct_id及びin.master_account_numberからなるin.checking_accounts実体の完全な主キーにマッピングされるキー属性out.checking_accounts.acct_id及びout.master_account_numberからなる。
Split構成要素504のその他の出力ポートは、ソーストゥターゲットマッピングセクション304の行2及び3の2つの集約されたマッピングに関する式で参照される使用される実体のインスタンスを表すレコードを提供する。これら2つのマッピングが集約されたマッピングである理由は、出力実体の主キーを形成するキー属性が入力実体のキー属性のすべては含まないそれぞれの属性にマッピングされるからである。例えば、行2のマッピングに関して、out.account_holders実体の主キーは、in.checking_accounts実体の主キーのキー属性のうちの1つ(すなわち、in.checking_accounts.acct_id属性)を含まないキー属性out.account_holders.SSN及びout.master_account_numberからなる。データフローグラフ500が特定の集約されたマッピングのための集約操作をどのようにして実行すべきかを決定するために、マッピングモジュール106は、初めに、ユーザインターフェース320においてユーザによって与えられた式が集約されたマッピングで使用されるソース及びターゲットの実体の属性に関してそのような集約操作を定義するかどうかを判定する。そうである場合、マッピングモジュール106は、マッピングされた入力属性に関して同じ値を共有する入力実体の複数のインスタンスを集約するための集約操作(「ロールアップ(rollup)」操作とも呼ばれる)を実行するロールアップ構成要素をデータフローグラフ500に追加する。ユーザによって与えられた式がそのような集約操作を定義する集約されたマッピングで使用される属性に関する式を提供しない場合、マッピングモジュールは、データフローグラフ500によって実行されるべき既定の集約操作を適用する。例えば、「重複排除」操作が、ロールアップ構成要素によって実施されるいずれかの集約操作の一部として含まれる可能性があり、複数のインスタンスのうちの最後のインスタンスからの属性値が、使用される。それぞれの集約されたマッピングに関するそのようなロールアップ構成要素のこの挿入は、ソース及びターゲットの実体の属性をマッピングするための明示的な集約操作をユーザが与えるか否かにかかわらず、特定の主キーを有するターゲットの実体の単一の一意のインスタンスが存在することを保証する。
Split構成要素504の出力ポートは、ソーストゥターゲットマッピングセクション304の行2の集約されたマッピングのためにRollup構成要素514A及びRollup−1構成要素514Bにin.checking_accounts及びin.savings_accounts実体のインスタンスを表すレコードをそれぞれ提供する。このマッピングの属性に関する式が2つの総和の形態の集約操作を含む(つまり、式/規則列324の行4の)1つの式を含むので、マッピングモジュール106は、ターゲットの実体の主キーを形成するキー属性に対するロールアップを実行する総和のそれぞれのためのロールアップ構成要素を追加する。この例において、ターゲットの実体の主キーは、属性out.account_holders.SSN及びout.master_account_numberからなる。Rollup構成要素514Aは、これらのキー属性に基づいて被加数の条件を満たすすべてのインスタンスに関して被加数の引数in.checking_accounts.balanceを足すことによって第1の総和を実行する。この例において、出力実体out.account_holdersは、その出力実体の主キーにSSNを含むが、SSNは、入力実体in.checking_accountsの主キーの一部でなく、これは、SSNをマッチ属性として使用する定義された総和が同じSSN値を有する複数の入力実体のインスタンスを見つける可能性があることを意味する。Rollup−1構成要素514Bは、これらのキー属性に基づいて被加数の条件を満たすすべてのインスタンスに関して被加数の引数in.savings_accounts.balanceを足すことによって第2の総和を実行する。
マッピングモジュール106は、集約操作を完了するためのその他の構成要素を追加する。Join構成要素516Aは、キー属性値が同じである場合にロールアップ構成要素によって実行される2つの総和の結果を足し、一緒にされた出力レコードをそのJoin構成要素516Aの出力ポートでMap−1構成要素512Dに提供する。Map−1構成要素512Dは、一緒にされたレコードの2つの値の合計を実行し、その最終結果に関連するキー属性の特定の値と一緒に、その最終結果をout.account_holders.balance属性の値として、そのMap−1構成要素512Dの出力ポートでレコードを提供する。
同様に、その他の出力ポートは、ソーストゥターゲットマッピングセクション304の行3の集約されたマッピングのためにRollup−3構成要素514C及びRollup−4構成要素514Dにin.savings_accounts及びin.checking_accounts実体のインスタンスを表すレコードをそれぞれ提供する。また、このマッピングの属性に関する式は、2つの総和の形態の集約操作を含む1つの式を含む。したがって、上で説明されたのと同様の操作を実行する対応するロールアップ構成要素(Rollup−3構成要素514C及びRollup−4構成要素514D)並びに結合及びマップ構成要素(Join−2構成要素516B及びMap−2構成要素512E)が存在する。
マッピングモジュール106は、同じターゲットの実体(out.account_holders)のための2つの連続するマッピングの結果を集めるためにデータフローグラフ500に収集構成要素518を挿入し、この収集構成要素518は、(例えば、一方のフローからのすべてのレコードの後に他方のフローからのレコードを付加することによって、又はフローの間で交互にレコードを合併することによって)受け取られたレコードの2つのフローからレコードの単一のフローを形成する。マッピングモジュール106は、2つのマッピングによって生じさせられたすべての重複するレコードを取り除くための重複排除構成要素420も挿入する。例えば、行2からのマッピングは、同じSSNを有する対応する普通預金口座のない当座預金口座を見つけた可能性があり、行3からのマッピングは、同じSSNを有する対応する当座預金口座のない普通預金口座を見つけた可能性があるが、両方のマッピングが、同じSSNを有する当座預金口座及び普通預金口座のペアを見つけた可能性がある。
一部のマッピングに関して、マッピングモジュール106は、生じさせられるデータフローグラフにさらなる構成要素を追加する必要がある可能性がある。例えば、入力階層の入力レベル及び出力階層の出力レベルに基づいて、グラフは、指定されたマッピング規則によって、出力レコードの正しいフィールドに、入力レコードのフローから特定の情報を得るためにさまざまな操作を実行する必要がある可能性がある。集約されたマッピングに関して、ロールアップ構成要素が、関連する集約操作を実行するために必要とされる可能性があるが、さらなる集約操作を実行するために必要とされるその他のロールアップ構成要素も、存在する可能性がある。出力フィールドの情報が2つの異なる入力フィールドからの情報から導出される場合、結合構成要素が必要とされる可能性がある。例えば、ソート構成要素を含むべきかどうかを判定するために、マッピングモジュール106は、(ソート構成要素によって実行される)ソート操作が必要とされるかどうか、及び(ソート構成要素によって実行される)ソート操作がどこで必要とされるかを判定するために、ソートキーがどのようにマッピングされるかを比較する。一部の実施形態において、マッピングモジュール106は、冗長性を減らすために一部を削除する、又はより少ない若しくはより効率的な構成要素によって一部を置き換えるなど、計算の特定の部分を最適化するために生じさせられるデータフローグラフを変更する。データフローグラフ500の構成要素を生じさせ、それらの構成要素のポートを適切に接続することに加えて、マッピングモジュール106は、マッピングされた出力データを生じさせるため又はユーザに追跡情報を提供するために必要とされる可能性があるその他のデータ構造を生じさせ得る。例えば、マッピングモジュールは、出力実体の特定のインスタンス(すなわち、出力レコード)が生じさせられた入力実体の対応するインスタンス(すなわち、入力レコード)と、それらのレコード及び任意の中間レコードに対して実行された操作とを示すそれらの出力実体の特定のインスタンスの系統(lineage)の表現を生じさせるために使用されるべき系統情報を記憶するように構成される可能性がある。
これらのマッピング技術は、データフローグラフの一部がメタプログラミングされる(つまり、いくつかのユーザによって定義された制約に基づいて自動的に生じさせられる)状況で使用される可能性がある。1つのそのような例において、データフローグラフは、入力データを、ユーザによって定義された変換に従って、ユーザによって定義された入力フォーマットからユーザによって定義された出力フォーマットに変換するために構築される。データフローグラフは、例えば、参照により本明細書に組み込まれる、「MANAGING INTERFACES FOR SUB-GRAPHS」と題した、2014年12月5日に出願した米国特許出願第14/561,435号明細書に記載されているように、部分グラフインターフェース(sub-graph interface)を含むジェネリックコンテナグラフ(generic container graph)を含む可能性がある。部分グラフインターフェースは、部分グラフの特定の実施形態がランタイムの前にコンテナグラフ(container graph)に挿入されることを可能にし、少なくとも部分的にユーザ入力から導出される。ランタイムの直前に、ユーザは、入力フォーマット、出力フォーマット、及び/又は入力フォーマットのフィールドと出力フォーマットのフィールドとの間のマッピングに関連するいくつかの質問をされる可能性がある。質問へのユーザの答えに基づいて、サブグラフの実施形態が、マッピング技術を用いて自動的に生じさせられる(つまり、メタプログラミングされる)。
上述のマッピング手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステムで実行される1又は2以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
ソフトウェアは、CD−ROM又は(例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝搬信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。

Claims (19)

  1. 複数の実体を表す実体データを記憶するデータストレージシステムであって、各実体が、1又は2以上の属性を有し、前記実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、前記インスタンスの少なくとも一部が、それぞれ、前記属性のうちの1又は2以上に関するそれぞれの値を有する、データストレージシステムと、
    入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを受け取るための入力デバイス又はポートであって、前記入力実体が、前記入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、前記出力実体が、前記出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、入力デバイス又はポートと、
    前記入力データに含まれる前記1又は2以上のマッピングに従って前記出力実体のインスタンスを生じさせるために前記入力実体のインスタンスを処理するように構成された少なくとも1つのプロセッサであって、処理することが、
    前記1又は2以上のマッピングに基づいて前記出力実体の前記1又は2以上のキー属性のそれぞれに対応する前記入力実体の1又は2以上のマッピングされた入力属性を決定すること、及び
    前記マッピングされた入力属性を前記入力実体の前記1又は2以上のキー属性と比較して、前記マッピングされた入力属性が(1)前記入力実体の前記キー属性のすべてを含むのか、又は(2)前記入力実体の前記キー属性の一部のみを含むのかを判定すること
    を含む、少なくとも1つのプロセッサと
    を含むコンピューティングシステム。
  2. 出力実体の1又は2以上のキー属性のそれぞれに対応する入力実体の1又は2以上のマッピングされた入力属性を決定することが、前記1又は2以上のマッピングされた入力属性が前記出力実体のそれぞれのキー属性との一対一の対応を有するかどうかを判定することを含む、請求項1に記載のコンピューティングシステム。
  3. 処理することが、(1)マッピングされた入力属性が入力実体のキー属性のすべてを含むと判定したことに応答して、一致するキー属性を有する出力実体のインスタンスと前記入力実体のインスタンスとの間の一対一の対応に基づいて、又は(2)前記マッピングされた入力属性が前記入力実体の前記キー属性の一部のみを含むと判定したことに応答して、前記マッピングされた入力属性に関して同じ値を共有する前記入力実体の複数のインスタンスの集約に基づいて前記出力実体の前記インスタンスを生じさせることをさらに含む、請求項1に記載のコンピューティングシステム。
  4. 実体データが、階層に従って関連付けられる複数の出力実体を表し、少なくとも1つの根の出力実体が、前記階層の最高レベルにあり、1又は2以上の出力実体が、前記階層の前記最高レベル未満の1又は2以上のレベルにあり、前記根の実体よりも低いレベルの各出力実体が、単一の出力実体の下位実体である、請求項1に記載のコンピューティングシステム。
  5. 実体データが、階層に従って関連付けられる複数の入力実体を表し、少なくとも1つの根の入力実体が、前記階層の最高レベルにあり、1又は2以上の入力実体が、前記階層の前記最高レベル未満の1又は2以上のレベルにあり、前記根の実体よりも低いレベルの各入力実体が、単一の入力実体の下位実体である、請求項4に記載のコンピューティングシステム。
  6. 階層に従って関連付けられる複数の出力実体に関連付けられない少なくとも第1の実体が、入力データに含まれるマッピングのうちの少なくとも1つによって出力属性として参照される少なくとも1つの属性を含む、請求項4に記載のコンピューティングシステム。
  7. 第1の実体が、入力データに含まれるマッピングのうちの少なくとも1つによって入力属性として参照される少なくとも1つの属性を含む、請求項6に記載のコンピューティングシステム。
  8. 第2の実体の下位実体である第1の実体の複数のインスタンスが、それぞれ、前記第2の実体の特定のインスタンスを特定する前記第1の実体のキー属性の共通の値を含む、請求項1に記載のコンピューティングシステム。
  9. 第1の実体が、レコードの第1の組に対応し、第2の実体が、レコードの第2の組に対応し、前記第1の実体のキー属性が、レコードの前記第2の組の特定のレコードの主キーフィールドに含まれる値を特定するレコードの前記第1の組の外部キーフィールドに対応する、請求項8に記載のコンピューティングシステム。
  10. 第2の実体の下位実体である第1の実体の複数のインスタンスが、前記第2の実体の特定のインスタンスのデータ構造内に含まれるベクトルの複数の要素に対応する、請求項1に記載のコンピューティングシステム。
  11. 処理することが、入力実体のインスタンスを処理して出力実体のインスタンスを生じさせるためのデータフローグラフを使用して前記出力実体の前記インスタンスを生じさせることであって、前記データフローグラフが、実体のインスタンスに対する操作を実行するように構成された構成要素を表すノードと、構成要素の間のインスタンスのフローを表すノードの間のリンクとを含む、生じさせることをさらに含む、請求項10に記載のコンピューティングシステム。
  12. データフローグラフが、1又は2以上のマッピングの入力属性に基づいて別の実体のインスタンスのデータ構造から下位実体のインスタンスの1又は2以上のベクトルを抽出するように構成される少なくとも1つの分割構成要素と、前記1又は2以上のマッピングの出力属性に基づいて別の実体のインスタンスのデータ構造に下位実体のインスタンスの1又は2以上のベクトルを挿入するように構成される少なくとも1つの合成構成要素とを含む、請求項11に記載のコンピューティングシステム。
  13. データフローグラフが、マッピングされた入力属性が入力実体のキー属性の一部のみを含む各マッピングに関して、前記マッピングされた入力属性に関して同じ値を共有する前記入力実体の複数のインスタンスを集約するための集約操作を実行する少なくとも1つの構成要素を含む、請求項11に記載のコンピューティングシステム。
  14. 入力データを受け取るように構成されたユーザインターフェースを表示するための少なくとも1つの出力デバイス又はポートをさらに含む、請求項1に記載のコンピューティングシステム。
  15. ユーザインターフェースが、入力データに含まれる1又は2以上のマッピングに従って出力実体のインスタンスを生じさせた結果を特徴付ける結果情報を表示するようにさらに構成される、請求項14に記載のコンピューティングシステム。
  16. 結果情報が、生じさせられた出力実体のインスタンスの総数を含む、請求項14に記載のコンピューティングシステム。
  17. 複数の実体を表す実体データを記憶するための手段であって、各実体が、1又は2以上の属性を有し、前記実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、前記インスタンスの少なくとも一部が、それぞれ、前記属性のうちの1又は2以上に関するそれぞれの値を有する、手段と、
    入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを受け取るための手段であって、前記入力実体が、前記入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、前記出力実体が、前記出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、手段と、
    前記入力データに含まれる前記1又は2以上のマッピングに従って前記出力実体のインスタンスを生じさせるために前記入力実体のインスタンスを処理するための手段であって、処理することが、
    前記1又は2以上のマッピングに基づいて前記出力実体の前記1又は2以上のキー属性のそれぞれに対応する前記入力実体の1又は2以上のマッピングされた入力属性を決定すること、及び
    前記マッピングされた入力属性を前記入力実体の前記1又は2以上のキー属性と比較して、前記マッピングされた入力属性が(1)前記入力実体の前記キー属性のすべてを含むのか、又は(2)前記入力実体の前記キー属性の一部のみを含むのかを判定すること
    を含む、手段と
    を含むコンピューティングシステム。
  18. コンピューティングシステムでデータを処理するための方法であって、
    複数の実体を表す実体データをデータストレージシステムに記憶するステップであって、各実体が、1又は2以上の属性を有し、前記実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、前記インスタンスの少なくとも一部が、それぞれ、前記属性のうちの1又は2以上に関するそれぞれの値を有する、ステップと、
    入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを入力デバイス又はポートを介して受け取るステップであって、前記入力実体が、前記入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、前記出力実体が、前記出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、ステップと、
    少なくとも1つのプロセッサによって、前記入力データに含まれる前記1又は2以上のマッピングに従って前記出力実体のインスタンスを生じさせるために前記入力実体のインスタンスを処理するステップであって、
    前記1又は2以上のマッピングに基づいて前記出力実体の前記1又は2以上のキー属性のそれぞれに対応する前記入力実体の1又は2以上のマッピングされた入力属性を決定すること、及び
    前記マッピングされた入力属性を前記入力実体の前記1又は2以上のキー属性と比較して、前記マッピングされた入力属性が(1)前記入力実体の前記キー属性のすべてを含むのか、又は(2)前記入力実体の前記キー属性の一部のみを含むのかを判定すること
    を含む、ステップと
    を含む方法。
  19. コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
    複数の実体を表す実体データをデータストレージシステムに記憶することであって、各実体が、1又は2以上の属性を有し、前記実体の少なくとも一部が、それぞれ、複数のインスタンスを有し、前記インスタンスの少なくとも一部が、それぞれ、前記属性のうちの1又は2以上に関するそれぞれの値を有する、記憶することと、
    入力実体の1又は2以上の入力属性と出力実体の1又は2以上の出力属性との間の対応をそれぞれが定義する1又は2以上のマッピングを含む入力データを入力デバイス又はポートを介して受け取ることであって、前記入力実体が、前記入力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含み、前記出力実体が、前記出力実体に関する一意キーの一部として特定された1又は2以上のキー属性を含む、受け取ることと、
    少なくとも1つのプロセッサによって、前記入力データに含まれる前記1又は2以上のマッピングに従って前記出力実体のインスタンスを生じさせるために前記入力実体のインスタンスを処理することであって、
    前記1又は2以上のマッピングに基づいて前記出力実体の前記1又は2以上のキー属性のそれぞれに対応する前記入力実体の1又は2以上のマッピングされた入力属性を決定すること、及び
    前記マッピングされた入力属性を前記入力実体の前記1又は2以上のキー属性と比較して、前記マッピングされた入力属性が(1)前記入力実体の前記キー属性のすべてを含むのか、又は(2)前記入力実体の前記キー属性の一部のみを含むのかを判定すること
    を含む、処理することと
    を行わせるための命令を含むソフトウェア。
JP2016554885A 2014-03-14 2015-03-16 キー指定される実体の属性のマッピング Active JP6488317B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461953021P 2014-03-14 2014-03-14
US61/953,021 2014-03-14
PCT/US2015/020656 WO2015139016A1 (en) 2014-03-14 2015-03-16 Mapping attributes of keyed entities

Publications (2)

Publication Number Publication Date
JP2017513100A JP2017513100A (ja) 2017-05-25
JP6488317B2 true JP6488317B2 (ja) 2019-03-20

Family

ID=52774604

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016554885A Active JP6488317B2 (ja) 2014-03-14 2015-03-16 キー指定される実体の属性のマッピング
JP2016554886A Active JP6609262B2 (ja) 2014-03-14 2015-03-16 キー指定される実体の属性のマッピング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016554886A Active JP6609262B2 (ja) 2014-03-14 2015-03-16 キー指定される実体の属性のマッピング

Country Status (9)

Country Link
US (3) US10191862B2 (ja)
EP (2) EP3117379A1 (ja)
JP (2) JP6488317B2 (ja)
KR (2) KR102409552B1 (ja)
CN (2) CN106104591B (ja)
AU (3) AU2015229005A1 (ja)
CA (2) CA2941115C (ja)
SG (2) SG11201606776XA (ja)
WO (2) WO2015139016A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2941115C (en) 2014-03-14 2023-04-04 Ab Initio Technology Llc Mapping attributes of keyed entities
US10346433B2 (en) * 2015-03-18 2019-07-09 Oath Inc. Techniques for modeling aggregation records
US10642854B2 (en) * 2016-10-07 2020-05-05 Sudeep Pattnaik Clinical data aggregation architecture and platform
US10776121B2 (en) * 2017-05-10 2020-09-15 Atlantic Technical Organization System and method of execution map generation for schedule optimization of machine learning flows
US10338963B2 (en) * 2017-05-10 2019-07-02 Atlantic Technical Organization, Llc System and method of schedule validation and optimization of machine learning flows for cloud computing
US10503754B2 (en) * 2017-05-18 2019-12-10 Citrix Systems, Inc. Bulk loading multiple hierarchical levels of relational data to a database
EP3435303A1 (en) * 2017-07-25 2019-01-30 Siemens AG Österreich Method for using signifiers for data integration in rail automation
US11023430B2 (en) 2017-11-21 2021-06-01 Oracle International Corporation Sparse dictionary tree
US11169995B2 (en) 2017-11-21 2021-11-09 Oracle International Corporation Relational dictionaries
CN108052678A (zh) * 2018-01-02 2018-05-18 联想(北京)有限公司 数据处理方法和装置
US11126611B2 (en) * 2018-02-15 2021-09-21 Oracle International Corporation Code dictionary generation based on non-blocking operations
US11379450B2 (en) 2018-10-09 2022-07-05 Oracle International Corporation Relational method for transforming unsorted sparse dictionary encodings into unsorted-dense or sorted-dense dictionary encodings
US11030242B1 (en) * 2018-10-15 2021-06-08 Rockset, Inc. Indexing and querying semi-structured documents using a key-value store
CN109739856A (zh) * 2018-12-28 2019-05-10 第四范式(北京)技术有限公司 用于建立数据表之间的关系的方法及系统
US11314736B2 (en) 2020-01-16 2022-04-26 Oracle International Corporation Group-by efficiency though functional dependencies and non-blocking aggregation functions
CN111309765B (zh) * 2020-01-22 2023-07-04 北京飞漫软件技术有限公司 一种直接查询结构化数据的方法及装置
US11120590B1 (en) 2020-04-28 2021-09-14 Robert Bosch Gmbh Hierarchy detection for block diagrams
CN112183028A (zh) * 2020-09-26 2021-01-05 广州鲁邦通物联网科技有限公司 一种数据的展示方法、设备和系统
KR102524396B1 (ko) * 2021-05-03 2023-04-24 주식회사 토닥 호환가능한 외부기를 이용하는 인공와우 시스템
CN113722345A (zh) * 2021-09-14 2021-11-30 上海明略人工智能(集团)有限公司 映射关系的展示方法和装置、电子设备、存储介质
US11561976B1 (en) * 2021-09-22 2023-01-24 Sap Se System and method for facilitating metadata identification and import

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60116737A (ja) 1983-11-29 1985-06-24 Sanpo Shindo Kogyo Kk 銅基合金
US6035300A (en) * 1995-12-15 2000-03-07 International Business Machines Corporation Method and apparatus for generating a user interface from the entity/attribute/relationship model of a database
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
SG77163A1 (en) 1998-03-06 2000-12-19 John Francis Chong A method of implementing an acyclic directed graph structure using a relational database
EP1105819B1 (en) 1998-08-26 2008-03-19 Fractal Edge Limited Methods and devices for mapping data files
US7082407B1 (en) * 1999-04-09 2006-07-25 Amazon.Com, Inc. Purchase notification service for assisting users in selecting items from an electronic catalog
JP3492246B2 (ja) 1999-07-16 2004-02-03 富士通株式会社 Xmlデータ検索処理方法および検索処理システム
US6853997B2 (en) * 2000-06-29 2005-02-08 Infoglide Corporation System and method for sharing, mapping, transforming data between relational and hierarchical databases
US7614036B2 (en) * 2001-03-22 2009-11-03 Robert D Bjornson Method and system for dataflow creation and execution
US6697624B2 (en) 2001-06-11 2004-02-24 Nokia Mobile Phones Ltd. Apparatus, and associated method, for effectuating a data service designated by a service delivery mode
US7010542B2 (en) * 2002-07-20 2006-03-07 Microsoft Corporation Result set formatting and processing
US7162469B2 (en) * 2002-07-20 2007-01-09 Microsoft Corporation Querying an object for properties
US7096216B2 (en) 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
US7191182B2 (en) 2002-07-20 2007-03-13 Microsoft Corporation Containment hierarchy in a database system
US7149733B2 (en) * 2002-07-20 2006-12-12 Microsoft Corporation Translation of object queries involving inheritence
US7146352B2 (en) 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US7739223B2 (en) 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
JP2006018596A (ja) * 2004-07-01 2006-01-19 Mitsubishi Electric Engineering Co Ltd データ階層表示装置およびデータ階層表示プログラム
CN1324464C (zh) 2004-08-04 2007-07-04 英业达股份有限公司 可针对电脑装置的错误状况即时提出解决方案的方法
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US20060253466A1 (en) * 2005-05-05 2006-11-09 Upton Francis R Iv Data Mapping Editor Graphical User Interface
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7526503B2 (en) 2005-08-15 2009-04-28 Microsoft Corporation Interactive schema translation with instance-level mapping
US7565349B2 (en) * 2005-11-10 2009-07-21 International Business Machines Corporation Method for computing frequency distribution for many fields in one pass in parallel
US8307012B2 (en) 2006-02-28 2012-11-06 Sap Ag Schema mapping and data transformation on the basis of a conceptual model
US7647298B2 (en) 2006-03-23 2010-01-12 Microsoft Corporation Generation of query and update views for object relational mapping
US20090210631A1 (en) * 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
US8270612B2 (en) 2006-12-18 2012-09-18 Sap Ag Mapping compound keys
US20080189240A1 (en) 2007-02-05 2008-08-07 Mullins Ward R System, method and software for creating or maintaining local or distributed mapping and transparent persistence of complex data objects and their data relationships
US9430552B2 (en) * 2007-03-16 2016-08-30 Microsoft Technology Licensing, Llc View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8280876B2 (en) * 2007-05-11 2012-10-02 Nec Corporation System, method, and program product for database restructuring support
US7747657B2 (en) 2007-06-08 2010-06-29 International Business Machines Corporation Mapping hierarchical data from a query result into a tabular format with jagged rows
CA2593233A1 (en) 2007-07-06 2009-01-06 Cognos Incorporated System and method for federated member-based data integration and reporting
WO2009039352A1 (en) 2007-09-20 2009-03-26 Ab Initio Technology Llc Managing data flows in graph-based computations
US8046383B2 (en) * 2007-10-24 2011-10-25 Sap Ag Mapping deep structured data structures
US10157195B1 (en) 2007-11-29 2018-12-18 Bdna Corporation External system integration into automated attribute discovery
CN101340282B (zh) 2008-05-28 2011-05-11 北京易恒信认证科技有限公司 复合公钥的生成方法
KR101499599B1 (ko) 2008-06-30 2015-03-18 아브 이니티오 테크놀로지 엘엘시 그래프 기반 계산에서의 데이터 로깅
US9720971B2 (en) * 2008-06-30 2017-08-01 International Business Machines Corporation Discovering transformations applied to a source table to generate a target table
AU2009280854A1 (en) * 2008-07-17 2010-02-18 Talisma Corporation Private Ltd. Method to send a short message service (SMS) campaign to a related object by selecting the base object
EP2370892B1 (en) 2008-12-02 2020-11-04 Ab Initio Technology LLC Mapping instances of a dataset within a data management system
EP2391938A4 (en) * 2009-01-30 2016-06-08 Ab Initio Technology Llc DATA PROCESSING WITH VECTOR FIELDS
KR101688555B1 (ko) * 2009-09-16 2016-12-21 아브 이니티오 테크놀로지 엘엘시 데이터세트 요소의 매핑
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
EP2531933A4 (en) 2010-02-05 2015-01-07 Medversant Technologies Llc SYSTEM AND METHOD FOR VISUAL MAPPING AND AUTOMATIC FILLING OF ELECTRONIC FORMS
EP2365447A1 (en) * 2010-03-11 2011-09-14 British Telecommunications Data integration system
US8392473B2 (en) * 2010-09-07 2013-03-05 Microgen Aptitude Limited Fast hierarchical enrichment
CN102487333B (zh) * 2010-12-06 2014-08-06 中国人民解放军理工大学 通用管理信息采集控制设备的构建方法
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US20130091184A1 (en) * 2011-10-10 2013-04-11 International Business Machines Corporation Correlating independent schema mappings
JP5098120B2 (ja) 2011-10-12 2012-12-12 株式会社日立製作所 計算機システム及びデータベース管理システムプログラム
WO2013142517A1 (en) 2012-03-20 2013-09-26 Krimmeni Technologies, Inc. Method and system for process working set isolation
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining
US10241961B2 (en) 2012-04-26 2019-03-26 Sap Se Augmented query optimization by data flow graph model optimizer
KR102031402B1 (ko) 2012-07-24 2019-10-11 아브 이니티오 테크놀로지 엘엘시 데이터 모델에서의 엔티티 매핑
US8838654B1 (en) * 2012-10-23 2014-09-16 Dell Software Inc. Data modeling system for runtime schema extensibility
US9535951B2 (en) 2013-05-31 2017-01-03 International Business Machines Corporation Entity integration using high-level scripting languages
CN103279542B (zh) * 2013-06-05 2018-05-22 中国电子科技集团公司第十五研究所 数据导入处理方法及数据处理装置
JP6208491B2 (ja) 2013-08-07 2017-10-04 京セラ株式会社 ユーザ端末、方法、及びプロセッサ
CA2941115C (en) 2014-03-14 2023-04-04 Ab Initio Technology Llc Mapping attributes of keyed entities

Also Published As

Publication number Publication date
US20150261882A1 (en) 2015-09-17
JP2017511935A (ja) 2017-04-27
CN106104592B (zh) 2020-01-31
EP3117379A1 (en) 2017-01-18
AU2015229007A1 (en) 2016-09-08
CN106104591B (zh) 2019-12-17
WO2015139018A1 (en) 2015-09-17
AU2020202218A1 (en) 2020-04-23
SG11201606941VA (en) 2016-09-29
SG11201606776XA (en) 2016-09-29
KR102409552B1 (ko) 2022-06-15
US20150261694A1 (en) 2015-09-17
JP2017513100A (ja) 2017-05-25
KR20160132942A (ko) 2016-11-21
AU2015229005A1 (en) 2016-09-01
WO2015139016A1 (en) 2015-09-17
KR102371811B1 (ko) 2022-03-07
US11281596B2 (en) 2022-03-22
CN106104592A (zh) 2016-11-09
US10191863B2 (en) 2019-01-29
CA2940341A1 (en) 2015-09-17
EP4280135A3 (en) 2024-02-21
EP4280135A2 (en) 2023-11-22
US10191862B2 (en) 2019-01-29
CN106104591A (zh) 2016-11-09
US20190391934A1 (en) 2019-12-26
KR20160132941A (ko) 2016-11-21
JP6609262B2 (ja) 2019-11-20
CA2941115C (en) 2023-04-04
CA2941115A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
US11281596B2 (en) Mapping attributes of keyed entities
AU2019213302B2 (en) Filtering data lineage diagrams
AU2013295864B2 (en) Mapping entities in data models
US10521459B2 (en) Filtering data lineage diagrams

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190125

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190225

R150 Certificate of patent or registration of utility model

Ref document number: 6488317

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250