JP2016009337A - Rdfデータの検索装置及びrdfデータの検索方法 - Google Patents

Rdfデータの検索装置及びrdfデータの検索方法 Download PDF

Info

Publication number
JP2016009337A
JP2016009337A JP2014129622A JP2014129622A JP2016009337A JP 2016009337 A JP2016009337 A JP 2016009337A JP 2014129622 A JP2014129622 A JP 2014129622A JP 2014129622 A JP2014129622 A JP 2014129622A JP 2016009337 A JP2016009337 A JP 2016009337A
Authority
JP
Japan
Prior art keywords
query
node
rdf data
join
node unit
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.)
Granted
Application number
JP2014129622A
Other languages
English (en)
Other versions
JP5978253B2 (ja
Inventor
新田 清
Kiyoshi Nitta
清 新田
サブニック イズトック
Savnik Iztok
サブニック イズトック
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.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan 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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2014129622A priority Critical patent/JP5978253B2/ja
Publication of JP2016009337A publication Critical patent/JP2016009337A/ja
Application granted granted Critical
Publication of JP5978253B2 publication Critical patent/JP5978253B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】大量のRDFデータを検索する場合であっても、比較的に高速に検索結果を取得することが可能な技術を提供する。
【解決手段】複数のクエリノード部N03は、当該クエリノード部N03に割り当てられたグラフパターンに対応するRDFデータをデータベースから取得する。ついで、クエリノード部N03は、取得したRDFデータを、その親の位置にあるジョインノード部N02に送る。ジョインノード部N02は、当該ジョインノード部N02の子であるクエリノード部N04から送られたRDFデータを結合する。
【選択図】図4

Description

本発明は、RDFデータの検索装置及びRDFデータの検索方法に関するものである。
現代社会では、さまざまな知識に関するデータを集め、蓄積し、そして検索することへの関心が高まっている。いわゆるセマンティックウエブ(Semantic Web)の研究者の間では、このようなデータは、何らかのグラフデータモデルで表されるという共通認識がある。このようなグラフデータモデルの一つとして、RDF(Resource Description Framework)が知られている。RDFでは、データを、主語(S)、述語(P)、目的語(O)で表す。これら三つからなる組(いわゆるトリプル)は、グラフにおける二つのノードと、それをつなぐエッジに対応する。通常の様々な知識は、このグラフによって表すことができる。
グラフデータを収集して蓄積するための様々なプロジェクトがすでに存在している。もっとも有名な例は、Linked Open Data(LOD)プロジェクトであり、ここでは、32ギガ以上のトリプルを収集している。
RDFを用いると、データ間の関係を柔軟に記述することができる。また、リレーショナルデータベースのようなテーブル構造をあらかじめ準備する必要がない。このため、例えばインターネット上で様々な方法により記述されたデータの検索が可能になる。RDFは、W3C(World Wide Web Consortium)により規格化されている(W3C:REC-rdf-syntax-19990222)。
ところで、前記したRDFデータの検索のための標準的手法として、SPARQL(SPARQL Protocol And RDF Query Language)が提案されている。W3CによるSPARQL勧告の文書には、その実装手法に関しての記述はなく、第三者が、その勧告に従うように様々の処理系を実装している(例えば下記特許文献1参照)。
しかしながら、既存の実装を前提とすると、大量のRDFデータを検索する場合には、検索結果を得るまでの時間が長くなってしまうという問題がある。
特開2013−69136号公報
本発明は、前記した状況に鑑みてなされたものである。本発明の主な目的は、大量のRDFデータを検索する場合であっても、比較的に高速に検索結果を取得することが可能な装置又は方法を提供することである。
本発明は、下記項目に記載のように表現することができる。
(項目1)
複数のグラフパターンを持つクエリ文を用いて、データベースからRDFデータを検索するための検索装置であって、
前記検索装置は、複数のクエリノード部と、ジョインノード部とを備えており、
前記複数のクエリノード部と、前記ジョインノード部とは、木構造をなすクエリツリーを構成しており、
前記複数のクエリノード部は、前記木構造におけるリーフとなる位置に配置されており、
前記ジョインノード部は、前記リーフを子に持つノードとなる位置に配置されており、
前記複数のクエリノード部は、当該クエリノード部に割り当てられた前記グラフパターンに対応するRDFデータを前記データベースから取得し、ついで、前記取得したRDFデータを、当該クエリノード部の親の位置にある前記ジョインノード部に送る構成とされており、
前記ジョインノード部は、当該ジョインノード部の子である前記複数のクエリノード部から送られた各RDFデータを結合する構成となっている
RDFデータの検索装置。
(項目2)
前記クエリノード部は、前記データベースから一つのRDFデータを取得すると、そのRDFデータを前記ジョインノード部に送る構成となっている
項目1に記載のRDFデータの検索装置。
(項目3)
前記複数のグラフパターン及び前記複数のクエリノード部の数は、いずれも3以上である
項目1又は2に記載のRDFデータの検索装置。
(項目4)
前記木構造は、二分木構造である
項目1〜3のいずれか1項に記載のRDFデータの検索装置。
(項目5)
前記複数のクエリノード部は、前記木構造においてもっとも深い位置にある前記クエリノード部から、前記RDFデータの取得を開始し、ついで、当該クエリノード部の親であるジョインノード部の子である他のクエリノード部において、対応するRDFデータの取得を行い、次いで、前記ジョインノード部において、取得された各RDFデータを結合する構成となっている
項目1〜4のいずれか1項に記載のRDFデータの検索装置。
(項目6)
前記ジョインノード部の親となる位置に他のジョインノード部があり、かつ、前記他のジョインノード部の子となる位置に、他のクエリノード部が存在する場合には、前記他のジョインノード部は、子となる位置の前記ジョインノード部から送られた前記RDFデータと、前記他のクエリノード部で取得されたRDFデータとを結合する構成となっている
項目1〜5のいずれか1項に記載のRDFデータの検索装置。
(項目7)
前記複数のクエリノード部のうち、最初に動作を開始するクエリノード部においては、前記データベースからの戻り値を非同期メッセージとして受け取る構成となっており、
それ以降に動作を開始するクエリノード部においては、セッション中の同期メッセージとして、前記データベースからの戻り値を受け取る構成となっている
項目1〜6のいずれか1項に記載のRDFデータの検索装置。
(項目8)
前記クエリノード部への、前記グラフパターンの割り当ては、前記クエリ文を処理するためのパーザにより、前記クエリ文を受け取った後に実行されているものである
項目1〜7のいずれか1項に記載のRDFデータの検索装置。
(項目9)
複数のグラフパターンを持つクエリ文を用いて、データベースからRDFデータを検索するための検索装置を用いた検索方法であって、
前記検索装置は、複数のクエリノード部と、ジョインノード部とを備えており、
前記複数のクエリノード部と、前記ジョインノード部とは、木構造をなすクエリツリーを構成しており、
前記複数のクエリノード部は、前記木構造におけるリーフとなる位置に配置されており、
前記ジョインノード部は、前記リーフを子に持つノードとなる位置に配置されており、
前記検索方法は、
前記複数のクエリノード部が、当該クエリノード部に割り当てられた前記グラフパターンに対応するRDFデータを前記データベースから取得し、ついで、前記取得したRDFデータを、当該クエリノード部の親の位置にある前記ジョインノード部に送るステップと、
前記ジョインノード部が、当該ジョインノード部の子である前記複数のクエリノード部から送られた各RDFデータを結合するステップと
を備えるRDFデータの検索方法。
(項目10)
項目9に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。
このコンピュータプログラムは、適宜な記録媒体(例えばCD−ROMやDVDディスクのような光学的な記録媒体、ハードディスクやフレキシブルディスクのような磁気的記録媒体、あるいはMOディスクのような光磁気記録媒体)に格納することができる。このコンピュータプログラムは、インターネットなどの通信回線を介して伝送されることができる。
本発明によれば、大量のRDFデータを検索する場合であっても、比較的に高速に検索結果を取得することが可能となる。
本発明の一実施形態における検索装置(フロントサーバ)とデータサーバとを概略的に示す説明図である。 図1の検索装置において用いるクエリツリーの概念を説明するための説明図である。 SPARQLでのクエリ文の一例を示す説明図である。 図2のクエリツリーを用いた検索プロセスの一例を説明するための説明図である。 本実施形態において用いるアルファマップの構成例を説明するための説明図である。 本実施形態において用いるValマップの構成例を説明するための説明図である。
(データベースシステム)
本発明の一実施形態に係るデータベースシステムを図1に示す。このデータベースシステムは、フロントサーバ10と、データサーバ20とを備えている。フロントサーバ10は、本発明の検索装置の一実施形態に対応している。データサーバ20は、以降ではデータベースと称することがある。
(データサーバ)
データサーバ20は、列(a)〜(f)と行1〜5とを有する。データは、後述するように、列(a)〜(f)に分散されている。行1〜5は、負荷分散のために、他の行の複製データを保持するためのものである。列及び行の数をどの程度とするかは、予想される負荷量に応じて決定可能である。
(データ分散)
以下においては、列に対するデータ分散の一例を説明する。
例えば、データのクラスタリングを用いると、データを自動的に列に分散させることができる。あるいは、例えばDBpedia(C. Bizer, J. Lehmann, G. Kobilarov, S. Auer, C. Becker, R. Cyganiak, and S. Hellmann. {DBpedia} - a crystallization point for the web of data. Web Semantics: Science, Services and Agents on the World Wide Web, 7(3):154 - 165, 2009. The Web of Data.)のような大きなデータセットを列に手動で割り当てることもできる。
さらに別の分散方法としては、SPARQLクエリを用いる方法がある。SPARQLクエリを用いれば、アクセスされる可能性の高いRDFデータ(以下単にトリプルと呼ぶことがある)を特定することができ、そのRDFのクラス(rdf:typeで特定される)を用いてRDFを列に割り当てることができる。
具体的には、例えば、トリプル(s, p, o)のうちのsを基準として列に割り当てることを考える。この場合、sのクラス(s,rdf:type,c)に従ってトリプルを列に割り当てることができる。同様にしてトリプルパターン(トリプルのうちの少なくとも一つが変数であるもの)も列に割り当てることができる。トリプルパターンは、本発明におけるグラフパターンに対応する。例えば、トリプルのうちのoが変数であるものは、例えば(s, p, ?o)のように標記できる。なお、前記の例において、トリプルパターンのうちのsが変数である場合、例えば(?s,p,o)の場合には、sに代えてpのクラスを用いて列にトリプルパターンを割り当てることができる。なお、例えばトリプルパターンが(s,p,?o)であるとき、特定のトリプル(s,p,o)はそのトリプルパターンのインスタンスになっている。
また、例えば、トリプル(s,p,o)のうちのいずれかを用いて、列にトリプル(またはトリプルパターン)を割り当てることもできる。例えば同じpを持つトリプルは同じ列に割り当てるという分散処理ができる。
(フロントサーバの構成)
本実施形態のフロントサーバ10は、複数のグラフパターンを持つクエリ文(具体的にはSPARQLクエリ)を用いて、データベースからRDFデータを検索するための検索装置である。
フロントサーバ10(図2参照)は、ジョインノード部N01〜N02と、クエリノード部N03〜N05とを備えている。ただし、これらのノード部の数は図示の例に制約されない。なお、本実施形態のフロントサーバ10は、文字表記されたSPARQLクエリを、図2のような木構造に変換する処理系(パーザ)を備えている(図示せず)。つまり、図2の状態は、具体的なクエリ文を受け取った後の状態を示している。
(各ノード部の構成)
前記ジョインノード部N01〜N02と、クエリノード部N03〜N05とは、木構造をなすクエリツリーを構成している。ここで、クエリツリーとは、論理的構造を意味しており、その実現方法には制約されない。例えば、クエリツリーは、例えばコンピュータプログラムを用いて実装することができる。本実施形態では、クエリツリーとして、二分木構造を採用している。
クエリノード部N03〜N05は、木構造におけるリーフとなる位置に配置されている。
ジョインノード部N01〜N02は、クエリノード部N03〜N05に相当するリーフを子に持つノードとなる位置に配置されている。ジョインノード部N01〜N02を基準とすると、リーフノードのみにつながるエッジをインナーエッジと呼び、ジョインノード又はリーフノードにつながるエッジをアウターエッジと呼ぶことができる。理解を容易とするために、本例では、アウターエッジは常に左側に延びることとするが、これに制約されるものではない。
クエリノード部N03〜N05のそれぞれには、複数のグラフパターンのいずれか一つが割り当てられている。具体的には、本例では、図3に示されるSPARQLクエリを想定する。このクエリは、?c <hasArea> ?aと、?c <hasLatitude> ?lと、?c <hasInfration> ?iという三つのクエリパターン(グラフパターン)を備えている。もちろん、本発明はこの例に制約されない。そして、これらのクエリパターンが、図2に示されるように、リーフにある各クエリノード部に割り当てられている。?c <hasArea> ?aというクエリパターンの意味は、<hasArea>という特定の述語を持つトリプルを検索するという意味である。例えば(<日本>, <hasArea>, <377,800 km2>)というトリプルを検索できる。このトリプルは、日本が377,800 km2の国土面積を持つという意味である。本実施形態では、クエリノード部N03〜N05へのクエリパターンの割り当ても、前記したパーザにより実行される。つまり、各ノード部とクエリパターンの対応関係は、クエリ文の取得ごとに動的に生成される。
クエリノード部N03〜N05は、当該クエリノード部に割り当てられたグラフパターンに対応するRDFデータをデータサーバ(データベースに相当)20から取得し、ついで、取得したRDFデータを、当該クエリノード部の親の位置にあるジョインノード部に送る構成とされている。
また、本実施形態のクエリノード部N03〜N05は、データサーバ20から一つのRDFデータを取得すると、そのRDFデータを、親の位置にあるジョインノード部に送る構成となっている。
さらに、本実施形態では、複数のグラフパターン及び複数のクエリノード部の数は、特に制約されないが、例えば3以上とされている。
ジョインノード部N01〜N02は、当該ジョインノード部の子である複数のクエリノード部から送られた各RDFデータを結合する構成となっている。
本実施形態では、複数のクエリノード部N03〜N05のうち、木構造においてもっとも深い位置にあるクエリノード部N03から、RDFデータの取得を開始する。ついで、当該クエリノード部の親であるジョインノード部N02の子(つまりインナー側)である他のクエリノード部N04において、対応するRDFデータの取得を行う。次いで、ジョインノード部N02において、取得された各RDFデータを結合する。
さらに親の位置にあるジョインノード部N01においても同様である。つまり、ジョインノード部N02の親となる位置に他のジョインノード部N01があり、かつ、他のジョインノード部N01の子となる位置(つまりインナー側)に、他のクエリノード部N05が存在する場合には、他のジョインノード部N01は、子となる位置(アウター側)のジョインノード部N02から送られたRDFデータと、他のクエリノード部N05(つまりインナー側の子ノード)で取得されたRDFデータとを結合する構成となっている。
さらに本実施形態では、クエリノード部N03〜N05のうち、最初に動作を開始するクエリノード部N03においては、データサーバ20側からの戻り値を非同期メッセージとして受け取る構成となっている。また、それ以降に動作を開始するクエリノード部N04〜N05においては、セッション中の同期メッセージとして、データサーバ20からの戻り値を受け取る構成となっている。
(ノード部で保持可能な特性)
本実施形態では、各ノード部において、下記表1に記載の特性を保持可能となっている。ただし、すべての特性を記述する必要はない。
Figure 2016009337
すなわち、各ノード部で保持可能な特性は下記の通りである。なお、表1においてTPはクエリノード、Jはジョインノードを表す。
No1:ノードで実行されるプロセスのID;
No2:ノードのタイプ(クエリかジョインか);
No3:親ノードにおけるプロセスのID;
No4:ハッシュテーブルのオブジェクト;
No5:変数位置のためのハッシュテーブル;
No6:ストリーム用カウンタ;
No7:インナーエッジにあるクエリノードのためのプロセスID;
No8:アウターエッジにあるクエリノードのためのプロセスID;
No9:トリプルパターン;
No10:インナーにあるサブツリーにおける変数リスト;
No11:アウターにあるサブツリーにおける変数リスト;
No12:当該クエリノードにおける変数リスト。
各ノード部における具体的な処理手順については後述する。
(フロントサーバの動作)
次に、図4をさらに参照して、フロントサーバ10の動作をさらに詳しく説明する。なお、以下の説明では、フロントサーバの動作時点において、各クエリノード部に対して、図2に示すようにトリプルパターン(グラフパターン)が割り当てられているものとする。また、図4において実線の矢印は非同期メッセージを示し、破線の矢印は同期セッション、同期メッセージ又はファンクションコールを示す。また、本例では、各ノードは所定のプロセスとして実装されている。
(図4のステップS1〜S3)
まず、問い合わせ元からの非同期のevalメッセージがジョインノード部N01に届くと、ツリー構造のアウター側に順次そのメッセージが送られ、クエリノード部N03に届く。
(図4のステップS4)
クエリノード部N03がevalメッセージを受け取ると、このノード部N03は、非同期のfind_streamメッセージをデータサーバに送る。このfind_streamメッセージには、クエリノード部N03に割り当てられたトリプルパターン(この例では?c <hasArea> ?a)と、当該ノードのIDとが含まれている。
(図4のステップS5)
データサーバ20は、find_streamメッセージを受け取ると、データサーバ20内に実装されたプロセスとしてのストリーマ30を起動する。ストリーマ30は、データサーバ内のデータ分散の仕組みに従って、特定の列及び行のサーバを検索し、特定のトリプルパターン(この例では?c <hasArea> ?a)に対応する戻り値(つまり特定のトリプル)を取得する。ストリーマ30は、検索で得たトリプル(戻り値)と、問い合わせ先の情報と、対応するトリプルパターンとを保持する。検索結果としてのトリプルは複数であってもよい。なお、データサーバ20も本実施形態ではプロセスとして実装されている。以降では、データサーバ20とストリーマ30とを別のプロセスとして説明するが、全体としてみれば、ストリーマ30の動作はデータサーバ20内での動作の一部と観念できる。
(図4のステップS6)
ストリーマ30は、検索で得た戻り値の一つを、非同期のresultメッセージとしてクエリノード部N03に戻す。resultメッセージは、図5及び図6に示すアルファマップとValマップとを有する。ここで、各マップについて説明する。
(アルファマップ)
アルファマップは、検索されたデータベース内のトリプルのIDを特定するフィールドと、検索を要求したクエリノード部(この例ではN03)を特定するフィールドとを備えている。
(Valマップ)
Valマップは、トリプルパターンにおける変数のIDを特定するフィールドと、検索により得られた値のIDを特定するフィールドとを備えている。
これらのアルファマップ及びValマップは、ストリーマ30から、一つのresultメッセージごとにクエリノード部N03に送られる。前記したように、ストリーマは、一つの戻り値(検索結果)ごとにresultメッセージを作成して、クエリノード部N03に送る。
(図4のステップS7)
クエリノード部N03は、ストリーマ30から送られた一つのresultメッセージを、そこで保持するトリプルパターンと照合する。resultメッセージに含まれるトリプルが、クエリノード部N03で保持するトリプルパターンと整合していれば、その親ノードであるジョインノード部N02にresultメッセージを送る。
(図4のステップS8)
ジョインノード部N02では、アウター側の子ノードであるクエリノード部N03からresultメッセージを受け取ると、インナー側の子ノードであるクエリノード部N04から、そこに割り当てられたトリプルパターンを取得する。このステップは同期セッションfetchにより実行される。
(図4のステップS9)
ついで、ジョインノード部N02は、resultメッセージ中のValマップにおける変数のIDを、クエリノード部N04でのトリプルパターンに応じて書き換えて、データサーバ20に送り、検索を要求する。ここでのジョインノード部N02からデータサーバ20への検索要求は、同期セッションとして行われる。この同期セッションにおいて、データサーバ20は、前記したストリーマ30と同様、一つ又は複数の検索結果を取得して、ジョインノード部N02に戻り値として送る。この戻り値には、特定されたトリプルのIDと、クエリに対応する値とが含まれる。そこで、ジョインノード部N02は、それらの結果をアルファマップ及びValマップに追加して、これらのマップを更新する。この時点で、一つのresultメッセージ中に、二つのグラフパターン(具体的には?c <hasArea> ?aと?c <hasLatitude> ?l)に対応する値を含めることができる。なお、ジョインノード部N02の段階では、クエリノード部N03からのresultメッセージにより、主語は変数でなくて既に特定されているので、その特定の主語に対応する特定の目的語(つまり「?l」に対応する値)が追加される。ここで、ステップS9での同期セッションsearchにおける戻り値としての検索結果(トリプル)が複数あった場合には、まず一つの検索結果について、上記の処理を行う。残りの検索結果については、ステップS3で受け取ったresultメッセージをジョインノードN02で複製して、resultメッセージとトリプルとの一対一対応を維持しつつ、以降の処理を行う。このようにすると、問い合わせ元への応答速度を向上させることができる。なお、ステップS9での検索処理は、クエリノード部N04によるRDFデータの取得処理を、ジョインノード部N02を媒介として行った例であるとみなすことができる。
(図4のステップS10〜S11)
次いで、ジョインノード部N02は、更新されたアルファマップ及びValマップを持つresultメッセージを、その親ノードの位置にあるジョインノード部N01に、非同期メッセージとして送る。ジョインノード部N01での動作は、前記したジョインノード部N02と基本的に同様である。すなわち、ジョインノード部N01では、アウター側の子ノードであるジョインノード部N02からresultメッセージを受け取ると、インナー側の子ノードであるクエリノード部N05から、そこに割り当てられたトリプルパターンを取得する。
(図4のステップS12)
ついで、ジョインノード部N01は、受け取ったresultメッセージ中のValマップにおける変数のIDを、クエリノード部N05でのトリプルパターンに応じて書き換えて、データサーバ20に送り、検索を要求する。ここでのジョインノード部N01からデータサーバ20への検索要求も、ジョインノード部N02の場合と同様に、同期セッションとして行われる。この同期セッションにおいて、データサーバ20は、検索結果を取得して、ジョインノード部N01に戻り値として送る。この戻り値には、特定された一つトリプルのIDと、クエリに対応する値とが含まれる。そこで、ジョインノード部N01は、それらの結果をアルファマップ及びValマップに追加する。この時点で、一つのresultメッセージ中に、三つのグラフパターン(具体的には?c <hasArea> ?aと?c <hasLatitude> ?lと?c <hasInfration> ?i)に対応する値を含めることができる。なお、ジョインノード部N01の段階でも、主語は変数でなくてすでに特定されているので、その特定の主語に対応する特定の目的語(つまり「?i」に対応する値)が追加される。
(図4のステップS13)
ついで、ジョインノード部N01は、更新されたresultメッセージを、問い合わせ元(例えばユーザ端末)に返すことができる。これにより、特定のSPARQLクエリ(図3参照)に対する一つの検索結果を返すことができる。
ストリーマ30は、resultメッセージとしてまだ送っていない検索結果が残っている場合には、その結果を、ステップS6での新たなresultメッセージを用いて順次クエリノード部N03に送ることができる。これにより、前記した手順を逐次繰り返して、検索結果を一つずつ問い合わせ元に返すことができる。
従来のSPARQLクエリの実行においては、データベース管理システム側において、各グラフパターンに対応するトリプルをすべて取得し、それらに論理積演算を施すなどの処理を行った後、問い合わせ元に検索結果を返していた。このため、データベースに蓄積されたトリプルの数が大量になると、問い合わせ結果を得るまでにかなりの長時間を要することがあった。
これに対して、本実施形態では、各クエリノード部N03〜N05に割り当てられたトリプルパターンに対応するトリプルを、非同期のresultメッセージに追加することで、一組のトリプルパターンを順次ルートノードに送ることができる。したがって、本実施形態では、一つの組のトリプルを順次問い合わせ元に返すことができ、ユーザ側における待ち時間を減少させることができるという利点がある。
また、本実施形態では、複数のクエリノード部のうち、最初に動作を開始するクエリノード部N03においては、データベースからの戻り値を非同期メッセージとして受け取る構成となっているので、同期セッションを用いる場合と比較して、ネットワークへの負荷を低く抑えることができる。さらに、本実施形態では、その後にノード間で送られるresultメッセージも非同期としたので、ネットワークへの負荷をさらに軽減できる。
また、本実施形態では、クエリノード部N03の動作後に動作を開始するクエリノード部N04〜N05においては、セッション中の同期メッセージとして、データベースからの戻り値を受け取る構成となっているので、アウターエッジ側から受け取ったresultメッセージが保持された状態で、インナーエッジ側のクエリノード部N04に対応するトリプルを取得できる。このため、クエリ文に対応する検索結果を正しく取得する処理が簡易となるという利点がある。
さらに、本実施形態では、クエリツリーの木構造として二分木構造を採用したので、処理が単純化するという利点がある。
また、本実施形態では、複数のグラフパターン及び複数のクエリノード部の数を3としたが、それ以上でもそれ以下でもよい。
さらに、本実施形態では、各ノード(クエリノード部及びジョインノード部)を、別の物理的な計算機上に実装することができる。同様に、データサーバ20の中の列や行に対応するサーバも、別々に実装できる。このようにすると、各ノードから参照する先を分散することができ、ネットワークの負荷を軽減できる。また、クエリとトリプルデータとを近い位置(例えば同じメモリ内)に配置できる可能性もあり、このようにすれば、ネットワーク負荷をさらに軽減して、処理を高速化できる。
前記した各実施形態の動作は、コンピュータに適宜のコンピュータソフトウエアを組み込むことにより実施することができる。
なお、本発明の内容は、前記実施形態に限定されるものではない。本発明は、特許請求の範囲に記載された範囲内において、具体的な構成に対して種々の変更を加えうるものである。
例えば、前記した実施形態では、ステップS7の後にステップS8を行う例を示したが、ステップS3の時点でステップS8を実行して、クエリパターンをジョインノード部N02が保持してもよい。ステップS11についても同様に、ステップS2の時点で実行されていてもよい。
また例えば、前記した各構成要素は、機能ブロックとして存在していればよく、独立したハードウエアとして存在しなくても良い。また、実装方法としては、ハードウエアを用いてもコンピュータソフトウエアを用いても良い。さらに、本発明における一つの機能要素が複数の機能要素の集合によって実現されても良く、本発明における複数の機能要素が一つの機能要素により実現されても良い。
また、機能要素は、物理的に離間した位置に配置されていてもよい。この場合、機能要素どうしがネットワークにより接続されていても良い。グリッドコンピューティング又はクラウドコンピューティングにより機能を実現し、あるいは機能要素を構成することも可能である。
10 フロントサーバ(検索装置)
20 データサーバ(データベース)
30 ストリーマ
N01・N02 ジョインノード部
N03〜N05 クエリノード部

Claims (10)

  1. 複数のグラフパターンを持つクエリ文を用いて、データベースからRDFデータを検索するための検索装置であって、
    前記検索装置は、複数のクエリノード部と、ジョインノード部とを備えており、
    前記複数のクエリノード部と、前記ジョインノード部とは、木構造をなすクエリツリーを構成しており、
    前記複数のクエリノード部は、前記木構造におけるリーフとなる位置に配置されており、
    前記ジョインノード部は、前記リーフを子に持つノードとなる位置に配置されており、
    前記複数のクエリノード部は、当該クエリノード部に割り当てられた前記グラフパターンに対応するRDFデータを前記データベースから取得し、ついで、前記取得したRDFデータを、当該クエリノード部の親の位置にある前記ジョインノード部に送る構成とされており、
    前記ジョインノード部は、当該ジョインノード部の子である前記複数のクエリノード部から送られた各RDFデータを結合する構成となっている
    RDFデータの検索装置。
  2. 前記クエリノード部は、前記データベースから一つのRDFデータを取得すると、そのRDFデータを前記ジョインノード部に送る構成となっている
    請求項1に記載のRDFデータの検索装置。
  3. 前記複数のグラフパターン及び前記複数のクエリノード部の数は、いずれも3以上である
    請求項1又は2に記載のRDFデータの検索装置。
  4. 前記木構造は、二分木構造である
    請求項1〜3のいずれか1項に記載のRDFデータの検索装置。
  5. 前記複数のクエリノード部は、前記木構造においてもっとも深い位置にある前記クエリノード部から、前記RDFデータの取得を開始し、ついで、当該クエリノード部の親であるジョインノード部の子である他のクエリノード部において、対応するRDFデータの取得を行い、次いで、前記ジョインノード部において、取得された各RDFデータを結合する構成となっている
    請求項1〜4のいずれか1項に記載のRDFデータの検索装置。
  6. 前記ジョインノード部の親となる位置に他のジョインノード部があり、かつ、前記他のジョインノード部の子となる位置に、他のクエリノード部が存在する場合には、前記他のジョインノード部は、子となる位置の前記ジョインノード部から送られた前記RDFデータと、前記他のクエリノード部で取得されたRDFデータとを結合する構成となっている
    請求項1〜5のいずれか1項に記載のRDFデータの検索装置。
  7. 前記複数のクエリノード部のうち、最初に動作を開始するクエリノード部においては、前記データベースからの戻り値を非同期メッセージとして受け取る構成となっており、
    それ以降に動作を開始するクエリノード部においては、セッション中の同期メッセージとして、前記データベースからの戻り値を受け取る構成となっている
    請求項1〜6のいずれか1項に記載のRDFデータの検索装置。
  8. 前記クエリノード部への、前記グラフパターンの割り当ては、前記クエリ文を処理するためのパーザにより、前記クエリ文を受け取った後に実行されているものである
    請求項1〜7のいずれか1項に記載のRDFデータの検索装置。
  9. 複数のグラフパターンを持つクエリ文を用いて、データベースからRDFデータを検索するための検索装置を用いた検索方法であって、
    前記検索装置は、複数のクエリノード部と、ジョインノード部とを備えており、
    前記複数のクエリノード部と、前記ジョインノード部とは、木構造をなすクエリツリーを構成しており、
    前記複数のクエリノード部は、前記木構造におけるリーフとなる位置に配置されており、
    前記ジョインノード部は、前記リーフを子に持つノードとなる位置に配置されており、
    前記検索方法は、
    前記複数のクエリノード部が、当該クエリノード部に割り当てられた前記グラフパターンに対応するRDFデータを前記データベースから取得し、ついで、前記取得したRDFデータを、当該クエリノード部の親の位置にある前記ジョインノード部に送るステップと、
    前記ジョインノード部が、当該ジョインノード部の子である前記複数のクエリノード部から送られた各RDFデータを結合するステップと
    を備えるRDFデータの検索方法。
  10. 請求項9に記載の各ステップをコンピュータに実行させるためのコンピュータプログラム。
JP2014129622A 2014-06-24 2014-06-24 Rdfデータの検索装置及びrdfデータの検索方法 Active JP5978253B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014129622A JP5978253B2 (ja) 2014-06-24 2014-06-24 Rdfデータの検索装置及びrdfデータの検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014129622A JP5978253B2 (ja) 2014-06-24 2014-06-24 Rdfデータの検索装置及びrdfデータの検索方法

Publications (2)

Publication Number Publication Date
JP2016009337A true JP2016009337A (ja) 2016-01-18
JP5978253B2 JP5978253B2 (ja) 2016-08-24

Family

ID=55226851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014129622A Active JP5978253B2 (ja) 2014-06-24 2014-06-24 Rdfデータの検索装置及びrdfデータの検索方法

Country Status (1)

Country Link
JP (1) JP5978253B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108280225A (zh) * 2018-02-12 2018-07-13 北京吉高软件有限公司 一种语义检索方法及检索系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006313499A (ja) * 2005-05-09 2006-11-16 Nippon Telegr & Teleph Corp <Ntt> 拡張クエリグラフパターン生成装置、生成方法、生成用プログラム、およびこれらを用いた拡張サブグラフ検索装置、検索方法、検索用プログラム
JP2006313500A (ja) * 2005-05-09 2006-11-16 Nippon Telegr & Teleph Corp <Ntt> 反転クエリグラフパターン生成装置、生成方法、生成用プログラム、およびこれらを用いた反転サブグラフ検索装置、検索方法、検索プログラム
JP2008181331A (ja) * 2007-01-24 2008-08-07 Nippon Telegr & Teleph Corp <Ntt> 関係抽出方法、関係抽出システム
JP2013054602A (ja) * 2011-09-05 2013-03-21 Nippon Telegr & Teleph Corp <Ntt> グラフパターンマッチングシステムおよびグラフパターンマッチング方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006313499A (ja) * 2005-05-09 2006-11-16 Nippon Telegr & Teleph Corp <Ntt> 拡張クエリグラフパターン生成装置、生成方法、生成用プログラム、およびこれらを用いた拡張サブグラフ検索装置、検索方法、検索用プログラム
JP2006313500A (ja) * 2005-05-09 2006-11-16 Nippon Telegr & Teleph Corp <Ntt> 反転クエリグラフパターン生成装置、生成方法、生成用プログラム、およびこれらを用いた反転サブグラフ検索装置、検索方法、検索プログラム
JP2008181331A (ja) * 2007-01-24 2008-08-07 Nippon Telegr & Teleph Corp <Ntt> 関係抽出方法、関係抽出システム
JP2013054602A (ja) * 2011-09-05 2013-03-21 Nippon Telegr & Teleph Corp <Ntt> グラフパターンマッチングシステムおよびグラフパターンマッチング方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
河本 健作、外2名: "KawaWiki:人間とエージェントが協調するSemantic Wiki", 電子情報通信学会技術研究報告, vol. 第107巻,第429号, JPN6016025260, 14 January 2008 (2008-01-14), JP, pages 67 - 72, ISSN: 0003351012 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108280225A (zh) * 2018-02-12 2018-07-13 北京吉高软件有限公司 一种语义检索方法及检索系统
CN108280225B (zh) * 2018-02-12 2021-05-28 北京吉高软件有限公司 一种语义检索方法及检索系统

Also Published As

Publication number Publication date
JP5978253B2 (ja) 2016-08-24

Similar Documents

Publication Publication Date Title
US20200183932A1 (en) Optimizing write operations in object schema-based application programming interfaces (apis)
CN110291517B (zh) 图数据库中的查询语言互操作性
US10116725B2 (en) Processing data retrieval requests in a graph projection of an application programming interfaces (API)
EP3058690B1 (en) System and method for creating a distributed transaction manager supporting repeatable read isolation level in a mpp database
CN110032575A (zh) 数据查询方法、装置、设备和存储介质
US20130006935A1 (en) Methods and apparatus related to graph transformation and synchronization
JP2017507426A (ja) 半構造データスキーマのトランスペアレントディスカバリ
US9229960B2 (en) Database management delete efficiency
US11907246B2 (en) Methods, systems, and computer readable mediums for performing a free-form query
US10282466B2 (en) Machine processing of search query based on grammar rules
US10489402B2 (en) Bridging native JDBC calls with DBaaS using ESB
CN106960020B (zh) 一种创建索引表的方法及设备
WO2015074477A1 (zh) 路径分析方法和装置
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
JP5844895B2 (ja) データの分散検索システム、データの分散検索方法及び管理計算機
US11507591B2 (en) Methods, systems, and computer readable mediums for command engine execution
CN111723161A (zh) 一种数据处理方法、装置及设备
US20170109405A1 (en) Joining operations in document oriented databases
US20220300503A1 (en) Querying distributed databases
JP5978253B2 (ja) Rdfデータの検索装置及びrdfデータの検索方法
CN105446981B (zh) 站点地图生成方法、访问方法及装置
CN110555178B (zh) 数据代理方法及装置
US10467269B2 (en) Accessing category-specific search servers
CN112527817A (zh) 信息处理方法、信息处理装置、存储介质和电子设备
KR101648707B1 (ko) 큐브리드 기반 미들웨어, 및 큐브리드 기반 미들웨어를 이용한 분산 병렬 질의 처리 방법

Legal Events

Date Code Title Description
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: 20160705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160725

R150 Certificate of patent or registration of utility model

Ref document number: 5978253

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250