(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【0003】
一態様において、一般に、方法は、一つ以上の入力値に基づいて一つの出力値を生成する少なくとも一つの規則の実例(rule case)を有する規則を受け取ること、入力データセットからデータを受け取り且つ出力データセットにおける少なくとも一つの出力変数に対する第1の一連の値を発生することを含む前記規則に基づいて前記データを変換する変換を発生することであって前記第1の一連の値における少なくとも一つの値が第2の一連の値を含むこと、及び前記出力データセットにおける前記少なくとも一つの出力変数に対応する出力フィールドを前記第2の一連の値を格納するために提供すること、を含む。
【0004】
複数の態様は一つ以上の以下の特徴を含むことができる。
【0005】
前記変換はグラフによって表現されるグラフに基づくアプリケーション(graph-based application)の要素(component)に含まれ、前記グラフは前記グラフの表現要素内に頂点を有し、前記グラフにおける頂点間の有向リンクは要素間のデータの流れを表す。
【0006】
前記変換を含む第1のグラフ要素は、前記入力データセットから前記変換へのデータの流れを提供することができる。
【0007】
前記第1のグラフ要素は実行可能な計算要素であり、前記グラフは前記入力データセットを表現するデータ格納要素である第2のグラフ要素を含むことができる。
【0008】
一つの出力データセットにおける少なくとも一つの出力変数に対する第1の一連の値を生成することは、一つの出力テーブルに対して複数の行を生成することを含み、前記行のそれぞれは前記出力変数を含む変数のセットに対する複数の値を有するレコードを定義(規定)する。
【0009】
前記出力フィールドを前記第2の一連の値を格納するために提供することは、前記第2の一連の値の所定数を格納するためのアレイを提供することを含み、前記所定数はユーザが特定した数に修正可能なデフォルト数である。前記出力フィールドはテーブルにおけるセルを含むことができる。
【0010】
前記規則を受け取ることは、規則テーブルの少なくとも1行を受け取ることを含むことができ、その行は一つの規則の実例に対応しており、前記入力値の一つ以上もしくは組合せ、所定値又は、前記入力値の一つ以上から計算された値を含む出力を有する。
【0011】
前記規則の実例は、しきい値に等しい入力値を有すること、しきい値より大きい入力値を有すること、しきい値より小さい入力値を有すること、値のセットに属する入力値を有すること、値のパターンに合致する入力値を有すること、他の入力値と関係を有すること、他の規則のセットの出力値と関係を有すること、及び、メモリ内の値と関係を有すること、の少なくとも一つ以上を含むことができる。
【0012】
前記入力データセットは、スカラ変数の値及びベクトル変数の値を有するレコードを含むことができる。前記レコードの少なくとも一つは、所定数のレコードを格納するアレイを含むことができ、前記所定数はユーザが特定した数に修正可能なデフォルト数である。前記レコードの少なくとも一つは、前記レコードの少なくとも一つにおけるサブレコードとのキー関係を規定する内部参照テーブルを含む。
【0013】
前記方法は、規則に応答して、前記内部参照テーブルにおける前記キー関係に基づいて前記出力データセットにおける前記出力変数に対して前記第2の一連の値を提供することを含むことができる。
【0014】
前記方法は、更に、規則における規則の実例に応答して、前記規則の実例をトリガすることを含み、前記出力データセットにおける前記出力変数に対して値を発生することができる。規則の実例をトリガすることは、前記規則における前記少なくとも一つの規則の実例を満足する前記入力データセットにおけるスカラ値に基づいて前記規則をトリガすることを含むことができる。
【0015】
規則をトリガすることは、前記規則における前記少なくとも一つの規則の実例を満足する前記入力データセットにおけるベクトル内の各値に基づいて前記規則をトリガすることを含むことができる。
【0016】
規則の実例をトリガすることは、前記規則における前記少なくとも一つの規則の実例を満足する前記入力データセットにおけるベクトルに適用される集約関数の出力に基づいて前記規則の実例をトリガすることを含むことができる。
【0017】
前記変換を発生することは、前記規則内の複数の規則の実例の各々を論理式に変換して複数の論理式を形成すること、及び、その複数の論理式をコンピュータが実行可能なコードに翻訳(コンパイル)することを含むことができる。
【0018】
前記複数の論理式を翻訳(コンパイル)することは、複数の論理式を組合せること、個々の論理式を最適化すること、及び、論理式のグループを最適化すること、の一つ以上を含むことができる。
【0019】
他の態様において、一般に、
データの流れを表すリンク要素によって接続されたデータ処理要素を有するグラフに基づく計算における要素を更新するためのコンピュータプログラムを格納するコンピュータ読出し可能媒体であって、コンピュータを動作させるための以下の命令を含む。
一つ以上の入力値に基づいて出力値を発生する少なくとも一つ規則の実例を有する規則を受け取る命令;入力データセットからデータを受け取って前記規則に基づいて前記データを変換する変換を発生する命令であって、前記規則が出力データセットにおける少なくとも一つの出力変数に対する第1の一連の値を発生することを含み、前記第1の一連の値における少なくとも一つの値が第2の一連の値を含むものである、命令;及び、前記出力データセットにおける前記少なくとも一つの出力変数に対応する出力フィールドを前記第2の一連の値を格納するために提供する命令。
【0020】
他の態様において、システムは、
一つ以上の入力値に基づいて出力値を発生する少なくとも一つ規則の実例を有する規則を受け取る手段、入力データセットからデータを受け取って前記規則に基づいて前記データを変換する変換を発生するように構成されたプロセッサであって、前記規則が出力データセットにおける少なくとも一つの出力変数に対する第1の一連の値を発生することを含み、前記第1の一連の値における少なくとも一つの値が第2の一連の値を含む、プロセッサ、及び、前記出力データセットにおける前記少なくとも一つの出力変数に対応する出力フィールドを前記第2の一連の値を格納するために提供する手段、を含む。
【0021】
本発明の他の特徴及び利点は以下の説明及び特許請求の範囲の請求項から明らかになるであろう。
【発明を実施するための形態】
【0023】
ビジネス規則は規準のセットとして表現でき、例えば、これらの規準を用いてデータを一つのフォーマットから他のフォーマットへと変換し、データについて決定をし、または入力データのセットに基づいて新しいデータを発生することができる。例えば、
図1において、飛行機予約システムにおけるレコード102は、搭乗者名前104、その搭乗者が本年に飛行したマイル数106、その搭乗者の搭乗券のクラス108及び飛行機におけるその搭乗者の現在の横列(row)110を示す。ビジネス規則は、このような搭乗者が搭乗グループ“1”つまりグループ118内に分類されるべきであることを指示することができる。ビジネス規則は一般に人間が理解し易くなっており、例えば“ファーストクラス搭乗者はグループ1”となっているが、データ処理に使用され得るようになる前にコンピュータが理解できる言語に翻訳される必要がある場合がある。従って、ビジネス規則を履行するために、一つ以上のデータソース(例えば、入力データセット100)から一つの入力レコード(例えば、レコード102)を受け取り、且つ、搭乗者の名前104及びグループ118を示す出力レコード(例えば、レコード114)を出力データセット120内に生成する、変換112が発生される。入力データセット及び出力データセットは、データストリームとも称呼される。
【0024】
非技術的なユーザに対して変換112の生成を簡単にするために、典型的には、ビジネス規則のセット(一つの規則のセット又は複数の規則のセットとも称呼される)をユーザに馴染みのあるフォーマットで入力するための編集ツール(図示せず)が提供される。その規則のセットは、順々に、コンピュータシステムに変換112を発生するように指示し、変換112は更にコンピュータシステムに入力データセット100をどのように処置すべきか及び出力データセット120内に何を生成すべきかを指示する。単一の変換に対応する一つの規則もしくは規則セットは、入力レコードに依存する規則セットの出力変数に対して異なる値を計算する一つ以上の規則の実例(rule case)を含むことができる。規則における規則の実例がトリガされると、その規則、特に、規則の実例は発火(fire)されたとみなされる。例えば、規則における唯一の規則の実例が記録(file)され得る。幾つかの例では、規則の実例が発火されると、規則全体が発火されているとみなすことができる。幾つかの実施形態においては、例えば、入力データセットにおける入力スカラもしくはベクトル値がその規則の実例又は規則における一つ以上の条件を満たせば、その規則の実例又は規則は、トリガ又は発火される。また、規則セットは他の規則セットを含むことができる。この他の規則セットは、付加的又は代替的な出力変数に対して値を生成できる。例えば、規則セットは、“含まれた”規則セットと称呼される他の規則セットを直接含むか又は間接的に参照することができる。
【0025】
変換を発生するシステムの例は
図2に示される。発生器150は、エディタ154から規則セット152を入力として受け取り、変換156を発生する。発生した変換156は、システムのアーキテクチャと変換及びビジネス規則の目的とに依存してグラフに用いられる要素として又はグラフ自身全体としてグラフに基づく計算システム158に提供される。グラフに基づく計算システム158は、プログラマが要素を構築ブロック(ビルディングブロック)として用いることによりグラフに基づくアプリケーションを構築することを可能にする計算環境を提供することができる。グラフに基づくアプリケーションは、しばしば有向グラフによって表現される。有向グラフは、グラフにおいて要素を表す頂点(データ格納要素又は実行可能な計算要素)を有し、グラフにおいて要素間のデータの流れを表す有向リンク又は“辺(edges)”を有する。データフローグラフ(単に“グラフ”とも称呼される。)は、モジュールのエンティティ(modular entity)である。各グラフは、一つ以上の他のグラフによって構成することができ、また、特別のグラフはより大きなグラフにおける一つの要素であり得る。
【0026】
発生器150は、例えば、標準ツールを用いて規則セット152を受取って変換156を出力するように構築された、コンパイラ、特注のプログラム、又はグラフに基づく計算とすることができる。変換156を生成し次いで変換156を更新するための当業者に知られた如何なる技術を用いても変換156を発生できる。例えば、変換を生成する技術は2007年4月10日出願の米国特許出願第11/733,434号、発明の名称「ビジネス規則の編集及びコンパイリング」に記載され、参考のためにこの全体がこの明細書に組み入れられる。
【0027】
幾つかの例において、変換156は、入力レコード102に対応する出力変数のための唯一の値を発生する。このようなスキームにおいては、規則セットは多くとも1回しか発火できない。従って、幾つかの問題(例えばデータ品質問題)は、変換156を用いては容易には実現することができない。幾つかの例において、出力データセット120内の出力変数は「一回だけ書き込める出力(Write-Once Outputs)」を含むことができる。一般に、「一回だけ書き込める出力」は通常、所与の一つの入力レコードに対して1回のみ書込まれる複数の出力変数であり、その所与の一つの入力レコードに対して唯一の値を格納する。このような変数を発生する規則セットは「一回発火型(Fire-Once)」規則と呼ばれる。
【0028】
幾つかの例において、「多数回発火型(Fire-Many)」規則は「アキュムレータ」出力変数、例えば、与えられた一つの入力レコードに対して唯一の値の代りに一連の値を受けることができる変数、を発生できる。「多数回発火型」規則は、トリガされた最初の規則の実例だけでなく、その入力レコードに対してトリガされた規則セット内の総ての規則の実例に対して発火するだろう。
【0029】
幾つかの例において、一つの規則セットは、
図3に示したように、セル内で交差する行及び列を有する表形式の(又は、「スプレッドシート」の)フォーマットで入力することができる。テーブル200におけるトリガ列202、204、206、208は、利用可能な入力データ値に対する規準に対応し、行210a−hは規則の実例(即ち、利用可能な入力データ値に関係する規準のセット)に対応する。トリガの列と当てはまる規則の実例の行210nとが交差する位置のセルは、そのトリガの列及び規則の実例に対する一つの規準を含む。規則の実例が規準を有する各トリガ列に対して
図1の与えられたレコード102のデータ値がそのトリガする規準に合致すれば、規則の実例210nはその与えられたレコード102に適用する。規則の実例210nを適用すると、出力は一つ以上の出力列212に基づいて発生される。上述したように、一般に、入力関係をすべて満足している規則の実例は「トリガされた」と称呼され、その規則セットは「発火された」と称呼される。各出力列212は可能性のある出力変数に対応し、その列212とその当てはまった規則の実例の行210nとが交差する位置の対応するセルにおける値は(その変数に対してあれば)その出力を決定する。幾つかの例において、セルはその変数に割当てられた値を含むことができ、或いは、そのセルは以下に説明するようにその出力値を発生するように値が求められる数式(表現)を含むことができる。
図3においては唯一の出力列しか示されていないが、幾つかの例においては二つ以上の出力列が存在するであろう。
【0030】
トリガ列には幾つかの異なるタイプ(例えば、一つ変数に対応する複数の列、一旦計算された後に変数のように取り扱われる数式、及び、数式のみを含む列を含む。)が存在するであろう。数式のみを含む列は、ある点で、変数に対応する列又は変数として取り扱われる列よりも簡素である。このようなトリガ列は、例えば、トリガ列の規準を規定するための以下のタイプのセル値を含むことができる。
・数式。その数式の値が0でない又は非空値であれば、条件が真と考えられる。
・キーワード「何でも(any)」又は空ストリング。条件は常に真である。トリガ列における各空セルはキーワード「何でも(any)」を明示的に含んでいるセルと等価である。
・キーワード「それ以外(else)」。「それ以外(else)」を含むセルの上のセルのいずれも真でなければ、左側のすべてのセルが同一である行において条件は真である。
・キーワード「同一(same)」。上のセルが真であれば、条件は真である。
【0031】
一つの変数(複数の列変数)に対応する複数の列は2つのタイプのセルを有することができる。セルの一つのタイプは数式セルである。このようなセルは正に上述したように複数の数式のみを含む1列におけるセルのようにふるまう。しかしながら、キーワード“この(this)”は、その列変数を参照する数式において用いられ得る。セルの他のタイプは比較値である。比較値の文法例は次のとおりである。
比較値::=複合値(“または”複合値)*
複合値::=単純値(“かつ”単純値)*
単純値::=[“否”](数値式|単純関数|会員式)
値表現::=[演算子]値要素
演算子::=“>”|“<”|“>=”|“<=”|“!=”|“=”|“等しい”
値要素::=定数|定数|変数|“(“数式”)”
単純関数::=“空である”|“空白である”|“有効である”|“定義される”|“bゼロ(bzero)である”
会員式::=“中(in)”“[“値要素((“,”|“へ(to)”|“又は”) 値要素)*”]”
但し、“*”は用語が1回以上繰返されることを意味する。
【0032】
他の適切なプログラム言語あるいは構文を用いることができる。例として、C、Java(登録商標)、DML又はPrologがある。列変数は、演算子、関数又は会員式に従って比較値と比較される。
図3の例では、最初の2つの列202,204は、“>=” 演算子を有する比較値を含む。従って、その列の値が対応する値より大きいか等しければその規準は満足される。「座席のクラス」の列のように、演算子がなければ、(演算子は)「等しい(equals)」と見做される。いかなるプログラム言語又は構文が基礎となる(underlying)システムに使用されていようと、定数は如何なる合法的な(legal)定数とすることができる。数式は、列変数と比較されることになる互換性のあるデータタイプを戻すように用いられるその言語において合法的な如何なる数式とすることができる。幾つかの例では、比較値内部の数式は不明瞭さを避けるために括弧で括ってある。
【0033】
図3の例において、第1の行210aは唯一の列202内に規準を有し、この規準は、旅行者の頻繁に飛行機を利用する人の飛行マイルの合計数が1,000,000よりも大きければ、他の列がどんな値であろうともその規則の実例が当てはまることを示している。その場合、そのユーザの「搭乗グループ」出力変数はグループ1に設定される。同様に、第2の規則の実例210bは、ファーストクラスのいかなる搭乗者もグループ1に属することを示している。幾つかの例においては、複数の規則は順番に評価されるので、従って、1,000,000マイルを超え且つファーストクラス券の搭乗者はグループ1に属するであろうが、第1の規則の実例210aのみがトリガされるであろう。
【0034】
また、規則の実例210a−h(
図3)は、個別の単純な規則として表現されることができ、
図4に示したように、規則のそれぞれは、それ自身の固有のテーブル(表)中に表現される。規則220a−dは
図3の行210a−dにそれぞれ対応し、規則220eは行210e−hに対応する四つの規則の実例を有する。ユーザは、
図3に示した全体のテーブルを発生するよりはむしろ、これらの個々の規則を個別に生成するであろう。各規則の実例は、総てのトリガ列に対して一つの値を(少なくとも内在的に)含み、且つ、総ての出力列に対して一つの値(この値は空白、即ち、効率的に「何でも」に設定され得る。)を含む。複数の規則が同一の出力を発生するとき、その規則は順序付けされ、その規則は、一つの規則における一つの規則の実例がその入力をトリガして出力を発生するまで順に考慮される。一つの規則においてトリガする規則の実例がなければ、同一の出力を発生する次の規則が処理される。いずれの規則においても、出力のためにトリガする規則の実例がなければデフォルト値を用いる。
【0035】
幾つかの例において、編集ツールのユーザインタフェイスを用いて数式を含むセルを図形的に特定(識別)することができる。従って、ユーザは、それ自身で真偽が評価される数式と、列変数と比較される値を戻す数式と、の相違を理解できる。ユーザがタイピングしているときに、ユーザは特定のセルが数式セルとすべきことを、例えば始めにアスタリスクをタイプすることによって、示すことができる。
【0036】
出力変数に対応する列に対してセルは次のものの一つを含むことができる。
・値。出力変数に割当てられる値である。
・数式。その数式の値が出力変数に割当てられる。数式が空であるという値を出すならば、その出力フィールドが空にはなれないのでない限り、そのフィールドは空の値を得る。どちらの場合でも、エラーが発生させられる。
・キーワード“空”。出力フィールドが空になれるのであれば、そのフィールドには空が割当てられる。それ以外は、エラーが発生させられる。
・空ストリング。出力フィールドがデフォルト値を有すれば、そのデフォルト値が割当てられる。そうでなければ、そのセルは、そのセルがキーワード“空”を含むかのように取扱われる。
・キーワード“同一”。出力フィールドにはその上のセルにおいて計算された同一の値が割当てられる。
【0037】
数式に加えて、ユーザは規則内のいかなるセルにもコメントを付け加えることができ、そのコメントはユーザインタラクション(例えば、クリック又はポインタを「うろつかせる(hovering)こと」)に応答して表示され得る。
【0038】
幾つかの実施態様においては、一つの規則セット(例えば、以下の表1に示したルール)は単一の入力レコードに対して複数の出力レコードを発生する複数の規則の実例を含むことができる。
【表1】
【0039】
上述の規則セットは、家族の予算の観点から家族の自動車選択を考慮して自動車のトリムレベル(調整レベル)を出力する。このような規則セット(「標準化する規則セット」と称呼する。)の例においては、出力値の少なくとも一つはキー出力値(例えば「S2000CR」として特定される。キー出力値「S2000CR」を計算する規則の値を求めるとき、出力値「S2000CR」を発生した入力データレコードによりトリガされた規則の実例(自動車選択:ホンダS2000、及び、予算:>=37000)が注目される。次に、その規則セットは、先にトリガされた規則の実例(自動車選択:ホンダS2000、及び、予算:>=37000)を無能化して再び評価され、他の規則の実例がトリガして出力値を出力するか否かを調べる。上述の処理をトリガされる更なる規則の実例がなくなるまで繰返す。各出力値は別個の出力レコードとして格納される。幾つかの例において、グループ内の一つがトリガすれば、そのグループ内の他の規則の実例は同一の入力レコードに対する次の繰返し時に無能化されるように、規則の実例がグループ化される。
【0040】
幾つかの例において、標準化する規則セットに対応する変換は2段階の処理を用いることができる。第1に、入力レコードが読まれ、例えば「長さ」関数を呼出すことによって総数(カウント、count)が計算される。この総数は、発生されるであろう出力レコードの数に対応する。次に、各出力レコードに対して他の関数、即ち、「標準化(normalize)」 関数が呼び出される。標準化関数は、入力レコードのコピー及び長さ関数によって発生された総数から現在のインディックスを受取り、出力値を異なる出力レコード内に発生する。例えば、入力レコードが家族の大きさ四(4)及び予算$20,000を有すれば、変換は三つの出力レコードを発生する。三つの出力レコードは、3つの提案車(アコードセダン、シビック及びエレメント)のそれぞれに対して一つずつである。
【0041】
ある実施態様において、変換は、「長さ」関数を用いて自動車選択に対する総ての可能な複数の値を計算し、この結果、出力レコードの数が分かる。一旦、変換がすべての可能な自動車出力値を計算すると、次に、変換は出力レコード数だけ「標準化」 関数を呼び出して前記複数の値を各出力レコードに割当てる。
【0042】
幾つかの実施態様において、上述の2段階処理の代りに、変換は、計算する値がなくなるまで「標準化」 関数を直接複数回呼び出すことによって自動車選択のための総ての可能性のある値を計算することができる。
【0043】
図5は出力変数508に対する複数の値504を発生するための規則セット500の例を示す。ユーザは、ある特定の車両が無効であると考えられた第1の理由だけではなく総て理由を知ることに興味があるだろう。幾つかの例において、
図6に示したように、第1のステップは、ユーザがエディタのユーザインタフェイスの出力タブ600を用いて規則セット500が複数の出力値504を発生することを特定する。
【0044】
このようなものとして、ユーザは、出力変数508「名前有効メッセージ」が一連の値504を受け取るためのアキュムレータ変数であることを示す。出力変数508に対応する出力タイプ604は「アキュムレータ」608を示すように変化する。
【0045】
幾つかの例において、出力変数508に対応するスカラ値は「スコアーカード」スタイルの規則セットとともに使用するために「蓄積」され得る。スコアーカードスタイルの規則セットは、ユーザが正又は負のスコアを規則値に含めるべきと指定するビジネス規則のタイプを参照する。従って、出力ベクトルとしての出力変数508に対応する値を格納するよりもむしろ、出力変数508に対応して蓄積された値の合計をスカラ値として格納する。
【0046】
幾つかの例において、アキュムレータ出力変数508は出力データセット内の各レコードに対する可変長ベクトル又はアレイに配置される(map)。そのようなものとして、出力変数508をアレイとして取扱えば、ユーザは出力変数508のサイズを特定できる。ユーザは最大総数612のパラメータを変化させることによって出力変数508の長さを特定できる。従って、フィールド614は、出力変数508がある数(例えば、20)の値を受け取るためのアレイとして取扱われることを示す。幾つかの例において、ユーザが特定するサイズが存在しないときには、デフォルトによって出力変数508は制限のない数の値を受け取ることができる。そのようなものとして、最大総数612のパラメータは、例えば、「制限なし」を示す。幾つかの例において、アキミュレータタイプの出力変数を一度だけ書き込めるタイプの出力変数から区別させるために、エディタはユーザが一度だけ書き込める変数のための最大総数612のパラメータを編集することを禁止することができる。幾つかの例において、ユーザがアキミュレータタイプの出力変数から一度だけ書き込めるタイプの出力変数に切り換えると、エディタは最大総数612のパラメータをクリアすることができる。
【0047】
図7は複数回発火型規則セット、例えば「人物確認(Validate Person)」を示す規則タブ700の例である。アキュムレータ出力変数708は、「一度だけ書き込まれる出力」又は「アキュムレータ出力」の注釈によって、一度だけ書き込まれる出力712から視覚的に区別される。更に、他の種々の注釈も可能である。例えば、規則セットのタイプ)例えば、「複数回発火型規則」(アキュムレータ出力を発生する規則)、又は、1回発火型規則」(スカラ出力を発生する規則)は、規則タブ700の上部704に示され、或いは、一つの側の縦の注釈712は「1回発火型」又は「多数回発火型」を示す。幾つかの例において、1回発火型規則及び多数回発火型規則に対して異なるアイコンを用いることもできる。幾つかの例において、発火した規則の実例の総てはユーザによる検査のために強調される。
【0048】
図8は、アキュムレータ変数801、「確認メッセージ」、の内容を示す結果タブ800の例である。図示するように、出力変数801は各レコードに対して第1の一連の値813を呈することができ、その第1の一連の値813(例えば、TANGELA SCHEPPに対応する値)の少なくとも一つの値は、コンマによって分離された値の集まりとして表示された第2の一連の値816を呈することができる。幾つかの例において、ユーザはアキュムレータ出力値上にてマウスポインタを「うろつかせて」、アキュムレータ値の一つのリストを示すツールの先端を見えるようにすることができる。幾つかの例において、例えばベンチマークデータを含むテストを実行するとき、そのベンチマークデータにおけるベクトルが出力におけるベクトルとどのようであれ相違するのであれば、出力を異なるものとしてマークすることができる。例えば、相違は、ベンチマークベクトルが出力ベクトルと異なる数の項目を有すること、ベンチマークベクトルが出力ベクトルと異なる順序で項目を有すること、及び、各ベクトル内の個々の項目が異なること、を含むことができる。
【0049】
作動において、アキュムレータ出力変数は、以下に説明するように、複数回発火型規則セットによって発生された複数の出力値を受け取るのに用いられる。例えば、表2に示した次の規則セットについて考察する。
【表2】
【0050】
上記の規則セットは、例えば、家族の大きさが4であり、予算が$20,000であることを考慮して3つの車(アコードセダン、シビック及びエレメント)を提案する。従って、この場合、出力データセットにおける出力変数「自動車選択」は複数の値を受け取ることができるとみなされる。その規則セットにおける各規則の実例は評価され、規則の実例がトリガするといつでも、その規則セットからの値がアキュムレータ出力変数に加えられる。
【0051】
上述の規則セットのトリガは、入力値、ルックアップ及び他の出力値を含むスカラ変数(非ベクトル)であることができる。幾つかの例においては、出力変数は他の出力変数を計算することができる。幾つかの例において、非ベクトル出力のみがトリガとして用いられ得る。幾つかの例において、間接的に一つのアキュムレータ出力変数を用い、集約関数を用いることによって他のアキュムレータ出力変数を計算することができる。例えば、表3に示した次の規則セットについて考察する。
【表3】
【0052】
上述の規則セットは「家族構成員」と呼ばれるアキュムレータ出力変数を計算する。次に、表4に示した規則セットについて考察する。
【表4】
【0053】
表4の規則セットは、集約関数を用いて「家族サイズ」と呼ばれるスカラ(非ベクトル)を計算する。従って、始めに、すべての我々の家族メンバのリストを含む出力ベクトルが計算される。次に、カウント関数はそのリスト内の人の数を数える。次に、そのカウント値が入力として用いられて自動車のリストを計算する。
【0054】
図9は、スカラ及びベクトルを用いて実施態様を図示し、この態様はアキュムレータ出力変数を用いて他のスカラ及びベクトルの値を計算する。図示されたように、S1、S2及びS3はスカラ変数を表わす。V1及びV2はベクトル変数を表わす。S1を用いてS2が計算され、次に、S2を用いてV1の4つの異なる値が計算される。次に、V1の四つすべての値を用いて(例えば集約関数の使用を介して)S3が計算される。最後に、S3を用いてV2の3つの値が計算される。
【0055】
幾つかの実施態様において、ユーザが以下に述べる操作例のいずれかを実行しようとするとエディタは検証(validation)エラーを発生することができる。:データセットのいずれかにおけるフィールドのタイプが可変長ベクトル以外のものであるときに出力をアキュムレータとして印を付す操作;データセットのいずれかにおけるフィールドのタイプがベクトルのときに出力を「一度だけ書き込める」として印を付す操作;(一度だけ書き込める出力のみがデフォルト値を有することができる実施態様において)アキュムレータに対してデフォルト値を提供する操作;アキュムレータ出力を比較トリガ列として用いる操作;単一の規則内にアキュムレータ出力と一度だけ書き込める出力とを混合する操作;及び無制限ではない値又は正ではない値をアキュムレータ出力変数の最大総数(カウント)パラメータに入力する操作。
【0056】
幾つかの例において、入力レコードはベクトルを含むことができる。
図10Aは、少なくとも2つのベクトルレコード、即ち、運転者レコードベクトル952及び車両レコードベクトル954を含む入力レコード950のフォーマット例である。
図10Bは入力レコード950用のデータ956の例である。
【0057】
集約関数は規則セットに含まれてレコードベクトル952、954をスカラに変換できる。例えば、この規則セットは「最年少運転者の年令」という仕様を含むことができる。幾つかの実施態様において、その仕様は「最小(運転者年令)」として表現でき、或いは、「do minimum(in 0. 運転者、「年令」)」のようなデータ操作言語(DML)機能を用いることができる。この規則セットに応答してスカラ値、例えば21(
図10BのPebblesのレコード)が発生する。幾つかの例において、動作中、関数は運転者レコードベクトル952におけるすべてのレコードをループ(loop)して運転者年令の最小値を見つける。
【0058】
他の例を考察すると、規則セットにおける仕様は「最年少男性運転者に対して1を加えたポイント数”とすることができる。この仕様は「最小値(運転者年令、運転者性別=男、運転者ポイント+1)」として表現できる。この規則セットに応答してスカラ値、例えば(BamBamのレコードから)14が発生する。いくつかの実施態様において、これらのスカラ値はスカラである中間変数もしくは出力変数に割当てることができる。
【0059】
幾つかの例において、規則はレコードベクトルの各要素に対して書くことができる。例えば、表5に示した以下の規則セットについて考察する。
【表5】
【0060】
表5の規則セットの仕様は「各車両について、車両値(車両価値)に対する調整値を計算する。その調整値は、車両がシートベルトを有していれば100、エアバッグを有していれば150、そして両方を有していれば300である」。図示するように、出力変数「値調整」はベクトル変数である。上述の規則に応答して、ベクトル、例えば[0,300,100]が発生する。幾つかの例においては、動作中、規則セットは車両レコードベクトル954の各レコードに対して1回実行されるように複数回実行される。
【0061】
ある例においては、また、規則セットはスカラ値又は同一長であれば他のベクトルを参照できる。例えば、表6に示した以下の規則セットについて考察する。
【表6】
【0062】
表6の規則セットにおける仕様は「各車両について、調整された値を計算する。その調整された値は、車両値、その値調整及び地理的リスクの和である。車両年数が2年より古ければ50減算する。」である。この規則においては、「調整された値」はベクトル変数である。従って、等しくないベクトル長による実行時間誤差を避けるために、ベクトル変数「値調整」は車両レコードベクトル954の長さと同一の長さを有する。この規則セットに応答して、ベクトル、例えば[1030,1880,1330]が発生する。
【0063】
幾つかの例において、XMLレコードが複雑であるときには、単一の入力レコードが用いられて多くの論理レコードをキー関係で関係付けることによってその論理レコードを表わすことができる。例えば、車両レコードベクトル954における各車両のサブレコードは、外来キー(例えば「運転者」)を含み、運転者レコードベクトル952におけるマッチングキー(例えば「名前」)に関係させることができる。このように、レコードベクトル952、954は、ルックアップファイル又は内部参照テーブルとして実行できる。例えば、車両レコードベクトル954に関係付けられた内部参照テーブルは次の通りである。
主運転者名前(主キー)
主運転者年令
主運転者性別
主運転者ポイント数
【0064】
従って、内部参照テーブルは、レコードベクトル内のサブレコードを内部参照テーブル内のレコードとして取扱うことにより、各入力レコードに対して生成され得る。動作中において、例えば、表7に示した規則セットについて考察する。
【表7】
【0065】
表7の規則セットにおける仕様は、「保険契約運転者の年令を計算する。これは保険契約運転者の値を関連する内部参照テーブルのキーとして用いることによって見つけられた主運転者年令である。」である。この仕様はこの値を主運転者年令列に戻し、次に、「保険契約運転者の年令」という出力変数に割当てられる。「保険契約運転者の年令」はスカラ値である。別の例では、表8に示した規則セットについて考察する。
【表8】
【0066】
表8の規則セットにおける仕様は、「購入時年令を計算する。これは車両年数と車両主運転者の年令との差である。」である。解説の便宜上、ルックアップキーには「車両主運転者」がデフォルトとして割当てられると仮定する。出力変数「購入時年令」はベクトル変数である。従って、上述の規則に応答して [31,19,27]が発生する。
【0067】
幾つかの例において、ルックアップキー「車両主運転者」は、括弧によって明示的に「主運転者年令(車両主運転者)−車両年令」のように表示され得る。
【0068】
ある例において、内部参照テーブルは集約関数において用いることができる。例えば、仕様は「全車両の主運転者の平均年令を計算する」とすることができる。この仕様は、関数、例えば「平均(主運転者年令(車両主運転者))」によって実行することができる。この関数に応答してスカラ値、例えば29.67が発生する。
【0069】
幾つかの実施態様において、ユーザは上述の規則セットにおける計算ステップを視覚化することができる。例えばテストモードにおいて、ユーザが興味のある値、例えば入力変数及び出力変数(スカラ変数及びベクトル変数の両方)の中間値、を調べることは有益である。当業者に知られたステップを視覚化するための種々の技術を用いることができる。例えば、入力レコードベクトル952、954における各要素に対する1行を有するポップアップテーブルが実施され、どの項目がフィルタで取り除かれたか或いは計算されたかを示す中間値を要約することができる。
【0070】
上述の技術はコンピュータ上で実行されるソフトウェアを用いて実現できる。例えば、このソフトウェアは一つ以上のプログラムされたもしくはプログラム可能なコンピュータシステム(分散型、クライアント/サーバ型又はグリッド型等の種々のアーキテクチャからなる)上で実行される一つ以上のコンピュータプログラム上の手続を形成する。この各コンピュータシステムは、少なくとも一つのプロセッサ、(揮発性メモリ及び不揮発性メモリ、及び/又は記憶素子を含む)少なくとも一つの記憶システム、少なくとも一つの入力装置又は入力ポート、及び、少なくとも一つの出力装置又は出力ポートを含む。ソフトウェアは、例えば、計算グラフの設計及び構成に関係した他のサービスを提供するより大きなプログラムの一つ以上のモジュールを形成できる。グラフのノード及び要素は、コンピュータ読出し可能媒体に格納されたデータ構造又はデータ収納庫に格納されたデータモデルに合致する他の編成データとして実現され得る。
【0071】
ソフトウェアは、汎用又は専用のプログラマブルコンピュータによって読み出し可能な媒体(例えばCD−ROM)に提供され、或いは、(伝播信号に符号化されて)ネットワークを通してそのソフトウェアが実行されるコンピュータに配信され得る。すべての機能は汎用コンピュータ又はコプロセッサのような専用ハードウェアを用いて実現できる。ソフトウェアは、そのソフトウェアによって特定された計算の異なる部分が異なるコンピュータによって実行されるという分散方式によって実現できる。好ましくは、そのような各コンピュータプログラムは、汎用又は専用プログラマブルコンピュータによって読み出し可能な記憶媒体又は装置(例えば、固体メモリ又は媒体、もしくは磁気的又は光学的媒体)上に格納されるか或いはダウンロードされ、記憶媒体又は装置がコンピュータシステムによって読み出されて上述の手順を実行するときにコンピュータを構築及び動作させることができる。また、本発明のシステムはコンピュータプログラムを構築するコンピュータ読み出し可能記憶媒体として実現され、このように構築された記憶媒体はコンピュータシステムを特殊及び予め定義された方法で動作させて上述の機能を実行させることができる。
【0072】
いくつかの本発明の実施例を記載した。しかしながら、種々の変更が本発明の精神及び請求の範囲から逸脱することなく採用されることが理解されよう。例えば上述のいくつかの工程は順序が独立であり従って上述の順序と異なる順序で実行できる。
【0073】
上述の説明は例示であり、本発明の特許請求の範囲によって定義される発明の範囲を限定する意図はないことが理解されるべきである。例えば、上述の機能ステップのいくつかは全体の処理に影響することなく異なる順序で実行できる。他の実施例は特許請求の範囲の請求項の範囲内にある。