(58)【調査した分野】(Int.Cl.,DB名)
前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの2つのルールが示す属性に基づいて、当該2つのルールが矛盾関係と冗長関係の何れであるかを判定する関係判定部
を備える請求項1に記載のルール検証装置。
前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの2つのルールが示す属性が異なる場合、当該2つのルールが矛盾関係にあると判定する
請求項2に記載のルール検証装置。
前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの2つのルールが示す属性が同一である場合、当該2つのルールが冗長関係にあると判定する
請求項2から請求項4の何れか一項に記載のルール検証装置。
前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの2つのルールが冗長関係にあると前記関係判定部が判定した場合、当該2つのルールに対応する2つの凸包を包含する包含凸包を算出する包含凸包算出部
を備える請求項2から請求項5の何れか一項に記載のルール検証装置。
【発明を実施するための形態】
【0018】
<第一の実施形態>
図1は、本発明の第一の実施形態によるルール検証装置10の構成の一例を示す図である。
図1で示すように、第一の実施形態によるルール検証装置10は、凸包生成部101と、重複判定部102と、重複ルール特定部103と、関係判定部104と、ルール分割部105と、包含凸包算出部106と、ルール提示部107と、記憶部110と、表示部120とを備える。
【0019】
ルール検証装置10が備える凸包生成部101は、記憶部110が記憶しているレコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。なお、レコードの値の範囲の組み合わせとは、IF〜THEN形式で示されるルール(以下、IF〜THENルール)のIFによって示される条件のことである。また、レコードの属性とは、IF〜THENルールのTHENによって示される結果のことである。
【0020】
重複判定部102は、凸包生成部101が生成した複数の凸包の間に重複があるか否かを判定する。
重複ルール特定部103は、重複判定部102が重複があると判定した凸包が示すIF〜THENルールの組み合わせを特定する。
【0021】
関係判定部104は、重複ルール特定部103が特定した凸包が示すIF〜THENルールの組み合わせのうちの2つのIF〜THENルールが示す属性に基づいて、当該2つのIF〜THENルールが矛盾関係と冗長関係の何れであるかを判定する。関係判定部104は、重複ルール特定部103が特定した凸包が示すIF〜THENルールの組み合わせのうちの2つのIF〜THENルールが示す属性が異なる場合、当該2つのIF〜THENルールが矛盾関係にあると判定する。また、関係判定部104は、重複ルール特定部103が特定した凸包が示すIF〜THENルールの組み合わせのうちの2つのIF〜THENルールが示す属性が同一である場合、当該2つのIF〜THENルールが冗長関係にあると判定する。
【0022】
ルール分割部105は、重複ルール特定部103が特定した凸包が示すIF〜THENルールの組み合わせのうちの2つのIF〜THENルールが矛盾関係にあると関係判定部104が判定した場合、当該2つのIF〜THENルールをユーザ指示に基づいて分割する。
包含凸包算出部106は、重複ルール特定部103が特定した凸包が示すIF〜THENルールの組み合わせのうちの2つのIF〜THENルールが冗長関係にあると関係判定部104が判定した場合、当該2つのIF〜THENルールに対応する2つの凸包を包含する包含凸包を算出する。
【0023】
ルール提示部107は、IF〜THENルールの矛盾関係を解消する分割の候補や冗長関係を解消する候補を表示など、ユーザに報知する情報を表示する。
記憶部110は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のIF〜THENルールなど、ルール検証装置10の処理で必要となる種々の情報を記憶している。
表示部120は、重複判定部102が包含凸包と他の凸包とに重複がないと判定した場合の包含凸包が示すIF〜THENルールや、ルール分割部105が分割した凸包が示すIF〜THENルールなど、ユーザに報知する種々の情報を表示する。
【0024】
図2は、本発明の第一の実施形態による記憶部110が記憶しているIF〜THENルールの一例を示す図である。
また、
図3は、本発明の第一の実施形態において製品の管理責任の組織(ここでは課)を示す管理元コード(責任課)が識別子RN0であると特定する際に使用されるIF〜THENルールの一例を示す図である。
【0025】
図2は、ルール#と、シリアル#と、製品#と、品目コードと、原価要素と、管理元コード(管理課)とを関連付けている複数のIF〜THENルールを示している。例えば、ルール#1は、シリアル#の識別子172と製品#の識別子1とで特定される製品である。そして、品目コード“pn〜pn+1”、原価要素“an〜an+1”は、“最小値〜最大値”の形式で表したIF〜THENルールにおけるIFが示す条件の数値範囲である。例えば、ルール#1において、品目コードの最小値はpnであり、最大値はpn+1である。また、ルール#1において、原価要素の最小値はanであり、最大値はan+1である。
また、ルール#1において、シリアル#の識別子172と製品#の識別子1とで特定される製品に対して、IFが示す条件が、品目コードがpn〜pn+1の間であり、原価要素がan〜an+1である場合、THENが示す製品の管理責任の組織(責任課)はRU1となる。なお、シリアル#は、#1から記録されている。
【0026】
また、
図3で示したIF〜THENルールの例は、
図2におけるルール#2に対するルールを示している。この
図3は、IFが示す条件として、品目コードのレコードの値がcnとcn+1との間であり、かつ、原価要素のレコードの値がdnとdn+1との間である場合、THENが示す結果として管理元コード(責任課)のレコードの値がRN0となることを意味する。
なお、本発明の第一の実施形態によるルール検証装置10は、このようなIF〜THENルールが複数存在する場合に、その複数のルールにおいて、ルールの重複や矛盾を検出し、ルールの簡単化やルールの矛盾を是正する処理を行うものである。
【0027】
図4は、本発明の第一の実施形態によるルール検証装置10の処理フローの一例を示す図である。
次に、
図4から
図8を用いて第一の実施形態によるルール検証装置10の処理フローについて説明する。
図4で示す第一の実施形態によるルール検証装置10が行う処理は、レコードの値の範囲の組み合わせ(IF〜THENルールのIFが示す条件)と当該レコードの属性(IF〜THENルールのTHENが示す結果)とを関連付けた複数のルールの各ルールに基づいて凸包を生成し、複数の凸包の間に重複があるか否かを判定し、重複があると判定された凸包が示すルールの組み合わせ、すなわち矛盾関係や冗長関係が生じている可能性のあるルールを特定する処理を含む。
【0028】
まず、ルール検証装置10が備える凸包生成部101は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルール、すなわち複数のIF〜THENルールを記憶部110から読み出す(ステップS1)。例えば、凸包生成部101が記憶部110から読み出す複数のIF〜THENルールは、
図2で示したような、ルール#と、シリアル#と、製品#と、品目コードと、原価要素と、管理元コード(管理課)とを関連付けているルールである。
凸包生成部101は、記憶部110から複数のIF〜THENルールを読み出すと、読み出した複数の各IF〜THENルールのIFが示す各条件(この場合、品目コードと原価要素)の最小値〜最大値(範囲)に基づいて、凸包を求める(ステップS2)。
【0029】
図5は、凸包生成部101がステップS2の処理で生成する凸包の一例を示す図である。
凸包生成部101は、
図5で示すように、記憶部110から読み出した
図2で示したような各IF〜THENルールにおける品目コードの最小値と最大値の2点と、各IF〜THENルールにおける原価要素の最小値と最大値の2点との組み合わせによって示される二次元平面上の4つの座標の点集合に対して凸包を求める。例えば、凸包生成部101は、分割統治法などの周知のアルゴリズムを用いて点集合から凸包を求めればよい。そして、凸包生成部101は、求めた凸包が示す情報を重複判定部102に出力する。
【0030】
重複判定部102は、凸包生成部101が生成した凸包が示す情報を入力すると、入力した二次元平面上の4つの座標を含む複数の凸包のうち2つの凸包を選択するすべての組み合わせに対して凸包に重複があるか否かを判定する(ステップS3)。例えば、重複判定部102は、凸包多面体の重なりを判定するGJK(Gilbert−Johnson−Keerthi)アルゴリズムなど周知のアルゴリズムを用いて凸包に重複があるか否かを判定すればよい。重複判定部102は、二次元平面上の4つの座標を含む複数の凸包のうち2つの凸包を選択するすべての組み合わせに対して凸包に重複がないと判定した場合、凸包に重複がないと判定する(ステップS3、NO)。
また、重複判定部102は、二次元平面上の4つの座標を含む複数の凸包のうち2つの凸包を選択するすべての組み合わせに対して凸包に重複があると判定した場合、凸包に重複があると判定する(ステップS3、YES)。重複判定部102は、凸包に重複があると判定した場合、重複があると判定された凸包が示す情報を重複ルール特定部103に出力する。
【0031】
重複ルール特定部103は、重複があると判定された凸包が示す情報を入力すると、
図2で示したような、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のIF〜THENルールを記憶部110から読み出す。重複ルール特定部103は、例えば、記憶部110から読み出した複数のIF〜THENルールにおける各条件の範囲と、重複があると判定された凸包に相当するルールにおける各条件の範囲とを比較する。そして、重複ルール特定部103は、記憶部110から読み出した複数のIF〜THENルールにおける各条件の範囲と、重複があると判定された凸包に相当するルールにおける各条件の範囲とが一致するルールの組み合わせを、重複があると判定された凸包が示すルールの組み合わせであると特定する(ステップS4)。重複ルール特定部103は、重複があると判定された凸包が示すルールの組み合わせを関係判定部104に出力する。
【0032】
関係判定部104は、重複があると判定された凸包が示すルールの組み合わせを重複ルール特定部103から入力すると、それら2つのルールの属性が同一であるか否かを判定する(ステップS5)。
関係判定部104は、重複があると判定された凸包が示す2つのルールの属性が同一であると判定した場合(ステップS5、YES)、その2つのルールが冗長関係にあると判定する(ステップS6)。そして、関係判定部104は、冗長関係にあると判定した2つのルールを包含凸包算出部106に出力する(ステップS7)。
【0033】
図6から
図8は、関係判定部104が冗長関係にある部分を包含する包含凸包を算出する際に行う判断の例を示す図である。
まず、
図6を用いて、複数のルールが包含関係にある場合に関係判定部104が判断する包含関係について説明する。
図6に示す関係判定部104が判断する包含関係の例は、
図2で示したIF〜THENルール#1とルール#3についての包含関係である。
図6における(1)で示すように、関係判定部104が記憶部110からルール#1とルール#3とを読み出したとする。ルール#1における原価要素の範囲がan〜an+1であり、ルール#3における原価要素の範囲がbn〜bn+1であり、bn<an<an+1<bn+1の関係が成り立つ場合、ルール#3はルール#1を包含している。この場合、関係判定部104は、新たな原価要素のルールとして、bn〜bn+1を生成する。
ただし、
図6における(2)で示すように、例えば、bn<an<an+1<sn<sn+1<bn+1の関係が成り立ち、管理元コード(この場合、識別子USZ)となるルール(この場合、ルール#5)がbn〜bn+1に1つでも存在している場合には、関係判定部104は、新たな原価要素のルールは生成しない。
【0034】
次に、
図7を用いて、複数のルールが分割関係にある場合に関係判定部104が判断する分割関係について説明する。
図7に示す関係判定部104が判断する分割関係の例は、
図2で示したIF〜THENルール#1とルール#3とルール#6についての分割関係である。
図7における(1)で示すように、関係判定部104が記憶部110からルール#1とルール#3とルール#6とを読み出したとする。ルール#1における原価要素の範囲がan〜an+1であり、ルール#3における原価要素の範囲がbn〜bn+1であり、ルール#6における原価要素の範囲がcn〜cn+1であり、an<an+1=bn<bn+1<cn<cn+1の関係が成り立つ場合、ルール#1とルール#3とルール#6とは分割されている。この場合、関係判定部104は、最大凸包を用いて新たな原価要素のルールとして、an〜cn+1を生成する。
ただし、
図7における(2)で示すように、例えば、an<an+1=bn<bn+1<sn<sn+1<cn<cn+1の関係が成り立ち、管理元コード(この場合、識別子USZ)となるルールがbn+1〜cnに存在している場合には、関係判定部104は、新たな原価要素のルールとして、an〜bn+1を生成する。
【0035】
次に、
図8を用いて、複数のルールが重複関係にある場合に関係判定部104が判断する重複関係について説明する。
図8に示す関係判定部104が判断する重複関係の例は、
図2で示したIF〜THEN形式のルール#1とルール#3についての重複関係である。
図8で示すように、関係判定部104が記憶部110からルール#1とルール#3とを読み出したとする。ルール#1における原価要素の範囲がan〜an+1であり、ルール#3における原価要素の範囲がbn〜bn+1であり、an<bn<an+1<bn+1の関係が成り立つ場合、ルール#1とルール#3は重複している。この場合、関係判定部104は、新たな原価要素のルールとして、an〜bn+1を生成する。
【0036】
なお、ここで説明した関係判定部104が生成する凸包は、例えば複数のルールの各ルールに対するIF条件の最小値と最大値とを点集合とし、アルゴリズムである分割統治法(Divide and Comquer Method)などの周知のアルゴリズムを用いることで実現することができる。
ここまでが、ステップS7で関係判定部104が読み出した複数のルールの各ルールに対するIF条件の最小値〜最大値(範囲)に基づいて凸包を求める例についての説明である。このステップS7の処理により、包含関係、分割関係、重複関係といった冗長関係を示す複数のルールを縮退することによって冗長関係を解消することができる。
なお、ステップS7で関係判定部104が複数のルールを縮退することによって冗長関係を解消する処理は、各条件における複数のルールのすべての組み合わせに対して行う。
【0037】
また、関係判定部104は、重複があると判定された凸包が示す2つのルールの属性が同一でないと判定した場合(ステップS5、NO)、その2つのルールが矛盾関係にあると判定する(ステップS8)。そして、関係判定部104は、矛盾関係にあると判定した2つのルールをルール分割部105に出力する(ステップS9)。
【0038】
ルール分割部105は、関係判定部104が矛盾関係にあると判定した2つのルールを入力すると、入力した2つの各ルールに対して生成した凸包が示す二次元平面上の4つの座標を含む範囲の重複する部分、すなわち矛盾関係にある部分をどのように分割し、矛盾関係を解消する候補を生成する(ステップS10)。
【0039】
図9は、IF〜THEN形式のルールにおける矛盾関係の例を示す図である。
図9を用いて説明する矛盾関係の例は、
図2で示したIF〜THEN形式のルール#1とルール#6についての矛盾関係である。
図9で示すように、凸包生成部101が記憶部110からルール#1とルール#6とを読み出したとする。ルール#1における原価要素の範囲がan〜an+1であり、ルール#6における原価要素の範囲がsn〜sn+1であり、an<sn<an+1<sn+1の関係が成り立ち、管理元コード(この場合、識別子USZ)を示すルールがan〜an+1に存在している場合には、ルール#1とルール#6は矛盾している。しかしながら、IFを示す条件が1つ(この場合、原価要素)である場合、sn〜an+1の範囲が新ルール#1と新ルール#5の何れに含めるかを判断し、新たな原価要素のルール#1としてan〜a’n+1を生成し、新たな原価要素のルール#5としてa’n+1〜bn+1を生成する。ただし、IFが示す条件が1つである場合、論理的には問題ない。
【0040】
図10は、IFが示す条件が2つあり2つのルールの管理元コード(責任課)が異なる場合にルール検証装置10が行う矛盾があるか否かの判定の一例を示す図である。
この場合のIFが示す2つの条件は、原価要素と品目コードである。
IFが示す2つの条件の何れにも重複が存在しない場合、ルール検証装置10は、完全に矛盾がないと判定する。IFが示す2つの条件のうちの1条件のみ重複がある場合、ルール検証装置10は、理論的には問題なしと判定する。IFが示す2つの条件の両方の条件で重複がある場合、ルール検証装置10は、矛盾ありと判定する。例えば、ルール分割部105が生成する矛盾関係を解消する分割の候補は、2つのルールの何れか一方から重複する範囲を除外する分割である。ルール分割部105は、生成した矛盾関係を解消する分割の候補をルール指示部107に出力する(ステップS11)。
ルール提示部107は、ルール分割部105が矛盾関係を解消する分割の候補を入力すると、ルール分割部105が生成した矛盾関係を解消する分割の候補を表示させる信号を表示部120に出力する(ステップS12)。
表示部120は、ルール提示部107から矛盾関係を解消する分割の候補を表示させる信号を入力すると、入力した信号に基づいて矛盾関係を解消する分割の候補を表示する(ステップS13)。なお、表示部120は、矛盾関係にある部分をユーザが認識しやすい、例えば赤色で塗りつぶされた四角形で表示する。
ここで、ユーザが矛盾関係を解消する分割の候補に基づいて、分割を指定するユーザ操作を行う。すると、ルール分割部105は、そのユーザ操作に基づいて、ルールを分割する(ステップS14)。
次に、ルール検証装置10の制御部は、ユーザ操作に基づいて、処理を終了するか否かを判定する(ステップS15)。ルール検証装置10の制御部は、ユーザが処理を終了するユーザ操作を行った場合(ステップS15、YES)、ルール検証装置10の処理を終了する。また、ルール検証装置10の制御部は、ユーザが処理を終了しないユーザ操作を行った場合(ステップS15、NO)、ステップS3の処理に戻る。
【0041】
また、ステップS7で関係判定部104が冗長関係にあると判定した2つのルールを包含凸包算出部106に出力する。すると、包含凸包算出部106は、関係判定部104が冗長関係にあると判定した2つのルールを入力する。包含凸包算出部106は、入力した2つの各ルールに対して生成した凸包を示す二次元平面上の4つの座標を含む範囲の重複する部分、すなわち冗長関係にある部分を包含する包含凸包を算出し(ステップS16)、冗長関係を解消する候補を生成する。例えば、包含凸包算出部106が生成する冗長関係を解消する候補は、2つのルールに対応する2つの凸包を包含する周知のアルゴリズムを用いて求めた包含凸包である。包含凸包算出部106は、生成した冗長関係を解消する候補をルール指示部107に出力する(ステップS17)。
ステップS11でルール分割部105が矛盾関係を解消する分割の候補をルール指示部107に出力すると、ルール提示部107は、ルール分割部105が生成した矛盾関係を解消する分割の候補を表示させる信号を表示部120に出力する(ステップS18)。
また、ステップS13で包含凸包算出部106が冗長関係を解消する候補をルール指示部107に出力すると、ルール提示部107は、包含凸包算出部106が生成した冗長関係を解消する候補を表示させる信号を表示部120に出力する(ステップS19)。
また、表示部120は、ルール提示部107から冗長関係を解消する候補を表示させる信号を入力すると、入力した信号に基づいて冗長関係を解消する候補を表示する(ステップS20)。
次に、ルール検証装置10の制御部は、ユーザ操作に基づいて、処理を終了するか否かを判定する(ステップS21)。ルール検証装置10の制御部は、ユーザが処理を終了するユーザ操作を行った場合(ステップS21、YES)、ルール検証装置10の処理を終了する。また、ルール検証装置10の制御部は、ユーザが処理を終了しないユーザ操作を行った場合(ステップS21、NO)、ステップS3の処理に戻る。
【0042】
以上、本発明の第一の実施形態によるルール検証装置10について説明した。
本発明の実施形態によるルール検証装置10は、凸包生成部101と、重複判定部102と、重複ルール特定部103とを備える。凸包生成部101は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。重複判定部102は、凸包生成部101が生成した複数の凸包の間に重複があるか否かを判定する。重複ルール特定部103は、重複判定部102が重複があると判定した凸包が示すルールの組み合わせを特定する。
このようにすれば、IF〜THEN形式のルールが逐次的に追加される場合、追加したIF〜THEN形式のルールとそれ以前に追加したIF〜THEN形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができる。
また、ルール検証装置10は、関係判定部104、ルール分割部105、包含凸包算出部106、ルール提示部107、表示部120を更に備えることで、重複ルール特定部103が特定した矛盾関係や冗長関係が生じている可能性のあるルールを、視覚的にユーザに報知し、矛盾関係や冗長関係のないルールに是正することができる。
【0043】
<第二の実施形態>
次に、本発明の第二の実施形態によるルール検証装置10について説明する。
第二の実施形態による管理システム1の構成は、第一の実施形態による管理システム1と同様である。ただし、第二の実施形態による凸包生成部101が記憶部110から読み出すIF〜THENルールのIF条件は、第一の実施形態における品目コードと原価要素に加え、要求元と計上元が追加されている。
【0044】
図11は、本発明の第二の実施形態による記憶部110が記憶しているIF〜THENルールの一例を示す図である。
また、
図12は、本発明の第二の実施形態において製品の管理責任の組織を示す管理元コード(責任課)が識別子RN0であると特定する際に使用されるIF〜THENルールの一例を示す図である。
【0045】
図11は、ルール#と、シリアル#と、製品#と、要求元と、計上元と、品目コードと、原価要素と、管理元コード(管理課)とを関連付けている複数のIF〜THENルールを示している。例えば、ルール#1は、シリアル#の識別子172と製品#の識別子1とで特定される製品である。そして、要求元“zn〜zn+1”、計上元“dn〜dn+1”、品目コード“pn〜pn+1”、原価要素“an〜an+1”は、“最小値〜最大値”の形式で表したIF〜THENルールにおけるIFが示す条件の数値範囲である。例えば、ルール#1において、要求元の最小値はznであり、最大値はzn+1である。計上元の最小値はdnであり、最大値はdn+1である。品目コードの最小値はpnであり、最大値はpn+1である。また、ルール#1において、原価要素の最小値はanであり、最大値はan+1である。
また、ルール#1において、シリアル#の識別子172と製品#の識別子1とで特定される製品に対して、IFが示す条件が、要求元がzn〜zn+1の間であり、計上元がdn〜dn+1の間であり、品目コードがpn〜pn+1の間であり、原価要素がan〜an+1である場合、THENが示す製品の管理責任の組織(責任課)はRU1となる。なお、シリアル#は、#1から記録されている。
【0046】
また、
図12で示したIF〜THENルールの例は、
図11におけるルール#2に対するルールを示している。この
図12は、IFが示す条件として、要求元のレコードの値がznとzn+1との間であり、かつ、計上元のレコードの値がdnとdn+1との間であり、かつ、品目コードのレコードの値がcnとcn+1との間であり、かつ、原価要素のレコードの値がdnとdn+1との間である場合、THENが示す結果として管理元コード(責任課)のレコードの値がRN0となることを意味する。
【0047】
次に、第二の実施形態によるルール検証装置10の処理について説明する。
ただし、第二の実施形態によるルール検証装置10が行う処理と、第一の実施形態によるルール検証装置10が行う処理との違いは、IFが示す条件数の違いによるルール検証装置10が行う演算の次数が異なる点と、その演算の次数の違いによる表示部110の表示が異なる点である。
従って、ここでは、主な違いであるルール検証装置10の重複判定部102が行う演算と、表示部110が表示する表示についてのみ説明する。
【0048】
ルール検証装置10の包含凸包算出部106が行う演算は、IFが示す4つの条件である要求元と、計上元と、品目コードと、原価要素の4次元の演算となる。しかしながら、第二の実施形態による包含凸包算出部106は、第一の実施形態による包含凸包算出部106と同様に、例えばGJK(Gilbert−Johnson−Keerthi)アルゴリズムを用いればよい。n次元の場合、2次元平面のアルゴリズムをn(n−1)÷2回演算すればよい。従って、4次元の場合には2次元のアルゴリズムを6回演算することとなる。
【0049】
次に、表示部110が、4つの条件を表示する表示について説明する。
矛盾関係にあると判定されるのは、包含凸包算出部106が4つの条件が示す範囲がすべて重複していると判定した場合である。しかしながら、表示部110は、3次元表示までしかできない。そのため、表示部110は、例えば、4つの範囲うちの3つの範囲を選択するすべての組み合わせを表示する。また、予め条件に優先順位を設定しておき、表示部110は、その優先順位に基づいて3つの範囲を3次元で表示する。また、ユーザが任意に選択してもよい。
【0050】
以上、本発明の第一の実施形態によるルール検証装置10について説明した。
本発明の実施形態によるルール検証装置10は、凸包生成部101と、重複判定部102と、重複ルール特定部103とを備える。凸包生成部101は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。重複判定部102は、凸包生成部101が生成した複数の凸包の間に重複があるか否かを判定する。重複ルール特定部103は、重複判定部102が重複があると判定した凸包が示すルールの組み合わせを特定する。
このようにすれば、IF〜THEN形式のルールが逐次的に追加される場合、追加したIF〜THEN形式のルールとそれ以前に追加したIF〜THEN形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができる。
また、ルール検証装置10は、関係判定部104、ルール分割部105、包含凸包算出部106、ルール提示部107、表示部120を更に備えることで、重複ルール特定部103が特定した矛盾関係や冗長関係が生じている可能性のあるルールを、視覚的にユーザに報知し、矛盾関係や冗長関係のないルールに是正することができる。
【0051】
なお、実施形態によるルール検証装置10の処理は、まず各ルールについての凸包を求め、重複する領域を求めた後、矛盾関係や冗長関係が生じている可能性のあるルールを特定するものとして説明した。しかしながら、実施形態によるルール検証装置10の処理は、それに限定するものではない。
例えば、ルール検証装置10の処理は、各条件に対して矛盾関係や冗長関係を求めて最適化し、最適化した各条件の組み合わせに対して凸包を求めてもよい。
また本発明の実施形態における処理フローは、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
また、IF〜THENルール間に矛盾がない場合、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成部101と、レコードの同一の属性に係るルールに基づいて生成された凸包を包含する包含凸包を算出する包含凸包算出部106と、凸包または包含凸包が示すルールを表示部120に表示するルール提示部107とを備えるルール検証装置10により、冗長関係を特定してもよい。また、ルール検証装置10は、特定した冗長関係を是正してもよい。
【0052】
なお本発明の実施形態について説明したが、上述のルール検証装置10は内部に、コンピュータシステムを有している。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0053】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0054】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定するものではない。また、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができるものである。