(57)【特許請求の範囲】
【請求項１】
プロセッサを備え、複数の情報源から与えられたＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索するデータ分析装置であって、
前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードを対応させるための文字列または数値または日付にマッチする変数の集合を、比較対象変数集合と呼ばれる集合として抽出する、クエリ分析手段と、
前記ＳＰＡＲＱＬ検索クエリから、前記第一の情報源に含まれるノードと前記第二の情報源に含まれるノードにマッチする変数をそれぞれ選び、対応変数と呼ばれる変数として選択する対応変数計算手段と、
前記クエリを含み、前記プロセッサに投入されるＳＰＡＲＱＬ検索クエリを分析し、前記比較対象変数集合および前記対応変数のうち頻繁に使用されるものを計算し、そのような比較対象変数集合がマッチすべき文字列や数値や日付の値を、予め決められた文字列を挟んで結合して構成したＵＲＩを新たなノードとして生成し、前記対応変数がマッチするノードと前記新たなノードのＵＲＩとを接続して前記ＲＤＦデータを拡張するノード追加手段と、
前記ＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索する検索手段とを備え、
前記検索手段は、元の前記ＲＤＦデータを検索する前記ＳＰＡＲＱＬ検索クエリに加えて、前記拡張されたＲＤＦデータを検索対象とするＳＰＡＲＱＬ検索クエリを検索可能に構成されている
ことを特長とするデータ分析装置。
【請求項２】
請求項１のデータ分析装置であって、
前記ノード追加手段は、
拡張により検索を高速化したい前記比較対象変数集合を選択し、該比較対象変数集合を計算する際に用いた前記ＳＰＡＲＱＬクエリから、ノード追加に不要な条件を消去した簡略化クエリを作成する
ことを特長とするデータ分析装置。
【請求項３】
請求項１のデータ分析装置であって、
ＳＰＡＲＱＬ自動書換え手段を備え、
該ＳＰＡＲＱＬ自動書換え手段は、
元のＲＤＦデータを検索するＳＰＡＲＱＬ検索クエリが入力された場合であっても、前記比較対象変数集合に関する条件を、前記ノード追加手段が追加した前記新たなノードのＵＲＩに対する条件に自動的に置き換える
ことを特長とするデータ分析装置。
【請求項４】
請求項１のデータ分析装置であって、
前記対応変数計算手段は、
前記比較対象変数集合が対応付けている前記第一の情報源と前記第二の情報源のそれぞれから、その前記比較対象変数集合により対応付けるノードに該当する前記変数として、有向パスによってすべての前記比較対象変数集合の変数に到達可能なものがあれば、それを選択する
ことを特長とするデータ分析装置。
【請求項５】
請求項４のデータ分析装置であって、
前記対応変数計算手段は、
前記有向パスによってすべての前記比較対象変数集合の変数に到達可能なノードがなければ、前記比較対象変数集合の各変数までのパス上にあるノードの数が、最小となるノードがあればそれを選択する
ことを特長とするデータ分析装置。
【請求項６】
請求項４のデータ分析装置であって、
ユーザインタフェースを提供するユーザインタフェース部を備え、
前記対応変数計算手段は、
前記対応させたい変数をユーザが選ぶインタフェースを、前記ユーザインタフェース部に提供する
ことを特長とするデータ分析装置。
【請求項７】
請求項２のデータ分析装置であって、
ユーザインタフェースを提供するユーザインタフェース部を備え、
前記ノード追加手段は、
前記新たなノードが追加された拡張されたＲＤＦデータが生成された場合、前記比較対象変数集合および対応させた前記ノードを表す変数を、前記簡略化クエリとともに出力し、どのようなノードに対して新しいノードが追加されたかをユーザインタフェース部に表示し、ユーザが判別可能な状態にする
ことを特長とするデータ分析装置。
【請求項８】
請求項１のデータ分析装置であって、
前記ＲＤＦデータは、複数の情報源に由来する医療データである
ことを特長とするデータ分析装置。
【請求項９】
請求項８のデータ分析装置であって、
前記ＲＤＦデータは、ＲＤＦ化した医事会計データと電子カルテを含み、
前記ノード追加手段は、患者IDと入院日をまとめたノードを前記新たなノードとして追加し拡張されたＲＤＦデータを生成し、
前記検索手段は、前記新たなノードにより、前記ＲＤＦ化した医事会計データと前記ＲＤＦ化した電子カルテのデータを横断的に利用して検索を行う
ことを特長とするデータ分析装置。
【請求項１０】
請求項１のデータ分析装置であって、
前記ノード追加手段は、
前記「頻繁に使用される」と判定する条件として、fをユーザが与えるパラメータとするとき、投入される前記ＳＰＡＲＱＬクエリに占める当該比較対象変数集合が使用されるクエリの割合が前記f以上のものを、前記「頻繁に使用される」と判定する
ことを特長とするデータ分析装置。
【請求項１１】
データ分析装置による、複数の情報源から与えられたＲＤＦデータを拡張する方法であって、
前記データ分析装置は、プロセッサとメモリとを備え、複数の情報源から与えられたＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索するものであり、
前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードを対応させるための文字列または数値または日付にマッチする変数の集合を、比較対象変数集合と呼ばれる集合として抽出するステップと、
前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードにマッチする変数をそれぞれ選び、対応変数と呼ばれる変数として選択するステップと、
前記クエリを含み、前記プロセッサに投入されるＳＰＡＲＱＬ検索クエリを分析し、前記比較対象変数集合および対応変数のうち頻繁に使用されるものを計算し、そのような比較対象変数集合がマッチすべき文字列や数値や日付の値を、予め決められた文字列を挟んで結合して構成したＵＲＩを新たなノードとして生成し、前記対応変数がマッチするノードと前記新たなノードのＵＲＩとを接続して前記ＲＤＦデータを拡張するノード追加ステップとを含む
ことを特長とするＲＤＦデータの拡張方法。
【請求項１２】
請求項１１のＲＤＦデータの拡張方法であって、
前記ノード追加において、
拡張により検索を高速化したい前記比較対象変数集合を選択し、該比較対象変数集合を計算する際に用いた前記ＳＰＡＲＱＬクエリから、ノード追加に不要な条件を消去した簡略化クエリを作成し、
どのようなノードに対して新しいノードが追加されたかをユーザインタフェース部に表示する
ことを特長とするＲＤＦデータの拡張方法。
【請求項１３】
請求項１１のＲＤＦデータの拡張方法であって、
前記データ分析装置に、元のＲＤＦデータを検索するＳＰＡＲＱＬ検索クエリが入力された場合であっても、前記比較対象変数集合に関する条件を、前記追加された新たなノードのＵＲＩに対する条件に自動的に置き換えるＳＰＡＲＱＬ自動書換えステップを含む
ことを特長とするＲＤＦデータの拡張方法。
【請求項１４】
複数の情報源から与えられたＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索するデータ分析プログラムあって、
プロセッサを備えたコンピュータに、
前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードを対応させるための文字列または数値または日付にマッチする変数の集合を、比較対象変数集合と呼ばれる集合として抽出する手順と、
前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードにマッチする変数をそれぞれ選び、対応変数と呼ばれる変数として選択する手順と、
前記クエリを含み、前記プロセッサに投入されるＳＰＡＲＱＬ検索クエリを分析し、前記比較対象変数集合および対応変数のうち頻繁に使用されるものを計算し、そのような比較対象変数集合がマッチすべき文字列や数値や日付の値を、予め決められた文字列を挟んで結合して構成したＵＲＩを生成し、前記対応変数がマッチするノードと前記ＵＲＩを接続して前記ＲＤＦデータを拡張する手順とを実行させる
ことを特長とするデータ分析プログラム。
【請求項１５】
請求項１４のデータ分析プログラムであって、
前記コンピュータに
元のＲＤＦデータを検索するＳＰＡＲＱＬ検索クエリが入力された場合であっても、前記比較対象変数集合に関する条件を、前記追加された新たなノードのＵＲＩに対する条件に自動的に置き換えるＳＰＡＲＱＬ自動書換え手順を実行させる
ことを特長とするデータ分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＰＡＲＱＬ検索クエリによるＲＤＦデータの検索に係り、特に、複数の情報源に由来するＲＤＦデータの検索に関する。
【背景技術】
【０００２】
今日、社会のあらゆる分野で様々な電子データが生み出されている。そうした膨大なデータから有用な知識を発見することは、計算機を用いたデータ分析技術の重要な課題である。データの種類は多種多様であるが、データ自体は通常、数値や文字列の羅列であり、それらに意味を与えることによって初めて活用可能となる。データを、意味や他のデータと関係とともに表現するために考案された枠組みとして、World Wide Web Consortium (W3C)により策定され勧告された、resource description framework (ＲＤＦ)のデータがある(非特許文献１)。ＲＤＦは、事物とそれらの関係を事物１(以下、Ｓ)、関係の種類(以下、P)、事物２(以下、O)の３つの値の組(以下、３つ組み)で表現する。ある３つ組のOは別の３つ組のＳとなることができ、Ｓも別の３つ組のOとなることができる。したがって、ＲＤＦデータは、有向グラフで表現される。有向グラフとは、点を、向きがある線で結んだものである。有向グラフにおいて、点はノード、線はエッジと呼ばれる。ＲＤＦの有向グラフでは、ノードおよびエッジにSやOの識別子であるuniform resource identifier(URI)と呼ばれ、任意の事物を区別することができる識別子が付与されている。ノードのＵＲＩはそのノードに対応する事物を、エッジのＵＲＩは結ばれている事物がどのような関係にあるかを表す。SのURIからOのURIの向きに、Pがラベルとして付与されたエッジを作成することで、ＲＤＦデータに基づく有向グラフが構築できる。【０００３】
特許文献１には、リソース(SまたはO)を比較し、双方のリソースが同一であると判断した場合には同一のＵＲＩを当該リソースに付与する技術が開示されている。【０００４】
大量のＲＤＦデータを扱うときに必要となるのが、ユーザが必要とする情報を、大量のＲＤＦデータの中から検索し、検索条件に合致した箇所を提示する処理である。【０００５】
ＲＤＦデータを検索するための検索クエリの仕様として、SPARQL Protocol and RDF Query Language (ＳＰＡＲＱＬ)と呼ばれる規格がWorld Wide Web Consortium (W3C)により策定され勧告されている(非特許文献２)。ＳＰＡＲＱＬは、ＲＤＦのグラフ構造において、検索条件を満たす部分構造を記述するものである。ＳＰＡＲＱＬで記述された検索クエリを高速化することは、ＲＤＦデータを活用する際に重要である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2006-302085号公報
【非特許文献】
【０００７】
【非特許文献１】”RDF Primer”, http://www.w3.org/TR/rdf-primer/, W3C Recommendation, 10 February, 2004
【非特許文献２】”SPARQL Query Language for RDF”, http://www.w3.org/TR/rdf-sparql-query/, W3C Recommendation, 15 January, 2008
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＲＤＦデータを検索する際、複数の情報源から得られたＲＤＦデータを組み合わせて検索したい場合がある。たとえば、情報源１から得られたＲＤＦデータには、名前、生年月日と住所が記録されており、情報源２から得られたＲＤＦデータには、名前、生年月日、職業が記録されているとする。そこで、それぞれの情報源１、２のＲＤＦデータを参照し、名前と生年月日が一致するデータを同一人物とみなし、両者のデータを統合して名前、住所、職業のリストを得るような処理が、複数の情報源から得られたＲＤＦデータを組み合わせて検索する処理に相当する。このような処理は、情報源１、情報源２が大きくなると、ＲＤＦグラフ上でクエリに合致するかの検討が必要になる箇所が増え、処理時間が増大する。【０００９】
特許文献１に記載の方法は、ＲＤＦ（複数の情報源）に格納されているデータの中に、等しいと思われるものがないかを探し、そのようなものがあれば統合する手段を提供する。しかし、同一性の判定にはしばしばエラーが入る恐れがあり、ＲＤＦデータの再構築過程で元の情報源に影響を及ぼし、本来は異なるデータを統合してしまったり、統合すべきものを見落したりする恐れがある。【００１０】
本発明の主たる解決課題は、複数の情報源から得られた大量のＲＤＦデータを、ＳＰＡＲＱＬで記述された検索クエリにより相互に対応づけて、高速に検索可能とし、かつ、元の各情報源には影響を及ぼさないようにすることにある。
【課題を解決するための手段】
【００１１】
本発明は、上記課題を解決する複数の手段を複数含んでいるが、代表的なものの一例を挙げると、データ分析装置を、複数の情報源から与えられたＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索するデータ分析装置であって、前記ＳＰＡＲＱＬ検索クエリから、第一の情報源に含まれるノードと第二の情報源に含まれるノードを対応させるための文字列または数値または日付にマッチする変数の集合を、比較対象変数集合と呼ばれる集合として抽出するクエリ分析手段と、前記ＳＰＡＲＱＬ検索クエリから、前記第一の情報源に含まれるノードと前記第二の情報源に含まれるノードにマッチする変数をそれぞれ選び、対応変数と呼ばれる変数として選択する対応変数計算手段と、前記プロセッサに投入されるＳＰＡＲＱＬ検索クエリを分析し、前記比較対象変数集合および前記対応変数のうち頻繁に使用されるものを計算し、そのような比較対象変数集合がマッチすべき文字列や数値や日付の値を、予め決められた文字列を挟んで結合して構成したＵＲＩを新たなノードとして生成し、前記対応変数がマッチするノードと前記新たなノードのＵＲＩとを接続して前記ＲＤＦデータを拡張するノード追加手段と、前記ＲＤＦデータを対象としてＳＰＡＲＱＬ検索クエリを検索する検索手段とを備え、前記検索手段は、元の前記ＲＤＦデータを検索する前記ＳＰＡＲＱＬ検索クエリに加えて、前記拡張されたＲＤＦデータを検索対象とするＳＰＡＲＱＬ検索クエリを検索可能に構成する。
【発明の効果】
【００１２】
本発明によれば、複数の情報源から得られた与えられた大量のＲＤＦデータを、元の各情報源には影響を及ぼさずに、相互に対応付け拡張されたＲＤＦデータとして検索対象にできるので、すばやく検索可能となる。【００１３】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第一の実施形態に係るデータ分析装置の構成例を示す図。
【図２】複数の情報源からなるＲＤＦデータの一例を説明する図。
【図３】第一の実施形態のデータ分析装置による処理の概要を示す図。
【図４】第一の実施形態のデータ分析装置における、処理に係るデータの流れを示す図。
【図５】複数の情報源からなり、図２の例よりも大量のデータを含むＲＤＦの一例を説明する図。
【図６】ＳＰＡＲＱＬ検索クエリの一例を説明する図。
【図７】図６のＳＰＡＲＱＬ検索クエリで検索対象となる、部分グラフ構造を説明する図。
【図８】第一の実施形態の、クエリ分析手段の制御ロジックを示すフローチャート。
【図９】第一の実施形態の、対応変数計算手段の制御ロジックを示すフローチャート。
【図１０】第一の実施形態の、ノード追加手段の制御ロジックの概要を示すフローチャート。
【図１１】第一の実施形態のノード追加手段の、簡略化クエリ構築処理の制御ロジックを示すフローチャート。
【図１２】第一の実施形態のノード追加手段の、簡略化クエリを用いてノードを追加する処理の制御ロジックを示すフローチャート。
【図１３】第一の実施形態の、簡略化クエリの一例を説明する図。
【図１４】図５のＲＤＦにノード追加手段によりノードが追加された、拡張されたＲＤＦデータの一例を説明する図。
【図１５】本発明の第二の実施形態に係る、医療データの一例を説明する図。
【図１６】医療データを対象とするＳＰＡＲＱＬクエリの一例を説明する図。
【図１７】第二の実施形態の、医療データに追加ノードを加えた状態の一例を説明する図。
【図１８】本発明の第三の実施形態に係る、入力されたＳＰＡＲＱＬクエリを自動的に高速化する手段の制御ロジックを示すフローチャート。
【発明を実施するための形態】
【００１５】
本発明は、複数の情報源に基づき得られたＲＤＦデータを横断的に活用するシステムの性能向上に適用可能である。  
以下、本発明の実施の形態について図面を参照しつつ説明する。
【実施例１】
【００１６】
以下、本発明の第一の実施例について、図面を参照しつつ説明する。  
図１は、本発明の第一の実施形態のデータ分析装置１００の構成例を示す図である。データ分析装置１００は、ＣＰＵ（Central Processing Unit）１０１、主記憶装置（メモリ）１０２、補助記憶装置１０３、リムーバブルメディア１０４、ユーザインタフェース部１０６を備える。このデータ分析装置１は、ＬＡＮ（Local Area Network）等のネットワーク１０５を介して外部のネットワークに接続されている。主記憶装置１０２には、ＣＰによって実行される各種のプログラム及びこれらのプログラムをＣＰＵ１０１で実行するのに必要な各種のデータが保持されている。主記憶装置１０２は、少なくとも、データ分析プログラム及び、上記データ分析プログラムに対する入力であり検索対象でもあるＲＤＦデータ１１１（１）等を記憶するＲＡＭ（Random Access Memory）等の記憶装置である。主記憶装置１０２に格納された上記データ分析プログラムをＣＰＵ１０１が実行することにより、コンピュータを、クエリ分析手段１０７、対応変数計算手段１０８、ノード追加手段１０９、及び、検索手段１１４として機能させる。クエリ分析手段１０７、対応変数計算手段１０８、ノード追加手段１０９は、全体として拡張ノード追加手段１１０を構成し、拡張ノードの追加により、元の個々のＲＤＦデータを拡張されたＲＤＦデータに変換する。【００１７】
補助記憶装置１０３は、ＲＤＦデータ１１１（２）等を記録可能なＨＤＤ等の記憶装置である。リムーバブルメディア１０４は、ＲＤＦデータ１１１（３）等を記録可能なＣＤ−ＲＯＭ、ＤＶＤ等の記録媒体である。補助記憶装置１０３およびリムーバブルメディア１０４に記録された各データは、必要に応じてデータ分析装置１の起動時に主記憶装置１０２に読み出される。各ＲＤＦデータ１１１には、複数の情報源１１３が含まれている。【００１８】
ユーザインタフェース部１０６は、ユーザインタフェースを提供する入出力装置（例えば、キーボード、マウス、ディスプレイ）である。【００１９】
以上に示す装置構成において、ＣＰＵ１０１は、主記憶装置１０２、補助記憶装置１０３、リムーバブルメディア１０４、又は、ネットワーク１０５を介した外部から、必要に応じてＲＤＦデータ１１１（４）等を取得する。その後、取得したＲＤＦデータ１１１に対し、後述の検索高速化用ノードの追加や、ＳＰＡＲＱＬによる検索を行なう。【００２０】
図２は、２つの情報源１１３ａ，１１３ｂからなるＲＤＦデータ１１１の例を簡単に説明する図である。情報源１（１１３ａ）から得られたＲＤＦデータ１１１では、ＵＲＩとしてex1:person1の識別子を有するノードと、（Alice）、(19800101)、(London)の記録された各ノードとが、各々どのような関係に有るか（名前，生年月日，住所）を表すエッジで結ばれている。同様に、情報源２（１１３ｂ）から得られたＲＤＦデータ１１１では、ＵＲＩとしてex2:customer1の識別子を有するノードと、名前、電話番号、生年月日、職業の記録された各ノードとが、エッジで、間接あるいは直接に結ばれている。但し、２つの情報源１、２に、例えば同じ名前（Alice）が含まれているとしても、この段階のＲＤＦデータには、それが同一人物か否かを示すエッジは存在しない。【００２１】
本発明の拡張ノード追加手段１１０は、異なるＲＤＦデータに存在するノード間に特定の関係がある場合には、新たなノードおよびエッジを追加する処理を行なう。【００２２】
図３は、本発明の第１の実施形態のクエリ分析およびノード追加を行なう処理の概要を示す図であり、図４は各処理手段が協調動作する処理シーケンスを示す図である。図５は、図２の例よりも大量のデータを含むＲＤＦの一例である。【００２３】
まず、図３における、個々の処理の概略を述べる。  
（１）ＲＤＦデータの入力及び検索手段１１４による検索
ＲＤＦデータ１１１は、予め、主記憶装置１０２や補助記憶装置１０３等に複数の情報源として保存されている。さらに、ユーザにより、ユーザインタフェース部１０６を介してＣＰＵ１０１にＳＰＡＲＱＬ検索クエリ（以下、ＳＰＡＲＱＬクエリ）４００が入力され、これに基づいて、検索手段１１４による複数の情報源のＲＤＦデータ１１１に対するＳＰＡＲＱＬクエリの検索が実行され、その検索結果は主記憶装置１０２に保持されると共に、ユーザインタフェース部１０６にも出力される。
（２）クエリ分析手段１０７
クエリ分析手段１０７は、ＳＰＡＲＱＬで記述されたクエリを分析し、複数の情報源(以下、情報源１と２)から対応するデータを得るために、比較対象となる値にマッチする変数の集合を取得する。例えば図２や図５のＲＤＦの例では、対応させたいデータはex1:person1やex2:customer1といったノードであり、比較対象となる値は名前と生年月日である。【００２４】
クエリ分析手段１０７は、図６に示すようなＳＰＡＲＱＬクエリ４００を入力とする。このＳＰＡＲＱＬクエリ４００は、図７に示すようなグラフに一致する部分構造を、ＲＤＦデータから検索するクエリである。このグラフを、以下ではクエリグラフと呼ぶ。図６、図７において、「?target_a」のような「?」で始まりアルファベットや「_ (アンダースコア)」が続くものが変数であり、ＲＤＦデータの文字列や数値や日付、その他のノードにマッチさせることができる。図６のＳＰＡＲＱＬクエリ４００では、図２や図５の左の情報源１のグラフから名前と生年月日を取得し、図２や図５の右の情報源１のグラフからも名前と生年月日を取得する。【００２５】
クエリ分析手段１０７は、ＳＰＡＲＱＬクエリ４００の個々の変数について、図８に示す方法で、複数の情報源から対応するデータを得るために比較される変数か否かを判定し、そのような変数と判定されたものの集合を生成する。【００２６】
図８の制御ロジックを参照しつつ、判定手順を述べる。以下の説明では、判定対象となる変数名を?xとする。  
S801: ?xが文字列や数値や日付の定数にマッチするかを判定する。定数以外にマッチする場合は、比較対象変数としない。  
S802: 一方の情報源のみに存在するURIが付与されたノードまたはエッジと?xを、この情報源に存在するPだけを用いた経路で結ぶことができるかを判定する。結ぶことができなければ、?xは比較対象変数としない。  
S803: もう一方の情報源のみに存在するURIが付与されたノードまたはエッジと?xを、その情報源に存在するPだけを用いた経路で結ぶことができるかを判定する。結ぶことができれば、?xを比較対象変数とする。  
S804: ?yを?x以外の変数とするとき、?xが「filter(?x = ?y)」あるいは「filter(?y = ?x)」の形式でfilter条件に出現していなければ、比較対象変数としない。
S805: 上記の?yが、もう一方の情報源のみに存在するURIが付与されたノードまたはエッジと、前記情報源に存在するPだけを用いた経路で結ぶことができるかを判定する。結ぶことができれば、比較対象変数とし、結ぶことができなければ比較対象変数としない。 
図７の部分グラフ構造の例を用いて、具体的に説明する。?nameが比較対象変数とすべきかを判定する場合について説明する。?nameは、文字列にマッチする。情報源1にしかないP (例えばex1:addr)に、情報源1に存在するP (?ex1:name, ex1:addrまたはex1:date_of_birth)で到達可能である。かつ、情報源2にしかないP (例えば、ex2:precord)に、情報源2に存在するP (?ex2:name, ex2:birthday, ex2:precordまたはex2:workFor)で到達可能である。したがって、?nameは比較対象変数となる。一方、?birthday1を比較対象変数とすべきか判定する場合についても説明する。?birthdayは、日付にマッチする。さらに、情報源1にしかないex1:addrに、情報源1に存在するPで到達可能である。?birthday1はfilterで?birthday2と比較されているが、?birthday2は情報源2にしかないex2:workForに、情報源2に存在するPで到達可能である。従って、?birthday1も、比較対象変数となる。【００２７】
このようにして、クエリ４００に含まれる各変数が異なる情報源のデータを対応付ける際、比較対象であるか否かを判定する。比較対象と判定された変数の集合を、以下では比較対象変数集合と呼ぶ。
（３）対応変数計算手段１０８
対応変数計算手段１０８は、比較対象変数集合が対応付けている、２つの情報源のそれぞれから、ノードにマッチする対応変数を１つずつ選ぶ。ユーザインタフェース部１０６を介してユーザに選択させてもよいが、以下のように自動的に計算してもよい。まず、対応変数としては、各情報源の３つ組だけを用いてS→Oの方向に３つ組みを順次辿る経路(有向パス)によってすべての比較対象変数集合の変数に到達可能なものがあれば、それを選択することが好ましい。例えば、図７の例では、?target_a， ?target_bが該当する。そのようなノードがなければ、逆向き(O→Sの向き)の３つ組みの数がなるべく少ないノードを選択する。【００２８】
この処理について、図９の制御ロジックを用いて詳細を説明する。  
S901: 変数Uを比較対象変数集合に、変数iを１にセットする。以下、各情報源について、対応変数を選択していく。iは、各情報源に対応し1から2まで変化する変数である。  
S902: Viを、i番目の情報源に存在するPに接続された、クエリグラフ中の変数の集合とする。例えば図７の例では、情報源１のex1:name, ex1:date_of_birth, ex1:addrに接続されている?addr, ? name, ?birthday, ?target_aがViの要素となる。以下、?v2が対応変数の候補となるように処理を進める。変数Dに、値として無限大(∞)をセットする。
S903: ?vをViのj番目の変数とする。jは、1からViの大きさに一致する値まで変化する変数である。また、変数dを0で初期化する。さらに、kを1にセットする。kは、1からUの大きさに一致する値まで変化する変数である。
S904: ?uをUのk番目の変数とする。  
S905: ?vから?uへ至る、情報源1のPだけを通る最短経路を求める。例えば、図７の例では?addrから? nameへの最短経路は?addr-?target_a-?nameである。この経路を、以下ではpとする。最短経路の同定には、例えば公知のDijkstraのアルゴリズム(Cormen他著、Introduction to algorithms 3rd edition, the MIT press, 658-662ページ)が使用できる。
S906: pにおいて、有向パス?v→?uに沿った向きのエッジの数をe1, 反対向きのエッジの数をe2とする。上記のpの例では、有向パス?v→?uに沿った向きのエッジはex1:nameのみなのでe=1、反対向きのエッジはex1:addrのみなので、e2=1である。この経路pのスコアをe1+e2×rにより計算する。ただし、rはユーザが与えるパラメータである。rを∞とすれば逆向きのエッジを禁止することができる。逆向きのエッジを許容するならrを有限の値とする。このスコアを、これまでに計算した経路の最大スコアdと比較し、大きい方を新たにdの値とする。
S907: kを変化させ、すべての比較対象変数を処理する。
S908: D>dならば、D←d, ?v2←?vとする。  
S909: jを変化させ、すべてのViの変数を処理する。  
S910: Viの変数すべてを処理すると、Dが∞でなければ、?v2には比較対象変数への経路の最大値が最も小さい変数が格納されている。この変数を、情報源iの対応変数として出力する。Dが∞ならば、比較対象変数に到達可能な変数が無いことを意味するので、情報源iの対応変数は出力しない。  
S911: iを変化させ、両方の情報源を処理する。
（４）ノード追加手段１０９
ノード追加手段１０９は、頻繁に使用される比較対象変数集合を、効率よく処理し検索を高速化するために、２つの情報源に対して検索高速化用のノードを追加し、ＲＤＦデータを拡張する。「頻繁に使用される」と判定する手段として、一例を挙げると、fをユーザが与えるパラメータとするとき、投入される全てのＳＰＡＲＱＬクエリに占める当該比較対象変数集合が使用されるクエリの割合がf以上のものを頻繁に使用されると判定する、といった手段が考えられる。【００２９】
図１０の制御ロジックを参照しつつ、ノード追加手段の詳細を述べる。  
S1001: まず、ノードを追加することにより検索を高速化したい比較対象変数集合を選択する。  
S1002: 次に、その比較対象変数集合を計算する際に用いたＳＰＡＲＱＬクエリから、ノード追加に不要な条件を消去した簡略化クエリを作成する。簡略化クエリの作成方法は、図１１を用いて後述する。
S1003: 簡略化クエリを用いて、ノードの追加を行なう。この方法は、図１２を用いて後述する。【００３０】
図１１を用いて、簡略化クエリの作成方法（図１０のS1002）の詳細を述べる。  
S1101: 変数UをS1001で選択された比較対象変数集合、Vを対応変数計算手段１０８で計算された対応変数の集合、QをU,Vを得るために使用したＳＰＡＲＱＬクエリとする。以下、変数iを1から2まで変化させ、両方の情報源について処理を行なう。  
S1102: Viを、i番目の情報源に存在するPに、クエリグラフ上で接続された変数の集合とする。また、?vをi番目の情報源の対応変数とする。さらに、変数Sを空集合に初期化する。
S1103: ?uを、Uのk番目の変数とする。以下、kを1からUの大きさに等しい値まで変化させ、すべての比較対象変数について処理を行なう。  
S1104: S905と同様に、?vと?uを結ぶ最短経路pを求める。S905と同じ方法を用いて、S905と同一の経路が得られるようにする。
S1105: 経路pに現れる、すべての変数をSに加える。  
S1106: kを変化させ、すべての比較対象変数を処理する。  
S1107: iを変化させ、両方の情報源を処理する。  
S1108: Qから、Sに無い変数を含む３つ組や、filter条件を消去する。さらに、selectの直後に書かれている変数を削除し、比較対象変数集合の変数および対応変数を追加する。こうして得られるＳＰＡＲＱＬクエリを簡略化クエリQ'として出力する。【００３１】
図１３に、簡略化クエリ５００の一例を示す。簡略化クエリ５００は、ＲＤＦデータの拡張により検索を高速化したい比較対象変数集合および対応変数を対応付けるために、ＳＰＡＲＱＬクエリ４００において、不要な条件を消去したものである。【００３２】
図１２を用いて、簡略化クエリを用いたノード追加処理（図１０のS1003）の詳細を述べる。  
S1201:変数UをS1001で選択された比較対象変数集合、Vを対応変数計算手段１０8で計算された対応変数の集合とする。また、簡略化クエリQ'による検索処理を実行し、得られた検索結果をBとする。さらに、Iを追加するノードのベースURI、Jを追加するPのURIとする。I,Jは、ユーザが与えるパラメータである。変数iを１に、変数sを文字列"_"にセットする。なお、iは、1からBの大きさに等しい値まで変化する変数である。
S1202: bをBに含まれるi番目の検索結果とする。また、変数j,kを１に、xを空文字列にセットする。  
S1203: 変数xが空文字列でない場合、xの右端に変数sの文字列を追加する。  
S1204: ?uをUのk番目の変数とする。検索結果bにおいて、変数?uに対応付けられた値をxの右端に追加する。  
S1205: 変数kを1からUの大きさに等しい値まで変化させ、すべての比較対象変数を処理する。  
S1206: 新規ノードを作成し、このノードのURIをI/x/とする。
S1207: nをVのj番目の変数が検索結果bにおいて割り当てられたノードのURIとするとき、３つ組「<I/x/> <J> <n> .」をＲＤＦデータに追加する。ただし、この３つ組が既にＲＤＦデータに存在する場合には、追加は行なわない。
S1208: 変数jを1からVの大きさに等しい値まで変化させ、すべての対応変数を処理する。
S1209: 変数iを1からBの大きさに等しい値まで変化させ、すべての検索結果を処理する。【００３３】
図１４は、図５のＲＤＦに新しいノードが追加された、拡張されたＲＤＦデータの一例である。このとき、比較対象変数集合および対応させたノードを表す変数を、前記簡略化クエリとともに出力し、元のＲＤＦデータのどのようなノードに対して新しいノードが追加されたかをユーザインタフェース部に表示し、ユーザが判別可能としておく。図１４の例では、太枠で示したように、図５の情報源１、２の名前と誕生日の比較により、元データである情報源１のex1:person1 と情報源２のex2:customer 1 とが、同一人物Aliceであると判断され、ex1:person1とex2:customer 1に対して拡張された新しいノード１００１、すなわち、ex: Alice_19800101 が追加されて、拡張されたＲＤＦデータとなっている。同様に、元データの情報源１、２に、同一人物であると判断されるノードが他に存在すれば、新しいノードを追加すればよい。また、２つの情報源に留まらず、より多くの情報源との間で、拡張されたＲＤＦデータを形成しても良い。【００３４】
図５のＲＤＦデータでは、検索では情報源１、２の文字列や日付を個別に比較する必要があり、同一人物を全て特定する処理に、時間を要する。ＲＤＦデータが大量になるほど、この問題は大きくなる。ノード追加手段１０９が拡張したＲＤＦデータを検索に用いることで、拡張対象となった比較対象の変数集合を含むＳＰＡＲＱＬクエリを高速化できる。検索時に、この新たに加えたＲＤＦデータを検索対象とすることで、従来のように個々の値を取得する必要が無くなり、検索処理が高速化される。【００３５】
具体的には、ユーザが検索手段１１４により検索クエリを投入する際に、比較対象変数集合をＳＰＡＲＱＬクエリに記述する代わりに、上記で生成した３つ組「<I/x/> <J> <n> .」、すなわち、拡張された新しいノード１００１を検索条件に指定すればよい。これにより、プロセッサによる検索処理が高速化される。【００３６】
また、新しいノードの追加は、元の各情報源１，２のＲＤＦデータを統合する必要がなく、言い換えると元の各情報源１，２のＲＤＦデータは何らの影響を受けずにそのまま残っている。データの統合とは異なり、拡張ノードの追加が有ったとしても、従来のプログラムによる情報源１や情報源２の検索には、何らの影響も及ぼさない。新しいノードおよびエッジを追加するだけなので、検索手段１１４により従来のプログラムによる従来のＳＰＡＲＱＬクエリを使用した、新しいノードを含まない条件での検索も可能である。例えば、従来のプログラム自体は変更せず、そのプログラムの前処理等に、本実施例の拡張されたＲＤＦデータに新しいノードを追加する機能や新しいノードを対象として検索する機能をアドオンすることで足りる。【００３７】
元の各情報源１，２のオリジナルのＲＤＦデータは、そのまま利用できるので、図１４の例で、仮に、名前と誕生日が一致するにも拘わらず、拡張ノードのAliceは同一人物でないような事例が生じた場合には、元の各情報源１，２のオリジナルのＲＤＦデータを利用し再検索し、より正確な情報で適切な拡張ノードを生成することもできる。【００３８】
以上述べた通り、本実施例によれば、複数の情報源から与えられた大量のＲＤＦデータを、元の各情報源には影響を及ぼさずに、相互に対応付け拡張されたＲＤＦデータとして検索対象とするので、より高速に検索可能となる。
【実施例２】
【００３９】
次に、本発明を、医療データへ適用した、第二の実施例について、図面を参照しつつ説明する。  
現在の医療現場では、電子カルテのデータ、検査値、医用画像データおよびそれらに付与されたメタデータと呼ばれる付加情報、診療報酬の請求に必要となる医事会計データなど、複数の情報源に由来するデータを扱う必要がある。こうしたデータをＲＤＦ化して扱うことにより、ＲＤＦデータの処理技術を医療データの分析に活用可能になると期待される。このとき、ＲＤＦ化した医療データに対する検索処理を高速化する手段として、本発明のＳＰＡＲＱＬクエリを用いたデータ分析手法が適用できる。【００４０】
処理対象データの一例を、図１５に示す。この例は、ＲＤＦ化した医事会計データと、ＲＤＦ化した電子カルテのデータを横断的に利用する例である。医事会計データは、例えば、医療機関が厚生労働省に提出するレセプト情報データから得られる(平成２５年度「ＤＰＣ導入の影響評価に係る調査」実施説明資料参照)。図１５の左側の情報源１（１１３ａ）が、医事会計データに由来するＲＤＦグラフ１１１の一例であり、account:IDが患者ID，account:admission_dateが入院日，account:pointが診療報酬の算出に使われる点数を表す。一方、図１５の右側の情報源２（１１３ｂ）が、電子カルテに由来するＲＤＦグラフ１１１であり，echart:IDが患者ID，echart:date_admissionが入院日，echart:diagnosisが診断を表す。
ここで、電子カルテのデータ（１１３ｂ）で心筋梗塞と診断された症例について、医事会計データ（１１３ａ）の点数を取得する処理について考える。このとき、医事会計データと電子カルテの患者IDを照合するだけでは、複数回入退院をしている患者が存在し得るため不十分であり、入院日も同時に照合する必要がある。そのため、図１６のＳＰＡＲＱＬクエリ４５０のような、患者IDと入院日を検索条件に含むＳＰＡＲＱＬクエリを、頻繁に処理する必要がある。このようなクエリについて、毎回、患者IDが一致するものを探し、その中で入院日が一致するものを探す処理を行なうと、入退院を繰り返している患者では、必要のない部分一致を多数検討しなければいけなくなる。しかし、医事会計データと電子カルテを統合処理する際には、患者IDおよび入院日の照合が頻繁に必要となる。【００４１】
図１７は、本発明の第二の実施形態の、医療データに追加ノードを加えた状態の一例を説明する図である。本発明の実施例１で述べた方法を用いて、患者IDと入院日をまとめたノード１２０１を生成し、ＲＤＦグラフに追加して拡張されたＲＤＦデータとする。このノード１２０１を介して電子カルテ（１１３ｂ）の症例と医事会計データ（１１３ａ）のレコードを照合することにより、両者（１１３ａ、１１３ｂ）を横断的に検索する処理を高速化できる。例えば、拡張された新しいノード：135791_20240608で照合された患者は、患者ID（135791）と複数回の入院日の１つ（20240608）とが医事会計データと電子カルテで一致する症例となる。この結果を利用し、電子カルテでは心筋梗塞と診断された症例の医事会計データの点数を容易に取得することができる。他のより多くの医療データとの間で、拡張されたＲＤＦデータを形成しても良い。【００４２】
このように、本実施例によれば、複数の医療データの情報源から与えられた大量のＲＤＦデータを、各情報源には影響を及ぼさずに、相互に対応付け拡張されたＲＤＦデータとして検索対象にすることができるので、ユーザは医療データを用途に応じて迅速に検索可能となる。
【実施例３】
【００４３】
次に、本発明の第三の実施例として、検索クエリの自動書き換えによる高速化を図った例について説明する。  
第一の実施例では、ノード追加手段１０９が拡張したＲＤＦデータを用いて検索処理を高速化するために、ユーザが検索手段１１４により入力するＳＰＡＲＱＬクエリを書き換える必要があった。しかし、このような方式では、ユーザに負担を強いることとなり、書き換え時にエラーが入る可能性も無視できない。そこで、本発明では、検索クエリのＳＰＡＲＱＬを自動的に書き換えて高速化する手段を提供する。【００４４】
これを実現するために、第三の実施例では、第一の実施例に関して図１を用いて説明したデータ分析装置１００の主記憶装置１０２に、コンピュータをＳＰＡＲＱＬ自動書換え手段として機能させるプログラムが格納されている。ユーザが検索手段１１４により入力するＳＰＡＲＱＬクエリは、自動的に、上記簡略化クエリにマッチする部分の条件が新たに追加されたノードに対する条件に書き換えられる。その他の構成は、第一の実施例と同じである。【００４５】
まず、ユーザから与えられたＳＰＡＲＱＬクエリに基づき、そのＳＰＡＲＱＬクエリが表現するクエリグラフを構築する。第一の実施例で述べたように、図７は、図６のＳＰＡＲＱＬクエリ４００から生成されたクエリグラフの例である。【００４６】
次に、このグラフを対象として、ノード追加手段１０９が使用した図１３の例のような簡略化クエリ５００を用いた検索を行なう。簡略化クエリがマッチすれば、マッチした部分を削除し、代わりに前記ノード追加手段１０９が追加したノードを、ＳＰＡＲＱＬ自動書換え手段が、ユーザの入力した検索条件に自動的に含めることで、拡張したＲＤＦデータを用いた検索が可能となる。【００４７】
この処理の詳細を、図１８を参照しつつ説明する。  
S1801: U←比較対象変数の集合, V←対応変数の集合, Q'←簡略化クエリ, q←投入された検索クエリ, i←1となるよう各変数を初期化する。
S1802: qのクエリグラフを構築する。このクエリグラフを、以下ではgと呼ぶ。
S1803: Q'がgにマッチしなければ、qは修正せずにそのまま検索する。
S1804: 変数Sに、比較対象変数集合Uをコピーする。以後、Sが空集合になるまでS1805〜S1807を繰り返す。
S1805: Sから変数をひとつ取り出す。その変数を?xとする。Sから、?xを除去する。?xに、gでQ'にマッチしなかったエッジが接続されていれば、それ以上?xは処理せずに次の変数に進む。
S1806: ?xがselectの直後に記載されていた場合には、それ以上?xは処理せずに次の変数に進む。selectの直後に記載されている変数は、ＳＰＡＲＱＬクエリqの出力に必要な変数であり、置き換えができないためである。
S1807: gで、?xとエッジで直接結ばれている変数を、すべてSに追加する。さらに、?xを含む３つ組を、qから削除する。
S1808: qのfilter条件の変数が、書き換え後のqの３つ組に現れなければ、そのfilter条件を削除。
S1809: i=1,2それぞれについて、?vをVのi番目の対応変数とするとき、クエリに、３つ組「?ident <J> ?v .」を追加する。【００４８】
この拡張されたＲＤＦデータを検索対象とするＳＰＡＲＱＬの自動書換えは、図４で、ユーザが検索手段１１０によりＣＰＵ１０１にＳＰＡＲＱＬクエリを入力したことを受けて、自動的に処理され、その結果に基づいて、主記憶装置１０２のＲＤＦデータ１１１に対する検索が実行される。従って、ユーザは、元のＳＰＡＲＱＬクエリをそのまま使用して、すなわち拡張されたＲＤＦデータを検索対象とするＳＰＡＲＱＬクエリに書き換えることなく、この拡張されたＲＤＦデータを高速に検索できる。【００４９】
以上、本発明の各実施形態について説明したが、上記実施形態は本発明の適用例を示したものであり、本発明の技術的範囲を上記各実施形態の具体的構成に限定する趣旨ではない。本発明の要旨を逸脱しない範囲において種々変更可能である。
【符号の説明】
【００５０】
１００  データ分析装置
１０１  ＣＰＵ（中央演算装置）
１０２  主記憶装置
１０３  補助記憶装置
１０４  リムーバブルメディア
１０５  ネットワーク
１０６  インタフェース部
１０７  クエリ分析手段
１０８  対応変数計算手段
１０９  ノード追加手段
１１１  ＲＤＦデータ
４００  ＳＰＡＲＱＬクエリの一例
４５０  医療データ向けのＳＰＡＲＱＬクエリの一例
５００  簡略化クエリの一例
１００１  ノード追加手段が追加するノードの一例
１２０１  ノード追加手段が、医療用データに追加したノードの一例
【図１】
0006001173.tif 000002
【図２】
0006001173.tif 000003
【図３】
0006001173.tif 000004
【図４】
0006001173.tif 000005
【図５】
0006001173.tif 000006
【図６】
0006001173.tif 000007
【図７】
0006001173.tif 000008
【図８】
0006001173.tif 000009
【図９】
0006001173.tif 000010
【図１０】
0006001173.tif 000011
【図１１】
0006001173.tif 000012
【図１２】
0006001173.tif 000013
【図１３】
0006001173.tif 000014
【図１４】
0006001173.tif 000015
【図１５】
0006001173.tif 000016
【図１６】
0006001173.tif 000017
【図１７】
0006001173.tif 000018
【図１８】
0006001173.tif 000019