JP4921103B2 - ブール式を可視化するための装置、方法およびプログラム - Google Patents

ブール式を可視化するための装置、方法およびプログラム Download PDF

Info

Publication number
JP4921103B2
JP4921103B2 JP2006280612A JP2006280612A JP4921103B2 JP 4921103 B2 JP4921103 B2 JP 4921103B2 JP 2006280612 A JP2006280612 A JP 2006280612A JP 2006280612 A JP2006280612 A JP 2006280612A JP 4921103 B2 JP4921103 B2 JP 4921103B2
Authority
JP
Japan
Prior art keywords
node
nested
flag
nodes
operand
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.)
Expired - Fee Related
Application number
JP2006280612A
Other languages
English (en)
Other versions
JP2008097467A (ja
Inventor
大介 宅間
欣也 栗山
真理子 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006280612A priority Critical patent/JP4921103B2/ja
Priority to US11/871,855 priority patent/US7930320B2/en
Publication of JP2008097467A publication Critical patent/JP2008097467A/ja
Application granted granted Critical
Publication of JP4921103B2 publication Critical patent/JP4921103B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation

Description

本発明はブール式を可視化するための装置、方法およびプログラムに関するものであり、特に検索条件や集合演算を示す任意のブール式を、「何が条件に加えられていて、何が除外されているか」という点を人間が理解しやすいように可視化するための方法、装置およびプログラムに関するものである。
検索ツールや集合演算で使用されるブール式は、一般に、文字列式、ツリー形式、逆ポーランド記法、またはベン図で表現される。文字列式は、例えば、(A AND (NOT ((B AND C AND (NOT D)) OR E)))のように記述される。ここで、A〜Eはブール式のオペランド(被演算子)であり、AND、OR、NOTはオペレータ(演算子)である。検索式の場合は、それぞれのキーワードがオペランドになる。この文字列式をツリー形式にすると図1のように表される。図1の(A)は通常のツリー、(B)はバイナリツリーを示している。逆ポーランド記法は、オペレータを演算対象であるオペランドの後ろに置くようにしたもので、上述の文字列式は“A B C AND D NOT AND E OR NOT AND”のように表現される。ベン図は、各オペランドに対応する閉曲線を用いて領域を2個(Nはオペランドの数)に分割するようにしたもので、上述の文字列式は、例えば、図2のように表現される。
これらの表現方法はいずれも、専門知識のないユーザに即座に意味を伝えることができるものではない。そのため、ブール式を少しでも分かり易く示すための工夫がなされてきた。例えば、米国特許第5592663号明細書は、データベース検索の集合の量と、集合と集合の間にある論理的な関係を図式によって提示し、図式上の矩形の領域を指示して集合を演算操作すること、およびデータを抽出することを可能にするグラフィックユーザインタフェースを開示している。また、米国特許第6910031号明細書は、データ検索システムにおいて、データ検索の結果を人間が認識できる形で提示するユーザインタフェースを開示している。いずれも、境界で仕切られた各領域の面積が、対応する部分集合の要素数を反映するように可視化を行っているが、ベン図に基づく可視化のため、集合の数が多くなると複雑になってしまい、何が条件に加えられていて、何が除外されているかが即座に伝わらない。
CADの分野では、例えばhttp://www.f-lohmueller.de/pov_tut/csg/povcsg1e.htmに述べられているようなCSG(ConstructiveSolid Geometry)と呼ばれる集合演算が知られている。これは、3次元空間上の図形(部分集合)をオペランドとする集合演算で、union、merge、intersection、differenceといったブール演算が定義されており、複雑な図形の作図を可能にしている。しかし、これもベン図と同様に、結果の図形からだけでは、どの箇所が追加・削除されているかは明らかでない。
米国特許第5592663号明細書 米国特許第6910031号明細書 http://www.f-lohmueller.de/pov_tut/csg/povcsg1e.htm
従って、本発明の目的は、何が条件に加えられていて、何が除外されているかが容易に分かるようにブール式を可視化するための装置、方法およびプログラムを提供することにある。
従来の可視化手法は、例えば図2に示すように、集合の部分的な重なりを利用しているため見づらくなっているが、本発明は2次元の入れ子表現を採用して、このような部分的な重なりを排除することにより、何が条件に加えられていて、何が除外されているかが容易に分かるようにしている。もちろん、入れ子表現によってブール式の正確さが失われることはない。本発明によれば、可視化すべきブール式が、リーフノードがこのブール式中のオペランドを表し、リーフノード以外のノードがブール式中のオペレータを表すバイナリツリーの形で入力される。入力されたバイナリツリーは、複数の領域からなる2次元の入れ子表現に変換され、この入れ子表現から可視化のための絵画表現が作図されて表示される。ブール式が文字列式で与えられることもあるが、その場合は、文字列式がバイナリツリーに変換される。本発明は、このような可視化手法のための装置、方法およびプログラムを提供する。
本発明に従うブール式可視化装置の一実施形態を図3に示す。図3のブール式可視化装置30は、可視化すべきブール式を、リーフノードがブール式中のオペランドを表し、リーフノード以外のノードがブール式中のオペレータを表すバイナリツリーの形で入力する入力部31、バイナリツリーを複数の領域からなる2次元の入れ子表現に変換する変換部32、入れ子表現から可視化のための絵画表現を作図する作図部33、作図された絵画表現を表示する表示部34、ならびにこれらの機能部によってアクセスされ、入力部31により入力されたバイナリツリー、変換部32により作成された入れ子表現、および作図部により作図された絵画表現を記憶する記憶部35を含む。以下、本発明をテキストマイニング等の検索ツールに応用した実施形態について説明するが、もちろん、本発明は検索ツールで使用される検索式に限らず、任意のブール式に適用可能である。
入力部31は、検索ツール(図示せず)から与えられる文字列のブール式を図1(B)のようなバイナリツリーに変換して、記憶部35に記憶する。例えば、テキストマイニングにおいては、(A AND (!((B AND C AND (!D)) OR E)))のような括弧付きの文字列式が自動的に作成される。「!」はNOT演算を表す記号である。本実施形態では、このような括弧付きの文字列式をベースに可視化を行う。括弧付きの文字列式では、AND演算は、例えば、(A AND B AND C)のように表され、OR演算は(A OR B OR C)のように表され、NOT演算は(!A)のように表される。演算対象となるオペランドA、B、Cなどは、それ自体が別の文字列式のこともある。また、ブール式の可視化では、分かりやすさが最優先されるべきであるから、使用されるオペレータをAND、ORおよびNOTに制限するのが好ましい。与えられた文字列式が、NAND、NORなどの他のオペレータを含んでいた場合には、そのような文字列式は、AND、ORおよびNOTのみを含む等価な文字列式に変換される。このような変換は周知であるから、詳細については省略する。
入力部31は、上述のような括弧付きの文字列式を一番外側の括弧から順に処理することによってバイナリツリーに変換する。文字列式からバイナリツリーへの変換も周知であるが、簡単に説明すると、一番外側の括弧を除くすべての括弧を中身ごと削除し、それを別のオペランドとして保管して、ツリーを作成する。上述の例では、最初は(A AND F)を処理して、ANDをルートノードとし、AおよびFを子ノードとするツリーを作成する。ここで、F=(!((B AND C AND (!D)) OR E))である。次にオペランドFを同様にして処理する。この例では、括弧の直後に「!」があるので、オペランドFに対応する子ノードのNOTフラグをオンにし、「!」に続くオペランドG=((B AND C AND (!D)) OR E)を処理する。これは、オペランドH=(B AND C AND (!D)とオペランドEのOR演算を表しているので、入力部12は、先ほどのオペランドFに対応する子ノードをORノードとし、HおよびEをその子ノードとするツリーを出力する。続いて、オペランドHを同様にして処理し、最終的には図1(A)に示すような通常のツリーを作成する。
通常のツリーをバイナリツリーに変換するため、入力部31は、作成したツリーに含まれるANDノードおよびORノードのうち、子ノードを3個以上持っているものがあるかどうかを調べ、もしあれば、第1の子ノードだけを残して、当該ノードと同じオペレータのノードを第2の子ノードとし、その下に元の第2〜第Nの子ノードを追加する。入力部31は、ANDノードおよびORノードのそれぞれの子ノードが2つになるまでこの処理を繰り返すことにより、図1(B)のようなバイナリツリーを作成し、記憶部35に記憶する。
入力部31が記憶部35に記憶するバイナリツリーのデータ構造の一例を図4に示す。このバイナリツリーは図1(B)に示したものである。図示のように、バイナリツリーの各ノードは、ID、タイプ、左の子ノード、右の子ノード、NOTフラグ、およびラベルを属性として持つ。IDは、バイナリツリーのルートノードから順に、例えば深さ優先で番号付けされるが、各ノードを一意的に識別できるものであれば、他の番号付け方式を使用してもよい。タイプは、当該ノードがANDノード、ORノードおよびリーフノードのいずれであるかを示す。左の子ノードおよび右の子ノードは、当該ノードの左側および右側の子ノードのIDを示す。当該ノードがリーフノードであれば、子ノードはないので、これらの属性はnullに設定される。NOTフラグは、当該ノードが反転されるか否かを示す真(例えば「1」)または偽(例えば「0」)の値を取る。ラベルは、リーフノードを表す1以上の文字を含み、ANDノードおよびORノードの場合はnullに設定される。
変換部32は、前述のように、バイナリツリーを複数の領域からなる2次元の入れ子表現に変換するもので、図5に示すように、入力部31により作成されたバイナリツリーの各リーフノードを、本発明に従うブール演算のオペランドとして機能する入れ子オブジェクトに変換するリーフノード変換部50、それらの入れ子オブジェクトをオペランドに用いてブール演算を実行することにより、2次元の入れ子表現を作成するツリー演算部51、ならびに入れ子表現作成のための論理演算を実行するAND演算部52、OR演算部53およびNOT演算部54を含む。
リーフノード変換部50は、図4に示すデータ構造の9つのエントリのうち、ノードタイプが「リーフ」のものを読み取ることによって、バイナリツリーの各リーフノードを、そのNOTフラグの値に応じて図6に示すような入れ子オブジェクトに変換する。図示のように、リーフノード変換部50は、NOTフラグが真の場合は、当該リーフノードを囲む領域(当該リーフノードだけが集合の要素になっているので、これは「全要素」領域である)を強調表示させ、NOTフラグが偽の場合は、当該リーフノードを強調表示させる。その結果、例えば図1(B)のバイナリツリーであれば、各リーフノードが図7のように変換される。リーフノード変換部40が作成する入れ子オブジェクトは、対応するリーフノードのラベルと、当該リーフノードが強調表示されるか否かを示すフラグを持つ。このフラグは、NOTフラグと同じく真または偽の値を取り、真であれば、対応するリーフノードが強調表示され、偽であれば強調表示されない。4つのオペレータノード70、72、73、74および5つのリーフノード71、75、76、77、78を含む図7のバイナリツリーでは、オペランドA、B、CおよびEのリーフノード71、75、76および78に対応する入れ子オブジェクトは、それぞれラベル「A」、「B]、「C」および「E]と、真のフラグを持ち、オペランドDのリーフノード77に対応する入れ子オブジェクトはラベル「D」と、偽のフラグを持つ。
リーフノード変換部50により作成されて、記憶部35に記憶される入れ子オブジェクトのデータ構造の例を図8に示す。図8の「ID」は図4の「ID」と同じである。「ルートノードのフラグ」は、対応するリーフノードを囲む領域(「全要素」領域)が強調表示されるか否かを示すもので、リーフノードのフラグの反転形になっている。図6は図8のデータ構造をイメージ的に表したものであり、図6のイメージそのものが記憶部35に記憶されるわけではない。
ツリー演算部51は、AND演算部52、OR演算部53およびNOT演算部54と協働して、図7に示すようなツリー構造から2次元の入れ子表現を生成する。次に、このような入れ子表現を生成するために、ツリー演算部51、AND演算部52、OR演算部53およびNOT演算部54がどのように働くかを、図9のフローチャートを参照しながら説明する。
最初のステップS1で、ツリー演算部51は、共通の親Aを持つリーフノードのペアB、Cが存在するか否かをチェックする。これは、例えば、図4のデータ構造において、「左の子ノード」および「右の子ノード」の欄にnull以外のIDが書き込まれているエントリを探索することにより実行される。もしそのようなペアが存在しなければ、演算対象がなくなったので終了し、さもなければステップS2に進んで、AがANDノードか否かをチェックする。もしANDノードであれば、ステップS3に進んで、AND演算部52にAND演算を実行させる。ツリー演算部42は、次のステップS4でAのNOTフラグが真か否かをチェックし、もし真であれば、ステップS5に進んで、NOT演算部54にAND演算結果Xの全ノードのフラグを反転させた後、ステップS1に戻る。AのNOTフラグが真でなければ、ステップS4から直接ステップS1に戻る。
ステップS2において、AがANDノードでなければ、すなわちAがORノードであれば、ステップS6に進んで、OR演算部53にOR演算を実行させる。後はアンド演算の場合と同じく、ステップS4からステップS1に戻るか、またはステップS4からステップS5を経由してステップS1に戻る。
AND演算部52が実行するAND演算のフローを図10に示す。AND演算部52は、最初のステップS31で演算対象となる2つの入れ子オブジェクトを取り出す。図4の例で説明すると、例えばIDが4のANDノードに対応するAND演算を実行する場合は、そのオペランドはIDが5および8のリーフノードであるから、AND演算部52は、図8のデータ構造からIDが5および8のエントリを演算対象の入れ子オブジェクトとして取り出す。AND演算部52は、取り出した入れ子オブジェクトが次に挙げる3つのタイプのうちのどれに属するかに応じて異なったAND演算、すなわち入れ子オブジェクトの結合を実行する。
(1)第1のタイプ:強調表示されているノードが唯1つあり、下位ノードを持たない。
(2)第2のタイプ:自分自身が強調表示されていて、自分の上位ノードが強調表示されていないようなノードが唯1つある。
(3)第3のタイプ:第1のタイプおよび第2のタイプに属さないオペランド。
各タイプの例を図11に示す。図11において、第1のタイプの例は第2のタイプでもある。第3のタイプは、第1のタイプおよび第2のタイプに属さないすべての入れ子オブジェクトを含むから、図示の例以外にも、例えば、1つの強調表示されない矩形領域の中に2つの強調表示された矩形領域が重なることなく並んでいるような入れ子オブジェクト(後述するように、2つのオペランドのOR演算に対応)も含まれる。
AND演算部52は、次のステップS32で、第1オペランドとなる入れ子オブジェクトが第1のタイプか否かを判断する。もし第1のタイプであれば、第2オペランドのタイプに関係なくステップS33に進んで、第2オペランドとなる入れ子オブジェクトのルートノードすなわち全要素ノードのフラグが真か否かを、例えば図8の対応するエントリをアクセスすることによって判断する。ここでは、バイナリツリーのオペレータノードの下にある2つのリーフノードのうち、左側のリーフノードを第1オペランドとし、右側のリーフノードを第2オペランドとしているが、これは逆でも構わない。
第2オペランドの最上位の全要素ノードのフラグが偽であれば、ステップ34に進んで、第1オペランドのフラグが真のノードすなわち強調表示ノードのフラグを偽にして、該ノードの中に、第2オペランドの全要素ノードのすべての下位ノードを追加する。第2オペランドの最上位の全要素ノードのフラグが真であれば、ステップ35に進んで、第1オペランドの強調表示ノードの中に、第2オペランドの全要素ノードのすべての下位ノードを追加する。
ステップS32において、第1オペランドが第1のタイプでなければ、ステップS36に進んで、第2オペランドのタイプを調べる。第2オペランドが第1のタイプではなく、第2のタイプの場合は、ステップS37に進んで、それぞれのオペランドに含まれる強調表示ノードの下位ノードを取り除いて、上述の第1のタイプのオペランド同士のAND演算を実行し、その演算結果に含まれる強調表示ノードに取り除いた下位ノードを追加する。
第2オペランドが第3のタイプの場合は、ステップS36からステップS38に進んで、全要素ノードの中に第2オペランドへのポインタを持つ、フラグが真のノードのみを追加した新たな入れ子オブジェクトを作成し、この新たな入れ子オブジェクトと第1オペランドとのAND演算を実行し、第2オペランドは第1オペランドの従属入れ子オブジェクトとして追加する。
その他の場合は、第1オペランドと第2オペランドを入れ替えて、上記の定義に従ったAND演算を実行する。すなわち、ステップS31で取り出した2つのオペランドのタイプが「第1オペランドのタイプ>第2オペランドのタイプ」という関係にあると(例えば、第1オペランドのタイプが3で、第2オペランドのタイプが1)、ステップS32以降で、第1オペランドと第2オペランドを入れ替えてAND演算を実行する。
図12は、上述のようなタイプに応じたAND演算の例を示したものである。図から明らかなように、本発明におけるAND演算は、可視性を考慮して、基本的に、一方のオペランドの要素の中に他方のオペランドのすべての要素を包含させる構成となっている。例えば、両オペランドが第1のタイプであるAND演算(図12の第2行第2列の演算)では、第1オペランドの要素Gの中に第2オペランドの要素AおよびBが包含されている。少なくとも1つのオペランドが第3のタイプの場合(図10のステップS38におけるAND演算)は、上述のように、第3のタイプのオペランドへのポインタを持った、フラグが真のノードが他方のオペランドに追加され、当該オペランドの要素は、図13に示すように、他方のオペランドとは別個に可視化される。
図13は、図12の第4行第4列のAND演算の結果を示したもので、図12に示される演算結果中の第2オペランドのラベルと、第2オペランドの実際の要素とがポインタを示す矢印によって関連付けられている。図13の演算結果は、左側の主入れ子オブジェクトと、該主入れ子オブジェクトに対してポインタによって関連付けられた右側の従属入れ子オブジェクトから成っており、この演算結果が別の論理演算のオペランドとして使用されることもあるが、その場合は、主入れ子オブジェクトだけが演算対象のオペランドとなる。
図9のステップS6でOR演算部53が実行するOR演算のフローを図14に示す。OR演算部53は、ステップS61で、演算対象となる第1オペランドおよび第2オペランドに対応する入れ子オブジェクトのルートノードのフラグがいずれも偽か否かを調べる。もし両方のフラグが偽であれば、ステップS62に進んで、第1オペランドに対応する入れ子オブジェクトのルートノードの中に第2オペランドに対応する入れ子オブジェクトのルートノードのすべての下位ノードを追加する。例えば、図7の一番下のANDノード74がORノードであったなら、OR演算部53は、図12に示される3種類の第1オペランドのうち、第3のタイプとして示されるような入れ子オブジェクトを出力する。その他の場合、すなわち少なくとも一方のフラグが真であれば、OR演算部53は、ステップS63に進んで、NOT((NOT 第1オペランド)AND(NOT 第2オペランド))の演算を実行する。図14のステップS63では、第1オペランドをA、第2オペランドをBで示している。ドモルガンの定理から、これは第1オペランドと第2オペランドのOR演算と等価であることがわかる。前述のAND演算の観点からは、ステップS63の演算は、第1オペランド及び第2オペランドがいずれも第2のタイプである場合のAND演算(図10のステップS37)を実行して、その結果の全フラグを反転することに相当する。従って、ステップS63の演算は、AND演算部52およびNOT演算部54で実行することも可能である。OR演算部53によるOR演算は、基本的には、ルートノードすなわち全要素ノードの中に両オペランドの要素を重なり合わないように並置する。
NOT演算部54は、演算対象となるオペランドに対応する入れ子オブジェクトの全ノードのフラグを反転させた入れ子オブジェクトを出力する。
次に、図7のバイナリツリーを例にとって図9の流れを具体的に説明すると、4つのオペレータノード70、72、73および74のうち、その下にリーフノードのペアを持っているのはANDノード74だけであるから、最初のステップS1では、ノード74、75および78からなるサブツリー(74、75、78)が選択され、ステップS2を経由して、ステップS3で、図15の(1)に示す入れ子オブジェクトがXとして作成され、サブツリー(74、75、78)がXで置き換えられる。ここでの演算は、図10のステップS34におけるAND演算に相当する。
図3の変換部32に含まれるツリー演算部51は、図15の(1)に示す入れ子オブジェクトを、図16の(1)に示すようなデータ構造の形で記憶部35に記憶する。図16において、「ノード」は入れ子オブジェクトを構成する複数の矩形領域に対応し、「ラベル」はユーザにより指定される各ノードの名前を示し、「フラグ」は当該ノードが強調表示される(真)か否(偽)かを示し、「ポインタ」は図13に示すような従属入れ子オブジェクトがもしあれば、その識別子を指定し(従属入れ子オブジェクトがなければnull)、「子ノード」は当該ノードの子ノードの番号を示す。
図9に戻って、図7の例では、ANDノード74のNOTフラグは偽であるから、ステップS4からステップS1に戻り、次のサブツリーが選択される。この時点では、サブツリー(74、75、78)が入れ子オブジェクトXに置き換わっていて、ANDノード73のリーフノードになっているので、ステップS1で次に選択されるサブツリーは、ノード73、Xおよび77からなるものである。今回もAND演算であるから、ステップS3で図15の(2)に示す入れ子オブジェクトが新たなXとして作成される。ここでは、リーフノード77にある第2オペランドDのルートノード(全要素ノード)のフラグが真であるから、図10のステップS35におけるAND演算が実行され、その結果、図16の(1)に示すデータ構造が(2)のように修正されて記憶部35に記憶される。
次は、同様にしてノード72、Xおよび76からなるサブツリーがステップS1で選択される。今回はOR演算が実行されるので、ステップS2からステップS6に進む。図15の(2)の入れ子オブジェクトおよび図7の入れ子オブジェクト76はいずれもルートノード(全要素ノード)のフラグが偽(強調表示されない)であるから、図14のステップS61における判定がYESとなって、ステップS62のOR演算が実行され、図15の(3)に示すような入れ子オブジェクトが新たなXとして作成され、そのデータ構造が図16の(3)のように修正される。ORノード72のNOTフラグが真であるから、ステップS5でXの全ノードのフラグが反転され、図15の(4)に示すような入れ子オブジェクトが新たなXとして作成される。この新たなXのデータ構造は、図16の(3)に示すデータ構造のフラグをすべて逆にしただけであるから、図16には示していない。
最後の繰り返しループでは、同様にしてANDノード70、リーフノード71および図15の(4)に示す入れ子オブジェクトからなるサブツリーが選択され、ステップS3でAND演算(具体的には、図10のステップS35におけるAND演算)が実行されて、図15の(5)に示すような入れ子オブジェクトが作成される。この入れ子オブジェクトのデータ構造は図16の(5)のようになっており、これが最終的な2次元の入れ子表現として、変換部14から記憶部35に記憶される。
作図部16は、変換部14で作成された入れ子表現から可視化のための絵画表現を作図して、記憶部35に記憶するもので、その動作の流れを図16に示す。作図部16は、最初のステップS71で、図16の(5)に示されるデータ構造に記述されているルートノードすなわち全要素ノードに対応する矩形を描き、全要素ノードのフラグが真であれば、その矩形領域を強調表示する。図16の(5)の例では、全要素ノードのフラグは偽であるから、矩形領域は強調表示されない。矩形の描画は、HTMLのテーブルや、PowerPoint(R)の矩形等を用いることによって実行可能である。
続いて、ステップS72で、描画された矩形aと対応付けられたノードAが、まだ矩形と対応付けられていない下位ノードBを持つかどうかをチェックする。これは、図16の(5)に示すデータ構造における子ノードの欄を調べればわかる。ノードAがそのような下位ノードBを持っていれば、ステップS73に進んで、下位ノードBに対応する矩形bを矩形aの内部に描画し、Bのフラグが真であれば、矩形bを強調表示する。矩形bの描画に際しては、矩形aの内部にある他の矩形と重ならないようにする必要がある。最後に、矩形bにノードBのラベルを付与して、ステップS71に戻る。ステップS71で下位ノードが見つからなければ終了する。
図16の(5)の例では、ポインタの欄はすべてnullであるが、もしいずれかのノードがポインタを持っていると、作図部33は、そのポインタにより示される従属入れ子オブジェクトについて上と同様な操作を実行し、図13に示すように、ポインタを持ったノードと従属入れ子オブジェクトを矢印で結ぶ。
表示部34は、作図部33により作図された絵画表現を記憶部35から読み出して、スクリーンに可視表示する。
実際の検索例として、例えば、Windows(R)95、Windows(R) 98またはWindows(R) 2000(ただし、セカンドエディションを除く)でブルースクリーン以外のシステムエラーについて検索したい場合は、検索のためのブール式は、((Windows(R) 95 OR Windows(R) 98 OR (Windows(R) 2000 AND (!セカンドエディション))) AND (システムエラー AND (!ブルースクリーン)))となり、これに本発明を適用すると、例えば図18に示すような可視表示が得られる。ユーザにとっては、どのような条件で検索しているのかが一目でわかるので、本発明を従来の検索ツールに組み込めば、ユーザフレンドリィな検索ツールをユーザに提供することができる。
本発明は、ハードウェア、ソフトウエア、またはハードウェアおよびソフトウエアの組み合わせとして実現可能である。ハードウェアとソフトウエアの組み合わせによる実行において、所定のプログラムを有するコンピュータシステムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該コンピュータシステムにロードされ実行されることにより、該プログラムは、コンピュータシステムを制御し、本願発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または1.他の言語・コード・表記への変換、2.他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本願発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本願発明の機能を実行するためのプログラムは、フロッピー(R)・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、MRAM、RAM等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のコンピュータシステムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。
図19は、上述のコンピュータシステムのハードウェア構成例を示したものである。コンピュータシステム200は、システムバス206に繋がった複数のプロセッサ202および204を備えた対称型マルチプロセッサ(SMP)であるが、シングル・プロセッサ・システムであってもよい。システムバス206にはメモリコントローラ/キャッシュ208も繋がっており、これはローカルメモリ209に対するインターフェースを提供する。I/Oバスブリッジ210がシステムバス206に繋がっており、I/Oバス212に対するインターフェースを提供する。メモリコントローラ/キャッシュ206とI/Oバスブリッジ210は、図示されているように1つにすることもある。
I/Oバス212に繋がったPCIバスブリッジ214は、PCIローカルバス216に対するインターフェースを提供する。いくつかのモデムをPCIローカルバス216に接続することもある。典型的なPCIバスの実装では、4つのPCI拡張用スロットないしは拡張用コネクタを備えている。図示しないネットワークに対する通信リンクは、拡張ボードを介してPCIローカルバス216に接続されたモデム218およびネットワークアダプタ220を通して提供される。
追加のPCIバスブリッジ222および224は、追加のPCIローカルバス226および228のためのインターフェースを提供し、それにより追加のモデムやネットワークアダプタを扱うことが可能となる。メモリマップト(メモリ空間に配置された)グラフィクスアダプタ230およびハードディスクドライブ232もまた、図示したようにI/Oローカルバス212に直接または間接に接続される。図には示していないが、グラフィクスアダプタ230には図3の表示部34が接続されている。
図19に示したハードウェア構成は一例に過ぎず、他のハードウェア構成を採用することも可能である。例えば、光ディスクデバイスなどの他の周辺デバイスを、図示のハードウェアに加えてあるいはそれに代えて使用することができる。図示された例は本発明に関するアーキテクチャ上の制限を意図するものではない。
以上、本発明の最良の実施形態について詳細に説明してきたが、本発明は上述の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の範囲内で様々な変更・修正が可能であることは言うまでもない。
ブール式のツリー構造表現の例を示す図。 ブール式のベン図表現を示す図。 本発明に従うブール式可視化装置の構成を示すブロック図。 図1(B)に示すバイナリツリーのデータ構造を示す図。 図3に示す変換部の詳細な構成を示すブロック図。 バイナリツリーにおける各リーフノードの入れ子オブジェクト表現を示す図。 図1(B)に示すバイナリツリーの各リーフノードを入れ子オブジェクトに変換した後の構成を示す図。 図7に示すバイナリツリーのリーフノードのデータ構造を示す図。 本発明に従ってブール式を可視化するための演算のフローを示すフローチャート。 図5に示すAND演算部によるAND演算のフローを示すフローチャート。 AND演算の対象となるオペランドの3つのタイプの例を示す図。 オペランドのタイプに応じたAND演算の例をテーブルの形で示す図。 主入れ子オブジェクトと、該主入れ子オブジェクトに対してポインタにより関連付けられる従属入れ子オブジェクトからなる入れ子表現の一例を示す図。 図5に示すOR演算部によるOR演算のフローを示すフローチャート。 図7に示すバイナリツリーを本発明に従って可視化する場合の各演算の結果である入れ子オブジェクトのイメージを段階的に示す図。 図15に示す入れ子オブジェクトのデータ構造を示す図。 図3に示す作図部による絵画表現の作図フローを示すフローチャート。 実際の検索式を本発明に従って可視化した例を示す図。 本発明を実施し得るコンピュータシステムのハードウェア構成の一例を示すブロック図。

Claims (7)

  1. ブール式を可視化するための装置であって、
    可視化すべきブール式を表す文字列式を、リーフノードが前記ブール式中のオペランドを表し、リーフノード以外のノードが前記ブール式中のオペレータを表すバイナリツリーに変換する入力部と、
    前記バイナリツリーを複数の領域からなる2次元の入れ子表現に変換する変換部と、
    前記入れ子表現から可視化のための絵画表現を作図する作図部と、
    前記入力部により変換されたバイナリツリー、前記変換部により作成された入れ子表現、および前記作図部により作図された絵画表現を記憶する記憶部と、
    前記絵画表現を可視表示する表示部とを含み、
    前記バイナリツリーのリーフノードは、オペランドを表すラベルとNOTフラグを持ち、リーフノード以外のノードは、ANDまたはORの属性とNOTフラグを持ち、
    前記入れ子表現は、複数のノードを含む少なくとも1つの入れ子オブジェクトからなり、
    前記変換部は、
    前記バイナリツリーの各リーフノードを、当該リーフノードのラベルと、強調表示のためのフラグを持つ入れ子オブジェクトに変換するリーフノード変換部と、
    前記入れ子オブジェクトをオペランドに用いてブール演算を実行することにより、2次元の入れ子表現を作成するツリー演算部と、
    前記入れ子表現作成のための論理演算を実行するAND演算部、OR演算部およびNOT演算部とを含み、
    前記入れ子オブジェクトのフラグが第1の値のときは対応するリーフノードのオペランドが強調表示され、前記フラグが第2の値のときは前記対応するリーフノードのオペランドを囲む領域が強調表示され、
    前記ツリー演算部は、前記バイナリーツリーにおいて共通の親を持つリーフノードのペアが存在するかどうかをチェックして、存在していると、
    前記共通の親のノードがANDノードの場合には、前記AND演算部に、前記リーフノードのペアを2つのオペランドとして、一方のオペランドの要素の中に他方のオペランドのすべての要素を包含させるAND演算を実行させ、
    前記共通の親のノードがORノードの場合には、前記OR演算部に、ルートノードの中に前記2つのオペランドの要素を重なり合わないように並置するOR演算を実行させ、
    前記共通の親のノードのNOTフラグが真の場合には、前記NOT演算部に前記AND演算または前記OR演算の演算結果における全ノードのフラグを反転させる、
    ブール式可視化装置。
  2. 前記複数のノードのそれぞれは、(1)オペランドもしくは全要素を示すラベルと、当該ノードが強調表示されるかどうかを示すフラグを持つか、または(2)別の入れ子オブジェクトへのポインタと、ユーザ定義のラベルと、当該ノードが強調表示されるかどうかを示すフラグを持つ、請求項1に記載の装置。
  3. 前記演算がANDの場合には、演算対象となる第1および第2の入れ子オブジェクトが、強調表示されているノードが唯1つあり、下位ノードを持たない第1のタイプ、自分自身が強調表示されていて、自分の上位ノードが強調表示されていないようなノードが唯1つある第2のタイプ、およびそれ以外の第3のタイプのいずれに属するかを判断し、
    (1)前記第1の入れ子オブジェクトが前記第1のタイプである場合は、前記第2の入れ子オブジェクトの最上位の全要素ノードのフラグが偽であれば、前記第1の入れ子オブジェクトのフラグが真のノードのフラグを偽にして、該ノードの中に、前記第2の入れ子オブジェクトの全要素ノードのすべての下位ノードを追加し、前記第2の入れ子オブジェクトの最上位の全要素ノードのフラグが真であれば、前記第1の入れ子オブジェクトのフラグが真のノードの中に、前記第2の入れ子オブジェクトの全要素ノードのすべての下位ノードを追加し、
    (2)前記第1および第2の入れ子オブジェクトがいずれも前記第1のタイプではなく、前記第2の入れ子オブジェクトが前記第2のタイプの場合は、それぞれの入れ子オブジェクトに含まれるフラグが真のノードの下位ノードを取り除いて、第1のタイプの入れ子オブジェクト同士のAND演算を実行し、その演算結果に含まれるフラグが真のノードに取り除いた下位ノードを追加し、
    (3)前記第1の入れ子オブジェクトが前記第1のタイプではなく、前記第2の入れ子オブジェクトが前記第3のタイプの場合は、全要素ノードの中に前記第2の入れ子オブジェクトへのポインタを持つ、フラグが真のノードのみを追加した新たな入れ子オブジェクトを作成し、該新たな入れ子オブジェクトと前記第1の入れ子オブジェクトとのAND演算を実行し、前記第2の入れ子オブジェクトは前記第1の入れ子オブジェクトの従属入れ子オブジェクトとして追加し、
    (4)その他の場合は、前記第1の入れ子オブジェクトと前記第2の入れ子オブジェクトを入れ替えて、(1)〜(3)の演算を実行する、
    請求項2に記載の装置。
  4. 前記演算がORの場合は、演算対象となる第1および第2の入れ子オブジェクトのルートノードのフラグが偽であれば、前記第1の入れ子オブジェクトのルートノードの中に前記第2の入れ子オブジェクトのルートノードのすべての下位ノードを追加し、さもなければ、前記第1の入れ子オブジェクト及び前記第2の入れ子オブジェクトの全フラグを反転してからAND演算を実行し、その結果の全フラグを反転する、請求項2に記載の装置。
  5. 前記作図部は、
    (1)全要素ノードに対応する矩形を描き、該全要素ノードのフラグが真であれば、該全要素ノードを強調表示し、
    (2)描画された矩形と対応付けられたノードにまだ矩形と対応付けられていない下位ノードがあれば、該下位ノードに対応する矩形を前記描画された矩形の内部に、前記描画された矩形の内部の他の矩形と重ならないように描画する
    請求項2乃至4のいずれかに記載の装置。
  6. 記憶部および表示部を含むコンピュータで実行され、ブール式を可視化するための方法であって、
    可視化すべきブール式を、リーフノードが前記ブール式中のオペランドを表し、リーフノード以外のノードが前記ブール式中のオペレータを表すバイナリツリーの形で入力して前記記憶部に記憶するステップと、
    前記バイナリツリーを複数の領域からなる2次元の入れ子表現に変換して前記記憶部に記憶するステップと、
    前記入れ子表現から可視化のための絵画表現を作図して前記記憶部に記憶するステップと、
    前記絵画表現を表示部で表示するステップとを含み、
    前記バイナリツリーのリーフノードは、オペランドを表すラベルとNOTフラグを持ち、リーフノード以外のノードは、ANDまたはORの属性とNOTフラグを持ち、
    前記入れ子表現は、複数のノードを含む少なくとも1つの入れ子オブジェクトからなり、
    前記バイナリツリーを複数の領域からなる2次元の入れ子表現に変換して前記記憶部に記憶するステップは、
    前記バイナリツリーの各リーフノードを、当該リーフノードのラベルと、強調表示のためのフラグを持つ入れ子オブジェクトに変換するステップと、
    前記入れ子オブジェクトをオペランドに用いてAND演算、OR演算またはNOT演算を実行することにより、2次元の入れ子表現を作成するステップとを含み、
    前記入れ子オブジェクトのフラグが第1の値のときは対応するリーフノードのオペランドが強調表示され、前記フラグが第2の値のときは前記対応するリーフノードのオペランドを囲む領域が強調表示され、
    前記バイナリツリーを複数の領域からなる2次元の入れ子表現に変換して前記記憶部に記憶するステップは、前記バイナリーツリーにおいて共通の親を持つリーフノードのペアが存在するかどうかをチェックして、存在していると、
    前記共通の親のノードがANDノードの場合には、前記リーフノードのペアを2つのオペランドとして、一方のオペランドの要素の中に他方のオペランドのすべての要素を包含させるAND演算を実行し、
    前記共通の親のノードがORノードの場合には、ルートノードの中に前記2つのオペランドの要素を重なり合わないように並置するOR演算を実行し、
    前記共通の親のノードのNOTフラグが真の場合には、前記AND演算または前記OR演算の演算結果における全ノードのフラグを反転する、
    ブール式可視化方法。
  7. ブール式を可視化するために、コンピュータを、
    可視化すべきブール式を表す文字列式を、リーフノードが前記ブール式中のオペランドを表し、リーフノード以外のノードが前記ブール式中のオペレータを表すバイナリツリーに変換する入力部、
    前記バイナリツリーを複数の領域からなる2次元の入れ子表現に変換する変換部、
    前記入れ子表現から可視化のための絵画表現を作図する作図部、
    前記バイナリツリー、前記変換部により作成された入れ子表現、および前記作図部により作図された絵画表現を記憶する記憶部、ならびに
    前記絵画表現を表示する表示部として機能させ
    前記バイナリツリーのリーフノードは、オペランドを表すラベルとNOTフラグを持ち、リーフノード以外のノードは、ANDまたはORの属性とNOTフラグを持ち、
    前記入れ子表現は、複数のノードを含む少なくとも1つの入れ子オブジェクトからなり、
    前記変換部は、
    前記バイナリツリーの各リーフノードを、当該リーフノードのラベルと、強調表示のためのフラグを持つ入れ子オブジェクトに変換するリーフノード変換部と、
    前記入れ子オブジェクトをオペランドに用いてブール演算を実行することにより、2次元の入れ子表現を作成するツリー演算部と、
    前記入れ子表現作成のための論理演算を実行するAND演算部、OR演算部およびNOT演算部とを含み、
    前記入れ子オブジェクトのフラグが第1の値のときは対応するリーフノードのオペランドが強調表示され、前記フラグが第2の値のときは前記対応するリーフノードのオペランドを囲む領域が強調表示され、
    前記ツリー演算部は、前記バイナリーツリーにおいて共通の親を持つリーフノードのペアが存在するかどうかをチェックして、存在していると、
    前記共通の親のノードがANDノードの場合には、前記AND演算部に、前記リーフノードのペアを2つのオペランドとして、一方のオペランドの要素の中に他方のオペランドのすべての要素を包含させるAND演算を実行させ、
    前記共通の親のノードがORノードの場合には、前記OR演算部に、ルートノードの中に前記2つのオペランドの要素を重なり合わないように並置するOR演算を実行させ、
    前記共通の親のノードのNOTフラグが真の場合には、前記NOT演算部に前記AND演算または前記OR演算の演算結果における全ノードのフラグを反転させる、
    プログラム。
JP2006280612A 2006-10-13 2006-10-13 ブール式を可視化するための装置、方法およびプログラム Expired - Fee Related JP4921103B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006280612A JP4921103B2 (ja) 2006-10-13 2006-10-13 ブール式を可視化するための装置、方法およびプログラム
US11/871,855 US7930320B2 (en) 2006-10-13 2007-10-12 Apparatus, method, and program for visualizing boolean expressions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006280612A JP4921103B2 (ja) 2006-10-13 2006-10-13 ブール式を可視化するための装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2008097467A JP2008097467A (ja) 2008-04-24
JP4921103B2 true JP4921103B2 (ja) 2012-04-25

Family

ID=39331595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006280612A Expired - Fee Related JP4921103B2 (ja) 2006-10-13 2006-10-13 ブール式を可視化するための装置、方法およびプログラム

Country Status (2)

Country Link
US (1) US7930320B2 (ja)
JP (1) JP4921103B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5485831B2 (ja) * 2010-08-30 2014-05-07 株式会社日立ソリューションズ 検索用索引自動生成装置を有するファイル検索システム
US8392399B2 (en) * 2010-09-16 2013-03-05 Microsoft Corporation Query processing algorithm for vertically partitioned federated database systems
EP2678774A4 (en) * 2011-02-24 2015-04-08 Lexisnexis Division Of Reed Elsevier Inc METHOD FOR ELECTRONIC DOCUMENT SEARCHING AND GRAPHICAL DISPLAY OF THE ELECTRONIC DOCUMENT SEARCH
AU2014101081A4 (en) * 2014-09-05 2014-10-09 Jonathan Robert Burnett System, method and graphical user interface for facilitating a search
US10530697B2 (en) * 2015-02-17 2020-01-07 Futurewei Technologies, Inc. Intent based network configuration
CA3093713C (en) * 2018-04-20 2023-04-11 Google Llc Performing unary iteration and indexed operations

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809212A (en) * 1993-07-12 1998-09-15 New York University Conditional transition networks and computational processes for use interactive computer-based systems
US5592663A (en) 1993-12-17 1997-01-07 Nagamori; Nobuhiko Graphing method and apparatus for data base retrieval
US5644736A (en) * 1995-05-25 1997-07-01 International Business Machines Corporation System and method for selecting components of a hierarchical file structure
US5794006A (en) * 1995-08-18 1998-08-11 Microsoft Corporation System and method for editing content in an on-line network
US6304260B1 (en) * 1998-06-24 2001-10-16 Lucent Technologies, Inc. Method and apparatus for generating and displaying views of hierarchically clustered data
US6675157B1 (en) * 1999-11-01 2004-01-06 International Business Machines Corporation System and method for balancing binary search trees
US6874141B1 (en) * 2000-06-29 2005-03-29 Microsoft Corporation Method of compiling schema mapping
JP3357665B2 (ja) 2001-03-07 2002-12-16 株式会社ビーコンインフォメーションテクノロジー データ検索システム、データ検索結果の表示方法、コンピュータプログラム及び記録媒体
US7340745B2 (en) * 2002-06-25 2008-03-04 Sun Microsystems, Inc. Systems and methods for mapping API calls
US7428536B2 (en) * 2005-04-05 2008-09-23 International Business Machines Corporation Apparatus and method for providing a condition builder interface
US8015178B2 (en) * 2006-07-07 2011-09-06 Siemens Product Lifecycle Management Software Inc. System and method to determine a single SQL BOM solve

Also Published As

Publication number Publication date
US7930320B2 (en) 2011-04-19
US20080104088A1 (en) 2008-05-01
JP2008097467A (ja) 2008-04-24

Similar Documents

Publication Publication Date Title
US7644370B2 (en) Method of componentisation of a graphically defined formula
JP4921103B2 (ja) ブール式を可視化するための装置、方法およびプログラム
US8386919B2 (en) System for displaying an annotated programming file
JP3262493B2 (ja) プログラムのデータ構造を表示する方法、及びデータ構造表示装置
JP2008052312A (ja) 業務仕様抽出支援システム
JP3828379B2 (ja) テスト仕様生成支援装置、方法、プログラム及び記録媒体
JP2013016095A (ja) プログラム、情報処理装置、および図生成方法
Russell-Rose et al. Designing the structured search experience: rethinking the query-builder paradigm
US20160018952A1 (en) Multi-Format Editors
US20140055482A1 (en) Method for Displaying and Manipulating Genealogical Data Using a Full Family Graph
JP2005301630A (ja) Cadデータ変換装置および方法ならびにプログラム
JP2015099564A (ja) 視覚プログラミング装置およびその制御方法
JP2009238215A (ja) データ処理装置及びデータ処理方法
JP6037976B2 (ja) ソースコード生成装置
JP4777834B2 (ja) 論理図面表示方法、プログラム及び装置
JP3144085B2 (ja) 設計支援装置
JPS6320529A (ja) 知識獲得方式
JP2020115246A (ja) 生成装置、ソフトウェアロボットシステム、生成方法及び生成プログラム
TWI559160B (zh) 用於衍生層視覺化及除錯之方法與裝置
JP4663526B2 (ja) 帳票作成支援装置、帳票作成支援方法、および帳票作成支援プログラム
KR102588597B1 (ko) Uml 시퀀스 다이어그램의 대체 에디터로서 오퍼레이션 로직 디자이너를 이용하여 프로그램을 설계하는 방법 및 그를 이용한 장치
JP7380376B2 (ja) 情報処理装置およびラダープログラムを表示するためのプログラム
JP2011257965A (ja) メトリクス算出装置
JPH08166950A (ja) 文書編集装置
WO1993015458A1 (en) Information processing apparatus and method therefor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090316

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090526

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111208

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120202

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees