(57)【要約】【課題】ＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加される場合、追加したＩＦ〜ＴＨＥＮ形式のルールとそれ以前に追加したＩＦ〜ＴＨＥＮ形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができるルール検証装置を提供する。【解決手段】ルール検証装置は、凸包生成部と、重複判定部と、重複ルール特定部とを備える。前記凸包生成部は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。前記重複判定部は、前記凸包生成部が生成した複数の凸包の間に重複があるか否かを判定する。前記重複ルール特定部は、前記重複判定部が重複があると判定した凸包が示すルールの組み合わせを特定する。【選択図】図１
2015118449.tif 000002
【特許請求の範囲】
【請求項１】
レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成部と、
前記凸包生成部が生成した複数の凸包の間に重複があるか否かを判定する重複判定部と、
前記重複判定部が重複があると判定した凸包が示すルールの組み合わせを特定する重複ルール特定部と
を備えるルール検証装置。
【請求項２】
前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性に基づいて、当該２つのルールが矛盾関係と冗長関係の何れであるかを判定する関係判定部
を備える請求項１に記載のルール検証装置。
【請求項３】
前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性が異なる場合、当該２つのルールが矛盾関係にあると判定する
請求項２に記載のルール検証装置。
【請求項４】
前記凸包が示すルールを分割するルール分割部を備え、
当該ルール分割部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが矛盾関係にあると前記関係判定部が判定した場合、当該２つのルールをユーザ指示に基づいて分割する
請求項２または請求項３に記載のルール検証装置。
【請求項５】
前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性が同一である場合、当該２つのルールが冗長関係にあると判定する
請求項２から請求項４の何れか一項に記載のルール検証装置。
【請求項６】
前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが冗長関係にあると前記関係判定部が判定した場合、当該２つのルールに対応する２つの凸包を包含する包含凸包を算出する包含凸包算出部
を備える請求項２から請求項５の何れか一項に記載のルール検証装置。
【請求項７】
前記凸包または前記包含凸包が示すルールを表示部に表示するルール提示部を備え、
当該ルール提示部は、前記包含凸包算出部が算出した前記包含凸包と他の凸包とに重複があるか否かを前記重複判定部が判定し、当該重複判定部が前記包含凸包と他の凸包とに重複がないと判定した場合の前記包含凸包が示すルールや、前記ルール分割部が分割した前記凸包が示すルールを表示部に表示する
請求項６に記載のルール検証装置。
【請求項８】
レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成部と、
前記レコードの同一の属性に係るルールに基づいて生成された凸包を包含する包含凸包を算出する包含凸包算出部と、
前記凸包または前記包含凸包が示すルールを表示部に表示するルール提示部と
を備えるルール検証装置。
【請求項９】
レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成し、
複数の凸包の間に重複があるか否かを判定し、
重複があると判定した凸包が示すルールの組み合わせを特定する
ルール検証方法。
【請求項１０】
ルール検証装置のコンピュータを、
レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成手段と、
前記凸包生成手段が生成した複数の凸包の間に重複があるか否かを判定する重複判定手段と、
前記重複判定手段が重複があると判定した凸包が示すルールの組み合わせを特定する重複ルール特定手段
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルール検証装置、ルール検証方法、及びプログラムに関する。
【背景技術】
【０００２】
膨大なデータを、それらのデータが有する各属性における条件の数値範囲の組み合わせで分類あるいは検索する際、分類あるいは検索のルールが複数のＩＦ〜ＴＨＥＮ形式のルールで規定されていることがある。
特許文献１には、関連する技術として、分析対象であるデータに基づき、ユーザが指定したルール評価基準になるように調整対象として指定したルールを調整する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３１２４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、条件と結果とを含む複数のＩＦ〜ＴＨＥＮ形式のルールにおいて、各ＩＦが示す分類あるいは検索の条件を数値範囲で示し、それらの数値範囲の組み合わせによりＴＨＥＮが示す属性と対応付けられている場合、新たなデータが追加される度にＩＦ〜ＴＨＥＮ形式のルールで示される数値範囲と属性とが追加される。例えば、企業の経理部門などは、表計算ソフトウェアなどを使用して、各製品に対して各組織が負担する経費を示す一覧表を作成し、管理することがある。各製品に対して各組織が負担する経費を示す一覧表には、各組織が負担する経費が製品の開発開始から製品の量産完了までの長期にわたりデータとＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加されることがある。そのような場合、同一製品に対して、追加したＩＦ〜ＴＨＥＮ形式のルールとそれ以前に追加したＩＦ〜ＴＨＥＮ形式のルールとの間で、ＩＦが示す条件は同一であるのにＴＨＥＮが示す結果が異なるという矛盾関係や、ＩＦ〜ＴＨＥＮルールが同一または一部が重複するという冗長関係が生じている可能性がある。
そのため、ＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加される場合、複数のＩＦ〜ＴＨＥＮ形式のルール間で矛盾関係や冗長関係が生じている可能性のあるルールを特定する技術が求められていた。
【０００５】
そこでこの発明は、上記の課題を解決することのできるルール検証装置、ルール検証方法、及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の一態様によれば、ルール検証装置は、凸包生成部と、重複判定部と、重複ルール特定部とを備える。前記凸包生成部は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。前記重複判定部は、前記凸包生成部が生成した複数の凸包の間に重複があるか否かを判定する。前記重複ルール特定部は、前記重複判定部が重複があると判定した凸包が示すルールの組み合わせを特定する。
【０００７】
また本発明の別の態様によれば、前記ルール検証装置は、関係判定部を備える。前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性に基づいて、当該２つのルールが矛盾関係と冗長関係の何れであるかを判定する。
【０００８】
また本発明の別の態様によれば、前記ルール検証装置が備える前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性が異なる場合、当該２つのルールが矛盾関係にあると判定する。
【０００９】
また本発明の別の態様によれば、前記ルール検証装置は、ルール分割部を備える。前記ルール分割部は、前記凸包が示すルールを分割する。当該ルール分割部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが矛盾関係にあると前記関係判定部が判定した場合、当該２つのルールをユーザ指示に基づいて分割する。
【００１０】
また本発明の別の態様によれば、前記ルール検証装置が備える前記関係判定部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが示す属性が同一である場合、当該２つのルールが冗長関係にあると判定する。
【００１１】
また本発明の別の態様によれば、前記ルール検証装置は、包含凸包算出部を備える。前記包含凸包算出部は、前記重複ルール特定部が特定した凸包が示すルールの組み合わせのうちの２つのルールが冗長関係にあると前記関係判定部が判定した場合、当該２つのルールに対応する２つの凸包を包含する包含凸包を算出する。
【００１２】
また本発明の別の態様によれば、ルール検証装置は、ルール提示部を備える。前記ルール提示部は、前記凸包または前記包含凸包が示すルールを表示部に表示する。当該ルール提示部は、前記包含凸包算出部が算出した前記包含凸包と他の凸包とに重複があるか否かを前記重複判定部が判定し、当該重複判定部が前記包含凸包と他の凸包とに重複がないと判定した場合の前記包含凸包が示すルールや、前記ルール分割部が分割した前記凸包が示すルールを表示部に表示する。
【００１３】
また本発明の別の態様によれば、ルール検証装置は、凸包生成部と、包含凸包算出部と、ルール提示部とを備える。前記凸包生成部は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。前記包含凸包算出部は、前記レコードの同一の属性に係るルールに基づいて生成された凸包を包含する包含凸包を算出する。前記ルール提示部は、前記凸包または前記包含凸包が示すルールを表示部に表示する。
【００１４】
また本発明の別の態様によれば、ルール検証方法は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成し、複数の凸包の間に重複があるか否かを判定し、重複があると判定した凸包が示すルールの組み合わせを特定する。
【００１５】
また本発明の別の態様によれば、プログラムは、ルール検証装置のコンピュータを、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成手段と、前記凸包生成手段が生成した複数の凸包の間に重複があるか否かを判定する重複判定手段と、前記重複判定手段が重複があると判定した凸包が示すルールの組み合わせを特定する重複ルール特定手段として機能させる。
【発明の効果】
【００１６】
本発明の実施形態によるルール検証装置によれば、ＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加される場合、追加したＩＦ〜ＴＨＥＮ形式のルールとそれ以前に追加したＩＦ〜ＴＨＥＮ形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第一の実施形態によるルール検証装置１０の構成の一例を示す図である。
【図２】本発明の第一の実施形態による記憶部１１０が記憶しているＩＦ〜ＴＨＥＮルールの一例を示す図である。
【図３】本発明の第一の実施形態において製品の管理責任の組織（ここでは課）を示す管理元コード（責任課）が識別子ＲＮ０であると特定する際に使用されるＩＦ〜ＴＨＥＮルールの一例を示す図である。
【図４】本発明の第一の実施形態によるルール検証装置１０の処理フローの一例を示す図である。
【図５】凸包生成部１０１がステップＳ２の処理で生成する凸包の一例を示す図である。
【図６】関係判定部１０４が冗長関係にある部分を包含する包含凸包を算出する際に行う判断の例を示す図である。
【図７】関係判定部１０４が冗長関係にある部分を包含する包含凸包を算出する際に行う判断の例を示す図である。
【図８】関係判定部１０４が冗長関係にある部分を包含する包含凸包を算出する際に行う判断の例を示す図である。
【図９】図９は、ＩＦ〜ＴＨＥＮ形式のルールにおける矛盾関係の例を示す図である。
【図１０】ＩＦが示す条件が２つあり２つのルールの管理元コード（責任課）が異なる場合にルール検証装置１０が行う矛盾があるか否かの判定の一例を示す図である。
【図１１】本発明の第二の実施形態による記憶部１１０が記憶しているＩＦ〜ＴＨＥＮルールの一例を示す図である。
【図１２】本発明の第二の実施形態において製品の管理責任の組織を示す管理元コード（責任課）が識別子ＲＮ０であると特定する際に使用されるＩＦ〜ＴＨＥＮルールの一例を示す図である。
【発明を実施するための形態】
【００１８】
＜第一の実施形態＞
図１は、本発明の第一の実施形態によるルール検証装置１０の構成の一例を示す図である。
図１で示すように、第一の実施形態によるルール検証装置１０は、凸包生成部１０１と、重複判定部１０２と、重複ルール特定部１０３と、関係判定部１０４と、ルール分割部１０５と、包含凸包算出部１０６と、ルール提示部１０７と、記憶部１１０と、表示部１２０とを備える。
【００１９】
ルール検証装置１０が備える凸包生成部１０１は、記憶部１１０が記憶しているレコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。なお、レコードの値の範囲の組み合わせとは、ＩＦ〜ＴＨＥＮ形式で示されるルール（以下、ＩＦ〜ＴＨＥＮルール）のＩＦによって示される条件のことである。また、レコードの属性とは、ＩＦ〜ＴＨＥＮルールのＴＨＥＮによって示される結果のことである。
【００２０】
重複判定部１０２は、凸包生成部１０１が生成した複数の凸包の間に重複があるか否かを判定する。
重複ルール特定部１０３は、重複判定部１０２が重複があると判定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせを特定する。
【００２１】
関係判定部１０４は、重複ルール特定部１０３が特定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせのうちの２つのＩＦ〜ＴＨＥＮルールが示す属性に基づいて、当該２つのＩＦ〜ＴＨＥＮルールが矛盾関係と冗長関係の何れであるかを判定する。関係判定部１０４は、重複ルール特定部１０３が特定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせのうちの２つのＩＦ〜ＴＨＥＮルールが示す属性が異なる場合、当該２つのＩＦ〜ＴＨＥＮルールが矛盾関係にあると判定する。また、関係判定部１０４は、重複ルール特定部１０３が特定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせのうちの２つのＩＦ〜ＴＨＥＮルールが示す属性が同一である場合、当該２つのＩＦ〜ＴＨＥＮルールが冗長関係にあると判定する。
【００２２】
ルール分割部１０５は、重複ルール特定部１０３が特定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせのうちの２つのＩＦ〜ＴＨＥＮルールが矛盾関係にあると関係判定部１０４が判定した場合、当該２つのＩＦ〜ＴＨＥＮルールをユーザ指示に基づいて分割する。
包含凸包算出部１０６は、重複ルール特定部１０３が特定した凸包が示すＩＦ〜ＴＨＥＮルールの組み合わせのうちの２つのＩＦ〜ＴＨＥＮルールが冗長関係にあると関係判定部１０４が判定した場合、当該２つのＩＦ〜ＴＨＥＮルールに対応する２つの凸包を包含する包含凸包を算出する。
【００２３】
ルール提示部１０７は、ＩＦ〜ＴＨＥＮルールの矛盾関係を解消する分割の候補や冗長関係を解消する候補を表示など、ユーザに報知する情報を表示する。
記憶部１１０は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のＩＦ〜ＴＨＥＮルールなど、ルール検証装置１０の処理で必要となる種々の情報を記憶している。
表示部１２０は、重複判定部１０２が包含凸包と他の凸包とに重複がないと判定した場合の包含凸包が示すＩＦ〜ＴＨＥＮルールや、ルール分割部１０５が分割した凸包が示すＩＦ〜ＴＨＥＮルールなど、ユーザに報知する種々の情報を表示する。
【００２４】
図２は、本発明の第一の実施形態による記憶部１１０が記憶しているＩＦ〜ＴＨＥＮルールの一例を示す図である。
また、図３は、本発明の第一の実施形態において製品の管理責任の組織（ここでは課）を示す管理元コード（責任課）が識別子ＲＮ０であると特定する際に使用されるＩＦ〜ＴＨＥＮルールの一例を示す図である。
【００２５】
図２は、ルール＃と、シリアル＃と、製品＃と、品目コードと、原価要素と、管理元コード（管理課）とを関連付けている複数のＩＦ〜ＴＨＥＮルールを示している。例えば、ルール＃１は、シリアル＃の識別子１７２と製品＃の識別子１とで特定される製品である。そして、品目コード“ｐｎ〜ｐｎ＋１”、原価要素“ａｎ〜ａｎ＋１”は、“最小値〜最大値”の形式で表したＩＦ〜ＴＨＥＮルールにおけるＩＦが示す条件の数値範囲である。例えば、ルール＃１において、品目コードの最小値はｐｎであり、最大値はｐｎ＋１である。また、ルール＃１において、原価要素の最小値はａｎであり、最大値はａｎ＋１である。
また、ルール＃１において、シリアル＃の識別子１７２と製品＃の識別子１とで特定される製品に対して、ＩＦが示す条件が、品目コードがｐｎ〜ｐｎ＋１の間であり、原価要素がａｎ〜ａｎ＋１である場合、ＴＨＥＮが示す製品の管理責任の組織（責任課）はＲＵ１となる。なお、シリアル＃は、＃１から記録されている。
【００２６】
また、図３で示したＩＦ〜ＴＨＥＮルールの例は、図２におけるルール＃２に対するルールを示している。この図３は、ＩＦが示す条件として、品目コードのレコードの値がｃｎとｃｎ＋１との間であり、かつ、原価要素のレコードの値がｄｎとｄｎ＋１との間である場合、ＴＨＥＮが示す結果として管理元コード（責任課）のレコードの値がＲＮ０となることを意味する。
なお、本発明の第一の実施形態によるルール検証装置１０は、このようなＩＦ〜ＴＨＥＮルールが複数存在する場合に、その複数のルールにおいて、ルールの重複や矛盾を検出し、ルールの簡単化やルールの矛盾を是正する処理を行うものである。
【００２７】
図４は、本発明の第一の実施形態によるルール検証装置１０の処理フローの一例を示す図である。
次に、図４から図８を用いて第一の実施形態によるルール検証装置１０の処理フローについて説明する。
図４で示す第一の実施形態によるルール検証装置１０が行う処理は、レコードの値の範囲の組み合わせ（ＩＦ〜ＴＨＥＮルールのＩＦが示す条件）と当該レコードの属性（ＩＦ〜ＴＨＥＮルールのＴＨＥＮが示す結果）とを関連付けた複数のルールの各ルールに基づいて凸包を生成し、複数の凸包の間に重複があるか否かを判定し、重複があると判定された凸包が示すルールの組み合わせ、すなわち矛盾関係や冗長関係が生じている可能性のあるルールを特定する処理を含む。
【００２８】
まず、ルール検証装置１０が備える凸包生成部１０１は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルール、すなわち複数のＩＦ〜ＴＨＥＮルールを記憶部１１０から読み出す（ステップＳ１）。例えば、凸包生成部１０１が記憶部１１０から読み出す複数のＩＦ〜ＴＨＥＮルールは、図２で示したような、ルール＃と、シリアル＃と、製品＃と、品目コードと、原価要素と、管理元コード（管理課）とを関連付けているルールである。
凸包生成部１０１は、記憶部１１０から複数のＩＦ〜ＴＨＥＮルールを読み出すと、読み出した複数の各ＩＦ〜ＴＨＥＮルールのＩＦが示す各条件（この場合、品目コードと原価要素）の最小値〜最大値（範囲）に基づいて、凸包を求める（ステップＳ２）。
【００２９】
図５は、凸包生成部１０１がステップＳ２の処理で生成する凸包の一例を示す図である。
凸包生成部１０１は、図５で示すように、記憶部１１０から読み出した図２で示したような各ＩＦ〜ＴＨＥＮルールにおける品目コードの最小値と最大値の２点と、各ＩＦ〜ＴＨＥＮルールにおける原価要素の最小値と最大値の２点との組み合わせによって示される二次元平面上の４つの座標の点集合に対して凸包を求める。例えば、凸包生成部１０１は、分割統治法などの周知のアルゴリズムを用いて点集合から凸包を求めればよい。そして、凸包生成部１０１は、求めた凸包が示す情報を重複判定部１０２に出力する。
【００３０】
重複判定部１０２は、凸包生成部１０１が生成した凸包が示す情報を入力すると、入力した二次元平面上の４つの座標を含む複数の凸包のうち２つの凸包を選択するすべての組み合わせに対して凸包に重複があるか否かを判定する（ステップＳ３）。例えば、重複判定部１０２は、凸包多面体の重なりを判定するＧＪＫ（Ｇｉｌｂｅｒｔ−Ｊｏｈｎｓｏｎ−Ｋｅｅｒｔｈｉ）アルゴリズムなど周知のアルゴリズムを用いて凸包に重複があるか否かを判定すればよい。重複判定部１０２は、二次元平面上の４つの座標を含む複数の凸包のうち２つの凸包を選択するすべての組み合わせに対して凸包に重複がないと判定した場合、凸包に重複がないと判定する（ステップＳ３、ＮＯ）。
また、重複判定部１０２は、二次元平面上の４つの座標を含む複数の凸包のうち２つの凸包を選択するすべての組み合わせに対して凸包に重複があると判定した場合、凸包に重複があると判定する（ステップＳ３、ＹＥＳ）。重複判定部１０２は、凸包に重複があると判定した場合、重複があると判定された凸包が示す情報を重複ルール特定部１０３に出力する。
【００３１】
重複ルール特定部１０３は、重複があると判定された凸包が示す情報を入力すると、図２で示したような、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のＩＦ〜ＴＨＥＮルールを記憶部１１０から読み出す。重複ルール特定部１０３は、例えば、記憶部１１０から読み出した複数のＩＦ〜ＴＨＥＮルールにおける各条件の範囲と、重複があると判定された凸包に相当するルールにおける各条件の範囲とを比較する。そして、重複ルール特定部１０３は、記憶部１１０から読み出した複数のＩＦ〜ＴＨＥＮルールにおける各条件の範囲と、重複があると判定された凸包に相当するルールにおける各条件の範囲とが一致するルールの組み合わせを、重複があると判定された凸包が示すルールの組み合わせであると特定する（ステップＳ４）。重複ルール特定部１０３は、重複があると判定された凸包が示すルールの組み合わせを関係判定部１０４に出力する。
【００３２】
関係判定部１０４は、重複があると判定された凸包が示すルールの組み合わせを重複ルール特定部１０３から入力すると、それら２つのルールの属性が同一であるか否かを判定する（ステップＳ５）。
関係判定部１０４は、重複があると判定された凸包が示す２つのルールの属性が同一であると判定した場合（ステップＳ５、ＹＥＳ）、その２つのルールが冗長関係にあると判定する（ステップＳ６）。そして、関係判定部１０４は、冗長関係にあると判定した２つのルールを包含凸包算出部１０６に出力する（ステップＳ７）。
【００３３】
図６から図８は、関係判定部１０４が冗長関係にある部分を包含する包含凸包を算出する際に行う判断の例を示す図である。
まず、図６を用いて、複数のルールが包含関係にある場合に関係判定部１０４が判断する包含関係について説明する。
図６に示す関係判定部１０４が判断する包含関係の例は、図２で示したＩＦ〜ＴＨＥＮルール＃１とルール＃３についての包含関係である。
図６における（１）で示すように、関係判定部１０４が記憶部１１０からルール＃１とルール＃３とを読み出したとする。ルール＃１における原価要素の範囲がａｎ〜ａｎ＋１であり、ルール＃３における原価要素の範囲がｂｎ〜ｂｎ＋１であり、ｂｎ＜ａｎ＜ａｎ＋１＜ｂｎ＋１の関係が成り立つ場合、ルール＃３はルール＃１を包含している。この場合、関係判定部１０４は、新たな原価要素のルールとして、ｂｎ〜ｂｎ＋１を生成する。
ただし、図６における（２）で示すように、例えば、ｂｎ＜ａｎ＜ａｎ＋１＜ｓｎ＜ｓｎ＋１＜ｂｎ＋１の関係が成り立ち、管理元コード（この場合、識別子ＵＳＺ）となるルール（この場合、ルール＃５）がｂｎ〜ｂｎ＋１に１つでも存在している場合には、関係判定部１０４は、新たな原価要素のルールは生成しない。
【００３４】
次に、図７を用いて、複数のルールが分割関係にある場合に関係判定部１０４が判断する分割関係について説明する。
図７に示す関係判定部１０４が判断する分割関係の例は、図２で示したＩＦ〜ＴＨＥＮルール＃１とルール＃３とルール＃６についての分割関係である。
図７における（１）で示すように、関係判定部１０４が記憶部１１０からルール＃１とルール＃３とルール＃６とを読み出したとする。ルール＃１における原価要素の範囲がａｎ〜ａｎ＋１であり、ルール＃３における原価要素の範囲がｂｎ〜ｂｎ＋１であり、ルール＃６における原価要素の範囲がｃｎ〜ｃｎ＋１であり、ａｎ＜ａｎ＋１＝ｂｎ＜ｂｎ＋１＜ｃｎ＜ｃｎ＋１の関係が成り立つ場合、ルール＃１とルール＃３とルール＃６とは分割されている。この場合、関係判定部１０４は、最大凸包を用いて新たな原価要素のルールとして、ａｎ〜ｃｎ＋１を生成する。
ただし、図７における（２）で示すように、例えば、ａｎ＜ａｎ＋１＝ｂｎ＜ｂｎ＋１＜ｓｎ＜ｓｎ＋１＜ｃｎ＜ｃｎ＋１の関係が成り立ち、管理元コード（この場合、識別子ＵＳＺ）となるルールがｂｎ＋１〜ｃｎに存在している場合には、関係判定部１０４は、新たな原価要素のルールとして、ａｎ〜ｂｎ＋１を生成する。
【００３５】
次に、図８を用いて、複数のルールが重複関係にある場合に関係判定部１０４が判断する重複関係について説明する。
図８に示す関係判定部１０４が判断する重複関係の例は、図２で示したＩＦ〜ＴＨＥＮ形式のルール＃１とルール＃３についての重複関係である。
図８で示すように、関係判定部１０４が記憶部１１０からルール＃１とルール＃３とを読み出したとする。ルール＃１における原価要素の範囲がａｎ〜ａｎ＋１であり、ルール＃３における原価要素の範囲がｂｎ〜ｂｎ＋１であり、ａｎ＜ｂｎ＜ａｎ＋１＜ｂｎ＋１の関係が成り立つ場合、ルール＃１とルール＃３は重複している。この場合、関係判定部１０４は、新たな原価要素のルールとして、ａｎ〜ｂｎ＋１を生成する。
【００３６】
なお、ここで説明した関係判定部１０４が生成する凸包は、例えば複数のルールの各ルールに対するＩＦ条件の最小値と最大値とを点集合とし、アルゴリズムである分割統治法（Ｄｉｖｉｄｅ  ａｎｄ  Ｃｏｍｑｕｅｒ  Ｍｅｔｈｏｄ）などの周知のアルゴリズムを用いることで実現することができる。
ここまでが、ステップＳ７で関係判定部１０４が読み出した複数のルールの各ルールに対するＩＦ条件の最小値〜最大値（範囲）に基づいて凸包を求める例についての説明である。このステップＳ７の処理により、包含関係、分割関係、重複関係といった冗長関係を示す複数のルールを縮退することによって冗長関係を解消することができる。
なお、ステップＳ７で関係判定部１０４が複数のルールを縮退することによって冗長関係を解消する処理は、各条件における複数のルールのすべての組み合わせに対して行う。
【００３７】
また、関係判定部１０４は、重複があると判定された凸包が示す２つのルールの属性が同一でないと判定した場合（ステップＳ５、ＮＯ）、その２つのルールが矛盾関係にあると判定する（ステップＳ８）。そして、関係判定部１０４は、矛盾関係にあると判定した２つのルールをルール分割部１０５に出力する（ステップＳ９）。
【００３８】
ルール分割部１０５は、関係判定部１０４が矛盾関係にあると判定した２つのルールを入力すると、入力した２つの各ルールに対して生成した凸包が示す二次元平面上の４つの座標を含む範囲の重複する部分、すなわち矛盾関係にある部分をどのように分割し、矛盾関係を解消する候補を生成する（ステップＳ１０）。
【００３９】
図９は、ＩＦ〜ＴＨＥＮ形式のルールにおける矛盾関係の例を示す図である。
図９を用いて説明する矛盾関係の例は、図２で示したＩＦ〜ＴＨＥＮ形式のルール＃１とルール＃６についての矛盾関係である。
図９で示すように、凸包生成部１０１が記憶部１１０からルール＃１とルール＃６とを読み出したとする。ルール＃１における原価要素の範囲がａｎ〜ａｎ＋１であり、ルール＃６における原価要素の範囲がｓｎ〜ｓｎ＋１であり、ａｎ＜ｓｎ＜ａｎ＋１＜ｓｎ＋１の関係が成り立ち、管理元コード（この場合、識別子ＵＳＺ）を示すルールがａｎ〜ａｎ＋１に存在している場合には、ルール＃１とルール＃６は矛盾している。しかしながら、ＩＦを示す条件が１つ（この場合、原価要素）である場合、ｓｎ〜ａｎ＋１の範囲が新ルール＃１と新ルール＃５の何れに含めるかを判断し、新たな原価要素のルール＃１としてａｎ〜ａ’ｎ＋１を生成し、新たな原価要素のルール＃５としてａ’ｎ＋１〜ｂｎ＋１を生成する。ただし、ＩＦが示す条件が１つである場合、論理的には問題ない。
【００４０】
図１０は、ＩＦが示す条件が２つあり２つのルールの管理元コード（責任課）が異なる場合にルール検証装置１０が行う矛盾があるか否かの判定の一例を示す図である。
この場合のＩＦが示す２つの条件は、原価要素と品目コードである。
ＩＦが示す２つの条件の何れにも重複が存在しない場合、ルール検証装置１０は、完全に矛盾がないと判定する。ＩＦが示す２つの条件のうちの１条件のみ重複がある場合、ルール検証装置１０は、理論的には問題なしと判定する。ＩＦが示す２つの条件の両方の条件で重複がある場合、ルール検証装置１０は、矛盾ありと判定する。例えば、ルール分割部１０５が生成する矛盾関係を解消する分割の候補は、２つのルールの何れか一方から重複する範囲を除外する分割である。ルール分割部１０５は、生成した矛盾関係を解消する分割の候補をルール指示部１０７に出力する（ステップＳ１１）。
ルール提示部１０７は、ルール分割部１０５が矛盾関係を解消する分割の候補を入力すると、ルール分割部１０５が生成した矛盾関係を解消する分割の候補を表示させる信号を表示部１２０に出力する（ステップＳ１２）。
表示部１２０は、ルール提示部１０７から矛盾関係を解消する分割の候補を表示させる信号を入力すると、入力した信号に基づいて矛盾関係を解消する分割の候補を表示する（ステップＳ１３）。なお、表示部１２０は、矛盾関係にある部分をユーザが認識しやすい、例えば赤色で塗りつぶされた四角形で表示する。
ここで、ユーザが矛盾関係を解消する分割の候補に基づいて、分割を指定するユーザ操作を行う。すると、ルール分割部１０５は、そのユーザ操作に基づいて、ルールを分割する（ステップＳ１４）。
次に、ルール検証装置１０の制御部は、ユーザ操作に基づいて、処理を終了するか否かを判定する（ステップＳ１５）。ルール検証装置１０の制御部は、ユーザが処理を終了するユーザ操作を行った場合（ステップＳ１５、ＹＥＳ）、ルール検証装置１０の処理を終了する。また、ルール検証装置１０の制御部は、ユーザが処理を終了しないユーザ操作を行った場合（ステップＳ１５、ＮＯ）、ステップＳ３の処理に戻る。
【００４１】
また、ステップＳ７で関係判定部１０４が冗長関係にあると判定した２つのルールを包含凸包算出部１０６に出力する。すると、包含凸包算出部１０６は、関係判定部１０４が冗長関係にあると判定した２つのルールを入力する。包含凸包算出部１０６は、入力した２つの各ルールに対して生成した凸包を示す二次元平面上の４つの座標を含む範囲の重複する部分、すなわち冗長関係にある部分を包含する包含凸包を算出し（ステップＳ１６）、冗長関係を解消する候補を生成する。例えば、包含凸包算出部１０６が生成する冗長関係を解消する候補は、２つのルールに対応する２つの凸包を包含する周知のアルゴリズムを用いて求めた包含凸包である。包含凸包算出部１０６は、生成した冗長関係を解消する候補をルール指示部１０７に出力する（ステップＳ１７）。
ステップＳ１１でルール分割部１０５が矛盾関係を解消する分割の候補をルール指示部１０７に出力すると、ルール提示部１０７は、ルール分割部１０５が生成した矛盾関係を解消する分割の候補を表示させる信号を表示部１２０に出力する（ステップＳ１８）。
また、ステップＳ１３で包含凸包算出部１０６が冗長関係を解消する候補をルール指示部１０７に出力すると、ルール提示部１０７は、包含凸包算出部１０６が生成した冗長関係を解消する候補を表示させる信号を表示部１２０に出力する（ステップＳ１９）。
また、表示部１２０は、ルール提示部１０７から冗長関係を解消する候補を表示させる信号を入力すると、入力した信号に基づいて冗長関係を解消する候補を表示する（ステップＳ２０）。
次に、ルール検証装置１０の制御部は、ユーザ操作に基づいて、処理を終了するか否かを判定する（ステップＳ２１）。ルール検証装置１０の制御部は、ユーザが処理を終了するユーザ操作を行った場合（ステップＳ２１、ＹＥＳ）、ルール検証装置１０の処理を終了する。また、ルール検証装置１０の制御部は、ユーザが処理を終了しないユーザ操作を行った場合（ステップＳ２１、ＮＯ）、ステップＳ３の処理に戻る。
【００４２】
以上、本発明の第一の実施形態によるルール検証装置１０について説明した。
本発明の実施形態によるルール検証装置１０は、凸包生成部１０１と、重複判定部１０２と、重複ルール特定部１０３とを備える。凸包生成部１０１は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。重複判定部１０２は、凸包生成部１０１が生成した複数の凸包の間に重複があるか否かを判定する。重複ルール特定部１０３は、重複判定部１０２が重複があると判定した凸包が示すルールの組み合わせを特定する。
このようにすれば、ＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加される場合、追加したＩＦ〜ＴＨＥＮ形式のルールとそれ以前に追加したＩＦ〜ＴＨＥＮ形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができる。
また、ルール検証装置１０は、関係判定部１０４、ルール分割部１０５、包含凸包算出部１０６、ルール提示部１０７、表示部１２０を更に備えることで、重複ルール特定部１０３が特定した矛盾関係や冗長関係が生じている可能性のあるルールを、視覚的にユーザに報知し、矛盾関係や冗長関係のないルールに是正することができる。
【００４３】
＜第二の実施形態＞
次に、本発明の第二の実施形態によるルール検証装置１０について説明する。
第二の実施形態による管理システム１の構成は、第一の実施形態による管理システム１と同様である。ただし、第二の実施形態による凸包生成部１０１が記憶部１１０から読み出すＩＦ〜ＴＨＥＮルールのＩＦ条件は、第一の実施形態における品目コードと原価要素に加え、要求元と計上元が追加されている。
【００４４】
図１１は、本発明の第二の実施形態による記憶部１１０が記憶しているＩＦ〜ＴＨＥＮルールの一例を示す図である。
また、図１２は、本発明の第二の実施形態において製品の管理責任の組織を示す管理元コード（責任課）が識別子ＲＮ０であると特定する際に使用されるＩＦ〜ＴＨＥＮルールの一例を示す図である。
【００４５】
図１１は、ルール＃と、シリアル＃と、製品＃と、要求元と、計上元と、品目コードと、原価要素と、管理元コード（管理課）とを関連付けている複数のＩＦ〜ＴＨＥＮルールを示している。例えば、ルール＃１は、シリアル＃の識別子１７２と製品＃の識別子１とで特定される製品である。そして、要求元“ｚｎ〜ｚｎ＋１”、計上元“ｄｎ〜ｄｎ＋１”、品目コード“ｐｎ〜ｐｎ＋１”、原価要素“ａｎ〜ａｎ＋１”は、“最小値〜最大値”の形式で表したＩＦ〜ＴＨＥＮルールにおけるＩＦが示す条件の数値範囲である。例えば、ルール＃１において、要求元の最小値はｚｎであり、最大値はｚｎ＋１である。計上元の最小値はｄｎであり、最大値はｄｎ＋１である。品目コードの最小値はｐｎであり、最大値はｐｎ＋１である。また、ルール＃１において、原価要素の最小値はａｎであり、最大値はａｎ＋１である。
また、ルール＃１において、シリアル＃の識別子１７２と製品＃の識別子１とで特定される製品に対して、ＩＦが示す条件が、要求元がｚｎ〜ｚｎ＋１の間であり、計上元がｄｎ〜ｄｎ＋１の間であり、品目コードがｐｎ〜ｐｎ＋１の間であり、原価要素がａｎ〜ａｎ＋１である場合、ＴＨＥＮが示す製品の管理責任の組織（責任課）はＲＵ１となる。なお、シリアル＃は、＃１から記録されている。
【００４６】
また、図１２で示したＩＦ〜ＴＨＥＮルールの例は、図１１におけるルール＃２に対するルールを示している。この図１２は、ＩＦが示す条件として、要求元のレコードの値がｚｎとｚｎ＋１との間であり、かつ、計上元のレコードの値がｄｎとｄｎ＋１との間であり、かつ、品目コードのレコードの値がｃｎとｃｎ＋１との間であり、かつ、原価要素のレコードの値がｄｎとｄｎ＋１との間である場合、ＴＨＥＮが示す結果として管理元コード（責任課）のレコードの値がＲＮ０となることを意味する。
【００４７】
次に、第二の実施形態によるルール検証装置１０の処理について説明する。
ただし、第二の実施形態によるルール検証装置１０が行う処理と、第一の実施形態によるルール検証装置１０が行う処理との違いは、ＩＦが示す条件数の違いによるルール検証装置１０が行う演算の次数が異なる点と、その演算の次数の違いによる表示部１１０の表示が異なる点である。
従って、ここでは、主な違いであるルール検証装置１０の重複判定部１０２が行う演算と、表示部１１０が表示する表示についてのみ説明する。
【００４８】
ルール検証装置１０の包含凸包算出部１０６が行う演算は、ＩＦが示す４つの条件である要求元と、計上元と、品目コードと、原価要素の４次元の演算となる。しかしながら、第二の実施形態による包含凸包算出部１０６は、第一の実施形態による包含凸包算出部１０６と同様に、例えばＧＪＫ（Ｇｉｌｂｅｒｔ−Ｊｏｈｎｓｏｎ−Ｋｅｅｒｔｈｉ）アルゴリズムを用いればよい。ｎ次元の場合、２次元平面のアルゴリズムをｎ（ｎ−１）÷２回演算すればよい。従って、４次元の場合には２次元のアルゴリズムを６回演算することとなる。
【００４９】
次に、表示部１１０が、４つの条件を表示する表示について説明する。
矛盾関係にあると判定されるのは、包含凸包算出部１０６が４つの条件が示す範囲がすべて重複していると判定した場合である。しかしながら、表示部１１０は、３次元表示までしかできない。そのため、表示部１１０は、例えば、４つの範囲うちの３つの範囲を選択するすべての組み合わせを表示する。また、予め条件に優先順位を設定しておき、表示部１１０は、その優先順位に基づいて３つの範囲を３次元で表示する。また、ユーザが任意に選択してもよい。
【００５０】
以上、本発明の第一の実施形態によるルール検証装置１０について説明した。
本発明の実施形態によるルール検証装置１０は、凸包生成部１０１と、重複判定部１０２と、重複ルール特定部１０３とを備える。凸包生成部１０１は、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する。重複判定部１０２は、凸包生成部１０１が生成した複数の凸包の間に重複があるか否かを判定する。重複ルール特定部１０３は、重複判定部１０２が重複があると判定した凸包が示すルールの組み合わせを特定する。
このようにすれば、ＩＦ〜ＴＨＥＮ形式のルールが逐次的に追加される場合、追加したＩＦ〜ＴＨＥＮ形式のルールとそれ以前に追加したＩＦ〜ＴＨＥＮ形式のルールとの間で矛盾関係や冗長関係が生じている可能性のあるルールを特定することができる。
また、ルール検証装置１０は、関係判定部１０４、ルール分割部１０５、包含凸包算出部１０６、ルール提示部１０７、表示部１２０を更に備えることで、重複ルール特定部１０３が特定した矛盾関係や冗長関係が生じている可能性のあるルールを、視覚的にユーザに報知し、矛盾関係や冗長関係のないルールに是正することができる。
【００５１】
なお、実施形態によるルール検証装置１０の処理は、まず各ルールについての凸包を求め、重複する領域を求めた後、矛盾関係や冗長関係が生じている可能性のあるルールを特定するものとして説明した。しかしながら、実施形態によるルール検証装置１０の処理は、それに限定するものではない。
例えば、ルール検証装置１０の処理は、各条件に対して矛盾関係や冗長関係を求めて最適化し、最適化した各条件の組み合わせに対して凸包を求めてもよい。
また本発明の実施形態における処理フローは、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
また、ＩＦ〜ＴＨＥＮルール間に矛盾がない場合、レコードの値の範囲の組み合わせと当該レコードの属性とを関連付けた複数のルールの各ルールに基づいて凸包を生成する凸包生成部１０１と、レコードの同一の属性に係るルールに基づいて生成された凸包を包含する包含凸包を算出する包含凸包算出部１０６と、凸包または包含凸包が示すルールを表示部１２０に表示するルール提示部１０７とを備えるルール検証装置１０により、冗長関係を特定してもよい。また、ルール検証装置１０は、特定した冗長関係を是正してもよい。
【００５２】
なお本発明の実施形態について説明したが、上述のルール検証装置１０は内部に、コンピュータシステムを有している。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００５３】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定するものではない。また、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができるものである。
【符号の説明】
【００５５】
１０・・・ルール検証装置
１０１・・・凸包生成部
１０２・・・重複判定部
１０３・・・重複ルール特定部
１０４・・・関係判定部
１０５・・・ルール分割部
１０６・・・包含凸包算出部
１０７・・・ルール提示部
１１０・・・記憶部
１２０・・・表示部
【図１】
2015118449.tif 000003
【図２】
2015118449.tif 000004
【図３】
2015118449.tif 000005
【図４】
2015118449.tif 000006
【図５】
2015118449.tif 000007
【図６】
2015118449.tif 000008
【図７】
2015118449.tif 000009
【図８】
2015118449.tif 000010
【図９】
2015118449.tif 000011
【図１０】
2015118449.tif 000012
【図１１】
2015118449.tif 000013
【図１２】
2015118449.tif 000014