JP5904082B2 - 関連検索システム、検索窓口装置、データベース及びプログラム - Google Patents
関連検索システム、検索窓口装置、データベース及びプログラム Download PDFInfo
- Publication number
- JP5904082B2 JP5904082B2 JP2012223668A JP2012223668A JP5904082B2 JP 5904082 B2 JP5904082 B2 JP 5904082B2 JP 2012223668 A JP2012223668 A JP 2012223668A JP 2012223668 A JP2012223668 A JP 2012223668A JP 5904082 B2 JP5904082 B2 JP 5904082B2
- Authority
- JP
- Japan
- Prior art keywords
- search
- node
- user
- chain
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、関連検索システム、検索窓口装置、データベース及びプログラムに関する。
特許文献1には、グループウェアで蓄積された情報の中から特定のメンバに関連する情報を有効に検索するための装置が開示される。この装置は、ユーザから関連元が指定されると、関係データベースから、その関連元に関連する人物や文書、メール等を検索する。そして、ユーザから絞り込み情報が入力されると、その関連元についての検索結果の中から、絞り込み情報に関連するもののみを抽出し、その抽出結果をユーザに提示する。
特許文献2には、人脈データベースに対して、ある人物が本人の意に反して検索され、検索結果として提示されることを防止するシステムが開示されている。このシステムは、人脈繋がりの中に存在する人ごとに、自身に繋がる知人の可否を確認する人脈確認手段を備え、この人脈確認手段が検索対象者から実行され、人脈繋がりに従い検索者側へと1人ずつ遡って順次実行される。
本発明は、検索要求元のユーザがアクセス権を持たないデータベース内にあるデータ要素に対する手がかりを、そのデータベースのセキュリティを満たしつつ検索要求元のユーザに提供できるようにすることを目的とする。
請求項1に係る発明は、アクセス権を持つユーザの集合がそれぞれ異なる複数のデータベースと、検索窓口装置と、を有し、前記検索窓口装置は、前記複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段と、検索要求元のユーザから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段と、前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段と、を有し、前記複数のデータベースの各々は、データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段と、前記検索窓口装置から前記検索要求を取得する検索要求取得手段と、取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段と、前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段と、前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段と、を有する、ことを特徴とする関連検索システムである。
請求項2に係る発明は、前記連鎖探索手段は、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノード、又は前記検索要求に含まれる前記検索条件に応じて前記データ検索手段が検索した前記検索結果のデータ要素のノード、を基点ノードとし、着目ノードに対して1つのリンクを介して接続された隣接ノードのうち当該着目ノード又は当該隣接ノードのうちの少なくとも一方があらかじめ定められた属性を有するという探索条件を満たす隣接ノードを前記グラフ記憶手段から探索する探索処理を、前記基点ノードを着目ノードとして前記探索条件を満たす隣接ノードを探索すると共に、前回の探索により求められた前記探索条件を満たす隣接ノードを次の着目ノードとして前記探索条件を満たす隣接ノードを探索する処理を繰り返すことで、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、前記検索要求に含まれる前記検索条件に応じて前記データ検索手段が検索した前記検索結果のデータ要素のノードと、の間を繋ぐ前記リンクの連鎖を求める、ことを特徴とする、請求項1に記載の関連検索システムである。
請求項3に係る発明は、前記検索窓口装置は、前記検索要求に対する前記複数のデータベースの各々からの応答情報について、それぞれ、当該応答情報が表す前記登録ユーザのノードと、前記検索条件に適合するデータ要素のノードと、を結ぶ前記リンクの連鎖のホップ数が少ないほど高くなる検索スコアを計算するスコア計算手段と、を更に有し、前記検索結果提供手段は、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記各登録ユーザの情報を、前記スコア計算手段により計算された前記検索スコアに基づいて順位付けして提供する、ことを特徴とする、請求項1又は2に記載の関連検索システムである。
請求項4に係る発明は、前記検索窓口装置は、前記検索要求元のユーザと前記各登録ユーザとの親密度の情報を記憶する親密度記憶手段と、前記検索要求に対する前記複数のデータベースの各々からの応答情報について、それぞれ、当該応答情報が表す前記登録ユーザと前記検索要求元のユーザとの親密度が高いほど高くなる検索スコアを計算するスコア計算手段と、を更に有し、前記検索結果提供手段は、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記各登録ユーザの情報を、前記スコア計算手段により計算された前記検索スコアに基づいて順位付けして提供する、ことを特徴とする、請求項1又は2に記載の関連検索システムである。
請求項5に係る発明は、複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段と、検索要求元のユーザから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段と、前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段と、を有する検索窓口装置である。
請求項6に係る発明は、データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段と、検索窓口装置から、当該データベースに対してアクセス権を持つ登録ユーザの識別情報と、検索要求元のユーザが入力した検索条件と、を含んだ検索要求を取得する検索要求取得手段と、取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段と、前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段と、前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段と、を有する、ことを特徴とするデータベースである。
請求項7に係る発明は、コンピュータを、複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段、検索要求元のユーザから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段、前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段、として機能させるためのプログラムである。
請求項8に係る発明は、コンピュータを、データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段、検索窓口装置から、当該データベースに対してアクセス権を持つ登録ユーザの識別情報と、検索要求元のユーザが入力した検索条件と、を含んだ検索要求を取得する検索要求取得手段、取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段、前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段、前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段、として機能させるためのプログラムである。
請求項1、5、6、7又は8に係る発明によれば、検索要求元のユーザがアクセス権を持たないデータベース内にあるデータ要素に対する手がかりを、そのデータベースのセキュリティを満たしつつ検索要求元のユーザに提供できる。
請求項2に係る発明によれば、検索条件に適合するデータ要素に対して、特定の属性を有するノードを介したリンクからなる連鎖を介して繋がる登録ユーザの情報を、検索要求元に提供することができる。
請求項3に係る発明によれば、検索条件に適合するデータ要素に対して関係が深い(ホップ数が少ない)登録ユーザから順に並べて、検索要求元に提示することができる。
請求項4に係る発明によれば、検索条件に適合するデータ要素に対して繋がりを持つ登録ユーザの情報を、検索要求元のユーザに親密な順に並べて提示することができる。
以下では、まず本実施形態の関連検索システムが用いる関連検索の一例について説明し、その後で、その関連検索を行う個別の検索システムを複数含んだ本実施形態の関連検索システムについて説明する。
データ要素同士の関係が構成するグラフ構造を記述する方式が知られている。例えば、事物(リソース。具体物も抽象概念を含む)同士の関係を主語、述語、目的語の組(「トリプル」と呼ばれる)で記述するRDF(Resource Description Framework)はその一例である。RDFでは、複数のトリプルにより、主語又は目的語である事物をノードとし、述語をリンク(エッジ)とするグラフが表される。また、RDFで記述されたデータを検索するコンピュータ言語として、例えばSPARQL(SPARQL Protocol and RDF Query Language)が知られている。
以下に示す実施の形態では、様々な事物同士の関係をRDFに従って記述したデータからなるデータベースを検索する例を示す。なお、事物間の関係を表す方法はRDFに限られるわけではないので、以下に示す実施の形態はRDF以外の方式でそのような関係を表すデータベースにも適用し得る。
この実施の形態の手法を理解しやすくするために、次のような事例を考える。
ユーザAがデータベースを検索し、ある電子文書Xを見つけたとする。ところが、ユーザAにはその電子文書Xのアクセス権がなく、中身を読むことができない。このような状況において、ユーザAの知り合いの中にその電子文書Xへのアクセス権を持つ人がいれば、ユーザAがその知り合いに頼んでその電子文書Xの内容を教えてもらうことも考えられる。また、ユーザAの直接の知り合いの人物Bの同僚である人物Cの同僚である人物Dがその文書へのアクセス権を持っている場合には、ユーザAは、人物Bの伝手により人物Cに接触し、更に人物Cの伝手により人物Dに接触することで、人物Dに電子文書Xの内容を教えてもらうなどの対処をとり得る。
また、ユーザAの直接の知り合いの人物Bが参加していたY会議に参加していた人物Cがその電子文書Xへのアクセス権を持っている場合、人物Bと人物Cが直接の知り合いや同僚の関係にあるかは不明であるが、人物Bは同じ会議Xに参加していたという関係から人物Cに接触できる可能性がある。これにより、ユーザAは、人物Bの伝手により人物Cに接触し、人物Cに電子文書Xの内容を教えてもらうなどの対処をとり得る。
したがって、人物を含む様々な事物や抽象概念同士の関係をRDFに従って記述したデータベース内で、ユーザAと電子文書Xとの間を繋ぐ、上述のような人物を介する関係の連鎖を見つけることができれば、ユーザAはその連鎖の経路上の人物の伝手をたどって電子文書Xにアクセスできる可能性が出てくる。この経路は、「人である」という属性を持つ事物(例えば人物B)、又は「人である」という属性を持つ事物に対して関係を持つ事物(例えば人物Cが参加したY会議)が連鎖した経路である。なお、「Cは人である」というデータは、主語「C」と、述語「(目的語)という属性を有する/(目的語)のクラスのメンバである」と、目的語「人」とからなるトリプルで表現される。
この実施の形態では、事物間の関係の集合からなるグラフ構造を表すデータベースにおいて、そのような特定属性に関与する事物同士の関係の連鎖経路を求める。以下、このための方法の概要を説明する。
例えば、ユーザAが、電子文書Xに関連がある「人」の連鎖を知りたいという場合には、ユーザAは、検索装置に対して、経路検索の絞り込みの条件として、「人」という属性を有する、という条件を設定する。条件設定の方法としては、例えば、検索装置内に記憶された属性(「人」、「文書」、「会議」、「組織」など)の一覧を提示し、そこから選択させるなどの方法を用いればよい。検索装置が記憶しておく属性は、例えばRDFのvocabularyに属するものなどでもよいし、検索装置内で独自に定義したものでもよい。
SPARQLで、例えば、「人」という属性をもったノードを検索する場合には、
Select ?p where { ?prdf:type foaf:Person . }
といった検索式を用いればよい。
Select ?p where { ?prdf:type foaf:Person . }
といった検索式を用いればよい。
ここで「rdf:type」とは、リソースがあるクラスのメンバ(インスタンス)であることを示すプロパティを意味する。また、「rdf:」とはRDFモデル構文の名前空間を表す。この名前空間の具体的な仕様は、W3C勧告として,「RDF Vocabulary Description Language 1.0: RDF Schema」にまとめられている(http://www.w3.org/TR/rdf-schema/ 参照)。
同様に、「foaf:Person」とは「人」を表すリソースである。「foaf:Person」という記述は、「FOAF VocabularySpecification 0.9」に準拠したものである(http://xmlns.com/foaf/0.1/ 参照)。
また、RDFに従って記述されたグラフデータベースにおいて、特定のノード(以下、着目ノードと呼ぶ)を目的語として持つようなノードの検索には、着目ノードが<someUri>として記述できるとき、
Select ?n where { ?n?pred <someUri> }
といった検索式を用いればよい。
Select ?n where { ?n?pred <someUri> }
といった検索式を用いればよい。
上述の検索式を組み合わせた例えば以下のような検索式を用いれば、着目ノードを目的語として持ち、且つ特定属性「人」を有するノード(以下では「subj-n」と表す)が検索されることになる。なお、このノードsubj-nは、着目ノード<someUri>に隣接するノードである。
<検索式1>
Select ?subj-n where {
?subj-n ?pred1<someUri> .
?subj-n rdf:typefoaf:Person .
}
この検索式1は、図1Aに示すようなノードとリンクとからなる部分グラフを表している。図1Aでは、ノードを楕円で示し、リンクをそれら楕円を結ぶ矢印で示している。すなわち、図1Aに示す部分グラフは、「Subj-n」というノードが、<someUri>で特定されるリソースを目的語として持ち、且つ「人」という属性を有する(=foaf:Person タイプである)ことを示している。上述の検索式では、リンク(述語)「pred1」を変数としており、これにより「pred1」にはどのようなリンクでもマッチ(適合)することになる(すなわち「subj-n」と<someUri>と間の関係は限定されない)。そして、上記検索式は、ノード「Subj-n」を変数としており、上述のような部分グラフにマッチするノード「Subj-n」を検索結果とすることを示している。
<検索式1>
Select ?subj-n where {
?subj-n ?pred1<someUri> .
?subj-n rdf:typefoaf:Person .
}
この検索式1は、図1Aに示すようなノードとリンクとからなる部分グラフを表している。図1Aでは、ノードを楕円で示し、リンクをそれら楕円を結ぶ矢印で示している。すなわち、図1Aに示す部分グラフは、「Subj-n」というノードが、<someUri>で特定されるリソースを目的語として持ち、且つ「人」という属性を有する(=foaf:Person タイプである)ことを示している。上述の検索式では、リンク(述語)「pred1」を変数としており、これにより「pred1」にはどのようなリンクでもマッチ(適合)することになる(すなわち「subj-n」と<someUri>と間の関係は限定されない)。そして、上記検索式は、ノード「Subj-n」を変数としており、上述のような部分グラフにマッチするノード「Subj-n」を検索結果とすることを示している。
例えば、電子文書XがRDFデータベースにおいてリソース<someUri>として記述されているとすると、あるリソース「Subj-n」は、電子文書Xとあるプロパティ「pred1」(限定されない。例えば「作成する」)で記述される関係をもち、なおかつ「人」であるという条件を満たすことになる。
また、関係の方向性は一方向に限るものではない。例えば、以下の検索式2を用いれば、着目ノードを主語として持ち、且つ特定属性「人」を有するノード「subj-n」が検索されることになる。
<検索式2>
Select ?subj-n where {
<someUri> ?pred1?subj-n .
?subj-n rdf:typefoaf:Person .
}
この検索式2は、図1Bに示す部分グラフを表している。例えばリソース<someUri>が電子文書Xを表しており、「pred1」が「uploaded」(アップロードされた)という述語である場合には、ノード「subj-n」は、電子文書Xをアップロードした人物を示すものとなる。
<検索式2>
Select ?subj-n where {
<someUri> ?pred1?subj-n .
?subj-n rdf:typefoaf:Person .
}
この検索式2は、図1Bに示す部分グラフを表している。例えばリソース<someUri>が電子文書Xを表しており、「pred1」が「uploaded」(アップロードされた)という述語である場合には、ノード「subj-n」は、電子文書Xをアップロードした人物を示すものとなる。
上述の検索式1及び2のいずれかにより検索された、着目ノード(リソース)<someUri>の隣接ノード「Subj-n」は、着目ノード<someUri>に対して何らかの関係を持つ「人」を表す。
このようにして、上述の検索式1及び2による検索がなされると、次に、検索式1又は2のいずれかを満たすものとして検索された隣接ノード「Subj-n」の各々をそれぞれ次の繰り返し(イタレーション)における着目ノード<someUri>として扱い、同様な検索を繰り返す。このような繰り返しにより、特定属性「人」を持つノードの連鎖が生成される。例えば、図2に、2回の繰り返しにより求められるノードの連鎖「Subj-n -- Subj-n2」を示す。すなわち、図2は、着目ノード<someUri>(例えば目的とする電子文書X)に対してある関係pred1を持つ人subj-nと、その人subj-nに対してある関係pred2を持つ人subj-n2とからなる連鎖を示している。ここで、関係(述語)pred2は、例えば人物間の関係(たとえば「同僚である」)を表している。
なお上述の検索式1及び2は、着目ノードに隣接する隣接ノードの属性が「人」であることを示すものであるが、隣接ノードの属性が「人」でなくても着目ノードの属性が「人」であれば、連鎖を延ばすようにしてもよい。これは、最初に挙げた事例のうち、同じY会議に参加した人物Bと人物Cとの間を、そのY会議を介して連鎖させる例である。すなわち、人物C(着目ノードとする)がY会議(その着目ノードの隣接ノードに該当)に参加していた場合、Y会議は人ではないものの、人物Cの次のノードとしてその連鎖の中に組み入れるのである。そして、次にY会議を着目ノードとしたときに、その隣接ノードである人物Bが、上述の検索式1にマッチすることになり、連鎖に組み入れられることになる。
このように、着目ノードの属性が「人」である場合の隣接ノードを検査するための検索式としては、次の検索式3及び4(それぞれ検索式1及び2の方向性に対応している)を用いればよい。
<検索式3>
Select ?subj-n where {
?subj-n ?pred1<someUri> .
<someUri>rdf:type foaf:Person .
}
<検索式4>
Select ?subj-n where {
<someUri> ?pred1?subj-n .
<someUri>rdf:type foaf:Person .
}
<検索式3>
Select ?subj-n where {
?subj-n ?pred1<someUri> .
<someUri>rdf:type foaf:Person .
}
<検索式4>
Select ?subj-n where {
<someUri> ?pred1?subj-n .
<someUri>rdf:type foaf:Person .
}
このように、(a)着目ノード<someUri>に対して、検索式1〜4のいずれかを満たす隣接ノードsubj-nを検索する(b)検索された各隣接ノードを次の繰り返しの着目ノードとする、というステップを繰り返すことで、最初に指定された着目ノードに関して関係のあるノードの連鎖が作成される。
そして、この実施の形態では、このようなノードの連鎖を、それらノード間がどのような関係(リンク)であるかと共に、検索結果として提示する。
図3には、あるグラフデータベースに対してそのような検索を行うことで求められる、人物「あなた」から文書「Doc1」に至る、人を介する事物の連鎖が2つ例示されている。なお、図3では、「人」の属性を持つノードを輪郭が破線の楕円で示しており、「人」の属性を持たないノードを輪郭が実線の楕円で示している。
<連鎖1>
人物「あなた」の『同僚』である人物「知り合い1」→人物「知り合い1」の『同僚』である人物「誰かa」→人物「誰かa」が『参加』した会議「B会議」→会議「B会議」に『参加』した人物「Psn1」→人物「Psn1」が『作成』した文書「Doc1」
<連鎖2>
人物「あなた」が『参加』した会議「A会議」→会議「A会議」に『参加』した人物「誰かb」→人物「誰かb」が『所属』する組織「組織C」→組織「組織C」に『所属』する人物「Psn1」→人物「Psn1」が『作成』した文書「Doc1」
<連鎖1>
人物「あなた」の『同僚』である人物「知り合い1」→人物「知り合い1」の『同僚』である人物「誰かa」→人物「誰かa」が『参加』した会議「B会議」→会議「B会議」に『参加』した人物「Psn1」→人物「Psn1」が『作成』した文書「Doc1」
<連鎖2>
人物「あなた」が『参加』した会議「A会議」→会議「A会議」に『参加』した人物「誰かb」→人物「誰かb」が『所属』する組織「組織C」→組織「組織C」に『所属』する人物「Psn1」→人物「Psn1」が『作成』した文書「Doc1」
この実施の形態の検索装置は、検索を指示したユーザ「あなた」に対し、このような連鎖経路の情報を提示する。すなわち、隣接ノード群の連鎖を、各ノード、リンクの情報およびノード間の接続情報の系列として、出力する。図3を例にすると、各ノード、リンクの情報は、各ノードに対応するのが「あなた」と「知り合い」であり、リンクに対応するのが「同僚」である。ノード間の接続情報は、「同僚」という関係によって「あなた」と「知り合い」が結びつけられていることを、矢印によって示されている。
以上、この実施の形態の手法について概説した。次に、この手法を実現した検索装置の構成及び処理手順の例を説明する。
図4に、この実施の形態の検索装置の構成の一例を例示する。
図4の構成において、データベース10には、データ要素同士の関係が構成するグラフ構造を表すグラフデータが記憶されている。ここでは、データ要素同士の関係をRDFで表現する場合の例を用いて説明するが、この実施の形態の検索手法は、RDF以外の方式を用いる場合に適用してもよい。
図5に、データベース10に記憶されるグラフデータの一例を示す。図5に例示するデータには、主語、述語、目的語の組である「トリプル」が複数含まれている。図5に例示したグラフデータは、図3に示したグラフを表している。ただし、図5に例示するデータ形式はあくまで一例に過ぎず、データ要素間の関係を記述できるデータ形式であれば、図5に例示した形式以外の形式を用いてもよい。
再び図1の説明に戻ると、データベース10は、後で説明する検索処理部20等のグラフ検索のための機能が実装されるコンピュータに対して実装されていてもよいし、このコンピュータからインターネット等のネットワークを介して接続された別のコンピュータに実装されていてもよい。
基点ノード指定受付部12は、検索のための指定項目の1つとして、ユーザから基点ノードの指定を受け付ける。基点ノードは、ユーザが検索で求めたい連鎖経路の端点のノードである。図3の例では、経路の始点ノード「あなた」と終点ノード「Doc1」が基点ノードに該当する。なお、始点と終点をユーザに指定させる場合、終点の方がユーザが目的とする事物であり、始点はその終点まで連鎖して欲しい事物(典型的にはそのユーザ自身)である。また、始点と終点という2つのノードを基点ノードとして指定させる代わりに、基点ノードを1つだけ指定させてもよい。例えば、文書「Doc1」に対して人を介して関連する事物を知りたい場合、1つのノードすなわち文書「Doc1」のみを基点ノードとして指定させてもよい。
上限ホップ数指定受付部14は、基点ノードからの検索範囲を表す上限のホップ数(すなわち、リンクの数)の指定をユーザから受け付ける。
これら基点ノード指定受付部12及び上限ホップ数指定受付部14が、この検索装置のための検索条件を入力する検索UI(ユーザインタフェース)16を構成している。なお、検索範囲を表す上限ホップ数の指定は必須のことではない。上限ホップ数の指定を求めない構成の場合は、検索UI16は上限ホップ数指定受付部14を持たなくてよい。
検索処理部20は、上に概説した検索手順を実行することで、検索UI16を介してユーザから入力された基点ノードに対して、特定属性(例えば「人」)のノードを介した関係の連鎖経路を検索する。様々な属性のうちどれを「特定属性」とするかは、検索処理部20内に固定的に設定しておいてもよいし、上述したようにユーザに選択させるようにしてもよい。ユーザに選択させる場合には、検索UI16に属性選択のためのUIを設ければよい。なお、このように「特定属性」をユーザに選択させる方式の場合、検索に用いる検索式1〜4における述語rdf:type の目的語は、選択された属性を表す値とすればよい。ソート部22は、検索処理部20が検索した1以上の連鎖経路を、あらかじめ定められた基準に従ってソート(順序づけ)する。例えば、ソートの基準としては、連鎖経路のホップ数の小さい順などといった基準が考えられる。
検索結果提示部24は、ソート部22のソート結果をユーザに提示(すなわち表示)する処理を実行する。検索結果提示部24は、例えば、検索された1以上の連鎖経路をソート順に一覧表示すればよい。ただし、これは一例に過ぎず、ソート結果の提示の仕方は特に限定されない。
次に、図6及び図7を参照して、検索処理部20の処理手順の一例を説明する。この例は、基点ノードとして始点と終点の2つをユーザが指定する場合の例である。
この手順では、図6に示すように、まず検索UI16の基点ノード指定受付部12により、グラフ中のノードのうち始点とするノード及び終点とするノードの指定をユーザから受け付けると共に、上限ホップ数指定受付部14によりユーザから上限ホップ数の指定を受け付ける(S10)。これらの指定を受け付けると、検索処理部20は、ホップ数を表すカウンタの値を1に初期化する(S12)。
次に検索処理部20は、終点に指定されたノードを含んだ経路情報を作成し、作成した経路情報をその終点ノードと対応づけて記憶すると共に(S14)、その終点ノードをホップ数1用の着目ノードのリスト(着目ノードリスト)に入れる(S16)(すなわち、終点ノードを最初の着目ノードとする)。
ここで、経路情報は、求めたい連鎖の経路に属するノードを、その連鎖経路上でのそれらノードの並び順に並べた列の情報である。なお、連鎖経路上のリンクの情報を経路情報に含めてもよい。
図6及び図7の手順では、終点ノードから連鎖経路の探索を始め、条件に合致する(すなわち上述の検索式1〜4のいずれかを満たす)隣接ノードを求めるごとに、その隣接ノードを経路情報に追加していく。この探索の過程で、連鎖経路が枝分かれする場合もある。このような枝分かれが生じる場合は、枝ごとに経路情報が追加される。
このように終点ノードから探索を開始するのは、ユーザが目的とする終点ノードから連鎖経路を探索することで、仮に始点ノードまで連鎖する経路が見つからない場合でも、目的とする終点ノードに繋がる連鎖経路は提示できるからである。図3の例を参照すると、目的である文書「Doc1」から人を介した関係が連鎖して構成される連鎖経路が、仮に始点である人物「あなた」に到達しなくても、その連鎖経路上にあるいずれかの「人」に、あなたが面識を持っている(ただし、この面識の事実はグラフデータには登録されていない)可能性があるので、このような連鎖経路を提示するのには意味がある。
次に、検索処理部20は、カレントの着目ノードリスト内のノードごとに、S18〜S30の処理を繰り返す。これまでの説明の流れでは、現時点ではカレント(すなわちホップ数=1)の着目ノードリストに終点ノードが入っているだけなので、まずはその終点ノードを着目ノードとして、S18〜S30の処理を実行する。
カレントの着目ノードリスト内の個々の着目ノードについての処理では、検索処理部20は、まず、着目ノードリストから未処理の着目ノードを1つ取り出し(S18)、その着目ノードに対応づけて記憶していた経路情報を取得する(S20)。次に検索処理部20は、その着目ノードに対してリンクを介して隣接する(すなわち1つのリンクで接続されている)ノードをグラフからすべて(ただしS20で取得した経路情報に含まれるノードは除く)抽出し、それら抽出したノード(着目ノードに対する隣接ノードと呼ぶ)を隣接ノードリストに入れる(S22)。そして、検索処理部20は、隣接ノードリスト内の隣接ノードごとに、隣接ノード処理(S30)を繰り返す。
隣接ノード処理(S30)の詳細な手順の一例を図8に示す。個々の隣接ノードについての処理では、検索処理部20は、まず、隣接ノードリストから未処理の隣接ノードを1つ取り出す(S32)。そして、取り出した隣接ノード又は着目ノードが特定属性(図3等の例では「人」)を持つかどうかを判定する(S34)。S22,S32,S34の処理は、着目ノードを<someUri>に設定して上述した検索式1〜4を実行する処理である。S34の判定結果がYesの場合、S20で取得した経路情報(着目ノードに対応するもの)内のノードの列の末尾に当該隣接ノードを追加することで、新たな経路情報を生成し、生成した経路情報を当該隣接ノードと対応づけて記憶する(S36)。新たに生成した経路情報には、カレントのホップ数のカウンタ値を含める。このカウンタ値が、その経路情報の終点ノードからの長さ(ホップ数)を示している。なお、経路情報にリンクも記録する場合には、新たに生成する経路情報には、着目ノードと当該隣接ノードとを繋ぐリンクの情報も含める。次に検索処理部20は、当該隣接ノードがS10で指定された始点ノードに一致しているか否かを判定する(S38)。一致していなければ、当該隣接ノードを、(終点ノードからみてカレントのホップ数の)次のホップ数用の着目ノードリストに入れて、処理を終了する(S40)。一致していれば、当該隣接ノードに対応づけて記憶している経路情報に対して、「到達済み」の旨の情報を記録して処理を終了する(S42)。なお、着目ノードに隣接するすべての隣接ノードについてS32〜S42の処理が終わると、当該着目ノードに対応する経路情報は削除してよい。
以上の隣接ノード処理(S30)により、着目ノード又は隣接ノードのいずれかが特定属性(例えば「人」)を有するという条件が満たされる場合に、終点ノードから着目ノードまで延びてきている連鎖の経路に対して隣接ノードが追加されることになる。また、条件を満たす隣接ノードが複数存在する場合は、その隣接ノードの数だけ新たな連鎖経路(経路情報)が生成されることになる。
図6に戻ると、カレントの着目ノードリスト中の全ノードについてS18〜S30の処理が終わると、検査処理部20は次のホップ数用の着目ノードリストが空か否かを調べ(S24)、空でなければ、ホップ数のカウンタの値を1増加させる(S26)。そして、カウンタの値がS10で指定された上限ホップ数を超えたかどうかを判定し(S28)、超えていなければ、カウンタが示すホップ数用の着目ノードリストについて、S18〜S30の処理を繰り返す。カウンタ値が上限ホップ数を超えていれば、探索を打ち切って処理を終了する。また、S24で次のホップ数用の着目ノードリストが空である(すなわち特定属性のノードを介した連鎖がとぎれた)ことが分かった場合も、探索を打ち切って処理を終了する。
図6及び図7に示した処理により、終点ノードからみて、特定属性のノードを介する関係により連鎖した経路の経路情報がいくつか作成される。そのような経路情報の例を図8に示す。図8に示した表の1行が1つの経路情報である。個々の経路情報は、到達フラグ、ホップ数、及び終点ノードからの経路、の情報を含んでいる。到達フラグは、当該連鎖の経路が始点ノードまで到達したか否かを示すフラグである。到達フラグは、S42(図7)で「到達」にセットされる。それ以外の場合は「未達」(到達していない)である。ホップ数は当該連鎖の経路のホップ数である。そして、終点ノードからの経路は、S14及びS36で追加されるノード(及び着目ノードからそのノードまでのリンク)のリストである。図8の例は、図3に示したグラフに対応するものであり、1つめの経路情報は、終点ノード「Doc1」を先頭とし、リンク「作成」、属性が「人」であるノード「Psn1」、逆向きのリンク「参加」(図8においてリンクの名称に引いた下線は逆向きを示す。なお、終点に向かう向きを順方向とした場合の逆向きである)、ノード「B会議」、…というように始点ノード「あなた」まで延びる連鎖を示している。この経路情報は、始点まで到達しているので、到達フラグの値は「到達」である。図8の3行目の経路情報は、図3には示していないが、これは始点まで到達しない連鎖の例である。
次に、図9を参照して、ソート部22の処理手順の一例を説明する。ソート部22は、検索処理部20が図6及び図7に示した処理により生成した経路情報群(図8参照)に対して、図9の処理を行う。この処理では、ソート部22は、それら経路情報の中に到達フラグが「到達」となっているものがあるかどうかを調べ(S50)、「到達」済みのものが1つでもあれば、それら「到達」済みの経路情報のみをホップ数の少ない順にソートする(S52)。すなわち、ホップ数の少ない連鎖経路ほど、上位(すなわち重要度が高い)に順位付けする。間に入る人の数が少ないほど、目的(文書「Doc1」)にアクセスするための労力が少なくて済む可能性が高いからである。「到達」済みのものに限るのは、「到達」済みのものがあるのであれば、「未達」の連鎖経路には価値がないからである。
S50の判定結果がNo、すなわち検索処理部20が求めた経路情報が未達のもののみであれば、それら未達の経路情報をホップ数の少ない順にソートする(S54)。そして、S52又はS54のソート結果を検索結果提示部24に出力する(S56)。検索結果提示部24は、ソートされた連鎖経路を表示する。
S50の判定結果がNo、すなわち検索処理部20が求めた経路情報が未達のもののみであれば、それら未達の経路情報をホップ数の少ない順にソートする(S54)。そして、S52又はS54のソート結果を検索結果提示部24に出力する(S56)。検索結果提示部24は、ソートされた連鎖経路を表示する。
以上、実施の形態の装置の処理手順の例を説明した。以上の例では、終点ノードから探索を行ったが、これに限らず、始点ノードから探索を行うようにしてもよい。
また、以上に例示した図6及び図7の手順は、ユーザから2つの基点ノード、すなわち始点及び終点の指定を受け付ける場合の例であった。ユーザから1つ基点ノードのみの指定を受け付ける場合、図6の手順はS10を1つの基点ノードの指定を受け付けるように変更すればよく、図7の手順はS38及びS42を除く形に変更すればよい。
また、上述の例では、着目ノード又は隣接ノードのいずれかが特定属性を持っている場合、それら両ノード間のリンクの種類によらずその隣接ノードを連鎖経路に組み入れたが、これは一例に過ぎない。この代わりに、そのような場合でも、両ノード間のリンクがあらかじめ定められた何種類かのうちのどれかに該当しなければ、隣接ノードを連鎖経路に組み入れないようにしてもよい。例えば、図3の例では、着目ノード又は隣接ノードの少なくとも一方が特定属性「人」を持つ場合、着目ノードと隣接ノードとの間のリンク(述語)の種類が「同僚である」、「参加する」、「所属する」のいずれかに該当する場合にのみ、その隣接ノードを連鎖経路に組み入れるようにする、等の処理を行えばよい。「同僚である」、「参加する」、「所属する」等のリンクは、人同士を繋ぐ関係であるため、これらに限定して連鎖経路を延ばすのである。ただし、終点ノードが特定属性(「人」)を持たない場合(図3の終点ノード「Doc1」はこれに該当する)は、例外であり、終点ノードに隣接するノードが特定属性(「人」)を持てば、その隣接ノードを連鎖経路に組み入れるようにしてもよい。
また、以上の例では、着目ノードが特定属性(例えば「人」)を持っている場合、その着目ノードに隣接するノードは無条件に連鎖経路に追加されるが、この代わりに、そのような場合でも、隣接するノードが別の条件を満たさない限り連鎖経路に入れないようにしてもよい。例えば、隣接ノードがある一群の属性のいずれかに該当するという条件を課す等である。
例えば、図3の例では、「人」属性を持つノード「Psn1」に隣接するノードとして「B会議」、「組織C」、「Doc1」が例示されているが、この他にその人物「Psn1」が文書「Doc1」以外の文書(例えば「Doc2」と呼ぶ)を「作成」していたとする。この場合、終点ノード「Doc1」から探索をはじめて、「Psn1」が着目ノードとなった場合、(直前の着目ノード「Doc1」を除いて)着目ノードに隣接するノードは「B会議」、「組織C」、「Doc2」となる。これらはいずれも特定属性「人」を有していないが、着目ノード「Psn1」が「人」属性を有しているので、上述の図7の手順では、それら3つのノードがそれぞれ連鎖経路に組み入れられる。これに対し、着目ノードが特定属性を持つ場合に、隣接ノードが「人」又は「会議」又は「組織」のいずれかの属性を持つ場合に限り、その隣接ノードを連鎖経路に組み入れるという条件を課してもよい。「会議」や「組織」等といった人の集まりに該当するノードは、人同士の関係を媒介する(例えばその会議の参加者同士として知り合っている)可能性が高いため、「人」を介した関係を辿っていく場合には、「会議」等の属性のノードが間に入っても人間関係が辿れる可能性が高い。これに対し、人物「Psn1」が「作成」した文書「Doc2」を別の人物「Psn2」が「閲覧」したという関係があったとして、人物「Psn1」と「Psn2」とが知り合いである可能性は高いとはいえない。そのようなことから、「人」でないノードは、人間関係を媒介する事物であることを示す属性(「会議」、「組織」など)の集合のうちのいずれかの属性を持つ場合にのみ、連鎖経路に組み入れられるように限定した方がよい場合がある。このように限定した場合、「文書」属性を持つ「Doc2」は連鎖経路に組み入れられない。
また、以上の例では、連鎖の条件とする特定属性が「人」である場合を示したが、他の属性を特定属性として用いてもよい。
以上の例では、図4の検索装置の検索UI16には、ユーザが、検索条件として、1つ又は2つの基点ノードを指定したが、これは一例に過ぎない。この代わりに、例えば、基点ノードとするデータ要素が持つべき属性に関する条件(例えば、属性の値又はその範囲、複数の属性の値又は範囲の組合せ等)を検索条件として指定するようにしてもよい。この場合、検索処理部20は、その検索条件に合致する属性を有するデータ要素をデータベース10から検索し、検索したデータ要素を基点ノードとして、上述のように、その基点ノードに繋がるリンクの連鎖を探索する。このとき、例えば、検索要求を行ったユーザに対応するノードをデフォルトで一方の基点ノードとし、この基点ノードと、属性に関する検索条件により検索されたデータ要素のノード(すなわちもう一方の基点ノード)との間でのリンクの連鎖を検索するようにしてもよい。
以上、本実施形態において用いる関連検索方式の一例、及びその関連検索方式を実行する個別の検索装置(図4参照)の一例について説明した。次に、そのような検索装置を複数含んだ本実施形態の関連検索システムの一例を説明する。
図10に、この実施形態の関連検索システムの一例の構成を示す。この例では、複数の組織A、B、・・・の各々が、当該組織のネットワークのシステム100A、100B、・・・(以下、区別する必要がない場合には「システム100」と総称する)内に、図4に例示した検索装置(図10では「検索装置110」と表示)を備えている。個々の組織A、B、・・・は、企業や役所、団体等のように、複数の人から構成された社会的システムである。各組織のメンバは、それぞれ自分が属する組織のシステム100(及びその中にある検索装置110)に対するアクセス権を持っており、当該組織100にアクセスして検索等のサービスを受ける。
ここで、これら個々の組織A、B、・・・が、例えばある事業のために、協業(コラボレーション)する場合を考える。各組織A、B、・・・から協業に参加するのは、当該組織の構成員全員の場合もあればその一部である場合もある。協業は、協業するメンバ同士が実際に集まって進めることもあれば、情報システム上で仮想的に集まったり情報交換を行ったりしながら進めることもある。このような協業のための、例えば仮想的な場の提供、情報交換機能、情報の蓄積や再利用の機能等といった、支援や管理のために、協業用のシステム200が構築されている。このシステム200には、図4に例示したものと同等の機能を有する検索装置210を設けてもよい。
協業に参加するメンバは、情報を必要とする場合、協業用のシステム200にて検索を行うが、必要な情報がそのシステム200内にあるとは限らず、協業に参加している個々の組織A、B、・・・内のシステム100A、100B、・・・に存在する場合もある。ここで、その検索を行うメンバは、自分の出身組織のシステム100にはアクセス権があるのでその中の情報を検索できるが、他の組織のシステム100にはアクセス権がないのでその中の情報は検索できない。そこで、協業用のシステム200内に、そのメンバに代わって各組織のシステム100に対して検索要求を行うエージェント250を設ける。各組織のシステム100は、エージェント250に対してアクセス権を付与する。これにより、エージェント250は、各組織のシステム100にアクセス可能となり、検索要求を行うことが可能となる。
ただし、エージェント250は、各組織のシステム100内の検索装置110に直接アクセスして検索を行うのではない。システム100のセキュリティを保護するために、各システム100にはそれに対応するプロキシ130が設けられており、エージェント250はそのプロキシ130に対して検索要求を送る。プロキシ130は、その検索要求を検索装置110に取り次ぎ、これに応じて検索装置110が実行した検索の結果を受け取る。
典型的な例では、エージェント250は、協業のメンバの属する組織のプロキシ130に対し、そのメンバを特定する情報と検索条件とを含む検索要求を送る。1つの組織の複数の人が協業に参加している場合、検索要求には、それら複数のメンバを特定する情報と検索条件とを含めればよい。この検索要求に応じ、その組織の検索装置110はその検索条件を満たすデータ要素を検索し、更に、検索したデータ要素とそのメンバとの間を繋ぐリンクの連鎖を求め、求めた連鎖をプロキシ130に返す。
検索装置110が求めた検索結果(リンクの連鎖の情報)は、当該組織の内部の情報であり、これらをすべてエージェント250に提供するのは、セキュリティ上好ましくない場合が多い。そこで、プロキシ130は、その検索結果のうち、当該システム100の外部(この場合は協業用のシステム200)に出してよい情報のみを抽出し、エージェント250に返す。この例では、それら協業参加メンバのうち、検索条件に該当するデータ要素との間でリンクの連鎖による繋がりがある者が誰であるかを示す応答をエージェント250に返す。当該組織から協業に参加しているメンバが誰であるかは協業用のシステム200にも既知の情報であり、またこの例では、検索条件に合致したデータ要素自体や、その参加メンバとそのデータ要素との間のリンクの連鎖などといった内部情報は組織の外に出さないので、組織内の情報セキュリティは守られる。
エージェント250は、複数の組織A、B、・・・の各々のプロキシ130からの応答をとりまとめ、その結果を検索結果として、検索要求元のユーザに対して提供する。このユーザは、その検索結果を参照することで、協業に参加しているどのメンバに連絡を取れば、検索条件に合致する情報を入手できる可能性があるかが分かる。検索要求元のユーザと検索結果に示されるメンバとは、共に協業に参加しており、互いを知っている可能性が高い。検索要求元のユーザは、検索結果に示されるメンバに例えば電子メールや電話等で連絡を取り、検索対象の情報の入手を依頼する。
ここで、この入手の依頼をエージェント250が受け付け、該当する組織のプロキシ130を介して該当メンバに通知するようにしてもよい。この場合、プロキシ130は、検索要求に対する検索装置110の検索結果を記憶しておき、エージェント250から入手依頼を受け取った場合に、依頼先のメンバに対して検索結果、すなわち当該メンバとその検索要求の検索条件に合致するデータ要素(例えば文書ファイル)との間のリンクの連鎖の情報を提示するようにしてもよい。入手依頼先のメンバは、その提示された情報を参照することで、そのデータ要素に対する自分の関係を把握し、そのデータ要素を自分が実際に入手できるかどうか、及びそのデータ要素が外部(協業先の他の組織の人)に出してよい情報なのかどうか、を判断する。そして、そのデータ要素が入手でき、かつ外部に出してよいと最終的に判断できた場合、その依頼先のメンバは、そのデータ要素をプロキシ130経由で協業用のシステム200へとアップロードし、検索要求元のユーザへと提供する。
以上、本実施形態の関連検索システムの概要を説明した。次に、このシステムの詳細な例を説明する。
図11に、協業用のシステム200が備えるエージェント250の機能構成の例を示す。例示のエージェント250は、検索条件取得部51、外部検索処理部53、メンバ情報記憶部55、検索結果提示部57及び入手依頼処理部59を有する。
検索条件取得部51は、協業用のシステム200内の検索装置210に対してユーザが入力した検索条件を取得する。この検索要求元のユーザは、協業のメンバであり、システム200に対するアクセス権を持っている。入力される検索条件は、検索したいデータ要素の属性を特定する条件である。例えば、検索したいデータ要素が文書ファイルである場合、その文書ファイルのファイル名、文書のタイトル、その文書に付与されたキーワード等である。例えば、検索要求元のユーザは、検索装置210が提供する検索用のウェブページにアクセスし、そのウェブページに検索条件を入力し、検索を指示する。検索要求元のユーザが、協業用のシステム200の検索装置210に対して検索条件を入力すると、エージェント250に対してその検索条件を渡し、各組織のシステム100への検索要求の発行を依頼する。
ここで、検索装置210は、自身が有するデータベース10(図4参照)に対し、その検索条件に対応する検索を実行してもよい。このとき検索装置210が実行する検索は、例えば、その検索条件に適合するデータ要素を自身のデータベース10から、求めたデータ要素と検索要求元のユーザとの間を繋ぐリンクの連鎖を、データベース10に記憶されたデータ要素同士のリンク状況を示すグラフから求める。もちろん、両者を繋ぐリンクの連鎖が存在しない場合もあり、その場合にはそのような連鎖は検索できない。なお、協業用のシステム200に検索装置210が含まれない場合は、エージェント250が協業メンバから検索条件の入力を受け付ければよい。
検索条件取得部51は、取得した検索条件を外部検索処理部53に渡す。外部検索処理部53は、その検索条件を含んだ検索要求を、各組織のプロキシ130宛に送る。なお、各プロキシ130のIPアドレス等、通信のために必要な各プロキシ130の情報は、あらかじめエージェント250に登録されている。
ここで、各組織のプロキシ130宛の検索要求には、それぞれ、当該組織100のメンバのうち協業に参加しているメンバを特定する情報を含める。例えば、組織100Aに対しては、協業の参加メンバのうちその組織100Aに属する人の識別情報と、検索条件とを含んだ検索要求を送る。
このような検索要求の発行のために、外部検索処理部53は、メンバ情報記憶部55を参照する。メンバ情報記憶部55は、協業用のシステム200に登録されたメンバの情報、特に各メンバがそれぞれどの組織の出身であるのかを示す情報を記憶している。
図12にメンバ情報記憶部55が記憶するデータ内容の一例を示す。この例では、メンバ情報記憶部55には、協業に参加するメンバごとに、そのメンバの協業用システム200におけるユーザID(識別情報)及びユーザ名、そのメンバの所属する組織(出身組織)の識別情報、及びその所属組織における当該メンバのユーザIDの情報が登録されている。
外部検索処理部53は、協業に参加している組織ごとに、その組織に属する協業参加メンバの当該組織におけるユーザIDを、メンバ情報記憶部55から求める。そして、求めた各メンバのユーザIDと、検索条件取得部51が取得した検索条件とを含む検索要求を作成し、インターネット等の通信ネットワークを介して、当該組織のプロキシ130宛に送信する。また、外部検索処理部53は、その検索要求に対する各組織のプロキシ130からの応答を受け取り、検索結果提示部57に渡す。
検索結果提示部57は、検索要求に対する各プロキシ130からの応答をとりまとめて検索結果の表示画面を作成し、検索要求元のメンバに対して提供する。各プロキシ130からの応答は、それぞれ当該プロキシ130が属する組織の協業参加メンバのうち、検索条件に適合するデータ要素とグラフ上の繋がりを持つ人の情報である。検索結果提示部57は、それら応答の情報のリストを含んだ検索結果画面を、検索要求元のユーザに提供する。
検索結果提示部57の提示する検索結果画面には、各組織のシステム100から回答された、「検索条件に合致するデータ要素(例えば文書)にアクセスできる可能性のある協業参加メンバ」が一覧表示される。検索要求元のユーザは、その検索結果画面中のその一覧の中から、その検索条件に合致するデータ要素の入手を依頼したい依頼先の協業参加メンバを指定する。これに応じ、入手依頼処理部59は、その依頼先が属する組織のプロキシ130に対して、そのデータ要素の入手依頼を送信する。なお、検索結果画面に一覧表示される各プロキシ130からの応答(すなわち「検索条件に合致するデータ要素(例えば文書)にアクセスできる可能性のある協業参加メンバ」)の各々には、それぞれ応答元のプロキシ130が付与した一意な検索結果ID(詳細は後述)が含まれているので、入手依頼処理部59は、検索要求元のユーザがデータ要素入手の依頼先として選択した応答に対応する検索結果IDを含む入手依頼を、その応答の元であるプロキシ130に送る。
そして、この入手依頼に対して依頼先からプロキシ130経由でデータ要素が協業用のシステム200に提供されると、その旨が入手依頼処理部59を介して検索結果提示部57の検索結果画面に表示される。検索要求元のユーザは、この表示を経由して、提供されたデータ要素にアクセスする。
次に、図13を参照して、各組織が有するプロキシ130の機能構成の例を説明する。図13には、図4に例示した検索装置(図13では符号110で示す)も示している。
プロキシ130において、検索要求取得部32は、協業用のシステム200のエージェント250から検索要求を取得する。
エージェント250からの検索要求には、前述のように、検索したいデータ要素を特定する検索条件と、当該組織から協業に参加しているメンバのユーザIDとが含まれている。検索要求取得部32は、検索装置110の検索処理部20に対してその検索条件を渡し、その検索条件を満たすデータ要素を記憶装置10内から検索させる。検索条件を満たすデータ要素が記憶装置10内から見つからない場合は、検索処理部20はその旨をプロキシ130に応答する。この「検索条件に該当するものなし」という応答は、検索結果保持部34に保持され、検索結果応答部36によりエージェント250に対して送られる。
検索条件を満たすデータ要素が1以上見つかった場合、検索要求取得部32は、そのように検索された検索条件を満たすデータ要素を一方の基点ノードとし、検索要求に含まれている協業参加メンバを表すデータ要素のノードをもう一方の基点ノードとして、それら両基点ノードを結ぶリンクの連鎖(すなわちリンクの連鎖からなる経路)の探索を検索処理部20に指示する。
この探索指示を受けた検索処理部20は、指定されたそれら2つの基点ノードの間を結ぶ、特定属性(例えば「人(である)」)を持つデータ要素に関係するリンクの連鎖を、図6及び図7に例示する手順により求める。ここで、エージェント250からの検索要求に複数の協業参加メンバのユーザIDが含まれる場合には、それら個々の協業参加メンバごとに、そのメンバを表すノードと、検索条件を満たすデータ要素のノードとを結ぶリンクの連鎖を求める。また、検索条件を満たすデータ要素が複数検索された場合には、それら検索条件を満たすデータ要素の各々について、当該データ要素のノードと、協業参加メンバのノードとを結ぶリンクの連鎖を探索する。
検索要求に含まれている協業参加メンバと検索条件を満たすデータ要素とを繋げるリンク連鎖が一つも見つからなかった場合は、検索処理部20はその旨をプロキシ130に回答する。この回答に応じ、検索結果応答部36は、「検索条件に該当するものなし」という応答をエージェント250に対して返す。
また、検索要求に含まれる協業参加メンバと検索条件を満たすデータ要素との間のリンクの連鎖が1以上検索されると、それら1以上の検索されたリンクの連鎖が検索結果として検索処理部20からプロキシ130に送られ、検索結果保持部34に格納される。ここで、検索されたリンク連鎖は、一方の基点ノードである協業参加メンバごとにグループ化し、当該グループに対して付与した一意な検索結果IDに対応づけて格納するようにしてもよい。
検索結果保持部34が保持する検索結果の情報の一例を図14に示す。この例では、検索結果保持部34には、検索結果IDに対応づけて、リンク連鎖の一方の基点ノードである協業参加メンバのユーザ名(図では、データ要素の入手の依頼先になりうるという意味で「依頼先候補」と表記)、もう一方の基点ノードである検索条件を満たすデータ要素の識別情報(図示例では「Doc1」)、及びそれら両基点ノードを結ぶ1以上のリンク連鎖からなるグループが記憶されている。例えば、検索結果ID「010001」の行のデータは、図3に例示するよう、協業参加メンバ「A−a」(図3では「あなた」と表記)と検索条件を満たすデータ要素「Doc1」との間を結ぶリンク連鎖が2つ見つかった場合の例である。また、図14の例では、この他に、協業参加メンバ「A−b」及び「A−f」のそれぞれについて、データ要素「Doc1」との間のリンク連鎖が1つずつ見つかっている。エージェント250から受け取った検索要求ごとに、図14に例示するような検索結果のリストが検索結果保持部34内に記憶されることになる。
検索結果応答部36は、検索結果保持部34に保持された検索結果の情報から、検索条件を満たすデータ要素に対してリンク連鎖を介して繋がっている協業参加メンバを特定する。例えば、そして、特定した協業参加メンバがそのデータ要素を入手できる可能性がある旨を示すメッセージを作成し、このメッセージと検索結果ID(検索結果保持部34内で、当該協業参加メンバのリンク連鎖のグループに対応づけられていたもの)とを含む応答情報をエージェント250に送る。図14の例では、協業参加メンバ「A−a」、「A−b」及び「A−f」のそれぞれについて、それら各メンバがそのデータ要素を入手できる可能性がある旨を示すメッセージが作成され、それら各メッセージがそれぞれ対応する検索結果ID「010001」、「010002」、「010003」と対応づけてエージェント250に送られる。
このように、プロキシ130は、外部のエージェント250に対し、検索されたリンク連鎖そのものを提供することはせず、検索条件を満たすデータ要素にアクセスできる可能性のある協業参加メンバの情報のみを提供する。
このプロキシ130からの応答情報は、エージェント250にて他のプロキシ130からの同じ検索要求に対する応答ととりまとめられ、検索要求元のユーザに検索結果として提示される。この検索結果の中から、検索要求元のユーザがデータ要素の入手依頼先を選択すると、選択された入手依頼先に対応する検索結果IDを含んだ入手依頼がエージェント250の入手依頼処理部59からプロキシ130に到来する。この入手依頼を受けて、プロキシ130の入手依頼処理部38は、その依頼に含まれる検索結果IDに対応する検索結果の情報を検索結果保持部34に求める。そして、その検索結果に含まれる依頼先の協業参加メンバに対し、データ要素の入手依頼を通知する。この通知には、依頼主(検索要求元のユーザ)を特定する情報(例えばユーザ名)、入手対象のデータ要素を特定する情報(例えば文書名)、及び当該通知先(依頼先)の協業参加メンバとそのデータ要素とを結ぶリンク連鎖の情報が含まれる。依頼先のメンバは、これらの情報を参照することで、依頼対象のデータ要素を依頼主に提供してよいかどうかを判断する。そして、提供可能と判断した場合には、リンク連鎖の情報を参考に「人」を介した繋がりを辿ってそのデータ要素のアクセス権を有するユーザ(例えばそのデータ要素を「作成」した人)を特定し、特定したユーザに対してデータ要素の提供を依頼する。この依頼によりそのユーザからそのデータ要素が(例えば電子メールに添付して送信したり、データベース10内で当該依頼先メンバに対してアクセス権が設定されたりすることにより)提供された場合は、その依頼先メンバは、そのデータ要素をプロキシ130の入手依頼処理部38に送る。入手依頼処理部38は、受け取ったデータ要素をエージェント250の入手依頼処理部59に送る。入手依頼処理部59は、受け取ったデータ要素を、入手を依頼したユーザ(検索要求元)に対して提供する。
次に、図15〜図18を参照して、検索及びデータ要素の入手の流れの例を説明する。
まず、協業に参加している検索要求元のユーザが協業用のシステム200の検索システム210にログインする。これに応じ、検索システム210は、検索条件の入力や検索結果の提示のための検索UI(ユーザインタフェース)画面を、例えばウェブページの形で、その検索要求元が操作するPC(パーソナルコンピュータ)に提供する。
図16にその検索UI画面300の一例を示す。この検索UI画面300には、検索条件入力欄302、検索ボタン304、及び外部データベース(この例では各組織のシステム100内のデータベース10)の検索結果を表示する外部検索結果表示欄306が含まれる。この例では、検索対象のデータ要素は文書ファイルであり、検索条件入力欄302には、検索したい文書の名称(の全部又は一部)の文字列を入力するものとする。ただし、これは一例に過ぎない。例えば、文書ファイル以外でも検索要求元のユーザに対して提供可能なデータ要素であれば、どのようなものでも検索及び提供の対象としてよい。また、検索条件入力欄302は、検索対象のデータ要素が有する複数の属性についての組合せを入力できるようにしてもよい。
検索要求元のユーザが検索システム210にログインした際の検索UI画面300では、検索条件入力欄302及び外部検索結果表示欄306が共に空欄である。検索要求元のユーザが検索条件入力欄302に検索条件(例えば文書名)を入力し、ポインティングデバイス等の操作により検索ボタン304を押下すると、その検索条件がそのユーザのPCから検索システム210に送られ、検索処理が開始される。この処理において、検索システム210は、エージェント250にその検索条件を渡し、外部の各組織のシステム100A、100B、・・・への問合せを依頼する(図15のS0)。
この依頼に応じ、エージェント250は、各組織のシステム100に対して検索要求を送る(S1)。この検索要求には、協業参加メンバのうち宛先の組織に所属するメンバのユーザIDと、検索条件とが含まれている。
エージェント250からの検索要求は、各組織のシステム100内のプロキシ130により受信される。プロキシ130は、その検索要求に含まれる検索条件を満たすデータ要素を検索システム110に検索させる。また、プロキシ130は、その検索の結果得られた検索条件を満たすデータ要素のノードと、検索要求に含まれるユーザIDに対応する人(すなわち当該組織に属する協業参加メンバ)を表すデータ要素のノードと、を結ぶリンクの連鎖を検索システム110に探索させる(S2)。これに応じ、検索システム110は、図6及び図7の処理手順を実行することにより、それら両ノード間を結ぶリンクの連鎖を探索する。
検索システム110は、その検索及びリンク連鎖探索の結果をプロキシ130に返す(S3)。返される結果は、例えば、図14に例示した情報である。
プロキシ130は、検索システム110から返されてきた検索及び探索の結果求められた協業参加メンバごとのリンク連鎖の情報を、図14に示すように検索結果IDに対応づけて検索結果保持部34に記憶する。
また、プロキシ130は、その検索及び探索の結果から応答情報を生成し、生成した応答情報をエージェント250へ返す(S4)。ここで、プロキシ130が生成する応答情報は、検索により求められたデータ要素に関する詳細な情報やリンクの連鎖そのものの内容を含まない。応答情報に含まれるのは、当該検索システム110内のデータベース10に保持されるグラフ情報において、当該組織に所属する協業参加メンバのうちの誰が、検索条件を満たすデータ要素に対して特定属性(例えば「人」)に関係する1以上のリンクを介して繋がっているのかを表す情報である。また、応答情報には、各協業参加メンバが、図14に示した検索結果保持部34に記憶されたどの検索結果IDに対応するかを示す情報と、その応答情報がどの組織のプロキシ130からのものかを示す情報が含まれる。なお、検索条件を満たすデータ要素が見つからなかった場合、又は、検索条件を満たすデータ要素と当該組織に所属する協業参加メンバとの間を結ぶリンクの連鎖が1つも見つからなかった場合には、応答情報は、「検索条件に該当するものが見つからなかった」旨を表すものとすればよい。
各組織のプロキシ130から応答情報を受け取ったエージェント250は、それら応答情報をとりまとめて検索UI画面300に表示する(S5)。図16の例は、この時点での画面の例である。すなわち、図16の例では、検索要求元のユーザが検索条件入力欄302に入力した検索条件に対する各プロキシ130からの応答の一覧が、外部検索結果表示欄306に示されている。この例では、例えば組織Aからの協業参加メンバA−aと、組織C(図示省略)からの協業参加メンバC−cとが、それぞれその検索条件に合致するデータ要素に対してリンクの連鎖により繋がっていることを、「A−aさんと関連がある可能性があります」及び「C−cさんと関連がある可能性があります」というメッセージにより表現している。各メッセージの右隣には、それぞれ入手依頼ボタン308が表示される。なお、各入手依頼ボタン308は、それぞれ、対応するメッセージの元になった応答情報の内容(検索結果ID及び応答元のプロキシ130を特定する情報)が関連付けられている。
以上が、検索及びリンク連鎖探索の処理の流れである。次に、検索要求元のユーザが、これら検索及び探索の結果を利用して、検索されたデータ要素(例えば文書ファイル)を入手する流れを説明する。
検索要求元のユーザは、外部検索結果表示欄306(図16参照)に表示されたメッセージの一覧を見て、どのメッセージに示される協業参加メンバにそのデータ要素の入手を依頼するかを決定し、入手依頼先に決定した協業参加メンバに対応する入手依頼ボタン308を、ポインティングデバイス等を用いて押下する。この操作に応じ、エージェント250は、押下された入手依頼ボタン308に応答元のプロキシ130に対して、その入手依頼ボタン308に対応する検索結果IDと、入手依頼を行ったユーザ(すなわち検索要求元)を特定する情報(ユーザ名又はユーザID等)を含んだ入手依頼情報を送信する。
この入手依頼情報を受け取ったプロキシ130は、その入手依頼情報に含まれる検索結果IDに対応する情報(図14参照)を検索結果保持部34から取得し、取得した情報に含まれる「依頼先候補」のユーザに対し、入手依頼を送る。入手依頼は、例えば、依頼回答用のウェブページ(図17参照)のURL(Uniform Resource Locator)とデータ要素の入手依頼メッセージとを含んだ電子メールを送付するなどの方法で、その依頼先のユーザに送ればよい。
なお、外部検索結果表示欄306に表示される協業参加メンバのうちの複数に対して入手依頼を行うことができるようにしてもよい。
入手依頼を受けた依頼先のユーザは、自分のPCから依頼回答用のウェブページにアクセスする。ここでは、組織Aに属する協業参加メンバ「A−a」に対して入手依頼が行われたとする。この場合、依頼回答用のウェブページ400は例えば図17に示すようなものとなる。この例では、依頼元(この例では、組織Bに属する協業参加メンバ「B−b」)からデータ要素の入手依頼があったことを示すメッセージ401と、入手依頼対象の一覧402とが含まれる。この一覧402には、入手依頼対象のデータ要素の識別情報及び題名属性(例えば文書ファイルの名称及びタイトル属性)404と、選択ボタン406と、アップロードボタン408とが表示されている。依頼先のユーザが、その一覧の中のあるデータ要素に対応する選択ボタン406を押下すると、そのデータ要素とそのユーザとのグラフ上での関係(リンクの連鎖)が、関係表示欄410に表示される。図17の例では、このユーザは、左端のノード「あなた」であり、検索されたデータ要素(文書「Doc1」)に対して、2つの経路を介して関係を持っていることが分かる。
依頼先のユーザ「A−a」は、この関係表示欄410の表示を見ることで、目的のデータ要素「Doc1」を、自ら直接入手できるか、又は当該組織A内の自分の知り合いを介してそのデータ要素を入手できそうか、判断することができる。
直接入手できる場合(例えば自分がそのデータ要素「Doc1」を「作成」したことを示すリンクがある場合)は、依頼先のユーザ「A−a」はそのデータ要素の内容を知っている(或いは確認できる)ので、そのデータ要素を依頼元の協業参加メンバ「B−b」に提供してよいかを自ら判断できる。
また、知り合いを介して入手する必要がある場合は、その知り合いに対してそのデータ要素を協業参加メンバ「B−b」に提供してよいかどうかを問い合わせ、提供に対する了解が得られた場合には、その知り合いからそのデータ要素を入手すればよい。プロキシ130がこの問合せを仲介してもよい。
また、目的のデータ要素「Doc1」を提供できる人(図17の例では「Psn1」)が依頼先のユーザ「A−a」の直接の知り合いでない場合には、関係表示欄410に示されたリンク連鎖上の直接の知り合い(例えば「誰かa」)の伝手を辿って、その提供可能な人「Psn1」に対して同様の問合せを行い、入手を試みてもよい。
このようにして依頼先のユーザが、目的のデータ要素を入手でき、依頼元へ提供してよいと判断できた場合、そのユーザは、図17の依頼回答用のウェブページ400上で、目的のデータ要素に対応するアップロードボタン408を押下する。これにより、例えばアップロード対象のファイルの選択画面が表示され、依頼先ユーザは、この画面に表示された自分のPC内のファイルの中から、アップロードする入手済みのデータ要素を選択する。この操作に応じ、プロキシ130は、そのデータ要素をエージェント250にアップロードする。
エージェント250は、アップロードされたデータ要素を保存すると共に、検索要求元のユーザ用の検索UI画面300に対して、入手依頼したデータ要素が提供されたことを表示する。例えば、エージェント250(検索結果提示部57)は、図18に例示するように、提供文書一覧310を含む検索UI画面300を生成し、検索要求元のユーザのPCに対して提供する。提供文書一覧310には、入手依頼に応じてアップロードされたデータ要素ごとに、そのデータ要素の識別情報(文書ファイル名等)と閲覧ボタン312とが表示される。閲覧ボタン312は、保存されたそのデータ要素のファイルへとリンクされている。検索要求元のユーザは、提供文書一覧310に表示されたデータ要素の中からその内容を閲覧したいものを選び、選んだデータ要素に対応する閲覧ボタン312を押下する。これにより、その閲覧ボタン312に関連付けられたデータ要素のファイルが呼び出され、画面に表示される。
以上、実施形態の処理の流れの例を説明した。以上の例では、協業用のシステム200が提供する検索UI画面300には、各組織のシステム100からの検索及び探索の結果(外部検索結果表示欄308)のみを表示したが、これは一例に過ぎない。例えば、当該システム200内の検索システム210にも同じ検索条件で検索を行わせ、検索により見つかったデータ要素と検索要求元のユーザとの間のリンクの連鎖を探索し、この検索及び探索の結果を検索UI画面300内に表示してもよい。表示する内容は、例えば、図17の関係表示欄410に表示されたものと同様のものでよい。
また、変形例として、エージェント250は、検索要求に応じて各プロキシ130から返されてきた応答情報に含まれる個々の応答項目(すなわち、検索条件を満たすデータ要素にアクセスできそうなのはどの協業参加メンバかを示す情報であり、検索結果IDが付随している)を順位付けし、順位の高い順にソートして検索UI画面300に提示するようにしてもよい。
この順位付けは、例えば、検索要求元のユーザと、応答情報に含まれる個々の検索結果IDに係る協業参加メンバと、の間の親密度に従って行ってもよい。このために、エージェント250は、協業参加メンバ同士の間の親密度のデータベースを保持していてもよい。この場合、エージェント250は、各プロキシ130からの応答情報内の個々の検索結果IDが示す応答項目について、検索要求元のユーザである協業参加メンバと、当該検索結果IDに対応する協業参加メンバとの間の親密度をそのデータベースから求め、求めた親密度が高いほど高くなるスコアをその応答項目に付与する。そして、それら応答項目をスコアが高い順にソートし、外部検索結果表示欄308に表示する。
親密度のデータベースは、例えば、各協業参加メンバが、それぞれ他の協業参加メンバとの親密度を登録することにより構築してもよい。また、別の例として、協業用のシステム200を介した協業参加メンバ同士の通信(例えば電子メールのやりとり、電子掲示板の投稿やそれに対するレスポンス)の頻度を集計し、その頻度に応じて親密度を求めてデータベースに登録するようにしてもよい。
また、上述したソート部22におけるソートと同様の考え方で、リンク連鎖経路のホップ数に応じ、応答項目の順位付けのためのスコアを求めてもよい。すなわち、探索により求められたリンク連鎖のホップ数が少ないほど、そのリンク連鎖に対応する応答項目のスコアを高くするのである。これは、リンク連鎖のホップ数が少ないほど、当該リンク連鎖の一方の端点である協業参加メンバから他方の端点である検索条件を満たすデータ要素にアクセスしやすいと考えられるからである。このようなリンク連鎖のホップ数に基づく順位付けを行うには、例えば、プロキシ130がホップ数に応じたスコア付けを行い、そのスコアをエージェント250に提供すればよい。この方式では、例えば、プロキシ130は、個々の応答項目(検索結果ID)に対応するリンク連鎖のホップ数を計算し、そのホップ数が少ないほど高くなるようにあらかじめ定めた関係式に従ってそのホップ数に対応するスコアを求める。そして、そのスコアを各検索結果IDに対応づけて応答情報に含め、エージェント250に提供する。なお、1つの検索結果IDに対応する応答項目に複数のリンク連鎖が含まれている場合(例えば、図14の検索結果ID「010001」の応答項目)、それら複数のリンク連鎖のうち最もホップ数の少ないものからスコアを計算すればよい。
また、上述した親密度に基づくスコアとホップ数に基づくスコアを総合した総合スコアに基づき、各応答項目を順位付けしてもよい。
以上に例示した検索装置110、210、プロキシ130及びエージェント250は、それぞれ、例えば、汎用のコンピュータに上述の各機能モジュールの処理を表すプログラムを実行させることにより実現してもよい。ここで、コンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)を制御するHDDコントローラ、各種I/O(入出力)インタフェース、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
10 データベース、12 基点ノード指定受付部、14 上限ホップ数指定受付部、16 検索UI、20 検索処理部、22 ソート部、24 検索結果提示部、32 検索要求取得部、34 検索結果保持部、36 検索結果応答部、38 入手依頼処理部、51 検索条件取得部、53 外部検索処理部、55 メンバ情報記憶部、57 検索結果提示部、59 入手依頼処理部、100A,100B 各組織のシステム、110 検索装置、130 プロキシ、200 協業用のシステム、210 検索装置、250 エージェント。
Claims (8)
- アクセス権を持つユーザの集合がそれぞれ異なる複数のデータベースと、
検索窓口装置と、
を有し、
前記検索窓口装置は、
前記複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段と、
検索要求元のユーザからから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段と、
前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段と、
を有し、
前記複数のデータベースの各々は、
データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段と、
前記検索窓口装置から前記検索要求を取得する検索要求取得手段と、
取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段と、
前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段と、
前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段と、
を有する、ことを特徴とする関連検索システム。 - 前記連鎖探索手段は、
前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノード、又は前記検索要求に含まれる前記検索条件に応じて前記データ検索手段が検索した前記検索結果のデータ要素のノード、を基点ノードとし、
着目ノードに対して1つのリンクを介して接続された隣接ノードのうち当該着目ノード又は当該隣接ノードのうちの少なくとも一方があらかじめ定められた属性を有するという探索条件を満たす隣接ノードを前記グラフ記憶手段から探索する探索処理を、前記基点ノードを着目ノードとして前記探索条件を満たす隣接ノードを探索すると共に、前回の探索により求められた前記探索条件を満たす隣接ノードを次の着目ノードとして前記探索条件を満たす隣接ノードを探索する処理を繰り返すことで、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、前記検索要求に含まれる前記検索条件に応じて前記データ検索手段が検索した前記検索結果のデータ要素のノードと、の間を繋ぐ前記リンクの連鎖を求める、
ことを特徴とする、請求項1に記載の関連検索システム。 - 前記検索窓口装置は、
前記検索要求に対する前記複数のデータベースの各々からの応答情報について、それぞれ、当該応答情報が表す前記登録ユーザのノードと、前記検索条件に適合するデータ要素のノードと、を結ぶ前記リンクの連鎖のホップ数が少ないほど高くなる検索スコアを計算するスコア計算手段と、
を更に有し、
前記検索結果提供手段は、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記各登録ユーザの情報を、前記スコア計算手段により計算された前記検索スコアに基づいて順位付けして提供する、
ことを特徴とする、請求項1又は2に記載の関連検索システム。 - 前記検索窓口装置は、
前記検索要求元のユーザと前記各登録ユーザとの親密度の情報を記憶する親密度記憶手段と、
前記検索要求に対する前記複数のデータベースの各々からの応答情報について、それぞれ、当該応答情報が表す前記登録ユーザと前記検索要求元のユーザとの親密度が高いほど高くなる検索スコアを計算するスコア計算手段と、
を更に有し、
前記検索結果提供手段は、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記各登録ユーザの情報を、前記スコア計算手段により計算された前記検索スコアに基づいて順位付けして提供する、
ことを特徴とする、請求項1又は2に記載の関連検索システム。 - 複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段と、
検索要求元のユーザから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段と、
前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段と、
を有する検索窓口装置。 - データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段と、
検索窓口装置から、当該データベースに対してアクセス権を持つ登録ユーザの識別情報と、検索要求元のユーザが入力した検索条件と、を含んだ検索要求を取得する検索要求取得手段と、
取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段と、
前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段と、
前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段と、
を有する、ことを特徴とするデータベース。 - コンピュータを、
複数のデータベースの少なくとも1つに対してアクセス権を持ち、且つ当該検索窓口装置に登録されたユーザである各登録ユーザについて、当該登録ユーザがそれぞれ前記複数のデータベースのいずれに対してアクセス権を持っているのかを示すアクセス権情報を記憶する登録ユーザ記憶手段、
検索要求元のユーザから検索条件の入力を受けた場合に、前記複数のデータベースのそれぞれに対し、当該データベースに対してアクセス権を持つ前記登録ユーザの識別情報と、前記検索条件と、を含んだ検索要求を送信する検索要求送信手段、
前記検索要求に対する前記複数のデータベースの各々からの応答情報に基づき、前記検索条件に適合するデータ要素に対して1以上のリンクの連鎖を介して辿れる繋がりを有する前記登録ユーザの情報を前記検索要求元のユーザに提供する検索結果提供手段、
として機能させるためのプログラム。 - コンピュータを、
データ要素をノードとしデータ要素同士の関係をリンクとするグラフの情報を記憶するグラフ記憶手段であって、前記データ要素には当該データベースにアクセス権を持つユーザを表すユーザ要素が含まれる、グラフ記憶手段、
検索窓口装置から、当該データベースに対してアクセス権を持つ登録ユーザの識別情報と、検索要求元のユーザが入力した検索条件と、を含んだ検索要求を取得する検索要求取得手段、
取得した検索要求中の前記検索条件に適合するデータ要素を前記グラフ記憶手段の中から検索するデータ検索手段、
前記グラフ記憶手段から、前記データ検索手段が検索した前記検索条件に適合するデータ要素のノードと、前記検索要求に含まれる前記登録ユーザを表すユーザ要素のノードと、を結ぶ前記リンクの連鎖を探索する連鎖探索手段、
前記連鎖探索手段の探索結果に基づき、当該データベースにアクセス権を持つ前記登録ユーザのうち、前記検索条件に適合するデータ要素のノードに対して前記リンクの連鎖により繋がっている前記登録ユーザを特定し、特定した前記登録ユーザを表す応答情報を前記検索窓口装置に応答する応答手段、
として機能させるためのプログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012223668A JP5904082B2 (ja) | 2012-10-05 | 2012-10-05 | 関連検索システム、検索窓口装置、データベース及びプログラム |
SG11201502593YA SG11201502593YA (en) | 2012-10-05 | 2013-05-15 | Association search system, search handling device, database, and program |
PCT/JP2013/063581 WO2014054309A1 (ja) | 2012-10-05 | 2013-05-15 | 関連検索システム、検索窓口装置、データベース及びプログラム |
AU2013325962A AU2013325962B2 (en) | 2012-10-05 | 2013-05-15 | Association search system, search handling device, database, and program |
US14/656,113 US10223428B2 (en) | 2012-10-05 | 2015-03-12 | Association search system, search handling device, database, and non-transitory computer readable medium |
US16/227,421 US20190121815A1 (en) | 2012-10-05 | 2018-12-20 | Association search system, search handling device, database, and non-transitory computer readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012223668A JP5904082B2 (ja) | 2012-10-05 | 2012-10-05 | 関連検索システム、検索窓口装置、データベース及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014075107A JP2014075107A (ja) | 2014-04-24 |
JP5904082B2 true JP5904082B2 (ja) | 2016-04-13 |
Family
ID=50434648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012223668A Expired - Fee Related JP5904082B2 (ja) | 2012-10-05 | 2012-10-05 | 関連検索システム、検索窓口装置、データベース及びプログラム |
Country Status (5)
Country | Link |
---|---|
US (2) | US10223428B2 (ja) |
JP (1) | JP5904082B2 (ja) |
AU (1) | AU2013325962B2 (ja) |
SG (1) | SG11201502593YA (ja) |
WO (1) | WO2014054309A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6310532B1 (ja) * | 2016-11-24 | 2018-04-11 | ヤフー株式会社 | 生成装置、生成方法、及び生成プログラム |
WO2020200404A1 (en) * | 2019-03-29 | 2020-10-08 | Siemens Aktiengesellschaft | Method and query module for querying industrial data |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918222A (en) | 1995-03-17 | 1999-06-29 | Kabushiki Kaisha Toshiba | Information disclosing apparatus and multi-modal information input/output system |
JPH08255150A (ja) * | 1995-03-17 | 1996-10-01 | Toshiba Corp | 情報公開装置及びマルチモーダル情報入出力システム |
JP3446886B2 (ja) * | 1999-12-21 | 2003-09-16 | 日本電気株式会社 | 人脈データ管理システムと人脈探索方法 |
US7831616B2 (en) * | 2000-04-27 | 2010-11-09 | Webfeat, Inc. | Systems and methods for managing database authentication and sessions |
JP3756840B2 (ja) | 2002-04-24 | 2006-03-15 | 徳一 椎原 | 人脈検索システム |
US7240055B2 (en) * | 2003-12-11 | 2007-07-03 | Xerox Corporation | Method and system for expertise mapping based on user activity in recommender systems |
US7788260B2 (en) * | 2004-06-14 | 2010-08-31 | Facebook, Inc. | Ranking search results based on the frequency of clicks on the search results by members of a social network who are within a predetermined degree of separation |
JP2007026419A (ja) * | 2005-06-17 | 2007-02-01 | Hitachi Ltd | ソーシャルネットワーク情報の管理方法およびそのシステム |
US7895210B2 (en) * | 2006-09-29 | 2011-02-22 | Battelle Memorial Institute | Methods and apparatuses for information analysis on shared and distributed computing systems |
US9165040B1 (en) * | 2006-10-12 | 2015-10-20 | Google Inc. | Producing a ranking for pages using distances in a web-link graph |
JP4571609B2 (ja) * | 2006-11-08 | 2010-10-27 | 株式会社日立製作所 | リソース割当方法、リソース割当プログラム、および、管理コンピュータ |
JP2010224941A (ja) | 2009-03-24 | 2010-10-07 | Nec Corp | 関連情報検索装置、関連情報検索方法、および関連情報検索プログラム |
US8396855B2 (en) * | 2010-05-28 | 2013-03-12 | International Business Machines Corporation | Identifying communities in an information network |
EP2407897A1 (en) * | 2010-07-12 | 2012-01-18 | Accenture Global Services Limited | Device for determining internet activity |
-
2012
- 2012-10-05 JP JP2012223668A patent/JP5904082B2/ja not_active Expired - Fee Related
-
2013
- 2013-05-15 SG SG11201502593YA patent/SG11201502593YA/en unknown
- 2013-05-15 WO PCT/JP2013/063581 patent/WO2014054309A1/ja active Application Filing
- 2013-05-15 AU AU2013325962A patent/AU2013325962B2/en active Active
-
2015
- 2015-03-12 US US14/656,113 patent/US10223428B2/en active Active
-
2018
- 2018-12-20 US US16/227,421 patent/US20190121815A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
SG11201502593YA (en) | 2015-05-28 |
AU2013325962A1 (en) | 2015-04-23 |
AU2013325962B2 (en) | 2016-05-05 |
US10223428B2 (en) | 2019-03-05 |
JP2014075107A (ja) | 2014-04-24 |
US20190121815A1 (en) | 2019-04-25 |
US20150186382A1 (en) | 2015-07-02 |
WO2014054309A1 (ja) | 2014-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9015167B1 (en) | User isolated indexes for determining the context and relevance of relationships | |
JP5866922B2 (ja) | 検索装置及びプログラム | |
US10922657B2 (en) | Using an employee database with social media connections to calculate job candidate reputation scores | |
CN105934755B (zh) | 用社交标记来增强搜索结果 | |
TWI401573B (zh) | 使用社交網路存取受信任之使用者產生內容 | |
US9367618B2 (en) | Context based search arrangement for mobile devices | |
US10395326B2 (en) | Collections of linked databases | |
US20120158720A1 (en) | Social network powered search enhancements | |
US8788479B2 (en) | Method and system to update user activities from the world wide web to subscribed social media web sites after approval | |
US9946799B2 (en) | Federated search page construction based on machine learning | |
JP3896014B2 (ja) | 情報収集システム、情報収集方法及びコンピュータに情報収集を実行させるプログラム | |
US9069862B1 (en) | Object-based relationship search using a plurality of sub-queries | |
JP2008217674A (ja) | 情報処理システム、情報処理方法、サーバコンピュータおよびプログラム | |
JP2005259074A (ja) | 人脈パス検索のためのプログラム、装置及び方法 | |
US8560630B2 (en) | Sharing data over trusted networks | |
JP5904082B2 (ja) | 関連検索システム、検索窓口装置、データベース及びプログラム | |
US20140222865A1 (en) | Method, System and Program for Interactive Information Services | |
US20150363803A1 (en) | Business introduction interface | |
US20120005186A1 (en) | System and method for aggregating and interactive ranking of search engine results | |
JP5205192B2 (ja) | ファイル出力管理システムおよびファイル出力管理方法 | |
JP2013125537A (ja) | 求人情報提供システム | |
US20120005183A1 (en) | System and method for aggregating and interactive ranking of search engine results | |
US20150205870A1 (en) | Method, system and program product for interactive information services | |
JP2004220177A (ja) | 情報共有システム、情報共有方法および情報共有方法のプログラム | |
KR20130076348A (ko) | Foaf 데이터 관리 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150306 |
|
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: 20160216 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160229 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5904082 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |