JP7360047B2 - 検索処理プログラム、検索処理方法および検索処理装置 - Google Patents

検索処理プログラム、検索処理方法および検索処理装置 Download PDF

Info

Publication number
JP7360047B2
JP7360047B2 JP2020030479A JP2020030479A JP7360047B2 JP 7360047 B2 JP7360047 B2 JP 7360047B2 JP 2020030479 A JP2020030479 A JP 2020030479A JP 2020030479 A JP2020030479 A JP 2020030479A JP 7360047 B2 JP7360047 B2 JP 7360047B2
Authority
JP
Japan
Prior art keywords
node
property
search
value
condition
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.)
Active
Application number
JP2020030479A
Other languages
English (en)
Other versions
JP2021135662A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020030479A priority Critical patent/JP7360047B2/ja
Priority to US17/170,476 priority patent/US11941003B2/en
Publication of JP2021135662A publication Critical patent/JP2021135662A/ja
Application granted granted Critical
Publication of JP7360047B2 publication Critical patent/JP7360047B2/ja
Active 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は検索処理プログラム、検索処理方法および検索処理装置に関する。
データベースのデータ形式として、複数のノードとノード間を接続するエッジとを含むグラフを示すグラフデータがある。例えば、RDF(Resource Description Framework)は、リソースに関係する情報を、主語と述語と目的語の3つ組(トリプルと言うことがある)で表現する。リソースは、人や組織や機械などの実体を表す。主語は、着目する実体を表すリソースである。述語は、主語と目的語との間の関係を表し、属性やプロパティと言うこともある。目的語は、主語と関係のある他のリソースまたはリテラルである。リテラルは、数値や文字列などのテキストである。例えば、(A,年齢,60)というトリプルは、人物Aの年齢が60であることを示す。また、(A,子供,B)というトリプルは、人物Aの子供が人物Bであることを示す。RDFの主語および目的語はグラフのノードに相当し、RDFの述語はグラフのエッジに相当する。
グラフデータから、指定された検索条件に合致するノードを検索することがある。検索の問い合わせ(検索クエリ)は、ノードを絞り込むための1以上の検索条件を含む。2以上の検索条件が含まれる場合、通常、それら2以上の検索条件は論理積(AND)として取り扱われる。検索クエリは、所定のクエリ記述言語で記載される。例えば、RDFデータからリソースを検索するための検索クエリは、SPARQL(SPARQL Protocol and RDF Query Language)というクエリ記述言語で記載されることがある。SPARQLの検索クエリは、リソースを絞り込むための検索条件を、述語や目的語に相当する値を用いてトリプル形式で記載する。例えば、述語を「年齢」とし目的語を「40未満」と指定した検索条件は、年齢が40歳未満の人物を表すリソースに絞り込むことを意味する。
なお、RDFデータベースの検索を高速化するグラフパターンマッチングシステムが提案されている。提案のグラフパターンマッチングシステムは、予め特定のグラフパターンについてRDFデータベースの検索を行い、その検索結果を保存しておく。グラフパターンマッチングシステムは、ユーザから検索クエリを受け付けると、保存された検索結果を利用して、検索クエリに含まれる検索条件に対応するデータを抽出する。
特開2013-54602号公報
グラフデータに対して検索クエリに基づいて検索処理を実行するにあたり、グラフに含まれる個々のノードが検索条件に合致するか否かを網羅的に判定しようとすると、グラフ規模の増大に応じて検索時間が長くなってしまう。この点、検索結果が変わらない範囲で、一部のノードに対して検索条件に合致するか否かの判定を省略することができれば、グラフデータに対する検索処理を高速化できる余地がある。
1つの側面では、本発明は、グラフデータに対する検索処理を高速化できる検索処理プログラム、検索処理方法および検索処理装置を提供することを目的とする。
1つの態様では、コンピュータに以下の処理を実行させる検索処理プログラムが提供される。1以上のプロパティの値がそれぞれ対応付けられた複数のノードと複数のノードを接続する複数のエッジとを含むグラフを示すグラフデータに対して、プロパティの値を用いてノードの検索条件が記載された検索クエリを取得する。グラフデータが満たす制約条件であって、一方のノードに対応付けられた第1のプロパティの値と、一方のノードから所定範囲内にある他方のノードに対応付けられており第1のプロパティと同一または異なるプロパティである第2のプロパティの値との間に成立する制約条件を示す制約データを取得する。グラフデータが示す第1のノードに対応付けられた第1のプロパティの値が、検索クエリが示す検索条件に合致するか判定する。第1のノードから所定範囲内にある第2のノードが検出された場合、第1のノードの第1のプロパティの判定結果と制約データが示す制約条件とに基づいて、第2のノードに対応付けられた第2のプロパティの値が検索条件に合致するか推定して、第2のノードの第2のプロパティの判定を省略する。第1のノードの第1のプロパティの判定結果および第2のノードの第2のプロパティの推定結果を用いて、検索クエリに対する検索結果を生成する。
また、1つの態様では、コンピュータが実行する検索処理方法が提供される。また、1つの態様では、記憶部と処理部とを有する検索処理装置が提供される。
1つの側面では、グラフデータに対する検索処理を高速化できる。
第1の実施の形態の検索処理装置の例を説明する図である。 第2の実施の形態の検索処理装置のハードウェア例を示す図である。 RDFグラフの例を示す図である。 RDFデータおよび制約データの例を示す図である。 検索クエリと検索結果の第1の例を示す図である。 検索クエリと検索結果の第2の例を示す図である。 検索処理の第1の高速化例を示す図である。 検索処理の第2の高速化例を示す図である。 検索処理装置の機能例を示すブロック図である。 検索計画生成の手順例を示すフローチャートである。 検索処理の手順例を示すフローチャートである。 検索処理の手順例を示すフローチャート(続き1)である。 検索処理の手順例を示すフローチャート(続き2)である。 検索処理の手順例を示すフローチャート(続き3)である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の検索処理装置の例を説明する図である。
第1の実施の形態の検索処理装置10は、グラフ型データベースに対して検索クエリに応じて検索処理を実行する。検索処理装置10は、クライアント装置でもよいしサーバ装置でもよい。検索処理装置10を、情報処理装置やコンピュータと言うこともできる。
検索処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
記憶部11は、グラフデータ13および制約データ14を記憶する。
グラフデータ13は、1以上のプロパティの値がそれぞれ対応付けられた複数のノードと、それら複数のノードを接続する複数のエッジとを含むグラフを示す。グラフデータ13が示すグラフは、エッジが向きをもつ有向グラフであってもよい。また、グラフデータ13は、RDFに従って記載されたRDFデータであってもよい。例えば、グラフデータ13に含まれるノードは、人や組織や機械などの実体を表すリソースに対応し、グラフデータ13に含まれるエッジは、親子関係や包含関係などリソース間の関係に対応する。エッジがプロパティの一種であってもよい。ノードに対応付けられたプロパティは、例えば、年齢や人口や面積などリソースがもつ属性を表す。
一例として、グラフデータ13は、ノード13a(ノードX)およびノード13b(ノードY)を含む。ノード13aとノード13bとは、関係Rを示すエッジで接続されている。ただし、ノード13bがノード13aから所定範囲内にあればよく、両者が隣接する代わりに1以上の中間ノードを介して連結していてもよい。ノード13aに対しては、少なくともプロパティ13c(第1のプロパティ)の値が対応付けられている。ノード13bに対しては、少なくともプロパティ13d(第2のプロパティ)の値が対応付けられている。プロパティ13cとプロパティ13dは、同一のプロパティであってもよいし異なるプロパティであってもよい。一例として、ノード13a,13bが人物を表し、ノード13aとノード13bの間のエッジが親子関係を表し、プロパティ13c,13dが年齢を表してもよい。その場合、人物Xの子が人物Yであること、人物Xの年齢が40であること、人物Yの年齢が20であることが表現される。
制約データ14は、グラフデータ13が満たすことが期待される制約条件を示す。制約条件は、意味的にあり得ないデータがデータベースに登録されるのを抑制するため、データベースのデータ構造定義に対して付与される設計情報である。制約条件を満たさないデータをグラフデータ13に登録しようとした場合に、そのデータ登録を拒否することが考えられる。また、グラフデータ13の中に制約条件を満たさないデータがないか検証し、制約条件を満たさないデータがある場合にエラーを報告することが考えられる。また、制約条件と矛盾する検索条件を指定した検索クエリを拒否することが考えられる。第1の実施の形態では、後述するように、制約データ14を検索処理の高速化に利用する。
制約条件には、1つのノードの1つのプロパティの値に対して単独でその具備が判断されるプロパティ単位の制約条件と、異なるノードのプロパティの値の関係に対してその具備が判断されるノード間の制約条件とがある。プロパティ単位の制約条件として、例えば、年齢の値が非負整数であることや、性別の値が「男性」または「女性」であることが挙げられる。ノード間の制約条件として、例えば、親子関係にある人物の間で子の年齢が親の年齢以下であることや、包含関係にある行政区の間で下位の行政区の人口が上位の行政区の人口以下であることが挙げられる。第1の実施の形態では、検索処理の高速化に、制約条件のうちノード間の制約条件を利用する。
制約データ14は、あるノード(一方のノード)と当該ノードから所定範囲内にある他のノード(他方のノード)との間に成立する制約条件を示す。所定範囲内にある他方のノードは、例えば、一方のノードから所定の関係を示す1つのエッジを介して到達可能な隣接ノードである。また、所定範囲内にある他方のノードは、例えば、一方のノードから所定の関係を示すエッジのみを1つ以上経由して到達可能な近傍ノードである。制約データ14は、一方のノードに対応付けられたプロパティ13cの値と他方のノードに対応付けられたプロパティ13dの値との間に成立する制約条件を示す。
一例として、制約データ14は、一方のノードと他方のノードとが関係Rを示すエッジで接続されている場合に、当該他方のノードのプロパティ13dの値が当該一方のノードのプロパティ13cの値以下であるという制約条件を示す。関係Rを親子関係とし、プロパティ13c,13dを年齢と解釈してもよい。また、関係Rを行政区の包含関係とし、プロパティ13c,13dを人口または面積と解釈してもよい。
処理部12は、検索クエリ15を取得する。処理部12は、ユーザから検索クエリ15の入力を受け付けてもよいし、他の情報処理装置から検索クエリ15を受信してもよい。検索クエリ15は、グラフデータ13からノードを検索する検索要求を示しており、プロパティの値を用いて記載された検索条件を含んでいる。検索条件は、プロパティ13c,13dの値が閾値以上であることまたは閾値以下であることであってもよい。例えば、検索クエリ15として、年齢が閾値以上の人物を示すノードを要求するものや、人口が閾値以上の行政区を示すノードを要求するものなどが挙げられる。検索条件は、2以上のプロパティに対応する2以上の条件項目を含んでもよい。それら2以上の条件項目は、通常、論理積(AND条件)として解釈される。
次に、処理部12は、グラフデータ13に含まれるノード13aに対応付けられたプロパティ13cの値が、検索クエリ15が示す検索条件に合致するか判定する。ノード13aのプロパティ13cの判定を行うと、処理部12は、ノード13aから所定範囲内にあるノード13bを検出する。すると、処理部12は、ノード13aのプロパティ13cの判定結果と制約データ14が示す制約条件とに基づいて、ノード13bに対応付けられたプロパティ13dの値が検索条件に合致するか推定する。この推定により、処理部12は、ノード13bのプロパティ13dの判定を省略してよい。処理部12は、ノード13aのプロパティ13cの判定結果およびノード13bのプロパティ13dの推定結果を用いて、検索クエリ15に対する検索結果16を生成する。
例えば、検索クエリ15が検索条件として、プロパティ13c,13dの値が閾値以下であることを規定しているとする。また、制約データ14が制約条件として、一方のノードと関係Rで接続された他方のノードのプロパティ13dの値が、当該一方のノードのプロパティ13cの値以下であることを規定しているとする。この場合、制約条件のもとで、一方のノードのプロパティ13cの値が閾値以下であれば、他方のノードのプロパティ13dの値が閾値以下であるという肯定の推移関係が成立する。よって、ノード13aのプロパティ13cの値が検索条件に合致すれば、ノード13bのプロパティ13dの値も検索条件に合致すると推定される。その結果として、例えば、ノード13a,13bを示す情報が検索結果16に含まれることになる。
また、例えば、検索クエリ15が検索条件として、プロパティ13c,13dの値が閾値以上であることを規定しているとする。また、制約データ14が制約条件として、一方のノードと関係Rで接続された他方のノードのプロパティ13dの値が、当該一方のノードのプロパティ13cの値以下であることを規定しているとする。この場合、制約条件のもとで、一方のノードのプロパティ13cの値が閾値以上でなければ、他方のノードのプロパティ13dの値が閾値以上でないという否定の推移関係が成立する。よって、ノード13aのプロパティ13cの値が検索条件に合致しなければ、ノード13bのプロパティ13dの値も検索条件に合致しないと推定される。その結果として、例えば、ノード13a,13bを示す情報が検索結果16から除外されることになる。
なお、ノード13bのプロパティ13dの値が検索条件に合致しないと推定された場合、この時点でノード13bが検索結果16から除外される。この場合、検索クエリ15が示す検索条件に他のプロパティに関する条件が含まれていても、処理部12は、ノード13bの他のプロパティの判定を省略してよい。また、ノード13bから関係Rを示すエッジを経由して更に他のノードが検出された場合、処理部12は、当該他のノードに対応付けられたプロパティ13dの判定を連鎖的に省略するようにしてもよい。また、検索クエリ15が示す検索条件に、制約データ14に出現するプロパティに関する条件項目と制約データ14に出現しないプロパティに関する条件項目とが含まれる場合、処理部12は、前者が後者より先に判定されるように条件項目をソートするようにしてもよい。
第1の実施の形態の検索処理装置10によれば、検索クエリ15が示す検索条件に合致するノードをグラフデータ13から検索する際に、グラフデータ13に対して予め作成されており異なるノードの間で成立する制約条件を示す制約データ14が参照される。制約条件とノード13aのプロパティ13cの値が検索条件に合致するか否かの判定結果とから、ノード13aから所定範囲内にあるノード13bのプロパティ13dの値が検索条件に合致するか否かが推定され、その判定が省略される。これにより、検索結果に影響を与えない範囲で、一部のノードのプロパティの判定を省略することができる。よって、グラフデータ13が大規模であっても、検索処理を高速化できる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態の検索処理装置は、RDFデータに対して検索クエリに応じて検索処理を実行する。第2の実施の形態の検索処理装置は、クライアント装置でもよいしサーバ装置でもよい。検索処理装置を、情報処理装置やコンピュータと言うこともできる。
図2は、第2の実施の形態の検索処理装置のハードウェア例を示す図である。
検索処理装置100は、CPU101、RAM102、HDD103、画像インタフェース104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。検索処理装置100が有するこれらのユニットは、バスに接続されている。検索処理装置100は、第1の実施の形態の検索処理装置10に対応する。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。CPU101は複数のプロセッサコアを備えてもよく、検索処理装置100は複数のプロセッサを備えてもよい。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に使用するデータを一時的に記憶する揮発性半導体メモリである。検索処理装置100は、RAM以外の種類のメモリを備えてもよく、複数のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。検索処理装置100は、フラッシュメモリやSSD(Solid State Drive)など他の種類のストレージを備えてもよく、複数のストレージを備えてもよい。
画像インタフェース104は、CPU101からの命令に従って、検索処理装置100に接続された表示装置111に画像を出力する。表示装置111として、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイ、プロジェクタなど、任意の種類の表示装置を使用することができる。検索処理装置100に、プリンタなど表示装置111以外の出力デバイスが接続されてもよい。
入力インタフェース105は、検索処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112として、マウス、タッチパネル、タッチパッド、キーボードなど、任意の種類の入力デバイスを使用することができる。検索処理装置100に複数種類の入力デバイスが接続されてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、半導体メモリなど、任意の種類の記録媒体を使用することができる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
次に、データベースのデータ構造について説明する。
図3は、RDFグラフの例を示す図である。
RDFグラフ130は、RDFデータをグラフ形式で表現したものである。RDFでは、1つの事実が(主語,述語,目的語)のトリプルで表現される。主語は、人や組織や機械などの実体を表すリソースに相当する。リソースは、識別子であるURI(Uniform Resource Identifier)によって識別される。述語は、主語と目的語との間の関係を表し、属性やプロパティと言うこともある。目的語は、主語であるリソースと関係のある他のリソースまたはリテラルに相当する。リテラルは、数値や文字列などのテキストである。RDFのリソースおよびリテラルは、グラフのノードに対応する。リソースは楕円形で表記されることがあり、リテラルは矩形で表記されることがある。RDFのプロパティは、グラフのエッジに対応する。エッジは、主語から目的語への方向をもつ。
第2の実施の形態では、人物の血縁関係を記載したRDFデータを使用する。RDFグラフ130は、リソースを示すノード131,132,133,134,135,136を含む。また、RDFグラフ130は、リテラルを示すノード132a,132b,133a,133b,134a,134b,135a,135b,136a,136bを含む。
ノード131は人物Aを表し、ノード132は人物Bを表し、ノード133は人物Cを表し、ノード134は人物Dを表し、ノード135は人物Eを表し、ノード136は人物Fを表す。ノード131からノード132に、プロパティ「子供」を表すエッジがある。ノード131からノード133に、プロパティ「子供」を表すエッジがある。ノード132からノード134に、プロパティ「子供」を表すエッジがある。ノード133からノード135に、プロパティ「子供」を表すエッジがある。ノード133からノード136に、プロパティ「子供」を表すエッジがある。
ノード132からリテラル「女性」を表すノード132aに、プロパティ「性別」を表すエッジがある。ノード132からリテラル「42」を表すノード132bに、プロパティ「年齢」を表すエッジがある。ノード133からリテラル「男性」を表すノード133aに、プロパティ「性別」を表すエッジがある。ノード133からリテラル「39」を表すノード133bに、プロパティ「年齢」を表すエッジがある。ノード134からリテラル「女性」を表すノード134aに、プロパティ「性別」を表すエッジがある。ノード134からリテラル「19」を表すノード134bに、プロパティ「年齢」を表すエッジがある。ノード135からリテラル「男性」を表すノード135aに、プロパティ「性別」を表すエッジがある。ノード135からリテラル「18」を表すノード135bに、プロパティ「年齢」を表すエッジがある。ノード136からリテラル「男性」を表すノード136aに、プロパティ「性別」を表すエッジがある。ノード136からリテラル「18」を表すノード136bに、プロパティ「年齢」を表すエッジがある。
よって、RDFグラフ130は以下の事実を表現している。人物Bは人物Aの子供であり、42歳の女性である。人物Cは人物Aの子供であり、39歳の男性である。人物Dは人物Bの子供であり、19歳の女性である。人物Eは人物Cの子供であり、18歳の男性である。人物Fは人物Cの子供であり、18歳の男性である。
図4は、RDFデータおよび制約データの例を示す図である。
RDFデータ141は、図3のRDFグラフ130に対応する。RDFデータ141は、以下の事実を記載した15個のトリプルを含む。(1)人物Aの子供は人物Bである。(2)人物Aの子供は人物Cである。(3)人物Bの性別は女性である。(4)人物Bの年齢は42である。(5)人物Bの子供は人物Dである。(6)人物Cの性別は男性である。(7)人物Cの年齢は39である。(8)人物Cの子供は人物Eである。(9)人物Cの子供は人物Fである。(10)人物Dの性別は女性である。(11)人物Dの年齢は19である。(12)人物Eの性別は男性である。(13)人物Eの年齢は18である。(14)人物Fの性別は男性である。(15)人物Fの年齢は18である。
RDFデータ141に対しては、データ構造の設計時に予め制約データ142が作成されている。制約データ142は、意味的にあり得ないデータがRDFデータ141に登録されるのを抑制するためRDFデータ141に対して課される制約条件を示す。制約データ142は、SHACL(Shapes Constraint Language)などの制約記述言語で記載される。制約条件には、1つのリソースの1つのプロパティの値に対して、他のリソースや他のプロパティとは独立に課されるプロパティ単位の制約条件がある。また、制約条件には、あるリソースのプロパティの値と他のリソースのプロパティの値との関係に対して課されるリソース間の制約条件がある。関係データベース(RDB:Relational Database)で規定可能な制約条件は、1つのレコードの1つのカラムに対する制約条件である。一方でRDFデータベースでは、異なるリソースの間の制約条件を規定することができる。
制約条件は、新たなデータをRDFデータ141に登録する際に参照され得る。制約条件と矛盾するデータをRDFデータ141に登録しようとした際、そのデータ登録を拒否することが考えられる。例えば、性別が「男性」でも「女性」でもないトリプルや、年齢が非負整数でないトリプルを登録することが拒否される。また、制約条件は、RDFデータ141に登録されたデータを事後的に検証する際に参照され得る。RDFデータ141の中から制約条件と矛盾するデータが検出された場合に、エラーメッセージを表示してRDFデータ141の修正を促すことが考えられる。
また、制約条件は、受け付けた検索クエリを検証する際に参照され得る。検索クエリの中に、制約条件と矛盾する値を指定した検索条件が記載されている場合、その検索クエリによって要求される検索処理を拒否することが考えられる。その場合、検索処理を実行することなく、該当するデータが存在しないことを示す検索結果を出力することができる。例えば、性別として「男性」でも「女性」でもない値を指定した検索条件を含む検索クエリや、年齢として非負整数でない値を指定した検索条件を含む検索クエリが拒否される。
制約データ142は、子供の年齢が親の年齢より小さいというリソース間の制約条件を規定する。RDFデータ141は、この制約条件を満たすように作成される。図4に示す制約条件の1行目は、あるリソースを「parent」とし、プロパティ「子供」の先にあるリソースを「this」とすることを示す。2行目は、リソースthisの年齢を「age」とすることを示す。3行目は、リソースparentの年齢を「p_age」とすることを示す。4行目は、年齢p_ageが年齢ageより大きいことを示す。これにより、子供の年齢が親の年齢より小さいことが規定される。後述するように第2の実施の形態では、このようなリソース間の制約条件を検索処理の高速化に利用する。
次に、検索クエリに応じた検索処理について説明する。まず、RDFデータ141に対する単純な検索処理を説明し、その後に検索処理の高速化について説明する。
図5は、検索クエリと検索結果の第1の例を示す図である。
検索クエリ143は、RDFデータ141から検索条件に合致するリソースを検索することを要求するデータベースクエリである。検索クエリ143は、ユーザによって検索処理装置100に入力されたものでもよいし、他の情報処理装置から受信されたものでもよい。検索クエリ143は、SPARQLに従って記載される。
検索クエリ143は、3つの検索条件を含む。これら3つの検索条件は、論理積(AND条件)として解釈される。第1の検索条件は、抽出されるリソースが、人物Aを示すリソースからプロパティ「子供」を1回以上経由した先にあるリソースであることである。第2の検索条件は、抽出されるリソースが、プロパティ「性別」の値として「男性」をもつことである。第3の検索条件は、抽出されるリソースが、プロパティ「年齢」の値として40未満の数値をもつことである。図5に示す検索条件の1行目は、人物Aを示すリソースからプロパティ「子供」を1回以上経由した先にあるリソースを「child」とすることを示す。2行目は、リソースchildの性別を「男性」に限定することを示す。3行目は、リソースchildの年齢を「age」とすることを示す。4行目は、年齢ageを40未満に限定することを示す。よって、検索クエリ143は、人物Aの子孫のうち40歳未満の男性を検索することを示す。
単純な検索処理によれば、まず、基点であるノード131が選択され、第1の検索条件に基づいて、ノード131からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード132,133,134,135,136が抽出される。
次に、第2の検索条件に基づいて、ノード132,133,134,135,136それぞれに対して、プロパティ「性別」の値が「男性」であるか判定される。すなわち、ノード132に対応するノード132aが抽出され、その値が「男性」か判定される。同様に、ノード133に対応するノード133aが抽出され、その値が「男性」か判定される。ノード134に対応するノード134aが抽出され、その値が「男性」か判定される。ノード135に対応するノード135aが抽出され、その値が「男性」か判定される。ノード136に対応するノード136aが抽出され、その値が「男性」か判定される。ノード131,132,133,134,135,136のうち、第2の検索条件に合致しないノードは検索結果から除外することができる。よって、プロパティ「性別」の値が「男性」でないノード132,134が検索結果から除外される。
次に、第3の検索条件に基づいて、残ったノード133,135,136それぞれに対して、プロパティ「年齢」の値が40未満であるか判定される。すなわち、ノード133に対応するノード133bが抽出され、その値が40未満か判定される。同様に、ノード135に対応するノード135bが抽出され、その値が40未満か判定される。ノード136に対応するノード136bが抽出され、その値が40未満か判定される。ノード133,135,136のうち、第3の検索条件に合致しないノードは検索結果から除外することができる。ただし、ここで除外されるノードは無い。
最終的にノード133,135,136が残る。これにより、検索クエリ143に対応する検索結果144が生成される。検索結果144は、ノード133,135,136が示すリソースを主語とするトリプルを含む。具体的には、検索結果144は、以下の事実を示す8個のトリプルを含む。(1)人物Cの性別は男性である。(2)人物Cの年齢は39である。(3)人物Cの子供は人物Eである。(4)人物Cの子供は人物Fである。(5)人物Eの性別は男性である。(6)人物Eの年齢は18である。(7)人物Fの性別は男性である。(8)人物Fの年齢は18である。
上記の検索処理によれば、ノード132a,133a,134a,135a,136aが示す5個のリテラルに対して第2の検索条件の判定が行われている。また、ノード133b,135b,136bが示す3個のリテラルに対して第3の検索条件の判定が行われている。よって、合計で8個のリテラルに対して判定が行われたことになる。
図6は、検索クエリと検索結果の第2の例を示す図である。
検索クエリ145は、検索クエリ143と同様に、RDFデータ141からリソースを検索することを要求するデータベースクエリである。ただし、3つの検索条件のうち第3の検索条件が検索クエリ143と異なる。検索クエリ145の第3の検索条件は、抽出されるリソースが、プロパティ「年齢」の値として40以上の数値をもつことである。よって、検索クエリ145は、人物Aの子孫のうち40歳以上の男性を検索することを示す。
単純な検索処理によれば、まず、基点であるノード131が選択され、第1の検索条件に基づいて、ノード131からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード132,133,134,135,136が抽出される。次に、第2の検索条件に基づいて、ノード132,133,134,135,136それぞれに対して、プロパティ「性別」の値が「男性」であるか判定される。これにより、プロパティ「性別」の値が「男性」でないノード132,134が検索結果から除外される。次に、第3の検索条件に基づいて、残ったノード133,135,136それぞれに対して、プロパティ「年齢」の値が40以上であるか判定される。これにより、プロパティ「年齢」の値が40以上でないノード133,135,136が検索結果から除外される。
最終的に残ったノードは存在しない。これにより、検索クエリ145に対応する検索結果146が生成される。検索結果146は、該当するトリプルが無いことを示す。上記の検索処理によれば、ノード132a,133a,134a,135a,136aが示す5個のリテラルに対して第2の検索条件の判定が行われている。また、ノード133b,135b,136bが示す3個のリテラルに対して第3の検索条件の判定が行われている。よって、合計で8個のリテラルに対して判定が行われたことになる。
これに対して、制約データ142が示す制約条件を考慮すると、一部のリテラルの判定を省略することが可能となる。例えば、図5の検索クエリ143が示す第3の検索条件について、親の年齢が40歳未満であれば、子の年齢は親の年齢より小さいため、子の年齢も40歳未満であることが明らかである。よって、ノード133bが第3の検索条件に合致していれば、ノード135b,136bも第3の検索条件に合致すると推定することができ、ノード135b,136bの判定を省略できる。
また、図6の検索クエリ145が示す第3の検索条件について、親の年齢が40歳以上でなければ、子の年齢は親の年齢より小さいため、子の年齢も40歳以上でないことが明らかである。よって、ノード133bが第3の検索条件に合致しなければ、ノード135b,136bも第3の検索条件に合致しないと推定することができ、ノード135b,136bの判定を省略できる。この時点でノード135,136が検索結果から除外されるため、ノード135,136の他のプロパティの判定も不要となる。
図7は、検索処理の第1の高速化例を示す図である。
ここでは、検索クエリ143に応じた検索処理の高速化を考える。検索クエリ143から、制約条件に出現するプロパティに対する検索条件として、プロパティ「年齢」の値の範囲を指定した第3の検索条件が抽出される。この検索条件と制約条件から、近接するリソースの間で成立する推移関係(含意)を示す命題151,152が生成される。近接するリソースは、制約条件でプロパティの値が比較される2つのリソースである。
命題151は、制約条件のもとで、一方のリソースのプロパティの値が検索条件に合致することを示す肯定式と、他方のリソースのプロパティの値が検索条件に合致することを示す肯定式との間に成立する肯定命題である。2つの肯定式の一方が仮定になり他方が結論になる。検索クエリ143の第3の検索条件からは、親の年齢が40未満であるという肯定式と、子の年齢が40未満であるという肯定式が生成される。子の年齢が親の年齢より小さいという制約条件があるため、命題151として、親の年齢が40未満であるならば子の年齢が40未満であるという推移関係(含意)の命題が生成される。親の年齢が40未満であることが仮定であり、子の年齢が40未満であることが結論である。
命題152は、制約条件のもとで、一方のリソースのプロパティの値が検索条件に合致しないことを示す否定式と、他方のリソースのプロパティの値が検索条件に合致しないことを示す否定式との間に成立する否定命題である。2つの否定式の一方が仮定になり他方が結論になる。命題152は、命題151の対偶に相当する。
検索クエリ143の第3の検索条件からは、親の年齢が40以上であるという否定式と、子の年齢が40以上であるという否定式が生成される。子の年齢が親の年齢より小さいという制約条件があるため、命題152として、子の年齢が40以上であるならば親の年齢が40以上であるという推移関係(含意)の命題が生成される。子の年齢が40以上であることが仮定であり、親の年齢が40以上であることが結論である。検索クエリ143は、あるリソースを基点としてプロパティ「子供」を順方向に辿ることを要求しているため、ここでは命題151,152のうち命題151が使用されることになる。
また、検索クエリ143に含まれる複数の検索条件がソートされ、検索クエリ143が検索クエリ153に変換される。検索条件のソートでは、制約条件に出現するプロパティに対する検索条件を、制約条件に出現しないプロパティに対する検索条件よりも前に移動する。これにより、制約条件に出現するプロパティに対する検索条件が先に判定され、それにより検索結果から除外されたリソースについては、制約条件に出現しないプロパティに対する検索条件を判定しなくてよいことになる。検索クエリ143では、制約条件に関連しないプロパティ「性別」を含む検索条件が2番目であり、制約条件に関連するプロパティ「年齢」を含む検索条件が3番目である。そこで、検索クエリ153では、検索クエリ143の第2の検索条件と第3の検索条件の順序が入れ替えられている。
そして、検索クエリ153と命題151に基づいて検索処理が行われる。まず、基点であるノード131が選択され、検索クエリ153の第1の検索条件に基づいて、ノード131からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード132,133,134,135,136が抽出される。
次に、検索クエリ153の第2の検索条件に基づいて、基点に近いノードから順に、プロパティ「年齢」の値が40未満であるか判定される。まず、ノード132に対応するノード132bが抽出され、その値が40未満か判定される。ここでは、ノード132bの値が第2の検索条件に合致しない。このため、ノード132が検索結果から除外される。また、命題151の仮定が満たされず、命題151の結論は使用されない。
次に、ノード133に対応するノード133bが抽出され、その値が40未満か判定される。ノード133bの値が第2の検索条件に合致するため、命題151の仮定が満たされ、命題151の結論が使用される。その結果、ノード133からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード135,136について、ノード135b,136bの値が第2の検索条件に合致すると推定され、ノード135b,136bの判定が省略される(みなし判定)。次に、ノード134に対応するノード134bが抽出され、その値が40未満か判定される。ノード134bの値が第2の検索条件に合致するため、命題151の仮定が満たされ、命題151の結論が使用される。ただし、ノード134より先に他のノードが無いため、みなし判定は行われない。
次に、検索クエリ153の第3の検索条件に基づいて、残ったノード133,134,135,136それぞれに対して、プロパティ「性別」の値が「男性」であるか判定される。これにより、プロパティ「性別」の値が「男性」でないノード134が検索結果から除外される。最終的にノード133,135,136が残る。これは、図5に示した検索結果144と整合する。また、図5の検索処理では8個のリテラルに対して判定が行われたのに対し、図7の検索処理では7個のリテラルに対して判定が行われており、リテラルの判定回数が減少している。
図8は、検索処理の第2の高速化例を示す図である。
ここでは、検索クエリ145に応じた検索処理の高速化を考える。検索クエリ145の第3の検索条件と制約条件から、推移関係(含意)を示す命題154,155が生成される。命題154は肯定命題であり、命題155は否定命題である。
検索クエリ145の第3の検索条件から、親の年齢が40以上であるという肯定式と、子の年齢が40以上であるという肯定式が生成される。制約条件のもと、命題154として、子の年齢が40以上であるならば親の年齢が40以上であるという命題が生成される。また、検索クエリ145の第3の検索条件から、親の年齢が40未満であるという否定式と、子の年齢が40未満であるという否定式が生成される。制約条件のもと、命題155として、親の年齢が40未満であるならば子の年齢が40未満であるという命題が生成される。検索クエリ145は、プロパティ「子供」を順方向に辿ることを要求しているため、ここでは命題154,155のうち命題155が使用されることになる。
また、検索クエリ145に含まれる複数の検索条件がソートされ、検索クエリ145が検索クエリ156に変換される。これにより、検索クエリ156では、検索クエリ145の第2の検索条件と第3の検索条件の順序が入れ替えられている。
そして、検索クエリ156と命題155に基づいて検索処理が行われる。まず、基点であるノード131が選択され、検索クエリ156の第1の検索条件に基づいて、ノード131からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード132,133,134,135,136が抽出される。次に、検索クエリ156の第2の検索条件に基づいて、基点に近いノードから順に、プロパティ「年齢」の値が40以上であるか判定される。まず、ノード132に対応するノード132bが抽出され、その値が40以上か判定される。ノード132bの値が第2の検索条件に合致するため、命題155の仮定が満たされず、命題155の結論は使用されない。
次に、ノード133に対応するノード133bが抽出され、その値が40以上か判定される。ここでは、ノード133bの値が第2の検索条件に合致しない。このため、ノード133が検索結果から除外される。また、命題155の仮定が満たされ、命題155の結論が使用される。その結果、ノード133からプロパティ「子供」を示すエッジを1つ以上経由した先にあるノード135,136について、ノード135b,136bの値が第2の検索条件に合致しないと推定され、ノード135b,136bの判定が省略される(みなし判定)。これに伴い、ノード135,136が検索結果から除外される。
次に、ノード134に対応するノード134bが抽出され、その値が40以上か判定される。ここでは、ノード134bの値が第2の検索条件に合致しない。このため、ノード134が検索結果から除外される。また、命題155の仮定が満たされ、命題155の結論が使用される。ただし、ノード134より先に他のノードが無いため、みなし判定は行われない。次に、検索クエリ156の第3の検索条件に基づいて、残ったノード132に対して、プロパティ「性別」の値が「男性」であるか判定される。これにより、プロパティ「性別」の値が「男性」でないノード132が検索結果から除外される。
最終的に残ったノードは存在しない。これは、図6に示した検索結果146と整合する。また、図6の検索処理では8個のリテラルに対して判定が行われたのに対し、図8の検索処理では4個のリテラルに対して判定が行われており、リテラルの判定回数が減少している。特に、ノード135,136のプロパティの判定が全て省略されている。このように、肯定命題を使用する場合には、着目するリソースの先にある他のリソースについて一部のプロパティ判定を省略できる。また、否定命題を使用する場合には、着目するリソースの先にある他のリソースについて全てのプロパティ判定を省略できる。
次に、検索処理装置100の機能および処理手順について説明する。
図9は、検索処理装置の機能例を示すブロック図である。
検索処理装置100は、RDFデータ記憶部121および制約データ記憶部122を有する。これらの記憶部は、例えば、RAM102またはHDD103の記憶領域を用いて実現される。また、検索処理装置100は、データ検証部123、クエリ受信部124、検索計画部125および検索部126を有する。これらの処理部は、例えば、CPU101が実行するプログラムを用いて実現される。
RDFデータ記憶部121は、RDFデータ141を記憶する。RDFデータ記憶部121をRDFデータベースと言うこともできる。制約データ記憶部122は、制約データ142を記憶する。制約データ142は、データベース設計において予め作成されている。RDFデータ141や制約データ142を他の情報処理装置から取得してもよい。
データ検証部123は、検証コマンドを受信する。データ検証部123は、ユーザから検証コマンドの入力を受け付けてもよいし、他の情報処理装置から検証コマンドを受信してもよい。検証コマンドを受信すると、データ検証部123は、制約データ記憶部122から制約データ142を読み出し、RDFデータ記憶部121に記憶されたRDFデータ141が制約条件を満たしているか検証する。
RDFデータ141に含まれる全てのトリプルが制約条件を満たしている場合、データ検証部123は、検証成功を示す検証結果を出力する。RDFデータ141の中に制約条件を満たさないトリプルが含まれている場合、データ検証部123は、エラーを示す検証結果を出力する。エラーを示す検証結果は、制約条件を満たさないトリプルの情報を含んでもよい。データ検証部123は、検証結果を表示装置111に表示してもよいし、HDD103に保存してもよいし、他の情報処理装置に送信してもよい。
クエリ受信部124は、検索クエリを受信する。クエリ受信部124は、ユーザから検索クエリの入力を受け付けてもよいし、他の情報処理装置から検索クエリを受信してもよい。クエリ受信部124は、受信した検索クエリを検索計画部125に出力する。また、クエリ受信部124は、検索クエリに対する検索結果を検索部126から取得し、検索結果を出力する。クエリ受信部124は、検索結果を表示装置111に表示してもよいし、HDD103に保存してもよいし、他の情報処理装置に送信してもよい。
検索計画部125は、クエリ受信部124から取得した検索クエリを分析して、検索処理を高速化するための検索計画を生成する。ここでは、検索計画部125は、制約データ記憶部122から制約データ142を読み出し、異なるリソースの間に課される制約条件を制約データ142から抽出する。検索計画部125は、抽出した制約条件と検索クエリに含まれる検索条件とを照合して、命題151,154などの肯定命題と、命題152,155などの否定命題とを生成する。また、検索計画部125は、判定を省略可能なプロパティが増えるように、検索クエリに含まれる複数の検索条件をソートする。検索計画部125は、変換後の検索クエリ、肯定命題および否定命題を検索部126に出力する。
検索部126は、検索計画部125から取得した検索クエリに基づいて、RDFデータ記憶部121に記憶されたRDFデータ141を検索する。検索部126は、検索クエリが示す検索条件に合致するリソースを示すトリプルを、RDFデータ141から抽出し、抽出したトリプルを含む検索結果をクエリ受信部124に出力する。このとき、検索部126は、検索計画部125から取得した肯定命題および否定命題を参照して、一部のノードについてプロパティの値が検索条件に合致するか推定し、プロパティ判定を省略する。
図10は、検索計画生成の手順例を示すフローチャートである。
(S10)検索計画部125は、検索クエリと制約データ142を取得する。
(S11)検索計画部125は、制約データ142に記載された制約条件のうち、異なるリソースの間に課されるリソース間の制約条件を抽出する。第2の実施の形態では、プロパティ単位の制約条件は高速化に使用されない。
(S12)検索計画部125は、検索クエリに含まれる複数の検索条件のうち、制約条件に関連する検索条件を抽出する。制約条件に関連する検索条件は、制約条件が一方のリソースのプロパティの値と他方のリソースのプロパティの値との間の関係を規定している場合において、2つのプロパティの何れかを含む検索条件である。制約条件で比較対象となる2つのプロパティは、同一であることもあるし異なることもある。
(S13)検索計画部125は、ステップS11で抽出した制約条件のもと、ステップS12で抽出した検索条件が真になる場合について成立する推移関係を示す肯定命題を生成する。ここでは、検索計画部125は、制約条件で比較対象となる2つのプロパティそれぞれについて、検索条件が真であることを示す肯定式を生成する。検索計画部125は、制約条件が示す関係(例えば、大小関係や包含関係)と整合するように、2つの肯定式の一方を仮定とし他方を結論とする推移関係の命題を生成する。
(S14)検索計画部125は、制約条件のもと、検索条件が偽になる場合について成立する推移関係を示す否定命題を生成する。ここでは、検索計画部125は、制約条件で比較対象となる2つのプロパティそれぞれについて、検索条件が偽であることを示す否定式を生成する。検索計画部125は、制約条件が示す関係と整合するように、2つの否定式の一方を仮定とし他方を結論とする推移関係の命題を生成する。
(S15)検索計画部125は、検索クエリに記載されたプロパティを、中間プロパティ、制約対象プロパティ、省略対象プロパティおよび独立プロパティに分類する。
中間プロパティは、制約条件において、比較対象となる一方のリソースと他方のリソースとの間で述語として使用されているプロパティである。前述の検索クエリ143,145の場合、「子供」が中間プロパティである。制約対象プロパティは、制約条件において、比較対象となる一方のリソースのプロパティである。前述の検索クエリ143,145の場合、「年齢」が制約対象プロパティである。省略対象プロパティは、制約条件において、比較対象となる他方のリソースのプロパティである。制約対象プロパティと省略対象プロパティが同一であることもある。前述の検索クエリ143,145の場合、「年齢」が省略対象プロパティである。独立プロパティは、制約条件に出現しないプロパティである。前述の検索クエリ143,145の場合、「性別」が独立プロパティである。
(S16)検索計画部125は、検索クエリに含まれる複数の検索条件を、中間プロパティを含む検索条件と、制約対象プロパティを含む検索条件と、省略対象プロパティを含む検索条件と、独立プロパティを含む検索条件とに分類する。検索計画部125は、これら複数の検索条件を、中間プロパティを含むもの、制約対象プロパティを含むもの、省略対象プロパティを含むもの、独立プロパティを含むものの順にソートする。
図11は、検索処理の手順例を示すフローチャートである。
(S20)検索部126は、検索クエリに含まれる複数の検索条件のうち、中間プロパティを含む検索条件を選択する。中間プロパティを含む検索条件が2以上ある場合、以下のステップS21の処理が検索条件毎に実行される。
(S21)検索部126は、選択した中間プロパティの検索条件に合致するトリプルを、RDFデータ141から抽出する。例えば、検索部126は、基点のリソースから中間プロパティを1回以上経由した先にあるリソースを検索し、中間プロパティを述語とし当該リソースを目的語とするトリプルを抽出する。検索部126は、抽出したトリプルの目的語に相当するリソースを、検索結果の候補のノードとして特定する。
図12は、検索処理の手順例を示すフローチャート(続き1)である。
(S22)検索部126は、検索クエリに含まれる複数の検索条件のうち、制約対象プロパティを含む検索条件を選択する。制約対象プロパティを含む検索条件が2以上ある場合、以下のステップS23~S34の処理が検索条件毎に実行される。
(S23)検索部126は、検索結果の候補として残ったノードのうち、検索クエリが示す基点に近い方から優先的にノードを1つ選択する。
(S24)検索部126は、選択したノードが表すリソースを主語とし、制約対象プロパティを述語とするトリプルを、RDFデータ141から抽出する。すなわち、検索部126は、着目するリソースがもつ制約対象プロパティの値を抽出する。
(S25)検索部126は、選択したノードが、後述するスキップモード1またはスキップモード2に設定済みであるか判断する。スキップモードを設定済みである場合はステップS23に戻り、スキップモードを未設定である場合はステップS26に進む。
(S26)検索部126は、ステップS24で抽出したトリプルが、制約対象プロパティの検索条件に合致するか判定する。例えば、検索条件が制約対象プロパティの値の範囲を規定している場合、検索部126は、トリプルの目的語に相当するリテラルと検索条件の範囲とを比較し、リテラルがその範囲に属するか判定する。
(S27)検索部126は、検索条件に合致したか判断する。検索条件に合致した場合はステップS29に進み、合致しない場合はステップS28に進む。
(S28)検索部126は、選択したノードを検索結果の候補から除外する。これにより、当該ノードの他のプロパティの判定は不要となる。
(S29)検索部126は、ステップS26の判定結果に基づいて、ステップS13で生成された肯定命題の仮定が真であるか偽であるか判定する。また、検索部126は、ステップS14で生成された否定命題の仮定が真であるか偽であるか判定する。
(S30)検索部126は、肯定命題の仮定が真であるか判断する。仮定が真である場合はステップS31に進み、仮定が偽である場合はステップS32に進む。
(S31)検索部126は、選択したノードから中間プロパティを1回以上経由した先にあるノードを、スキップモード1に設定する。そして、ステップS34に進む。
(S32)検索部126は、否定命題の仮定が真であるか判断する。仮定が真である場合はステップS33に進み、仮定が偽である場合はステップS34に進む。
(S33)検索部126は、選択したノードから中間プロパティを1回以上経由した先にあるノードを、スキップモード2に設定する。そして、ステップS34に進む。
(S34)検索部126は、ステップS23において、検索結果の候補として残っているノードを全て選択したか判断する。全てのノードを選択した場合はステップS35に進み、未選択のノードがある場合はステップS23に戻る。
図13は、検索処理の手順例を示すフローチャート(続き2)である。
(S35)検索部126は、検索クエリに含まれる複数の検索条件のうち、省略対象プロパティを含む検索条件を選択する。省略対象プロパティを含む検索条件が2以上ある場合、以下のステップS36~S46の処理が検索条件毎に実行される。
(S36)検索部126は、検索結果の候補として残ったノードを1つ選択する。
(S37)検索部126は、選択したノードが表すリソースを主語とし、省略対象プロパティを述語とするトリプルを、RDFデータ141から抽出する。すなわち、検索部126は、着目するリソースがもつ省略対象プロパティの値を抽出する。
(S38)検索部126は、選択したノードがスキップモード1に設定されているか判断する。スキップモード1に設定されている場合はステップS39に進み、スキップモード1に設定されていない場合はステップS40に進む。
(S39)検索部126は、ステップS37で抽出したトリプルが、省略対象プロパティの検索条件に合致すると推定する。このとき、検索部126は、トリプルの目的語に相当するリテラルと検索条件が規定する範囲とを比較しなくてよく、検索条件に合致するか否かの判定を省略することができる。そして、ステップS46に進む。
(S40)検索部126は、選択したノードがスキップモード2に設定されているか判断する。スキップモード2に設定されている場合はステップS41に進み、スキップモード2に設定されていない場合はステップS43に進む。
(S41)検索部126は、ステップS37で抽出したトリプルが、省略対象プロパティの検索条件に合致しないと推定する。このとき、検索部126は、トリプルの目的語に相当するリテラルと検索条件が規定する範囲とを比較しなくてよく、検索条件に合致するか否かの判定を省略することができる。
(S42)検索部126は、選択したノードを検索結果の候補から除外する。これにより、当該ノードの他のプロパティの判定は不要となる。そして、ステップS46に進む。
(S43)検索部126は、ステップS37で抽出したトリプルが、省略対象プロパティの検索条件に合致するか判定する。例えば、検索部126は、トリプルの目的語に相当するリテラルと検索条件の範囲とを比較し、リテラルがその範囲に属するか判定する。
(S44)検索部126は、検索条件に合致したか判断する。検索条件に合致した場合はステップS46に進み、合致しない場合はステップS45に進む。
(S45)検索部126は、選択したノードを検索結果の候補から除外する。これにより、当該ノードの他のプロパティの判定は不要となる。
(S46)検索部126は、ステップS36において、検索結果の候補として残っているノードを全て選択したか判断する。全てのノードを選択した場合はステップS47に進み、未選択のノードがある場合はステップS36に戻る。
図14は、検索処理の手順例を示すフローチャート(続き3)である。
(S47)検索部126は、検索クエリに含まれる複数の検索条件のうち、独立プロパティを含む検索条件を選択する。独立プロパティを含む検索条件が2以上ある場合、以下のステップS48~S53の処理が検索条件毎に実行される。
(S48)検索部126は、検索結果の候補として残ったノードを1つ選択する。
(S49)検索部126は、選択したノードが表すリソースを主語とし、独立プロパティを述語とするトリプルを、RDFデータ141から抽出する。すなわち、検索部126は、着目するリソースがもつ独立プロパティの値を抽出する。
(S50)検索部126は、ステップS49で抽出したトリプルが、独立プロパティの検索条件に合致するか判定する。例えば、検索部126は、トリプルの目的語に相当するリテラルと検索条件の範囲とを比較し、リテラルがその範囲に属するか判定する。
(S51)検索部126は、検索条件に合致したか判断する。検索条件に合致した場合はステップS53に進み、合致しない場合はステップS52に進む。
(S52)検索部126は、選択したノードを検索結果の候補から除外する。
(S53)検索部126は、ステップS48において、検索結果の候補として残っているノードを全て選択したか判断する。全てのノードを選択した場合はステップS54に進み、未選択のノードがある場合はステップS48に戻る。
(S54)検索部126は、除外されずに残ったノードに関するトリプルを収集する。例えば、残ったノードが表すリソースを主語として含んでおり、ステップS20~S53を通じてRDFデータ141から抽出されたトリプルを収集する。検索部126は、収集したトリプルを含む検索結果を生成する。クエリ受信部124は、検索結果を出力する。例えば、検索部126は、検索結果を表示装置111に表示する。また、例えば、検索部126は、HDD103などのストレージ装置に検索結果を保存する。また、例えば、検索部126は、他の情報処理装置に検索結果を送信する。
第2の実施の形態の検索処理装置100によれば、グラフ型データベースに対して検索クエリに応じた検索処理を実行する際に、無効なデータを検出できるように予め定義された制約データから、異なるノードのプロパティの間で成立する制約条件が抽出される。そして、あるノードのプロパティの値が検索条件に合致するか判定した結果と制約条件とから、近接する他のノードのプロパティの値が検索条件に合致するか推定され、そのプロパティの判定が省略される。例えば、あるノードのプロパティの値が検索条件に合致するという肯定の判定結果から、近接する他のノードのプロパティの値が検索条件に合致するという肯定の推定結果が導出される。また、例えば、あるノードのプロパティの値が検索条件に合致しないという否定の判定結果から、近接する他のノードのプロパティの値が検索条件に合致しないという否定の推定結果が導出される。
これにより、検索結果が変わらないように一部のノードのプロパティの判定を省略することができ、データベースが大規模であっても検索処理を高速化できる。また、否定の推定結果が導出された場合、当該ノードの他のプロパティについても判定を省略することができ、判定回数を更に削減することができる。また、制約条件に関連する制約対象プロパティおよび省略対象プロパティが、制約条件に関連しない独立プロパティよりも先に判定されるように、検索クエリが変換される。これにより、判定を省略することができるプロパティを増やすことができ、判定回数を更に削減することができる。
10 検索処理装置
11 記憶部
12 処理部
13 グラフデータ
13a,13b ノード
13c,13d プロパティ
14 制約データ
15 検索クエリ
16 検索結果

Claims (9)

  1. コンピュータに、
    1以上のプロパティの値がそれぞれ対応付けられた複数のノードと前記複数のノードを接続する複数のエッジとを含むグラフを示すグラフデータに対して、プロパティの値を用いてノードの検索条件が記載された検索クエリを取得し、
    前記グラフデータが満たす制約条件であって、一方のノードに対応付けられた第1のプロパティの値と、前記一方のノードから所定範囲内にある他方のノードに対応付けられており前記第1のプロパティと同一または異なるプロパティである第2のプロパティの値との間に成立する制約条件を示す制約データを取得し、
    前記グラフデータが示す第1のノードに対応付けられた前記第1のプロパティの値が、前記検索クエリが示す前記検索条件に合致するか判定し、
    前記第1のノードから前記所定範囲内にある第2のノードが検出された場合、前記第1のノードの前記第1のプロパティの判定結果と前記制約データが示す前記制約条件とに基づいて、前記第2のノードに対応付けられた前記第2のプロパティの値が前記検索条件に合致するか推定して、前記第2のノードの前記第2のプロパティの判定を省略し、
    前記第1のノードの前記第1のプロパティの判定結果および前記第2のノードの前記第2のプロパティの推定結果を用いて、前記検索クエリに対する検索結果を生成する、
    処理を実行させる検索処理プログラム。
  2. 前記第2のプロパティは前記第1のプロパティと同一であり、
    前記制約条件は、前記他方のノードの前記第2のプロパティの値が、前記一方のノードの前記第1のプロパティの値以下に制限されることを示し、
    前記第2のノードの前記第2のプロパティの推定では、前記検索条件が、前記第1のプロパティの値が閾値以下であることを示しており、かつ、前記第1のノードの前記第1のプロパティの値が前記検索条件に合致する場合、前記第2のノードの前記第2のプロパティの値が前記検索条件に合致すると推定する、
    請求項1記載の検索処理プログラム。
  3. 前記第2のプロパティは前記第1のプロパティと同一であり、
    前記制約条件は、前記他方のノードの前記第2のプロパティの値が、前記一方のノードの前記第1のプロパティの値以下に制限されることを示し、
    前記第2のノードの前記第2のプロパティの推定では、前記検索条件が、前記第1のプロパティの値が閾値以上であることを示しており、かつ、前記第1のノードの前記第1のプロパティの値が前記検索条件に合致しない場合、前記第2のノードの前記第2のプロパティの値が前記検索条件に合致しないと推定する、
    請求項1記載の検索処理プログラム。
  4. 前記検索条件は、前記制約条件に出現しない第3のプロパティの値の条件を更に含み、
    前記コンピュータに更に、前記第2のノードの前記第2のプロパティの値が前記検索条件に合致しないと推定した場合、前記第2のノードに対応付けられた前記第3のプロパティの値が前記検索条件に合致するか判定することを省略して、前記第2のノードを前記検索結果から除外する処理を実行させる、
    請求項1記載の検索処理プログラム。
  5. 前記コンピュータに更に、前記検索条件が、前記制約条件に出現するプロパティの値を用いた第1の条件項目と、前記制約条件に出現しないプロパティの値を用いた第2の条件項目とを含む複数の条件項目を含む場合、前記第1の条件項目が前記第2の条件項目より先に判定されるように前記複数の条件項目をソートする処理を実行させる、
    請求項1記載の検索処理プログラム。
  6. 前記コンピュータに更に、前記第2のノードの前記第2のプロパティの値が前記検索条件に合致すると推定した場合、前記第2のノードから前記所定範囲内にある第3のノードに対応付けられた前記第2のプロパティの値が前記検索条件に合致すると推定して、前記第3のノードの前記第2のプロパティの判定を省略する処理を実行させる、
    請求項1記載の検索処理プログラム。
  7. 前記コンピュータに更に、前記第2のノードの前記第2のプロパティの値が前記検索条件に合致しないと推定した場合、前記第2のノードから前記所定範囲内にある第3のノードに対応付けられた前記第2のプロパティの値が前記検索条件に合致しないと推定して、前記第3のノードの前記第2のプロパティの判定を省略する処理を実行させる、
    請求項1記載の検索処理プログラム。
  8. コンピュータが、
    1以上のプロパティの値がそれぞれ対応付けられた複数のノードと前記複数のノードを接続する複数のエッジとを含むグラフを示すグラフデータに対して、プロパティの値を用いてノードの検索条件が記載された検索クエリを取得し、
    前記グラフデータが満たす制約条件であって、一方のノードに対応付けられた第1のプロパティの値と、前記一方のノードから所定範囲内にある他方のノードに対応付けられており前記第1のプロパティと同一または異なるプロパティである第2のプロパティの値との間に成立する制約条件を示す制約データを取得し、
    前記グラフデータが示す第1のノードに対応付けられた前記第1のプロパティの値が、前記検索クエリが示す前記検索条件に合致するか判定し、
    前記第1のノードから前記所定範囲内にある第2のノードが検出された場合、前記第1のノードの前記第1のプロパティの判定結果と前記制約データが示す前記制約条件とに基づいて、前記第2のノードに対応付けられた前記第2のプロパティの値が前記検索条件に合致するか推定して、前記第2のノードの前記第2のプロパティの判定を省略し、
    前記第1のノードの前記第1のプロパティの判定結果および前記第2のノードの前記第2のプロパティの推定結果を用いて、前記検索クエリに対する検索結果を生成する、
    検索処理方法。
  9. 1以上のプロパティの値がそれぞれ対応付けられた複数のノードと前記複数のノードを接続する複数のエッジとを含むグラフを示すグラフデータと、前記グラフデータが満たす制約条件であって、一方のノードに対応付けられた第1のプロパティの値と、前記一方のノードから所定範囲内にある他方のノードに対応付けられており前記第1のプロパティと同一または異なるプロパティである第2のプロパティの値との間に成立する制約条件を示す制約データとを記憶する記憶部と、
    前記グラフデータに対して、プロパティの値を用いてノードの検索条件が記載された検索クエリを取得し、前記グラフデータが示す第1のノードに対応付けられた前記第1のプロパティの値が、前記検索クエリが示す前記検索条件に合致するか判定し、前記第1のノードから前記所定範囲内にある第2のノードが検出された場合、前記第1のノードの前記第1のプロパティの判定結果と前記制約データが示す前記制約条件とに基づいて、前記第2のノードに対応付けられた前記第2のプロパティの値が前記検索条件に合致するか推定して、前記第2のノードの前記第2のプロパティの判定を省略し、前記第1のノードの前記第1のプロパティの判定結果および前記第2のノードの前記第2のプロパティの推定結果を用いて、前記検索クエリに対する検索結果を生成する処理部と、
    を有する検索処理装置。
JP2020030479A 2020-02-26 2020-02-26 検索処理プログラム、検索処理方法および検索処理装置 Active JP7360047B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020030479A JP7360047B2 (ja) 2020-02-26 2020-02-26 検索処理プログラム、検索処理方法および検索処理装置
US17/170,476 US11941003B2 (en) 2020-02-26 2021-02-08 Search method and search apparatus for searching graph data based on search query

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020030479A JP7360047B2 (ja) 2020-02-26 2020-02-26 検索処理プログラム、検索処理方法および検索処理装置

Publications (2)

Publication Number Publication Date
JP2021135662A JP2021135662A (ja) 2021-09-13
JP7360047B2 true JP7360047B2 (ja) 2023-10-12

Family

ID=77365280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020030479A Active JP7360047B2 (ja) 2020-02-26 2020-02-26 検索処理プログラム、検索処理方法および検索処理装置

Country Status (2)

Country Link
US (1) US11941003B2 (ja)
JP (1) JP7360047B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11216462B1 (en) * 2020-08-14 2022-01-04 Snowflake Inc. Transient materialized view rewrite
US20240012803A1 (en) * 2022-07-08 2024-01-11 Salesforce, Inc. Mechanisms for deleting triples of a database store
US12086128B2 (en) 2022-07-08 2024-09-10 Salesforce, Inc. Mechanisms for serializing triples of a database store

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3259385B2 (ja) 1992-12-22 2002-02-25 栗田工業株式会社 蒸留器
JP2017522627A (ja) 2014-06-17 2017-08-10 グーグル インコーポレイテッド 大規模なグラフのための保存されたクエリのリアルタイムの更新
US20190325077A1 (en) 2018-04-24 2019-10-24 Trovares, Inc. Graph search optimization system based on derived constraint techniques

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03259385A (ja) * 1990-03-09 1991-11-19 Nec Corp 省略表示機能を有するグラフ構造データ表示装置
TWI310641B (en) * 2006-07-18 2009-06-01 Ind Tech Res Inst Method and apparatus of dynamic channel assignment for a wireless network
US8266092B2 (en) * 2008-07-10 2012-09-11 Palo Alto Research Center Incorporated Methods and systems for target value path identification
US8731966B2 (en) * 2009-09-24 2014-05-20 Humedica, Inc. Systems and methods for real-time data ingestion to a clinical analytics platform to generate a heat map
JP2013054602A (ja) 2011-09-05 2013-03-21 Nippon Telegr & Teleph Corp <Ntt> グラフパターンマッチングシステムおよびグラフパターンマッチング方法
JP5844824B2 (ja) 2012-01-25 2016-01-20 株式会社日立製作所 Sparqlクエリ最適化方法
US20170140281A1 (en) * 2015-11-17 2017-05-18 International Business Machines Corporation Identifying, for a set of decision rules, one or more decision rules missing from the set of decision rules
US9992082B2 (en) * 2015-12-04 2018-06-05 CENX, Inc. Classifier based graph rendering for visualization of a telecommunications network topology
US20170220455A1 (en) * 2016-01-29 2017-08-03 Mentor Graphics Corporation Test case generation using a constraint graph solver
US20190325078A1 (en) * 2018-04-24 2019-10-24 Trovares, Inc. Graph search optimization system based on sorted property techniques
US10599719B2 (en) * 2018-06-13 2020-03-24 Stardog Union System and method for providing prediction-model-based generation of a graph data model
US11250059B2 (en) * 2020-01-09 2022-02-15 Oracle International Corporation Optimizing graph queries by performing early pruning
US11675785B2 (en) * 2020-01-31 2023-06-13 Oracle International Corporation Dynamic asynchronous traversals for distributed graph queries

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3259385B2 (ja) 1992-12-22 2002-02-25 栗田工業株式会社 蒸留器
JP2017522627A (ja) 2014-06-17 2017-08-10 グーグル インコーポレイテッド 大規模なグラフのための保存されたクエリのリアルタイムの更新
US20190325077A1 (en) 2018-04-24 2019-10-24 Trovares, Inc. Graph search optimization system based on derived constraint techniques

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
秋田智慧ほか,RDF情報源への自然言語質問手法,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2009年05月15日,Vol.109,No.51,pp.7-12

Also Published As

Publication number Publication date
US20210263933A1 (en) 2021-08-26
JP2021135662A (ja) 2021-09-13
US11941003B2 (en) 2024-03-26

Similar Documents

Publication Publication Date Title
JP7360047B2 (ja) 検索処理プログラム、検索処理方法および検索処理装置
Sleiman et al. Tex: An efficient and effective unsupervised web information extractor
US9223815B2 (en) Method, apparatus, and program for supporting creation and management of metadata for correcting problem in dynamic web application
KR100638695B1 (ko) 구조화 문서의 데이터를 검색하는 장치 및 방법
TWI417748B (zh) 用於擴充一查詢之方法及電腦可讀取儲存媒體
US20090248707A1 (en) Site-specific information-type detection methods and systems
EP3876107A1 (en) Apparatus, systems, and methods for analyzing movements of target entities
US8090700B2 (en) Method for updating databases
US20070156736A1 (en) Method and apparatus for automatically detecting a latent referential integrity relationship between different tables of a database
KR101523450B1 (ko) 관련어 등록 장치, 관련어 등록 방법, 기록 매체 및, 관련어 등록 시스템
Zhang et al. On-the-fly table generation
US20230132720A1 (en) Multiple input machine learning framework for anomaly detection
US9594783B2 (en) Index selection for XML database systems
Parameswaran et al. Optimal schemes for robust web extraction
US20080005077A1 (en) Encoded version columns optimized for current version access
US9183264B2 (en) Distributed configuration information management device and distributed configuration information management method using duplicates
RU2433467C1 (ru) Способ формирования структуры агрегированных данных и способ поиска данных посредством структуры агрегированных данных в системе управления базами данных
TWI547888B (zh) A method of recording user information and a search method and a server
JP5310196B2 (ja) 分類体系改正支援プログラム、分類体系改正支援装置、および分類体系改正支援方法
JP2019148859A (ja) フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法
US20240160633A1 (en) Computer-readable recording medium storing information processing program, information processing method, and information processing device
JP2012212212A (ja) データ検索装置及びデータ検索方法及びプログラム
US20240028328A1 (en) Storage medium, information processing method, and information processing device
US20220107938A1 (en) Information outputting device and non-transitory computer readable medium
JP2019215825A (ja) 情報処理装置および情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230822

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230911

R150 Certificate of patent or registration of utility model

Ref document number: 7360047

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150