(57)【特許請求の範囲】
【請求項１】
データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則を指定するためのコンピューティングシステムであって、
それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングするように構成されたユーザインタフェースモジュールを備え、前記ユーザインタフェース要素が、
前記ユーザインタフェース要素の１又は２以上の第１のサブセットであって、前記１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、前記データセットの前記複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、
前記ユーザインタフェース要素の複数の第２のサブセットであって、前記複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含み、前記コンピューティングシステムがさらに、
第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、前記ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいて前記データセットの少なくとも第１の要素に条件を適用するように構成された処理モジュールを備え、前記条件を適用することが、
それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成することであって、前記選択された条件が、前記第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成すること、及び、
前記生成された命令を実行し、前記第１のユーザインタフェース要素に関連する前記条件を、前記データセットの前記第１の要素の前記第１のフィールドに含まれるデータに適用することに基づく結果に関連するフィードバックを提供すること、を含む、コンピューティングシステム。
【請求項２】
ユーザインタフェース要素が、第１の軸及び第２の軸を有するグリッドに構成されたセルに含まれ、
前記ユーザインタフェース要素の１又は２以上の第１のサブセットが、前記グリッドの前記第１の軸に沿った方向に延伸する前記セルのそれぞれのサブセットに含まれ、
前記ユーザインタフェース要素の複数の第２のサブセットが、前記グリッドの前記第２の軸に沿った方向に延伸する前記セルのそれぞれのサブセットに含まれる、請求項１に記載のシステム。
【請求項３】
処理モジュールがさらに、
異なるユーザインタフェース要素に関連する条件の評価順序の仕様を生成することであって、前記仕様が、異なる条件間の潜在的な依存関係を指定する情報である、生成すること、及び、
選択された条件を前記評価順序の前記仕様に従って適用するために、生成されたコンピュータ実行可能命令を実行し、前記選択された条件を第１の要素の１又は２以上のフィールドに含まれるデータに前記評価順序の前記仕様に従って適用したことに応答して、結果に関連するフィードバックを提供すること、を行うように構成された、請求項１又は２に記載のシステム。
【請求項４】
評価順序の仕様が状態遷移図を含み、前記状態遷移図が、異なる条件を表す状態を含み、且つ前記条件が適用され得る順序を定義する前記状態間の遷移を含む、請求項３に記載のシステム。
【請求項５】
条件を適用することがさらに、
生成された命令を記憶すること、及び、
前記記憶済みの生成された命令を実行して、第１のユーザインタフェース要素に関連する条件を、データセットの第２の要素の第１のフィールドに含まれるデータに適用することを含む、請求項１〜４のいずれかに記載のシステム。
【請求項６】
条件を適用することがさらに、
第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータに適用することに基づく結果を記憶すること、及び、
前記第１のユーザインタフェース要素に関連する前記条件を、前記データセットの前記第１の要素の前記第１のフィールドに含まれるデータと同じである、前記データセットの第２の要素の第１のフィールドに含まれるデータに適用したことに応答して、前記記憶された結果を取り出すこと、を含む、請求項１〜５のいずれかに記載のシステム。
【請求項７】
第１の軸に沿った方向に延伸するセルの１又は２以上のサブセットが、セルの列である、請求項２〜６のいずれかに記載のシステム。
【請求項８】
第２の軸に沿った方向に延伸するセルの複数のサブセットが、セルの行である、請求項２〜７のいずれかに記載のシステム。
【請求項９】
要素の第１のフィールドに含まれるデータに条件を適用することの結果が、合格／不合格結果を含む、請求項２〜８のいずれかに記載のシステム。
【請求項１０】
フィードバックを提供することが、結果が不合格結果である場合に第１のユーザインタフェース要素にシェーディングをかけることを含む、請求項９に記載のシステム。
【請求項１１】
条件を適用することがさらに、１又は２以上のセルに関連する条件を、データセットの複数の要素に含まれるデータに適用することに関連するフィードバックを提供することを含む、請求項２〜１０のいずれかに記載のシステム。
【請求項１２】
処理モジュールがさらに、条件の構文を妥当性検査するように構成された、請求項１〜１１のいずれかに記載のシステム。
【請求項１３】
フィールドに関連する少なくともいくつかのユーザインタフェース要素、及び妥当性検査規則が、条件の構文の妥当性検査の結果に関連するフィードバックを提供する、請求項１２に記載のシステム。
【請求項１４】
データセットがデータベースの１又は２以上のテーブルを含み、データセットの要素がデータベースレコードを含む、請求項１に記載のシステム。
【請求項１５】
データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則を指定する、コンピューティングシステムのプロセッサによって実施される方法であって、
それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングするステップを含み、前記ユーザインタフェース要素が、
前記ユーザインタフェース要素の１又は２以上の第１のサブセットであって、前記１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、前記データセットの前記複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、
前記ユーザインタフェース要素の複数の第２のサブセットであって、前記複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含み、方法がさらに、
第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、前記ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいて前記データセットの少なくとも第１の要素に条件を適用するステップを含み、前記条件を適用するステップが、
それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成するステップであって、前記選択された条件が、前記第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成するステップと、
前記生成された命令を実行し、前記第１のユーザインタフェース要素に関連する前記条件を、前記データセットの前記第１の要素の前記第１のフィールドに含まれるデータに適用するステップに基づく結果に関連するフィードバックを提供するステップと、を含む、方法。
【請求項１６】
データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則を指定するための、コンピュータ可読媒体に非一時的な形で記憶されたソフトウェアであって、
それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングすることをコンピューティングシステムに行わせるための命令を含み、前記ユーザインタフェース要素が、
前記ユーザインタフェース要素の１又は２以上の第１のサブセットであって、前記１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、前記データセットの前記複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、
前記ユーザインタフェース要素の複数の第２のサブセットであって、前記複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含み、前記ソフトウェアがさらに、
第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、前記ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいて前記データセットの少なくとも第１の要素に条件を適用することを前記コンピューティングシステムに行わせるための命令を含み、前記条件を適用することが、
それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成することであって、前記選択された条件が、前記第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成すること、及び、
前記生成された命令を実行し、前記第１のユーザインタフェース要素に関連する前記条件を、前記データセットの前記第１の要素の前記第１のフィールドに含まれるデータに適用することに基づく結果に関連するフィードバックを提供すること、を含む、ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年９月２７日に出願された米国出願第６１／８８３，３９９号に対する優先権を主張するものである。
【０００２】
本記述は、データに適用される論理規則を評価することに関する。
【背景技術】
【０００３】
規則は、例えば、データをあるフォーマットから別のフォーマットに変換すること、データに関する決定を行うこと、又は入力データのセットに基づいて新しいデータを生成することのために使用される可能性がある。様々な決定を行うための規則は、入力データに基づいて、生成すべき出力データ又は実施すべきアクションを決定することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様では、一般に、コンピューティングシステムは、データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための、１又は２以上の規則を指定する。コンピューティングシステムは、それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングするように構成されたユーザインタフェースモジュールを備える。ユーザインタフェース要素は、ユーザインタフェース要素の１又は２以上の第１のサブセットであって、１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、データセットの複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、ユーザインタフェース要素の複数の第２のサブセットであって、複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含む。コンピューティングシステムは、第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいてデータセットの少なくとも第１の要素に条件を適用するように構成された処理モジュールを備える。条件を適用することは、それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成することであって、選択された条件が、第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成すること、及び、生成された命令を実行し、第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータに適用することに基づく結果に関連するフィードバックを提供すること、を含む。
【０００５】
態様は、以下の特徴の１又は２以上を含むことができる。
【０００６】
ユーザインタフェース要素は、第１の軸及び第２の軸を有するグリッドに構成されたセルに含まれ、ユーザインタフェース要素の１又は２以上の第１のサブセットは、グリッドの第１の軸に沿った方向に延伸するセルのそれぞれのサブセットに含まれ、ユーザインタフェース要素の複数の第２のサブセットは、グリッドの第２の軸に沿った方向に延伸するセルのそれぞれのサブセットに含まれる。
【０００７】
処理モジュールはさらに、異なるユーザインタフェース要素に関連する条件の評価順序の仕様を生成することであって、仕様が、異なる条件間の潜在的な依存関係を指定する情報である、生成すること、及び、選択された条件を評価順序の仕様に従って適用するために、生成されたコンピュータ実行可能命令を実行し、選択された条件を第１の要素の１又は２以上のフィールドに含まれるデータに評価順序の仕様に従って適用したことに応答して、結果に関連するフィードバックを提供すること、を行うように構成される。
【０００８】
評価順序の仕様は状態遷移図を含み、この状態遷移図は、異なる条件を表す状態を含み、条件が適用され得る順序を定義する状態間の遷移を含む。
【０００９】
条件を適用することはさらに、生成された命令を記憶すること、及び、記憶済みの生成された命令を実行して、第１のユーザインタフェース要素に関連する条件を、データセットの第２の要素の第１のフィールドに含まれるデータに適用すること、を含む。例えば、第１のユーザインタフェース要素（例えばセル）が編集された場合、データセットの第２の要素が選択されたときに未編集であるユーザインタフェース要素（例えばセル）については、これらの未編集のセル中の規則条件についての記憶済みの生成された（例えばコンパイルされた）命令が取り出されて、データセットの第２の要素の新しい入力値に対して再実行されればよい。これについてはより詳細に後述する。
【００１０】
条件を適用することはさらに、第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータに適用することに基づく結果を記憶すること、及び、第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータと同じである、データセットの第２の要素の第１のフィールドに含まれるデータに適用したことに応答して、記憶された結果を取り出すこと、を含む。例えば、データセットの第２の要素の特定のトリガ列の入力値が、データセットの第１の要素のこの特定のトリガ列の入力値と同じである場合は、コンパイルされた命令を再実行する必要すらなく、これらのセル中の規則条件についての記憶済みの結果が取り出されて再使用されればよい。これについてはより詳細に後述する。
【００１１】
第１の軸に沿った方向に延伸するセルの１又は２以上のサブセットは、セルの列である。
【００１２】
第２の軸に沿った方向に延伸するセルの複数のサブセットは、セルの行である。
【００１３】
要素の第１のフィールドに含まれるデータに条件を適用することの結果は、合格／不合格結果を含む。
【００１４】
フィードバックを提供することは、結果が不合格結果である場合に第１のユーザインタフェース要素にシェーディングをかけることを含む。
【００１５】
条件を適用することはさらに、１又は２以上のセルに関連する条件を、データセットの複数の要素に含まれるデータに適用することに関連するフィードバックを提供することを含む。
【００１６】
処理モジュールはさらに、条件の構文を妥当性検査するように構成される。
【００１７】
フィールドに関連する少なくともいくつかのユーザインタフェース要素、及び妥当性検査規則が、条件の構文の妥当性検査の結果に関連するフィードバックを提供する。
【００１８】
データセットはデータベースの１又は２以上のテーブルを含み、データセットの要素はデータベースレコードを含む。
【００１９】
別の態様では、一般に、データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則を指定する方法は、それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングするステップを含む。ユーザインタフェース要素は、ユーザインタフェース要素の１又は２以上の第１のサブセットであって、１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、データセットの複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、ユーザインタフェース要素の複数の第２のサブセットであって、複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含む。方法はさらに、第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいてデータセットの少なくとも第１の要素に条件を適用するステップを含む。条件を適用するステップは、それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成するステップであって、選択された条件が、第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成するステップと、生成された命令を実行し、第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータに適用することに基づく結果に関連するフィードバックを提供するステップと、を含む。
【００２０】
別の態様では、一般に、データセットの複数の要素の各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則を指定するための、コンピュータ可読媒体に非一時的な形で記憶されたソフトウェアであり、このソフトウェアは、それぞれの条件に関連する複数のユーザインタフェース要素をレンダリングすることをコンピューティングシステムに行わせるための命令を含む。ユーザインタフェース要素は、ユーザインタフェース要素の１又は２以上の第１のサブセットであって、１又は２以上の第１のサブセットの少なくともいくつかのサブセットが、データセットの複数の要素のうちの要素の少なくとも１つのフィールドから導出された入力値に関連する、１又は２以上の第１のサブセットと、ユーザインタフェース要素の複数の第２のサブセットであって、複数の第２のサブセットのうちの１又は２以上の各ユーザインタフェース要素が、それぞれの条件に関連するユーザ入力を受け取るように構成された、複数の第２のサブセットと、を含む。ソフトウェアはさらに、第１のフィールドに関連する第１のユーザインタフェース要素についてのユーザ入力を受け取ったことに応答して、ユーザインタフェース要素の少なくともいくつかから受け取られたユーザ入力に基づいてデータセットの少なくとも第１の要素に条件を適用することをコンピューティングシステムに行わせるための命令を含む。条件を適用することは、それぞれのユーザインタフェース要素に関連する選択された条件を適用するためのコンピュータ実行可能命令を生成することであって、選択された条件が、第１のユーザインタフェース要素に関連する条件と、異なる条件間の潜在的な依存関係を指定する情報に基づいて選択された１又は２以上の追加の条件とである、生成すること、及び、生成された命令を実行し、第１のユーザインタフェース要素に関連する条件を、データセットの第１の要素の第１のフィールドに含まれるデータに適用することに基づく結果に関連するフィードバックを提供すること、を含む。
【発明の効果】
【００２１】
態様は、以下の利点の１又は２以上を含むことができる。
【００２２】
システムによっては、規則を編集及びテストするプロセスは、編集された規則を実行に向けて準備することの非効率性によって妨げられる可能性がある。例えば、規則を構成する様々な条件を指定する規則仕様が、ユーザ入力に基づいて規則修正を加えるのに適したフォーマットで記憶される場合がある。しかし、この規則仕様は、規則を入力データに効率的に適用できるようになる前に、実行可能な形（例えばコンピュータ実行可能命令）にコンパイルされる必要があることがある。加えて、規則が使用されている分野の専門家だが専門コンピュータプログラマではないかもしれないユーザによる規則の開発を容易にするためには、規則仕様が編集される時点と、指定された規則がテスト入力データに対してテストされる準備が整う時点との間に、比較的短い遅延を設けることが有用である。効率的な、且つ規則エディタインタフェース内でのユーザの入力に応答した、規則コンパイルプロシージャにより、このような規則開発を妨げるいくつかの技術的問題を克服することができる。
【００２３】
本明細書に記載のシステムは、ユーザ入力を受け取ったことに応答して、規則を適用するための命令を効率的にコンパイルすることができる。例えば、ユーザ入力は、規則仕様の一部を編集することに関連する場合がある。このシステムは、規則仕様全体について命令を再コンパイルする必要なしに、規則仕様の一部について命令を選択的に再コンパイルすることができる。この選択性は、規則編集のための効率的なフィードバックを可能にする。例えば、異なる論理式によって表現される様々な条件を使用して、規則が指定される場合がある。ユーザが式を入力すると、この式を評価するためのコンパイルされた命令が生成され保存されてよい。これらの式を入力データに適用した結果が、エディタ内に表示されてよい。式のいくつかは、他の式の結果に依存する場合がある。式を入力データ（他の式の結果を含む）に適用した結果、又は、入力データに依存しない式を評価した結果もまた、保存されてよい。ユーザが特定の式を編集した後で、規則仕様全体が再び評価されてよく、これは、この式を再コンパイルし、入力値がユーザ編集の影響を受けた可能性のある式についての保存済みの命令を選択的に再実行することによって、行われる。式が評価される順序の系統表現を使用して、編集された式に潜在的に依存する式が決定されてよい。式が編集による影響を受けないと決定された場合は、この式を再コンパイル又は再評価する必要なしに、その保存済みの結果が使用されればよい。
【００２４】
本発明の他の特徴及び利点は、後続の記述及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００２５】
【図１】データに適用される規則を評価するためのシステムのブロック図である。
【図２Ａ】データを分析するための規則を指定するためのユーザインタフェースの図である。
【図２Ｂ】ユーザフィードバックを含む、データを分析するための規則を指定するためのユーザインタフェースの図である。
【図２Ｃ】修正された規則ケースを含む図２Ｂのユーザインタフェースを示す図である。
【図３】規則を指定するためのユーザインタフェースの画面キャプチャの図である。
【図４Ａ】規則を効率的にコンパイル及び適用するための系統図である。
【図４Ｂ】系統図の規則についてのユーザインタフェースの図である。
【図４Ｃ−４Ｄ】図４Ｂの規則についての状態遷移図である。
【発明を実施するための形態】
【００２６】
図１に、規則評価技法をその中で使用できる例示的なデータ処理システム１００を示す。システム１００はデータソース１０２を含み、データソース１０２は、ストレージデバイスや、オンラインデータストリームへの接続など、データの１又は２以上のソースを含むことができ、これらのそれぞれは、データ（「データセット」と呼ぶこともある）を、様々なストレージフォーマットのいずれか（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又は、メインフレームによって使用されるネイティブフォーマット）で記憶することができる。実行環境１０４が、ユーザインタフェース（ＵＩ，user interface）モジュール１０６及び処理モジュール１０８を含む。ＵＩモジュール１０６は、ユーザインタフェース１１２（例えば、ディスプレイ画面上のグラフィカルビュー）を介してユーザ１１０から受け取られる入力を管理するが、この入力は、データソース１０２からのデータを処理するために処理モジュール１０８によって使用されることになる規則を指定するためのものである。
【００２７】
実行環境１０４は、UNIXオペレーティングシステムなどの適切なオペレーティングシステムの制御下にある１又は２以上の汎用コンピュータ上でホストされてよい。例えば、実行環境１０４は、複数の中央処理装置（ＣＰＵ，central processing unit）を使用するコンピュータシステムの構成を含めた、複数ノードの並列コンピューティング環境を含むことができ、これらのコンピュータシステムは、ローカル（例えば、ＳＭＰコンピュータなどのマルチプロセッサシステム）又はローカル分散型（例えば、クラスタ若しくはＭＰＰとして結合された複数のプロセッサ）、或いはリモート又はリモート分散型（例えば、ローカルエリアネットワーク（ＬＡＮ，local area network）及び／若しくはワイドエリアネットワーク（ＷＡＮ，wide-area network）を介して結合された複数のプロセッサ）、或いはこれらの任意の組合せとすることができる。
【００２８】
処理モジュール１０８は、データソース１０２からデータを読み取り、ＵＩモジュール１０６によって得られた入力によって定義される規則仕様に基づいて、データに適用される規則を評価する。規則を評価するための準備において、処理モジュール１０８は、より詳細に後述するように、規則仕様の複数の規則条件間の少なくとも部分的な順序付けを定義する評価順序を生成する。評価順序は、例えば、異なる規則条件が評価される順序を決定する状態遷移図として表すことができる。データソース１０２を提供するストレージデバイスは、実行環境１０４に対してローカルである場合があり、例えば、実行環境１０４を実行しているコンピュータに接続されたストレージ媒体（例えばハードドライブ１１４）に記憶される。又は、このストレージデバイスは、実行環境１０４に対してリモートである場合があり、例えば、実行環境１０４を実行しているコンピュータとリモート接続を介して通信するリモートシステム（例えばメインフレーム１１６）上でホストされる。
【００２９】
一般に、データソース１０２からアクセスされるデータセットは、いくつかのデータ要素（例えば、所定のレコード構造に従ってフォーマットされたレコード、又は、データベーステーブル中の行）を含む。いくつかのデータ要素の各要素は、いくつかのフィールド（例えば、レコード構造内で定義される属性、又はデータベーステーブル中の列）についての値を含むことができ（例えば、「名」、「姓」、「電子メールアドレス」など）、ヌル又は空の値を含む可能性もある。フィールド中の値の様々な特性（例えば、内容若しくはデータタイプに関係する）、又は特定フィールド中の値の有無は、有効又は無効と考えることができる。例えば、文字列「スミス」を含む「姓」フィールドは有効と考えることができるが、空白の「姓」フィールドは無効と考えることができる。
【００３０】
いくつかの規則を適用して、有効な値かどうか、又はデータ値の他の特性について、テストすることができる。データセットが、１又は２以上の無効なフィールドがあるかなりの数のデータ要素を含む場合、データソース１０２からのデータセットを利用するアプリケーションの性能が悪影響を受ける恐れがある。処理モジュール１０８は、データ妥当性検査規則をデータセットに適用して、妥当性検査規則によって定義される品質制約をデータセットが満たすことを確実にすることができる。データセットの品質が品質制約を満たせない場合、データ処理システム１００はシステム管理者にアラートする。いくつかの例では、処理モジュール１０８は、可能なら無効なデータを修復するか、又は、様々なデータクレンジングプロシージャを実施してクレンジング済みデータ要素のデータセットを生成するように、構成されてよい。さらに他の例では、処理モジュール１０８は、無効なデータを含むフィールドのリストを生成するように構成されてよく、このリストから報告が生成されてよい。いくつかの例では、報告は、フィールドのリスト中の１又は２以上のフィールドで無効なデータを含んでいたレコードのカウントを含む。他の例では、無効なフィールドの集約がフィールドのリストから算出される。
【００３１】
一般に、異なるアプリケーションは、異なるタイプのデータを処理する。したがって、アプリケーションに応じて、データセットの要素は、異なるフィールドを含むことがある。ＵＩモジュール１０６は、データセットを処理するために規則のセットを指定及び使用するのを可能にする、ユーザインタフェース１１２を提供する。ユーザインタフェース１１２は、特定のデータ要素構造の複数のフィールド（実施形態によっては、利用可能な全てのフィールド）を含む、単一のビューを提供することができる。したがって、所与のアプリケーションの場合に、ユーザ１１０（例えばシステム管理者）は、データに対する適切な妥当性検査規則を指定することができる。
【００３２】
システムによっては、データ品質の何らかの標準に従って、規則がデータに適用されてデータが妥当性検査される。多くの現代のアプリケーションは、様々なソースからコンパイルされる場合のある大きいデータのセット（すなわち「データセット」）を処理する。データセットにデータを提供する様々なソースは、異なるレベルのデータ品質を有することがある。アプリケーションが適正に機能することを確実にするために、データセットにおける十分なレベルのデータ品質を維持すべきである。十分なレベルのデータ品質を維持するために、データセットをデータ妥当性検査システムによって処理することができる。このようなシステムは、データセットがアプリケーションに提供される前に、妥当性検査規則をデータセットに適用する。いくつかの例では、データ妥当性検査システムは、妥当性検査規則の結果を使用してデータ品質の程度を算出し、データ品質の程度が所定のしきい値に満たない場合は、アプリケーションの管理者にアラートする。他の例では、データ妥当性検査システムは、１又は２以上の妥当性検査規則に合格しないデータを扱うためのモジュールを備える。例えば、データ妥当性検査システムは、１又は２以上の妥当性検査規則に合格しないデータを廃棄又は修復することができる。一般に、データ妥当性検査システムによって適用される妥当性検査規則は、データ妥当性検査システムの管理者によって定義される。
【００３３】
システムによっては、データの内容に基づいて、規則がデータに適用されて決定が行われる。例えば、フライト予約システムにおけるレコードが、搭乗者の名前、搭乗者が今年何マイル飛行したか、搭乗者のチケットのクラス、及び搭乗者が座る列を示す場合がある。このような搭乗者が搭乗グループ１に入れられるべきであることを示すための規則を構成することができる。規則は一般に、人間が理解しやすいものであり、すなわち「ファーストクラスの搭乗者はグループ１に含まれる」だが、規則は、データの操作に使用できるようになる前に、コンピュータが理解できる何らかに変換される必要があることがある。
【００３４】
妥当性検査規則及び他の規則を編集するためのインタフェースが、規則を適用するための命令を効率的に生成する機能を組み込んで、規則編集のための効率的なフィードバックを可能にすることができる。非技術系ユーザにとっての規則作成を単純にするために、このようなユーザが自分に馴染みのあるフォーマットで規則のセット（規則セットと呼ぶ）を指定するためのインタフェースが提供される。規則セットは、データセットに適用されることになる規則のセット（例えば、ユーザインタフェース内でのユーザ入力に基づいて定義される妥当性検査規則）である。規則セット内の規則は、入力に応じて異なる値を規則の出力について計算する１又は２以上の規則ケースで構成されたものとすることができる。規則は、例えば他の規則によって計算された値を参照することによって、他の規則を参照することもある。
【００３５】
図２Ａを参照すると、ユーザインタフェースの一例は、データセットの各要素の１又は２以上のフィールドに含まれるデータを処理するための１又は２以上の規則をユーザ１１０が指定するのを容易にするように構成された、規則グリッド２１２である。
【００３６】
ＵＩモジュール１０６は、第１の軸２２６及び第２の軸２２８を有する２次元グリッド２２５に構成されたいくつかのセル２２４を使用して、ユーザインタフェース２１２をレンダリングする（例えばコンピュータモニタ上に）。この例では、ユーザインタフェース２１２の各セルは、テキストなど、ユーザによって（例えばテキスト入力フィールド又は他のタイプのユーザインタフェース要素を使用して）入力された入力を、受け取るように構成される。セルの１又は２以上のサブセット（詳細な記述の残りの部分では、列又はトリガ列２３２と呼ぶ）が、２次元グリッド２２５の第２の軸２２８に沿った方向に延伸する。各トリガ列２３２は任意選択で、データセットのデータ要素のフィールドからの値など、データ要素中のデータから導出された入力値、又は他のソースから導出された入力値に関連してもよい。例えば、トリガ列に関連する入力値は、他の規則によって計算された値（例えば中間値及び／若しくは出力値）、又は別のデータソース若しくはユーザ入力からの値、又はこれらの任意の組合せを参照することもできる。いくつかの例では、各列２３２の第１の（すなわち一番上の）セルは、フィールド２１８の名前、又は、トリガ列２３２に関連する入力値２４２の他のソースを含む。ユーザインタフェース２１２はまた、ユーザインタフェース２１２中で現在選択されている要素の、トリガ列２３２に関連する入力値２４２を表示するように構成される。
【００３７】
セル２２４の複数のサブセット２３０（詳細な記述の残りの部分では、行又は規則ケース行２３０と呼ぶ）が、２次元グリッド２２５の第１の軸２２６に沿った方向に延伸する。規則ケース行２３０の１又は２以上は、トリガ列２３２に関連する利用可能な入力値に関係する条件のそれぞれのセットに関連する。いくつかの例では、第１の軸２２６と第２の軸２２８の方向を入れ替えて、入力値に関連する列２３２が行２３０になり、規則条件２３６に関連する行２３０が列２３２になるようにすることができることに留意されたい。或いは、規則ケースに対応するセル（又は他のユーザインタフェース要素）のサブセットの、他のグループ化は、グリッド構成を使用しなくてもよく、その代わり、例えば、ユーザナビゲーションに応答して構成されるか又は選択的に提示される異なる画面領域（例えばウィンドウ）を使用することができる。
【００３８】
１又は２以上のデータ要素に規則を適用するために、処理モジュール１０８は、より詳細に後述するように、グリッド内の行及び列の構成に基づいて、規則の状態遷移図（又は、評価順序を表す他の表現）を生成することができる。処理モジュール１０８は、状態遷移図を使用して、規則ケースが満たされるまで規則ケース行の規則条件を連続的に評価する。所与の規則ケース行２３０中で指定された規則ケースは、所与のデータ要素について、このデータ要素から導出された入力値２４２が、規則ケースが条件を有する各トリガ列２３２についてトリガ条件を満たす場合は、満たされる（すなわち、入力値に対するその全ての条件が満たされた規則ケースは、「トリガされる」と呼ぶことができる）。規則ケース２３０がトリガされた場合、１又は２以上の出力列２５０に基づいて出力が生成される。実施形態によっては、第１の規則ケースがトリガされた後、規則ケース行の評価は停止する。各出力列２５０は、潜在的な出力変数に対応してもよく、適切な行２３０の対応するセル中の出力列値が、この変数に対する出力がもしあればそれを決定する。セルは、後で論じるように、変数に割り当てられる値を含むことができ、又は、出力値を生成するために評価されなければならない式を含むことができる。図２Ａには１つの出力列しか示されていないが、２つ以上の出力列がある場合もある。
【００３９】
規則ケース行のグリッドがスプレッドシートに似ていることは、ユーザが規則を視覚化できることの助けになるであろうが、グリッド内のセルの構成に基づくセル間の暗黙的な依存関係は、スプレッドシート中のセル及びこれらのセルが参照する他のセルの間の明示的な依存関係とは異なる。例えば、実施形態によっては、規則ケース行の規則条件が評価されるかどうかさえも、この規則行の上方の規則ケースがすでにトリガされたかどうかに依存する。
【００４０】
異なる種類の条件に対応するセルを含む、いくつかの異なるタイプのトリガ列２３２がある場合がある。いくつかのトリガ列（例えば「比較列」）は、そのトリガ列に関連する入力値と比較される値又は値範囲を定義するセルを含むことができ、比較の結果は、真又は偽に評価される。いくつかのトリガ列（例えば「自由形式列」）は、入力値に関連せず、その代わり、入力値との比較を必要とせずに真又は偽に評価される条件を定義するセルを含む。したがって、空でない各セルは、条件がデータ要素に依存するか否かにかかわらず、真又は偽に評価される条件を（明示的又は暗黙的に）定義する。自由形式トリガ列は、例えば以下のうちの１つを含むセルを含むことができる。
・  式。式の評価が、０でなくヌルでない値に評価されるならば、条件は真であると考えられることになる。
・  キーワード「any」、又は空の文字列。条件は常に真である。トリガ列中の空の各セルは、キーワード「any」を明示的に含むセルと等価である。
・  キーワード「else」。左側の全てのセルが同一である行の中で、「else」を含むセルの上方にありどの空セルよりも下方にあるセルが、どれも真でないならば、条件は真である。
・  キーワード「same」。上方のセルが真であるならば、条件は真である。
【００４１】
比較列は、２つのタイプのセルを含むことができる。一方のタイプのセルは、式セルである。これらのセルは、前述の自由形式列の中のセルと全く同じように挙動する。しかし、列入力値を参照するために、キーワード「this」を式中で使用することができる。他方のタイプのセルは、列に関連する入力値と比較されることになる値又は値範囲を定義する、比較セルである。比較セルに関する例示的な文法は、以下のとおりである。
operator ::= ">" | "<" | ">=" | "<=" | "!=" | "=" | "equals"
value_element ::= constant | constant | variable | "("expression ")"
value_expression ::= [ operator ] value_element
simple_function ::= "is_null" | "is_blank" | "is_valid" | "is_defined" | "is_bzero"
membership_expr ::= "in" "[" value_element ( ( "," | "to" | "or" ) value_element )* "]"
simple_value ::= [ "not" ] ( value_expression | simple_function | membership_expr )
compound_value ::= simple_value ( "and" simple_value )*
comparison_value ::= compound_value ( "or" compound_value )*
上記において、「*」は、項が０回又は１回以上にわたって繰り返されることを意味する。セル中で演算子が指定されていない場合は、「equals」などのデフォルト演算子が含意されるものとすることができる。
【００４２】
任意の適切なプログラミング言語又は構文を使用することができる。例としては、C、Java、Prologを挙げることができる。実施形態によっては、プログラミング言語はデータ操作言語（ＤＭＬ，data manipulation language）であり得、ＤＭＬは、データフォーマットを定義するための、且つ様々なデータ処理演算を使用してデータを操作するための構文も含む。
【００４３】
所与のトリガ列について比較セルを評価するには、演算子、関数、又はメンバシップ式に従って、列２３２に関連する値２４２が、比較セル値又は範囲と比較される。図２Ａの例では、第１の２つのトリガ列２３２ａ、２３２ｂは、「>=」演算子を有する比較セルを含み、したがって、この列の値が、対応する数以上であるならば、条件は満たされる。「座席クラス」列２３２ｃのように演算子がない場合は、「equals」が想定される。定数は、基礎をなすシステムでどんなプログラミング言語又は構文が使用されようと、その言語又は構文における任意のリーガルな定数であり得る。式は、使用されている言語における、列入力値と比較されることになる互換データタイプを返す任意のリーガルな式である。いくつかの例では、比較セル内部の式は、曖昧さを避けるために括弧で囲まれる。simple_functionについては、関数は列入力値に適用され、したがって、「is_null」キーワードは、式「is_null(this)」と同じである。
【００４４】
図２Ａの例では、第１の行２３０ａは、１つの列（すなわち「頻繁利用客マイル総計」列２３２ａ）のみの中で条件を有し、この条件は、旅行者の頻繁利用客マイルの総数が１，０００，０００よりも大きいならば、他のいずれかの列がどんな値を有するであろうかにかかわらず、この規則ケースが適用されることを示す。その場合、このユーザに対する「搭乗グループ」出力変数は、グループ１に設定される。同様に、第２の規則ケース２３０ｂは、ファーストクラスのどんな乗客もグループ１に含まれることを示す。いくつかの例では、規則は順番に評価され、したがって、１，０００，０００マイルを超えておりファーストクラスのチケットを有する旅行者はグループ１に含まれることになるが、第１の規則ケースのみがトリガされることになる。規則ケースがトリガされると、この規則中の他の規則ケースは評価される必要はない。
【００４５】
第３の規則ケース２３０ｃは、２つの入力値（すなわち「頻繁利用客マイル総計」及び「現在の頻繁利用客マイル」列２３２ａ、２３２ｂに関連する値）に基づく。頻繁利用客マイル総計と今年のマイルとの両方について定義された条件が満たされるならば、乗客はグループ２に含まれる。第４の規則ケース２３０ｄでは、どんなビジネスクラス顧客もまた、グループ２に含まれる。残りの規則ケース２３０ｅ〜２３０ｇは、他の規則ケースに関係する条件、すなわち「else」及び「same」を含む。上で論じたように、キーワード「else」は、この行の上方にありどんな空セルよりも下方にある行であって、左側に同じ条件を有する行において、このトリガ列中の条件がどれも満たされなかったことを示す。これは、この例では、座席クラスが「ビジネス」でないことを意味する。キーワード「same」は、その上方の規則ケースがこのトリガ列について適用されたならば、規則ケースが適用されることを示す。したがって、残りの各規則ケース２３０ｅ〜２３０ｇは、より高いどんな規則ケースにもマッチしなかった、且つ適切な「座席列」値を有する、データ要素に適用される。
【００４６】
いくつかの例では、図２Ａの例における規則ケース２３０ａ〜ｇはまた、個別の単純な規則として、各規則がそれ自体のグリッド（図示せず）中で表されてもよい。ユーザは、図２Ａに示すテーブル全体を生成するのではなく、これらの個別の規則を別々に作成することもできる。
【００４７】
いくつかの例では、図２Ａに示すエディタインタフェースは、式を含むセルをグラフィカルに識別することができ、それ自体で真又は偽に評価されることになる式と、列入力値と比較される値を返す式との間をグラフィカルに区別することができる。ユーザ１１０がタイプ入力しているとき、ユーザは、例えばアスタリスクを最初にタイプ入力することによって、特定のセルが式セルとなることを示すことができる。
【００４８】
いくつかの例では、値及び式は、ＤＭＬ式である。特別なキーワード、並びに、フィールド及び値に対する論理名は、ＤＭＬ式の外で前処理される文字列としてエンコードされる。式は、変数に論理名を使用することができるが、実際の物理名を参照することもできることに留意されたい。
【００４９】
出力変数に対応する列については、セルは、例えば以下のうちの１つを含むことができる。
・  値。出力変数に割り当てられることになる値。
・  式。式の値が出力変数に割り当てられる。式がヌルに評価される場合は、出力フィールドがヌル不可能でない限り、フィールドはヌル値を得る。出力フィールドがヌル不可能である場合は、エラーが生成される。
・  キーワード「null」。出力フィールドがヌル可能である場合は、ヌルがフィールドに割り当てられることになる。そうでない場合は、エラーが生成される。
・  空の文字列。出力フィールドがデフォルト値を有する場合は、デフォルト値が割り当てられる。そうでない場合は、セルはキーワード「null」を含むかのように扱われる。
・  キーワード「same」。上方のセルで計算された値と同じ値が出力フィールドに割り当てられる。
【００５０】
可能なら、エラー（例えば、ヌル不可能フィールドの出力に「null」を入れる）は、できるだけ早く報告される。しかし、エラーによっては、テスト時又は実行時まで報告されない。
【００５１】
式に加えて、ユーザは、規則中の任意のセルにコメントを添付することが可能にされてよい。コメントは、Microsoft Excelなどのスプレッドシートプログラム中のセルに添付されるコメントのように表示されてよい。
【００５２】
いくつかの例では、規則エディタインタフェースは、ユーザが何を入力できるかを、インタフェースの技術的要件が要求するはずの制限よりも厳しく制限するように構成されてよい。例えば、より単純な、より制約されたユーザインタフェースを提供するために、インタフェースは、特定タイプの入力値又は特定タイプの式しか許容しないように構成されてよい。インタフェースはまた、ユーザの役割又はユーザＩＤに基づいて、規則中のどのセルを変更できるかを制限するように構成されてもよい。このような制限は、管理者によって規則セットに適用されるものとすることができる。
【００５３】
処理モジュール１０８が規則を評価するとき、規則は、様々な方式で規則グリッドに基づいて定義されてよい。いくつかの例では、規則は前述の方式とは逆の方式で評価されてよく、行の中の規則ケースの論理積がとられ、列の論理和がとられる。すなわち、あらゆる行がトリガする場合に限り、規則は出力を生み出すが（行の論理積をとる）、各行がトリガするためには、単一のセルのみが真であればよい（列の論理和をとる）。
【００５４】
図２Ｂを参照すると、図２Ａのユーザインタフェース２１２を増強して、ユーザ１１０にフィードバックを提供することができる。特に、２次元グリッド２２５の各セルは、セルの規則条件２３６が、ユーザインタフェース１１２によって現在選択されている要素２４４について合格であったか不合格であったかを示すように構成される。いくつかの例では、合格／不合格の指標は、関連する規則条件２３６に合格しなかったセルにシェーディングをかけることによってユーザ１１０に提供される。例えば、第１の規則ケース２３０ａと第１のトリガ列２３２ａとに関連するセルは、第１のトリガ列２３２ａ（すなわち「頻繁利用客マイル総計」トリガ列）に関連するフィールド２１８の値２４２が１，０００，０００以上であるならば合格結果を返す規則条件を含む。見てみると、第１のトリガ列２３２ａに関連するフィールド２１８の実際の値２４２は７５０，０００であることがわかり、これは１，０００，０００未満である。したがって、規則条件２３６は不合格であり、第１の規則ケース２３０ａと第１のトリガ列２３２ａとに関連するセルにシェーディングがかけられて、不合格結果が示される。図では他の様々なセルにもシェーディングがかけられ、これらのセルが不合格の規則条件を含むことを示す。出力列２５０中の出力セルは、その規則ケース行が少なくとも１つの不合格の規則条件を有する場合にはシェーディングがかけられる。したがって、シェーディングがかけられていない第１の出力セルが、トリガされる規則ケースに対応することになる。ユーザ１１０は、フィードバックを利用して、指定した規則が予想通りに機能していることを確実にすることができる。
【００５５】
いくつかの例では、ユーザ１１０は、ナビゲーションコントロール２４６を使用してデータセットの要素の中をナビゲートすることができる。いくつかの例では、ナビゲーションコントロール２４６は、ユーザ１１０がデータセットの要素の中を１つずつ進むことができるようにする矢印と、ユーザ１１０が自分の閲覧したいデータセット要素番号を入力できるようにする番号フィールドとを備える。ユーザ１１０がナビゲーションコントロール２４６を使用して異なる要素にナビゲートしたときは常に、処理モジュール１０８は、新たに選択された要素の値に対して、指定された規則ケースを実行する。
【００５６】
いくつかの例では、ユーザインタフェースはテストコントロール２４８を備え、テストコントロール２４８により、処理モジュール１０８は、指定された規則ケースをデータセットの全ての要素に適用することができる。データセットへの規則ケースの適用が完了すると、処理モジュール１０８は、データセットに規則ケースを適用した結果をＵＩモジュール１０６に提供し、ＵＩモジュール１０６は、結果をユーザインタフェース２１２中でユーザ１１０に対して表示する。例えば、規則ケースがトリガした要素の数が、ユーザインタフェース２１２中で表示されてよい。結果は、例えば、同じ規則ケースの異なるバージョン、又は異なるセットの規則ケース若しくは異なるシステムによって適用された規則から生成された、前に記憶されたベースライン結果と比較されてよい。また、データセットの全てのデータ要素に規則ケースを適用した結果と共に、フィルタリングされたデータ要素のセットが提示されてもよい。例えば、フィルタは、ベースライン結果と比較して結果に何らかの違いがある要素のみを表示することができ、或いは、フィルタは、特定の式が真（若しくは偽）である要素のみ、又は特定の規則若しくは規則ケースがトリガされた（若しくはトリガされなかった）要素のみを表示することができる。いくつかの例では、結果の要約が、別個のユーザインタフェース（図示せず）中でユーザに対して表示される。
【００５７】
いくつかの例では、前述のフィードバックは、ユーザインタフェース２１２内で規則が編集されつつあるのに伴って提供されてよい。ＵＩモジュール１０６は、ユーザインタフェース２１２のセルに入力された情報を処理モジュール１０８に提供し、それにより、規則ケース行内の編集された規則条件が、トリガ列２３２の対応する値２４２に適用される。処理モジュール１０８は、本明細書に記載の技法を使用して、他のどの規則条件がそれらのトリガ列のそれぞれの値に適用されるべきかを選択的に決定する。
【００５８】
いくつかの例では、ユーザインタフェース２１２を介してユーザ１１０によって規則ケースが追加若しくは除去されたか又はそのセルのいずれかが修正されたとき、ＵＩモジュール１０６は変更を処理モジュール１０８に渡し、処理モジュール１０８は、より詳細に後述するように、変更された規則条件と、評価順序でこれらの規則条件の後にくるいずれか他の規則条件とを、再適用する。規則ケースが追加されたか又はそのセルのいずれかが修正された場合、処理モジュール１０８は、新たに追加又は修正された規則ケースをデータセットの少なくとも１つの要素に適用するように構成される。いくつかの例では、追加又は修正された規則ケースは、ユーザインタフェース２１２中で現在表示されているデータセット要素のみに適用される。次いで、追加又は修正された規則ケース及びいずれか他の選択された規則ケースを適用した結果が、ＵＩモジュール１０６に渡され、ＵＩモジュール１０６は、結果を表示するようにユーザインタフェース２１２を更新する。例えば、新たに追加又は修正された規則ケースが、データセットの要素について不合格結果を生み出した条件２３６を含む場合は、条件２３６を含むセルにシェーディングがかけられて、不合格結果が示される。反対に、新たに追加又は修正された規則ケースが、データセットの要素について合格結果を生み出した条件２３６を含む場合は、条件２３６を含むセルにはシェーディングがかけられず、合格結果が示される。
【００５９】
規則条件間の潜在的な依存関係のせいで、ある規則条件を変更すると他の規則条件の結果に影響が及ぶことがあり、これら他の規則条件は、変更された規則条件の後で評価されるので、変更された規則条件の結果に依存する可能性があるものである。したがって、いくつかの例では、処理モジュール１０８は、決定された評価順序において、新たに追加、除去、又は修正された規則条件の後にくる全ての規則条件を再適用するように構成される。これらの選択された規則条件を再適用した結果もまた、ユーザインタフェース２１２上でユーザに対して表示される。
【００６０】
図２Ｃを参照すると、ユーザ１１０は、図２Ｂのユーザインタフェース２１２を介して、第１の規則ケース２３０ａと第１のトリガ列２３２ａとに関連するセルを修正した。特に、セルは、「頻繁利用客マイル総計」の値が前の値１，０００，０００ではなく５００，０００以上である場合に、セルに関連する規則条件が満たされることを示すように変更されている。
【００６１】
第１の規則ケース２３０ａを修正したことにより、処理モジュール１０８は、現在選択されている要素に対して規則ケースを再適用する。現在選択されている要素の「頻繁利用客マイル総計」フィールドの値は７５０，０００なので、第１の規則ケース２３０ａの修正済みセルについての合格結果が、処理モジュール１０８によって返され、ユーザインタフェース２１２によってシェーディングのないセルとして表示される。第１の規則ケースが合格したので、「搭乗グループ」出力値は１に変化する。この例では、他の規則ケースはどれも、再適用を必要とする条件を有さない。
【００６２】
後続の例では、処理モジュール１０８は、ユーザがセルを編集した後の規則ケースの効率的な再評価のために、どの規則ケースが再適用されるべきかを選択的に決定することになる。処理モジュール１０８は、トリガ列に関連する値２４２や他のセルに関連する値など、条件が依存するいずれかの入力値に応じて各規則条件を適用するために、実行可能命令を生成する（例えばコンパイルする）。実行可能命令と、入力値と、これらの実行可能命令をこれらの入力値に適用した結果とは、異なる規則条件の評価順序に基づくこれらの規則条件間の潜在的な依存関係を指定する情報と共に、後で使用されるように記憶されてよい。
【００６３】
図３を参照すると、画面キャプチャ３００が、図２Ａ〜２Ｃのユーザインタフェース２１２の一実施形態を示す。画面キャプチャ３００中で実装されるユーザインタフェースは、ユーザ１１０がデータセットに対する規則を指定するとともに、このデータセット（又は異なるテストデータセット）へのこれらの規則の適用からフィードバックを受け取ることができるように、構成される。
【００６４】
ユーザインタフェース２１２に関して上述したように、画面キャプチャ３００に示されるユーザインタフェースは、セルの２次元グリッドを含む。グリッドはいくつかの行を含み、各行は規則ケースに関連する。グリッドは、いくつかのトリガ列も含む。各入力値の名前が、各列の最上部に含まれる（例えば、「月ごとの平均残高」、「月ごとの平均請求金額」など）。この例はカスタムトリガ列３２０を含み、カスタムトリガ列３２０では、各セルは、共通の入力値に対する規則条件を提供することに限定されず、任意の計算された値に対する規則条件を提供する（規則ケース行８の「航空機チケット購入」、又は規則ケース行９の「レストラン食事購入」など）。
【００６５】
この例では、ユーザ１１０はいくつかの規則ケース条件を指定しており、各規則ケース条件は、それぞれの規則ケース及びトリガ列に関連する。こうするために、ユーザ１１０は、セルを選択し、選択したセルに式を入力する。例えば、図では、ユーザ１１０は、８番目の規則ケースに関連する行と、「月ごとの平均請求金額」フィールドに関連する列との交差点にあるセル３０２を選択し、式「>=5000」を入力した。選択されたセルに入力された式は、所与のデータ要素について、このデータ要素の「月ごとの平均請求金額」フィールドの値が５０００以上である場合にのみ、規則ケースが合格することを示す。ナビゲーションコントロール３０４中で現在選択されているデータ要素の「月ごとの平均請求金額」フィールドの現在の値が、トリガ列の見出し３０６に表示される。選択されたデータ要素の番号が変更された（例えば「１」から「２」に）場合、処理モジュール１０８は、必ずしも、全てのセルからの全ての規則条件を再コンパイル及び再評価する必要はない。例えば、次のデータ要素が選択されたときに未編集であるセルについては、これらのセル中の規則条件についての記憶済みのコンパイルされた命令を取り出して、次のデータ要素の新しい入力値に対して再実行すればよい。さらに、次のデータ要素の特定のトリガ列の入力値が、前のデータ要素のこの特定のトリガ列の入力値と同じである（例えば、「顧客としての年数」が同じ値「２１」を有する）場合は、コンパイルされた命令を再実行する必要すらなく、これらのセル中の規則条件についての記憶済みの結果を取り出して再使用すればよい。
【００６６】
ユーザがセルを編集するのに伴って、特定のセルの条件が満たされるか否かに関するフィードバックがユーザインタフェース内で提供されてよい。異なる色が、異なる結果を示すことができる。ある色は、セルの条件が満たされないことを示すのに使用されてよい。別の色は、セルの全ての条件が満たされる規則ケース行の全体に使用されてよく（図３の８番目の規則ケースの条件のように）、この場合、選択されたデータ要素に対して規則が実行されると規則ケースがトリガされることになる。
【００６７】
図４Ａ〜４Ｃを参照すると、編集されている規則の選択されたセルに式が入力された後、ユーザ１１０が（例えば、セルを選択解除するか又は別のセルにナビゲートすることによって）編集を完了したことに応答して、処理モジュール１０８は、編集された規則の、又は編集された規則と同じ規則セット中の他の規則の、異なるセルに関連する異なる規則条件の間の潜在的な依存関係の仕様に基づいて、規則条件を選択的に再適用する。この仕様は、例えば、系統図４００（図４Ａ）及び状態遷移図４３０（図４Ｄ）によって表されるようなものである。系統図４００Ａ中のノード４０２Ａ〜４０２Ｊは、値（フィールド値若しくは他の入力値、出力変数、及び／又は、計算で使用される値を記憶する他の変数）を表し、ノード４０４Ａ〜４０４Ｄは、任意の数の規則ケースをそれぞれが含む規則を表す。ノード４０４Ａ〜４０４Ｄによって表される規則は共に、例えば、規則セット全体に対応するものとすることができる。図４００中のノード４０４Ｂは、編集された規則条件を含む規則を表す。系統図４００及び状態遷移図４３０は、規則及び規則条件がそれぞれ評価される順序を表す。したがって、評価順序のこのタイプの仕様によって指定される潜在的な依存関係は、より後に評価されるアイテムが、より先に評価されるアイテムの結果に依存する可能性によるものである。このように、これらの依存関係は、より後に評価される（ダウンストリーム）アイテムが、より先に評価される（アップストリーム）アイテムの影響を受けない可能性もあるという意味で、潜在的な依存関係である。
【００６８】
図４Ｂに、このような規則４１０の単純化された例を示す。規則４１０は、２つのトリガ列の入力値Ａ及びＢに対する規則条件と、単一の出力列の出力変数Ｖとの、３つの規則ケース行を含む。異なる規則条件を評価できる順序を表す状態遷移図４２０が、図４Ｃに示されている。各状態は、規則４１０の特定のセルについての特定の規則条件の評価に対応する。遷移は、評価の結果が真（Ｔ）と偽（Ｆ）のいずれかであることに対応する。このような状態遷移図４２０は、例えば、各行の中のセルのＴリンクによって接続された状態のチェーンを提供することによって生成することができ、チェーン中の各状態からのＦリンクは、次の行の状態のチェーン中の第１の状態に進む。状態遷移図を生成するためのこの技法は、トリガ列の順序に依存する評価順序に対応する。状態遷移図によって表される規則評価の効率の改善は、トリガ列の順序を変更することによって、さらにはいくつかの冗長な状態を除去することによっても、行うことができる。例えば、図４Ｄに状態遷移図４３０を示すが、この図は、同じ図４３０中で前にすでに評価されたため評価される必要のない規則条件を表す状態を除去している。除去された状態との間のリンクもまた除去されてよく、他の状態のリンクは、同じ機能を提供するように修正される。効率を改善するための修正が加えられても、状態遷移図は、最適な評価順序を表すわけではない場合がある。しかし、状態遷移図が準最適であるとしても、規則条件を編集中に選択的に再評価する本明細書に記載の技法はなお、結果として、規則エディタインタフェースの効率的な更新をもたらすことができる。
【００６９】
単一のセルの規則条件のみが変更されたときは、処理モジュール１０８は、編集されたセルの規則条件を再コンパイルして、規則条件を適用するための実行可能命令を生成するだけでよい。処理モジュール１０８は、これらの再コンパイルされた命令を実行し、また、編集されたセルに関連する規則条件よりも評価順序で後に起こる規則条件を適用するための、前に記憶済みのコンパイルされた命令も実行する。したがって、編集された規則条件の「ダウンストリーム」にある選択された規則条件を再評価することができるが、編集された規則条件の「アップストリーム」にある規則条件は再評価しなくてよい。この例では、入力Ｂの値が２に等しい（状態遷移図４２０中で「B==2」とラベル付けされた状態に対応する）か否かを決定する規則条件が編集されたばかりである場合、処理モジュール１０８は、この状態についての命令を再コンパイルすることになり、次いで、この状態から実行を継続し、各規則条件の結果に応じて、必要に応じてダウンストリーム規則条件を実行することになる。処理モジュール１０８はまた、値及び他の規則の規則条件を、評価順序における編集された規則４０４Ｂに対するそれらの関係に基づいて、すなわち系統図４００に従って、選択的に再評価することになる。したがって、この例では、値４０２Ｈ及び４０２Ｊ並びに規則４０４Ｄの規則条件は全て、編集された規則４０４Ｂのダウンストリームにあるが、これらが再評価されることになり、他の値及び規則は、編集された規則４０４Ｂのダウンストリームにない（すなわち評価順序でより後にある）ので、再評価される必要はない。
【００７０】
次いで、系統図４００及び状態遷移図４３０によって表されるような評価順序に従ってこれらのダウンストリーム規則条件を入力データに選択的に適用したことに応答して、フィードバックが提供されてよい。実行の結果は、ユーザインタフェース中で表示されるように、ＵＩモジュール１０６に返される。ユーザへのフィードバックは、不合格の規則条件を含むセルがあればそれらにシェーディングをかけ、合格の規則条件を含むセルにはシェーディングをかけないことによって、ユーザ１１０に提供される。画面キャプチャ３００によって示されるユーザインタフェースの実施形態は、シェーディングがかけられたいくつかのセルを含み（これらは規則条件の再適用後にシェーディングがかけられた）、これは、このシェーディングがかけられたセル中で指定される規則条件が、現在選択されているデータ要素について不合格であったことを示す。ユーザインタフェースは、ユーザインタフェースウィンドウ中で提示されることになる系統図の生成を開始するためのコントロール３０８も備え、系統図は、編集されている規則と、入力値及び出力値並びに他の規則との間の関係を示す。
【００７１】
実施形態によっては、処理モジュール１０８は、異なるセルについての実行可能命令を管理するのに必要とされるリソースと、再コンパイルを実行するのに必要とされるリソースとの間のトレードオフに基づいて、厳密に必要な回数よりも多く規則条件を選択的に再コンパイルする。状況によっては（例えば、比較的少数のセルを含む単純な規則のセットの場合は）、編集されていないセルについての規則条件も再コンパイルされることがある。さらに、処理モジュール１０８は、セルを編集する結果として常に全てのセルが再コンパイルされることになる状況では、コンパイルされた命令（初期コンパイル後又は再コンパイル後に生成された）の異なるセット間の依存関係を追跡する依存情報を記憶する必要はなくてよい。
【００７２】
一般に、ユーザインタフェース中で指定された規則のセットがデータ要素に適用されるときは、第１の規則ケース（すなわち、規則ケースの第１の行で指定された規則ケース）が、データ要素のフィールドの値に対して評価される。第１の規則ケースの条件の全てが満たされる場合は、規則セットの出力は、第１の規則ケースに関連する出力３１０のセットである。第１の規則ケースの条件のいずれかが満たされない場合は、第２の規則ケース（すなわち、規則ケースの第２の行で指定された規則ケース）が、データ要素のフィールドの値に対して評価される。第２の規則ケースの条件の全てが満たされる場合は、規則セットの出力は、第２の規則ケースに関連する出力３１２のセットである。この評価プロセスが、出力のセットが決定されるまで継続する。視覚的には、出力ケースに関連する規則ケースは、不合格の規則条件を含まず、したがって、シェーディングがかけられたセルを含まない。
【００７３】
前述のように、ユーザ１１０は、ナビゲーションコントロール３０４を使用してデータセットの要素の中をナビゲートすることができる。ユーザ１１０がナビゲーションコントロール３０４を使用して異なる要素にナビゲートしたときは常に、ＵＩモジュール１０６は、新たに選択された要素の値に対して、指定された規則ケースを実行する。
【００７４】
さらに、ユーザインタフェースはテストコントロール３１４を備え、テストコントロール３１４により、ＵＩモジュール１０６は、指定された規則ケースをデータセットの全ての要素に適用することができる。データセットへの規則ケースの適用が完了すると、処理モジュール１０８は、データセットに規則ケースを適用した結果をＵＩモジュール１０８に提供し、ＵＩモジュールは、結果をユーザインタフェース中でユーザ１１０に対して表示する。いくつかの例では、結果の要約が、別個のユーザインタフェース（図示せず）中でユーザに対して表示される。
【００７５】
様々な代替実施形態を使用することができる。例えば、上の記述では、セルにシェーディングをかけることによってフィードバックをユーザに提供することについて述べているが、他のタイプのフィードバックメカニズム（例えば、音声、ポップアップウィンドウ、特別な記号など）を利用することもできる。上の記述では、完全なデータセットを扱いながら規則を指定することについて述べている。しかし、いくつかの例では、縮小されたより管理しやすいサイズを有し、完全なデータセットを代表する、テストデータセットを使用することができる。
【００７６】
前述の技法は、例えば、適切なソフトウェア命令を実行するプログラム可能なコンピューティングシステムを使用して実装することもでき、又は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ，field-programmable gate array）などの適切なハードウェアにおいて、若しくは何らかのハイブリッド形式で実装することもできる。例えば、プログラムされる手法では、ソフトウェアは、１又は２以上のプログラムされた又はプログラム可能なコンピューティングシステム（分散型、クライアント／サーバ、又はグリッドなど、様々なアーキテクチャのものであり得る）上で実行される１又は２以上のコンピュータプログラム中のプロシージャを含むことができ、各コンピューティングシステムは、少なくとも１つのプロセッサと、少なくとも１つのデータストレージシステム（揮発性及び／又は不揮発性の、メモリ及び／又はストレージ要素を含む）と、少なくとも１つのユーザインタフェース（少なくとも１つの入力デバイス又はポートを使用して入力を受け取るため、及び少なくとも１つの出力デバイス又はポートを使用して出力を提供するための）とを備える。ソフトウェアは、データフローグラフの設計、構成、及び実行に関係するサービスを例えば提供するより大きいプログラムの、１又は２以上のモジュールを含むことができる。プログラムのモジュール（例えば、データフローグラフの要素）は、データリポジトリに記憶されたデータモデルに従う、データ構造又は他の編成されたデータとして実装することができる。
【００７７】
ソフトウェアは、ＣＤ−ＲＯＭ又は他のコンピュータ可読媒体（例えば、汎用若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な）など、有形の非一時的媒体上で提供されてもよく、或いは、ネットワークの通信媒体を介してコンピューティングシステムの有形の非一時的媒体に送達（例えば、伝搬シグナル中で符号化）されて、そこで実行される。処理のいくらか又は全ては、専用コンピュータ上で実施されてもよく、又は、コプロセッサ若しくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは専用の特定用途向け集積回路（ＡＳＩＣ，application-specific integrated circuit）など、専用ハードウェアを使用して実施されてもよい。処理は分散方式で実装されてもよく、その場合、ソフトウェアによって指定される計算の異なる部分が、異なるコンピューティング要素によって実施される。このような各コンピュータプログラムは、ストレージデバイス媒体がコンピュータによって読み取られたときにコンピュータを構成及び操作して本明細書に記載の処理を実施するために、汎用又は専用のプログラム可能コンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体（例えば、固体メモリ若しくは媒体、又は磁気若しくは光学媒体）に記憶されるか又はダウンロードされることが好ましい。本発明のシステムはまた、コンピュータプログラムで構成された有形の非一時的媒体として実装されるものと考えることもでき、その場合、そのように構成された媒体は、特定の事前定義された方式でコンピュータを動作させて、本明細書に記載の処理ステップの１又は２以上を実施させる。
【００７８】
本発明のいくつかの実施形態について述べた。しかし、以上の記述は、本発明の範囲を例示するものとし、限定するものとはしないことを理解されたい。本発明の範囲は、後続の特許請求の範囲によって定義される。したがって、他の実施形態もまた、後続の特許請求の範囲内である。例えば、本発明の範囲を逸脱することなく、様々な修正を加えることができる。加えて、前述のステップのいくつかは、順序に依存しない場合もあり、したがって、述べた順序とは異なる順序で実施されてもよい。
【図１】
0006526632.tif 000002
【図２Ａ】
0006526632.tif 000003
【図２Ｂ】
0006526632.tif 000004
【図２Ｃ】
0006526632.tif 000005
【図３】
0006526632.tif 000006
【図４Ａ】
0006526632.tif 000007
【図４Ｂ】
0006526632.tif 000008
【図４Ｃ】
0006526632.tif 000009
【図４Ｄ】
0006526632.tif 000010