以下、図面を参照して、本発明の各実施形態について説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係る構造化データ検索装置のハードウェア構成を示すブロック図である。図1に示すように、コンピュータ10は、例えばハードディスクドライブ(HDD:Hard Disk Drive)のような外部記憶装置20と接続されている。この外部記憶装置20は、コンピュータ10によって実行されるプログラム21を格納する。コンピュータ10及び外部記憶装置20は、構造化データ検索装置30を構成する。
図2は、本実施形態に係る構造化データ検索装置30の主として機能構成を示すブロック図である。
図2に示す構造化データ検索装置30は、オントロジー検索機能とデータベース検索機能を連携させたシステム、例えば住宅履歴情報管理システムに適用される。この住宅履歴情報管理システムは、例えば各住宅の設計、施工、維持情報等が記録された住宅履歴情報(構造化データ)を、当該システムを利用するユーザが検索を行って閲覧等を行うことが可能なシステムである。
図2に示すように、構造化データ検索装置30は、アプリケーション31、オントロジーアクセス部32及び構造化データベースアクセス部33を含む。本実施形態において、アプリケーション31、オントロジーアクセス部32及び構造化データベースアクセス部33は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、構造化データ検索装置30は、オントロジー格納部22及び構造化データベース(DB)23を含む。本実施形態において、オントロジー格納部22及び構造化データベース23は、例えば外部記憶装置20に格納される。
アプリケーション31は、例えばユーザによって指定された文字列を含む検索条件(検索情報)を取得する。アプリケーション31は、取得された検索条件をオントロジーアクセス部32に渡す。
アプリケーション31は、オントロジーアクセス部32からオントロジーの検索結果を取得する。アプリケーション31は、取得されたオントロジーの検索結果を構造化データベースアクセス部33に渡す。
アプリケーション31は、構造化データベースアクセス部33から構造化データの検索結果を取得する。アプリケーション31は、取得された構造化データの検索結果をユーザに対して提示する。
オントロジー格納部22には、例えば複数の語彙(文字列)間の関係及び当該語彙の意味内容を表すオントロジー情報を含むオントロジーが格納される。この複数の文字列間の関係には、当該複数の文字列の各々が属するクラス間の関係が含まれる。ここでは、オントロジー格納部22には、例えば設計会社、施工会社の情報がオントロジーとして用意されている。このオントロジー格納部22のデータ構造については後述する。
オントロジーアクセス部32は、オントロジー格納部22に対して、オントロジーの検索処理を行う機能部である。オントロジーアクセス部32は、アプリケーション31から渡された検索条件を取得する。オントロジーアクセス部32は、オントロジー検索のライブラリを呼び出し、取得された検索条件に応じた検索結果(オントロジーの検索結果)を受け取る。オントロジーアクセス部32は、このオントロジーの検索結果をアプリケーション31に返す。
オントロジーの検索結果には、ユーザによって指定された検索条件に含まれる文字列に関係する1つまたは複数の文字列及び当該文字列の意味内容を表すオントロジー情報等が含まれる。
なお、本実施形態においては、オントロジーの検索プロトコルとしては、例えばSPARQL(SPARQL Protocol and RDF Query Language)が用いられるものとする。
構造化データベース23には、上記したような各住宅の住宅履歴情報として例えば建築情報、素材情報または家歴情報等の構造化データが格納される。また、構造化データベース23には、構造化データ(実データ)の例えば見出し情報に相当するメタデータが更に格納されてもよい。
構造化データベースアクセス部33は、構造化データベース23に対して、構造化データの検索処理を行う機能部である。構造化データベースアクセス部33は、アプリケーション31から渡されたオントロジーの検索結果を取得する。構造化データベースアクセス部33は、取得されたオントロジーの検索結果を用いて、構造化データベース23から構造化データを検索する。この検索処理の詳細については後述する。
構造化データベースアクセス部33は、検索結果(構造化データの検索結果)をアプリケーション31に返す。アプリケーション31は、ユーザによって指定された検索条件に対する応答として、この構造化データの検索結果を当該ユーザに対して提示する。
図3は、図1に示すオントロジー格納部22に格納されているオントロジーの一例を示す。具体的には、図3は、上記した設計会社及び施工会社のような建築会社のオントロジーの一例を示す。
図3に示す例では、「masterCompany(クラス)」のサブクラス(subClassOf)として「designCompany(設計会社)」及び「buildCompany(施工会社)」が存在する。この場合、「masterCompany」及び「designCompany」、「masterCompany」及び「buildCompany」は、それぞれ親子関係にあるという。
「designCompany(設計会社)」のクラスには、「秋田設計事務所」、「鈴木設計事務所(一級、二級)」、「森下設計事務所」、「朝日設計事務所」等が属している。
一方、「buildCompany(施工会社)」のクラスには「千葉工務店」が属している。
また、図3に示す「margeOf」及び「divideOf」は、複数の文字列(ここでは、秋田設計事務所、森下設計事務所等)の関係を表す。
「margeOf」は、矢印の元の設計会社が矢印の先の設計会社が統合することによって設立された設計会社であることを示す。つまり、図3に示す例では、森下設計事務所は、秋田設計事務所及び朝日設計事務所が統合することによって設立された設計会社であることが示されている。
一方、「divideOf」は、矢印の元の設計会社が矢印の先の設計会社が分割することによって設立された設計会社であることを示す。つまり、図3に示す例では、鈴木設計事務所、東京設計事務所及び千葉設計事務所は、森下設計事務所が分割することによって設立された設計会社であることが示されている。
また、図3に示す例では、例えば「秋田設計事務所」は、設計会社(dsignCompany)の名称(name)であることが示されている。他の「森下設計事務所」等についても同様である。また、図3に示す例では、「千葉工務店」は、施工会社(buildCompany)の名称(name)であることが示されている。
上記したように、図3に示すオントロジーには、例えば「秋田設計事務所」、「森下設計事務所」及び「鈴木設計事務所」のような複数の文字列間の関係(例えば、「margeOf」)及び当該文字列の意味内容(例えば、「name」)を表すオントロジー情報が含まれる。
次に、図4のフローチャートを参照して、図2に示す構造化データ検索装置30の処理手順について説明する。
まず、アプリケーション31は、ユーザによって指定された文字列を含む検索条件を取得する(ステップS1)。
次に、オントロジーアクセス部32は、アプリケーション31によって取得された検索条件(に含まれる文字列)に基づいて、オントロジー格納部22からオントロジーの検索結果を取得する(ステップS2)。このオントロジーの検索結果には、アプリケーション31によって取得された検索条件に含まれる文字列と関係のある文字列が含まれる。また、オントロジーの検索結果には、当該オントロジーの検索結果に含まれる文字列に関する情報(文字列の意味内容を表す情報)が含まれる。
ここで、アプリケーション31は、オントロジーアクセス部32によって取得されたオントロジーの検索結果に含まれる文字列に関する情報に基づいて、構造化データベースアクセス部33において実行されるキーバリュー検索におけるキー(タグ名)を決定する。
構造化データベースアクセス部33は、オントロジーアクセス部32によって取得されたオントロジーの検索結果及びアプリケーション31によって決定されたタグ名を用いて、構造化データベース23に対してキーバリュー検索(項目検索)を実行する(ステップS3)。この場合、上記したアプリケーション31によって決定されたタグ名をキー、オントロジーの検索結果に含まれる文字列をバリュー(当該タグの値)として検索処理が実行される。
構造化データベースアクセス部33は、構造化データの検索結果を取得する(ステップS4)。この場合、ユーザによって指定されたタグの値としてオントロジーの検索結果に含まれる文字列が含まれる構造化データが検索結果として取得される。
構造化データベースアクセス部33によって取得された構造化データの検索結果は、例えばアプリケーション31を介してユーザに対して提示される(ステップS5)。
次に、上記した図3を用いて、本実施形態に係る構造化データ検索装置30の具体的な動作例について説明する。ここでは、第1及び第2の動作例について説明する。
まず、第1の動作例は、例えば会社名を対象に統廃合検索する場合を想定している。ここでは、上記した図3において述べたように、例えば設計会社の統廃合(統合または分割)を経て現在に至っている状況を前提とする。なお、オントロジーに対しては、OWL(Web Ontology Language)のTransitivePropertyを用いて推移律を働かせることを前提とする。
例えば「秋田設計事務所」という設計会社が設計した建物に設計欠陥があることが判明した場合に、「秋田設計事務所」の住宅履歴情報を検索する場合を想定する。しかしながら、この「秋田設計事務所」は、現在は存在しておらず、統合(合併)や分割を経て名称不明の設計会社が承継しているものとする。このような場合には、ユーザは、「秋田設計事務所」が例えば統合または分割された後の会社(承継会社)に関する情報を取得すべきである。
以上のような状況において、ユーザが例えば検索条件として「秋田設計事務所」の情報(文字列)を指定して、「会社名を対象に統廃合検索」を実行したものとする。ユーザは、例えば構造化データ検索装置30に備えられているモニタ(図示せず)の画面から検索条件等を指定できる。
この場合、構造化データ検索装置30のアプリケーション31は、ユーザによって指定された「秋田設計事務所」の情報を取得する。アプリケーション31は、取得された「秋田設計事務所」の情報をオントロジーアクセス部32に渡す。
次に、オントロジーアクセス部32は、オントロジー格納部22に対して、オントロジーの検索処理を実行する。オントロジーアクセス部32は、アプリケーション31から渡された「秋田設計事務所」の情報に基づいて検索処理を実行する。
具体的には、オントロジーアクセス部32は、アプリケーション31から渡された「秋田設計事務所」(の情報)の承継会社に関してオントロジーの検索処理を実行する。
これにより、オントロジーアクセス部32は、オントロジーの検索結果を取得する。このオントロジーの検索結果には、「秋田設計事務所」及び当該「秋田設計事務所」の承継会社に関する情報等が含まれる。
図3に示すオントロジーの例では、オントロジーの検索結果として、「秋田設計事務所」に関係する設計会社である「鈴木設計事務所」、「千葉設計事務所」、「森下設計事務所」、「東京設計事務所」及び「秋田設計事務所」に関する情報(例えば会社名、会社種別、設計会社の級)がオントロジーアクセス部32によって取得される。
なお、図3に示すオントロジーの例では、「森下設計事務所」は、「秋田設計事務所」が他の設計事務所(朝日設計事務所)と統合されることによって設立された設計会社である。このため、「森下設計事務所」は「秋田設計事務所」の承継会社である。
また、「鈴木設計事務所」、「千葉設計事務所」及び「東京設計事務所」は、「秋田設計事務所」の承継会社である「森下設計事務所」が分割されることによって設立された設計会社である。このため、「鈴木設計事務所」、「千葉設計事務所」及び「東京設計事務所」は、「秋田設計事務所」の承継会社である。
オントロジーアクセス部32は、オントロジーの検索結果をアプリケーション31に返す。
アプリケーション31は、オントロジーアクセス部32からのオントロジーの検索結果を構造化データベースアクセス部33に渡す。
また、アプリケーション31は、オントロジーの検索結果に含まれる例えば会社種別の情報から構造化データアクセス部33において実行されるキーバリュー検索のキーに相当するタグ名を決定する。として「設計事務所」を決定する。ここでは、アプリケーション31は、キーに相当するタグ名として例えば「設計事務所」を決定する。
なお、オントロジーの検索結果に含まれる会社種別の情報が例えば施工会社である場合には、例えばキーに相当するタグ名としては「工務店」等が決定される。
構造化データベースアクセス部33は、アプリケーション31から渡されたオントロジーの検索結果及びアプリケーション31によって決定されたタグ名(ここでは、「設計事務所」)を用いて、構造化データベース23に対して構造化データをキーバリュー検索する。この場合、アプリケーション31によって決定されたタグ名(設計事務所)をキーとして、また、オントロジーの検索結果(に含まれる例えば「鈴木設計事務所」のような文字列)をバリューとして、キーバリュー検索が実行される。
構造化データベースアクセス部33は、アプリケーション31によって決定されたタグ名及びオントロジーの検索結果に含まれる情報(文字列)をキー及びバリューとする検索条件において、当該検索条件に合致する構造化データを検索結果として取得する。構造化データベースアクセス部33は、取得された検索結果をアプリケーション31に返す。この検索結果は、ユーザに対して例えば画面表示される。
次に、第2の動作例は、例えば同名(部分一致を含む)の会社名が複数存在する場合に、会社名を対象に曖昧解決検索する場合を想定している。
図3に示す例では、例えば会社名が同名であるが、設計の指定級が異なる複数の「鈴木設計事務所」が存在する。ここで、ユーザが「鈴木」という名の設計事務所(つまり、鈴木設計事務所)」という情報から、当該ユーザが求める鈴木設計事務所が設計を行なった住宅に関する構造化データ(住宅履歴情報)を検索するものとする。
この場合、ユーザは、例えば構造化データ検索装置30に備えられているモニタの画面から「鈴木」の情報を画面入力(指定)して、「会社名を対象に曖昧解決検索」を実行する。
構造化データ検索装置30のアプリケーション31は、ユーザによって指定された「鈴木」の情報を取得する。アプリケーション31は、取得された「鈴木」の情報をオントロジーアクセス部32に渡す。
オントロジーアクセス部32は、オントロジー格納部22に対して、オントロジーの検索処理を実行する。オントロジーアクセス部32は、アプリケーション31から渡された「鈴木」の情報に基づいて検索処理を実行する。
オントロジーアクセス部32は、オントロジーの検索結果を取得する。図3に示すオントロジーの例では、オントロジーの検索結果として、2つの「鈴木設計事務所」に関する情報が取得される。一方の「鈴木設計事務所」に関する情報は、「鈴木設計事務所」、「設計会社」及び「一級」を含む。また、他方の「鈴木設計事務所」に関する情報は、「鈴木設計事務所」、「設計会社」及び「二級」を含む。
オントロジーアクセス部32は、オントロジーの検索結果をアプリケーション31に返す。
アプリケーション31は、オントロジーの検索結果である「鈴木設計事務所」に関する情報が2件以上存在する場合には、当該2件以上の情報のうち、ユーザが求める情報を例えば1つ当該ユーザに選択させる。この場合、選択画面を表示することによって、ユーザに選択させる。
なお、オントロジーの検索結果である情報が1件の場合には、選択画面は表示されない。
ユーザは、選択画面においていずれかの「鈴木設計事務所」を選択する。ここでは、「鈴木設計事務所」、「設計会社」及び「一級」(を含む「鈴木設計事務所」に関する情報)が選択されたものとする。
アプリケーション31は、ユーザによって選択されたオントロジーの検索結果(「鈴木設計事務所」、「設計会社」及び「一級」)を構造化データベースアクセス部33に渡す。
また、アプリケーション31は、ユーザによって選択された「鈴木設計事務所」に関する情報に基づいて、構造化データベースアクセス部33におけるキーバリュー検索のキーに相当するタグ名(例えば、「設計事務所」)を決定する。
構造化データベースアクセス部33は、アプリケーション31から渡されたオントロジーの検索結果及びアプリケーション31によって決定されたタグ名を用いて、構造化データベース23に対して構造化データをキーバリュー検索する。この場合、アプリケーション31によって決定されたタグ名をキーとして、また、オントロジーの検索結果(に含まれる文字列)をバリューとして、キーバリュー検索が実行される。
構造化データベースアクセス部33は、アプリケーション31によって決定されたタグ名及びオントロジーの検索結果に含まれる情報(文字列)をキー及びバリューとする検索条件において、当該検索条件に合致する構造化データを検索結果として取得する。構造化データベースアクセス部33は、取得された検索結果をアプリケーション31に返す。この検索結果は、ユーザに対して例えば画面表示される。
上記したように本実施形態においては、ユーザによって指定された検索条件(文字列)に基づいてオントロジーの検索処理を行い、当該オントロジーの検索結果を用いて構造化データベース23に対してキーバリュー検索を実行する。これにより、例えばオントロジーの検索結果に含まれる文字列をキーワードとしてキーワード検索(全文検索)を実行する場合と比較して、より構造化データの検索性能を向上させることができる。
なお、本実施形態においては、オントロジーの検索結果を用いて構造化データベース23から構造化データを検索するものとして説明したが、オントロジーの検索結果を用いて例えば構造化データベース23に格納されている構造化データのメタデータを検索し、当該メタデータのリスト(結果リスト)がユーザに画面表示される構成であってもよい。この場合、画面表示されたメタデータのリストからユーザが所望のメタデータを選択することによって、当該メタデータの実データが表示される。具体的には、ユーザは、メタデータの結果リストにある実データの表示ボタンを用いて、実データの詳細画面を表示させることができる。このように、構造化データでなくメタデータを検索することで、構造化データ自体を検索する場合に比べて、検索処理量を低減させることができるため、処理速度を向上させることができる。
[第2の実施形態]
次に、図5を参照して、本発明の第2の実施形態について説明する。図5は、本実施形態に係る構造化データ検索装置の主として機能構成を示すブロック図である。なお、前述した図2と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図2と異なる部分について主に述べる。
また、本実施形態に係る構造化データ検索装置のハードウェア構成は、前述した第1の実施形態と同様であるため、適宜、図1を用いて説明する。
図5に示すように、構造化データ検索装置50は、アプリケーション51、検索最適化処理部52及び構造化データベースアクセス部53を含む。検索最適化処理部52は、アプリケーション連携処理部521、中央処理部522、オントロジー解析処理部523、項目対応処理部524及びデータベース解析処理部525を含む。
本実施形態において、アプリケーション51、検索最適化処理部52に含まれるアプリケーション連携処理部521、中央処理部522、オントロジー解析処理部523、項目対応処理部524、データベース解析処理部525及び構造化データベースアクセス部53は、図1に示すコンピュータ10が外部記憶装置20に格納されているプログラム21を実行することにより実現されるものとする。このプログラム21は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム21が例えばネットワークを介してコンピュータ10にダウンロードされても構わない。
また、検索最適化処理部52は、項目対応記憶部24を含む。本実施形態において、項目対応記憶部24は、例えば外部記憶装置20に格納される。
アプリケーション51は、例えばユーザによって指定された文字列を含む検索条件を取得する。アプリケーション51は、取得された検索条件を検索最適化処理部52に渡す。また、アプリケーション51は、検索最適化処理部52から渡される構造化データの検索結果を取得する。アプリケーション51は、取得された構造化データの検索結果をユーザに対して提示する。
検索最適化処理部52のアプリケーション連携処理部521は、アプリケーション51から渡された検索条件を取得する。アプリケーション連携処理部521は、取得された検索条件を中央処理部522に渡す。また、アプリケーション連携処理部521は、中央処理部522から渡される構造化データの検索結果をアプリケーション51に渡す。
中央処理部522は、検索最適化処理部52の内部機能部(各部521、523〜525)を呼び出して、検索最適化処理部52の制御を行う。
中央処理部522は、アプリケーション連携処理部521から渡された検索条件をオントロジーアクセス部32に渡し、当該検索条件に応じた結果(オントロジーの検索結果)を取得する。このオントロジーの検索結果には、検索条件に含まれる文字列(第1の文字列)に関係する1つまたは複数の文字列(第2の文字列)及び当該文字列(第2の文字列)の意味内容を表すオントロジー情報が含まれる。
オントロジー情報には、OntologyNameが含まれる。OntologyNameは、オントロジーの例えばプロパティ名またはクラス名を示す。また、オントロジー情報には、名前空間及び種別が含まれる。名前空間は、OntologyNameの前に付加され、名前空間+OntologyNameで完全なURI(Uniform Resource Identifier)となる。種別は、オントロジーのプロパティまたはクラスの種別情報である。
ここで、プロパティとは、オントロジーのRDF(Resource Description Framework)定義における述語を意味する。なお、種別には、プロパティ(述語)以外に、例えば主語、目的語等が含まれる。この場合には、OntologyNameは主語名または目的語名を示す。
オントロジー解析処理部523は、中央処理部522によって取得されたオントロジーの検索結果を解析する。これにより、オントロジー解析処理部523は、オントロジーの検索結果から、当該オントロジーの検索結果に含まれるオントロジー情報(例えばOntologyName)を抽出する。具体的には、オントロジー解析処理部523は、オントロジーの検索結果をもとに、例えば当該検索結果のインスタンスに関連するプロパティの情報を抽出する。
項目対応記憶部24には、構造化データ上のノードの位置を示すPath及びオントロジー情報が対応付けて格納(記憶)されている。オントロジー情報には、OntologyName、名前空間及び種別が含まれる。
また、項目対応記憶部24には、Path及びオントロジー情報に対応付けてスコアが格納される。このスコアは、オントロジー情報(オントロジーのプロパティまたはクラス)と構造化データのタグ(Path)との対応の強さを表す値である。
項目対応処理部524は、項目対応記憶部24への各種データの記録及び読み出しを行う機能を有する。項目対応処理部524は、オントロジー解析処理部524によって抽出されたオントロジー情報に対応付けて項目対応記憶部24に格納されているPath(の情報)を読み出す。項目対応処理部524は、読み出されたPathを、中央処理部522を介してデータベース解析処理部525に渡す。
データベース解析処理部525は、項目対応処理部523から渡されたPathに基づいてXQuery式(検索式)を生成する。XQuery式は、構造化データベース23から構造化データを検索するために用いられる。データベース解析処理部525によって生成されたXQuery式は、中央処理部522を介して構造化データベースアクセス部53に渡される。なお、生成される検索式は、例えばXPath式のような構造化検索式であってもよい。
構造化データベースアクセス部53は、データベース解析処理部525から渡されたXQuery式を取得する。構造化データベースアクセス部53は、取得されたXQuery式を用いて、構造化データベース23から構造化データを検索する。構造化データベースアクセス部53は、XQuery式に合致する構造化データを検索結果として検索最適化処理部52(に含まれる中央処理部522)に返す。この検索結果(構造化データ)は、ユーザに対して提示される。
ここで、図6を参照して、オントロジーの検索結果に含まれるオントロジー情報について説明する。図6は、オントロジーのデータ構造の一例を示す。
ユーザによって指定された検索条件に含まれる文字列(第1の文字列)に関係する文字列(第2の文字列)が例えば図6に示す「水島設計」である場合を想定する。この場合、「水島設計」は、ユーザによって指定された検索条件に応じて取得されるオントロジーの検索結果に含まれる。
また、この場合においては、オントロジー情報に含まれるOntologyNameとしては図6に示す「CompanyName」がオントロジーの検索結果に含まれることになる。この「CompanyName」は、「水島設計」のプロパティ名である。なお、図6においては、オントロジー情報に含まれる名前空間等については省略されている。
図7は、図5に示す項目対応記憶部24のデータ構造の一例を示す。図7に示すように、項目対応記憶部24には、Path、オントロジー情報及びスコアが対応付けて格納されている。また、オントロジー情報には、OntologyName、名前空間及び種別が含まれる。
Pathは、構造化データのタグを表す。オントロジー情報は、オントロジーの検索結果に含まれる情報である。また、スコアは、Path及びオントロジー情報(のOntologyName)の対応の強さを表す値である。
図7に示す例では、項目対応記憶部24には、Path「/大分類/中分類/業種/会社」、OntologyName「CompanyName」、名前空間「http://test.ontology/」、種別「Property」及びスコア「50」が格納されている。
項目対応記憶部24には、Path「/大分類/中分類/業種」、OntologyName「BusinessCategoryName」、名前空間「http://test.ontology/」、種別「Property」及びスコア「50」が格納されている。
項目対応記憶部24には、Path「/インフラ/道路/有料道路/高速道路」、OntologyName「TurnpikeName」、名前空間「http://test.ontology/」、種別「Property」及びスコア「40」が格納されている。
また、項目対応記憶部24には、Path「/インフラ/道路/有料道路/山岳道路」、OntologyName「TurnpikeName」、名前空間「http://test.ontology/」、種別「Property」及びスコア「30」が格納されている。
次に、図8のフローチャートを参照して、構造化データ検索装置50の主として検索最適化処理部52の処理手順について説明する。
まず、検索最適化処理部52に含まれる中央処理部522は、オントロジーアクセス部32から渡されたオントロジーの検索結果を取得する(ステップS11)。
このオントロジーの検索結果は、ユーザによって指定された検索条件に基づいて、オントロジーアクセス部32がオントロジー格納部22に対して検索処理を実行した結果として得られたものである。
以下、オントロジーの検索結果として「水島設計」という会社名が得られているものとして説明する。また、このオントロジーの検索結果に含まれるオントロジー情報には、「水島設計」のOntologyName(プロパティ名)として「CompanyName」が含まれるものとする。
中央処理部522は、取得されたオントロジーの検索結果をオントロジー解析処理部524に渡す。
オントロジー解析処理部523は、中央処理部522から渡されたオントロジーの検索結果を解析する。オントロジー解析処理部523は、オントロジーの検索結果を解析することにより、当該オントロジーの検索結果に含まれるオントロジー情報(OntologyName等)を抽出する(ステップS12)。
項目対応処理部524は、オントロジー解析処理部523によって抽出されたオントロジー情報を取得する。項目対応処理部524は、取得されたオントロジー情報が項目対応記憶部24に格納されているか、つまり、当該オントロジー情報が項目対応記憶部24内に存在するか否かを判定する(ステップS13)。
例えばオントロジー情報が項目対応記憶部24内に複数存在すると判定された場合(ステップS13のYES)、項目対応処理部524は、当該複数のオントロジー情報の各々に対応付けて項目対応記憶部24に格納されている複数のPathを取得する。
この複数のPathは、アプリケーション51を介してユーザに対して画面提示される(ステップS14)。このとき、複数のPathは、例えば当該複数のPathの各々に対応付けて項目対応記憶部24に格納されているスコアが高い順に提示される。ユーザは、画面提示された複数のPathの中から、1つのPathを選択する(ステップS15)。
ここでは、例えば図7に示すPath「/大分類/中分類/業種/会社」がユーザによって選択されたものとする。
データベース解析処理部525は、ユーザによって選択されたPathに基づいて、構造化データベース23から構造化データを検索するためのXQuery式を生成する(ステップS16)。
具体的には、ユーザによって選択されたPathが「/大分類/中分類/業種/会社」であるため、データベース解析処理部525は、構造化データの構造が「/大分類/中分類/業種/会社」であり、会社タグの値に「水島設計」が含まれる構造化データを検索(キーバリュー検索)するためのXQuery式を生成する。
データベース解析処理部525は、生成されたXQuery式を、中央処理部522を介して構造化データベースアクセス部53に渡す。構造化データベースアクセス部53は、中央処理部522から渡されたXQuery式を用いて、構造化データベース23から当該XQuery式に合致する構造化データを検索する。構造化データベースアクセス部53は、構造化データの検索結果を検索最適化処理部52(に含まれる中央処理部522)に返す。
中央処理部522は、構造化データの検索結果を、アプリケーション51を介してユーザに提示する(ステップS17)。
このとき、ユーザ(検索者)は、提示された構造化データの検索結果を例えば画面を通して確認することができる。ユーザは、提示された構造化データの検索結果が当該ユーザにとって所望の結果であるか否かを構造化データ検索装置50に対して指示することができる。つまり、構造化データ検索装置50においては、ユーザの操作に応じて、構造化データの検索結果が当該ユーザにとって所望の結果であるか否かが判定される。
構造化データの検索結果がユーザにとって所望の結果でないと判定された場合(ステップS18のNO)、構造化データベースアクセス部53を介して全文検索が実行される(ステップS19)。この場合、オントロジーの検索結果に含まれる文字列(ユーザによって指定された検索条件に含まれる文字列及び当該文字列に関係のある文字列)、例えば「水島設計」を検索条件(キーワード)として全文検索が実行される。この全文検索による検索結果は、ユーザに対して提示される。
一方、ステップS13においてオントロジー情報が項目対応記憶部24内に存在しないと判定された場合、ステップS19の処理が実行される。
なお、ステップS13においてオントロジー情報が項目対応記憶部24内に複数存在する場合には当該複数のオントロジー情報に対応付けて項目対応記憶部24に格納されている複数のPathをユーザに対して提示し、Pathをユーザに選択させるものとして説明したが、ステップS13においてオントロジー情報が項目対応記憶部24内に1つしか存在しない場合には、上記したステップS14及びステップS15の処理は省略されても構わない。
上記したように本実施形態においては、オントロジーの検索結果に含まれるオントロジー情報(例えばOntologyName)に対応付けて項目対応記憶部24に格納されているPathからXQuery式が生成され、当該XQuery式を用いて構造化データが検索される。よって、本実施形態においては、オントロジー検索機能と構造化データベース検索機能を連携させ、オントロジーの検索結果に応じたXQuery式を生成することにより、より検索性能を向上させることが可能となる。つまり、本実施形態においては、例えばキーワード検索のような検索方法と比較して、検索時間を短縮でき、かつ、ノイズを減少させることができるので、より適切な検索結果を機械的に得ることが可能となる。
また、本実施形態においては、オントロジー検索機能と構造化データベース検索機能を連携させる際に、初期情報の設定等による負担をかけることなく検索性能を向上させることが可能となる。
なお、本実施形態においては、検索最適化処理部52に含まれる中央処理部522がPathに基づいてXQuery式を生成するものとして説明したが、構造化データベースアクセス部53がXQuery式を生成する構成であってもよい。
また、本実施形態においては、上記した図8に示すステップS18においてユーザにとって所望の検索結果が得られていない場合にはオントロジーの検索結果に含まれる文字列に基づいて全文検索を実行するものとして説明したが、ユーザにとって所望の検索結果が得られていない場合には図8に示すステップS15に戻って当該ユーザに他のPathを更に選択させる構成であっても構わない。この場合、ユーザによって選択されたPathに基づいて、ステップS16以降の処理が実行される。
また、本実施形態においては、図8のステップS13において項目対応記憶部24にオントロジー情報が複数存在する場合には当該オントロジー情報に対応付けられている複数のPathのうちの1つをユーザに対して選択させるものとして説明したが、当該複数のPathに対応付けて項目対応記憶部24に格納されているスコアが最も高いPathが自動的に選択される構成であっても構わない。
具体的には、図7に示す項目対応記憶部24においては、2つの同一のオントロジー情報(OntologyName「TurnpikeName」)が格納されている。この場合、この2つのオントロジー情報に対応付けられているPathのうち、スコアが最も高いPath「/インフラ/道路/有料道路/高速道路」が自動的に選択される。これにより、項目対応記憶部24にオントロジー情報が複数存在する場合であっても、ユーザが例えば構造化データ検索装置50を操作することによってPathを選択するという煩雑さを解消することができる。
このように、項目対応記憶部24にオントロジー情報が複数存在する場合に、Pathをユーザに選択させる、またはスコアに基づいて自動的に選択させるといったPathの選択方法については、検索最適化処理部52の設定によって変更可能である。
また、本実施形態においては、項目対応記憶部24に格納されているPathに基づいてXQuery式が生成されるものとして説明したが、当該Pathの最後のタグのみに基づいてXQuery式が生成される構成でも構わない。これによれば、図8のステップS15においてユーザによって選択されたPathが例えば「/大分類/中分類/業種/会社」である場合には、会社タグの値に例えば「水島設計」が含まれる構造化データを検索するためのXQuery式が生成される。これにより、構造化データの検索結果を絞り込みすぎないことで、ユーザにとって所望の検索結果の漏れを防止することが可能となる。
また、項目対応記憶部24に格納されているPathに基づいてXQuery式が生成されるか、当該Pathの最後のタグのみに基づいてXQuery式が生成されるかについては、ユーザが選択可能な構成であっても構わない。
[第3の実施形態]
次に、本発明の第3の実施形態について説明する。本実施形態に係る構造化データ検索装置の構成は、前述した第2の実施形態に係る構造化データ検索装置50と同様であるため、適宜、図5を用いて説明する。
前述した第2の実施形態においては項目対応記憶部24にオントロジー情報が存在しない場合には全文検索が実行されるのに対して、本実施形態に係る構造化データ検索装置50においては、項目対応記憶部24にオントロジー情報が存在しない場合には後述する関係クラスのオントロジー情報に対応付けて項目対応記憶部24に格納されているPathに基づいてXQuery式が生成される点が異なる。
以下、図9及び図10のフローチャートを参照して、本実施形態に係る構造化データ検索装置50の主として検索最適化処理部52の処理手順について説明する。
前述した図8に示すステップS11〜ステップS19の処理に相当するステップS21〜ステップS29の処理が実行される。
なお、ステップS21において取得されたオントロジーの検索結果は、ユーザによって指定された検索条件に基づいて、オントロジーアクセス部32がオントロジー格納部22に対して検索処理を実行した結果として得られたものである。ここでは、オントロジーの検索結果に含まれるオントロジー情報には、「水島設計」のという会社名が得られているものとして説明する。また、このオントロジーの検索結果に含まれるオントロジー情報には、「水島設計」のOntologyName(プロパティ名)として「CompanyName」が含まれるものとする。
一方、ステップS23においてオントロジー解析処理部523によって抽出されたオントロジー情報が項目対応記憶部24内に存在しないと判定された場合(ステップS23のNO)、ステップS30以降の処理が実行される。
前述したように、本実施形態においては、抽出されたオントロジー情報が項目対応記憶部24内に存在しない場合の処理が前述した第1の実施形態と異なる。
オントロジー情報が項目対応記憶部24内に存在しないと判定された場合、項目対応処理部524は、中央処理部522を介して、その旨をオントロジーアクセス部32に通知する。
オントロジーアクセス部32は、項目対応処理部524からの通知を受けると、オントロジーの検索結果に含まれる文字列(第2の文字列)が属するクラスに関係するクラス(関係クラス)に属する文字列(第3の文字列)の意味内容を表すオントロジー情報(関係クラスのオントロジー情報)を、オントロジー格納部22に格納されているオントロジーから検索する。
これにより、オントロジーアクセス部32は、関係クラスのオントロジー情報を取得する(ステップS30)。
ここで、関係クラスのオントロジー情報について、前述した図6を用いて具体的に説明する。上記したように、オントロジーの検索結果として「水島設計」という会社名(文字列)が得られているものとする。
図6に示す例では、まず、「水島設計」が属するクラス(水島設計インスタンスが参照しているクラス)は、「Companyクラス」である。この「Companyクラス」の関係クラスは、図6に示す例では「BusinessCategoryクラス」である。この場合、「BusinessCategoryクラス」は、「Companyクラス」の親方向の関係クラスである。なお、関係クラスは、例えばsubClassOfで親、または親の親等で規定されているクラスが含まれる。また、関係クラスは、例えばsubClassOfで子(つまり、子方向)のクラスであっても構わない。
これにより、関係クラスに属する文字列としては、図6に示す「建設」が該当する。したがって、図6に示す例では、関係クラスのオントロジー情報(に含まれるOntologyName)として、「BusinessCategoryName(建設インスタンスに関連するプロパティ情報)」が検索される。つまり、オントロジーアクセス部32は、この「BusinessCategoryName」を取得することになる。なお、ここでの検索は、例えばSPARQL等を用いることを想定している。
オントロジーアクセス部32は、取得された関係クラスのオントロジー情報を検索最適化処理部52に渡す。
検索最適化処理部52に含まれる項目対応処理部524は、オントロジーアクセス部32から渡された関係クラスのオントロジー情報を取得する。項目対応処理部524は、取得された関係クラスのオントロジー情報が項目対応記憶部24に格納されているか、つまり、当該オントロジー情報が項目対応記憶部24内に存在するか否かを判定する(ステップS31)。
関係クラスのオントロジー情報が項目対応記憶部24内に存在すると判定された場合(ステップS31のYES)、オントロジー解析処理部523は、当該関係クラスとステップS21において取得されたオントロジーの検索結果に含まれる文字列が属するクラス(今回ターゲットとなるクラス)の位置関係を解析する(ステップS32)。この場合、オントロジー解析処理部523は、オントロジーアクセス部32を介してオントロジー格納部22を参照して解析処理を実行する。
オントロジー解析処理部523は、解析された位置関係(の情報)を、中央処理部522を介してデータベース解析処理部525に渡す。
また、項目対応処理部524は、関係クラスのオントロジー情報に対応付けて項目対応記憶部24に格納されているPathを、中央処理部522を介してデータベース解析処理部525に渡す。
上記した図6に示す例では、関係クラスである「BusinessCategoryクラス」が今回ターゲットとなるクラス(「水島設計」が属するクラス)である「Companyクラス」の親クラスである旨の情報(位置関係の情報)及び当該関係クラスのオントロジー情報(に含まれるOntologyName「BusinessCategoryName」)に対応付けて項目対応記憶部24に格納されているPath(前述した図7に示す例では、Path「/大分類/中分類/業種」)がデータベース解析処理部525に渡される。
データベース解析処理部525は、ステップS21において取得されたオントロジーの検索結果に含まれる文字列である「水島設計」、オントロジー解析処理部523から渡された位置関係の情報及びPathに基づいて、構造化データを検索するための検索式、例えばXQuery式を生成する(ステップS33)。なお、検索式は、例えばXPath式のような構造化検索式であっても構わない。
この場合、例えば「//大分類/中分類[業種ftcontains“水島設計”]」のようなXQuery式が生成される。このXQuery式によれば、Path「/大分類/中分類/業種」の階層構造を有し、当該「業種」のタグより下の階層において「水島設計」を含む構造化データが検索される。つまり、図11に示すような階層構造の構造化データが構造化データベースアクセス部53によって検索されることになる。
一方、関係クラスである「BusinessCategoryクラス」が今回ターゲットとなるクラスである「Companyクラス」の例えば子クラスである場合には、例えば「//大分類/中分類[text()=“水島設計”]」のようなXQuery式が作成される。このXQuery式によれば、Path「/大分類/中分類/業種」の階層構造を有し、当該業種の1つ上の階層である「中分類」タグの値に「水島設計」が含まれる構造化データが検索されることになる。
次に、項目対応処理部524は、上記したXQuery式に応じて検索された構造化データ上のノードの位置を示すPath、ステップS21において取得されたオントロジーの検索結果に含まれるオントロジー情報及びスコアを項目対応記憶部24に格納(記録)する(ステップS34)。なお、スコアは、デフォルト値(例えば、50)とする。ステップS34の処理が実行されると、ステップS27の処理が実行される。
一方、ステップS31において関係クラスのオントロジー情報が項目対応記憶部24内に存在しないと判定された場合には、ステップS29の処理が実行される。つまり、この場合には全文検索が実行されることになる。
上記したように本実施形態においては、オントロジーの検索結果に含まれるオントロジー情報(例えばOntologyName)が項目対応記憶部24内に存在しない場合であっても、オントロジー格納部22から関係クラスのオントロジー情報が検索され、当該関係クラスのオントロジー情報に対応付けて項目対応記憶部24に格納されているPathに基づいてXQuery式が生成される。
つまり、本実施形態においては、前述した第2の実施形態においてはオントロジーの検索結果に含まれるオントロジー情報が項目対応記憶部24内に存在しない場合には全文検索が実行されるのに対して、当該オントロジー情報が項目記憶部24内に存在しない場合であっても関係クラスのオントロジー情報に基づいてXQuery式が生成され、当該XQuery式を用いて検索が実行される。これにより、前述した第2の実施形態と比較して、オントロジーの検索結果に含まれるオントロジー情報が項目対応記憶部24内に存在しない場合であっても、より検索性能を向上させることが可能となる。
[第4の実施形態]
次に、本発明の第4の実施形態について説明する。本実施形態に係る構造化データ検索装置の構成は、前述した第2及び第3の実施形態に係る構造化データ検索装置50と同様であるため、適宜、図5を用いて説明する。
本実施形態においては、ユーザによって選択されたPathまたはユーザによって指定された当該ユーザにとって所望の検索結果に基づいて、項目対応記憶部24に格納される情報が自動的に補正(更新)される点が、前述した第2及び第3の実施形態と異なる。
以下、図12のフローチャートを参照して、本実施形態に係る構造化データ検索装置50の主として検索最適化処理部52の処理手順について説明する。
前述した図9に示すステップS21〜ステップS25の処理に相当するステップS41〜ステップS45の処理が実行される。
ステップS45の処理が実行されると、項目対応処理部524は、当該ステップS45においてユーザによって選択されたPathに対応付けて項目対応記憶部24に格納されているスコアに予め定められた値を加点する(ステップS46)。これにより、以後の検索においては、この加点されたスコアが活用される。
次に、前述した図9に示すステップS26〜ステップS28の処理に相当するステップS47〜ステップS49の処理が実行される。
ステップS49において構造化データの検索結果がユーザにとって所望の結果でないと判定された場合(ステップS49のNO)、項目対応処理部524は、ステップS45においてユーザによって選択されたPathに対応付けて項目対応記憶部24に格納されているスコアから予め定められた値を減点する(ステップS50)。
ステップS50の処理が実行されると、前述した図9に示すステップS29の処理に相当するステップS51の処理が実行される。
ここで、ステップS51における全文検索の検索結果である複数の構造化データは、ユーザに対して提示される。ユーザは、提示された複数の構造化データの中から、当該ユーザにとって所望の構造化データを指定することで、当該所望の構造化データを表示させることができる。
このとき、項目対応処理部524は、ユーザによって指定された構造化データ(ユーザにとって所望の構造化データ)及びステップS41によって取得されたオントロジーの検索結果に含まれるオントロジー情報に基づいて、新たなPath、オントロジー情報及びスコアを対応付けて項目対応記憶部24に格納(記録)する(ステップS52)。以下、便宜的に、新たに項目対応記憶部24に格納されるPath、オントロジー情報及びスコアをそれぞれ対象Path、対象オントロジー情報及び対象スコアと称する。
対象Pathは、ユーザによって指定された構造化データの階層構造を取得することによって生成される。具体的には、ユーザによって指定された構造化データ(ユーザにとって所望の構造化データ)の階層構造において、例えば最上位のタグから上記したステップS41において取得されたオントロジーの検索結果に含まれる文字列(ここでは、「水島設計」)を値として含むタグまでの階層構造が対象Pathとして生成される。
対象オントロジー情報は、上記したステップS41において取得されたオントロジーの検索結果に含まれるオントロジー情報である。対象スコアは、デフォルト値(例えば、50)に設定される。
なお、対象スコアは、項目対応記憶部24において対象オントロジー情報と同一のオントロジー情報に対応付けられている他のスコアと比較して高く設定される構成であってもよい。具体的には、対象スコアの値は例えば、50)に設定され、他のスコアの値が当該対象スコア以下となるように減点される。これにより、XQuery式の生成において、対象Pathが他のPathと比較して優先的に用いられることとなる。
このように本実施形態においては、項目対応記憶部24に格納されていなかった対象Path、対象オントロジー情報及び対象スコアを自動的に当該項目対応記憶部24に格納することができる。
一方、ステップS49において構造化データの検索結果がユーザにとって所望の結果であると判定された場合(ステップS49のYES)、項目対応処理部524は、上記したステップS45においてユーザによって選択されたPathに対応付けて項目対応記憶部24に格納されているスコアに予め定められている値を加点する(ステップS53)。
また、ステップS43においてオントロジー解析処理部523によって抽出されたオントロジー情報が項目対応記憶部24に存在しないと判定された場合には、前述した図10に示すステップS30〜ステップS34の処理が実行された後、ステップS48以降の処理が実行される。
また、前述した図10に示すステップS31において関係クラスのオントロジー情報項目対応記憶部24内に存在しないと判定された場合には(ステップS31のNO)、ステップS51の処理が実行される。
上記したように本実施形態においては、全文検索が実行された際に、当該検索結果のうち、ユーザにとって所望な構造化データが当該ユーザによって指定された場合に、当該構造化データに基づいて、新たなPath、オントロジー情報及びスコアが項目対応記憶部24に格納(登録)される。
また、本実施形態においては、ユーザによって選択されたPathに対応付けて項目対応記憶部24に格納されているスコアを加点する。
また、本実施形態においては、項目対応記憶部24に格納されているPathに基づいて生成されたXQuery式による検索結果がユーザにとって所望の結果であると判定された場合には、当該Pathに対応付けて項目対応記憶部24に格納されているスコアを加点する。一方、ユーザにとって所望の結果でない場合には、スコアを減点する。
換言すれば、本実施形態においては、例えばユーザの操作(Pathの選択、所望な検索結果の指定)に応じて、項目対応記憶部24に格納されているスコアを自動的に変更することができる。
このように、本実施形態においては、項目対応記憶部24(に格納される情報)を例えばユーザにとって所望の構造化データが検索されたか否かに応じて自動的に補正(更新)することができるため、より検索性能を向上させることが可能となる。
具体的には、新たなPath、オントロジー情報及びスコアが項目対応記憶部24に格納されることで、次回、同様の検索が実行される場合に、当該Pathに基づいて生成されたXQuery式を用いて検索することが可能となるため、より検索性能を向上させることができる。
また、上記したように項目対応記憶部24に格納されているスコアを加点または減点させることで、例えばオントロジーの検索結果に含まれるオントロジー情報が項目対応記憶部24に複数存在する場合において、前述したようにスコアが最も高いオントロジー情報に対応付けられているPathを自動的に選択させるような設定がされている場合であっても、ユーザの意図を反映したようなPathが選択されるため、検索性能を向上させることができる。
なお、本願発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
10…コンピュータ、20…外部記憶装置、30,50…構造化データ検索装置、22…オントロジーデータベース(オントロジー格納手段)、23…構造化データベース、24…項目対応記憶部(項目対応格納手段)、31,51…アプリケーション、32…オントロジーアクセス部、33,53…構造化データベースアクセス部(構造化データ検索手段)、52…検索最適化処理部、521…アプリケーション連携処理部、522…中央処理部、523…オントロジー解析処理部、524…項目対応処理部、525…データベース解析処理部(検索式生成手段)。