(57)【特許請求の範囲】
【請求項１】
操作主体と当該操作主体に対して許可又は禁止される操作の種類との組み合わせを含むアクセス権情報を記憶するアクセス権情報記憶手段を参照可能なコンピュータに、
前記アクセス権情報記憶手段に記憶された複数のアクセス権情報のうち２つのアクセス権情報の間に、これら２つのアクセス権情報のそれぞれに含まれる前記組み合わせに基づいて定義される関係が成立する場合に、これら２つのアクセス権情報の間に前記関係が成立する旨を表す関係情報を前記アクセス権情報記憶手段に登録する関係情報登録ステップと、
アクセス制限の対象となる情報の一単位であるオブジェクトとアクセス権とを特定する情報を含む設定要求に応じて、前記複数のアクセス権情報のうち前記設定要求で特定されたアクセス権を表すアクセス権情報と、前記設定要求で特定されたオブジェクトと、を関連付けてオブジェクト情報記憶手段に登録するオブジェクト情報登録ステップと、
を実行させることを特徴とするアクセス権情報管理プログラム。
【請求項２】
前記関係情報が表す前記関係は、前記複数のアクセス権情報中の各前記アクセス権情報を元とする集合において、推移律を満たすことを特徴とする請求項１に記載のアクセス権情報管理プログラム。
【請求項３】
前記関係情報が表す前記関係は、前記複数のアクセス権情報中の各前記アクセス権情報を元とする集合において、半順序関係であることを特徴とする請求項２に記載のアクセス権情報管理プログラム。
【請求項４】
前記オブジェクト情報登録ステップにおいて、前記アクセス権情報記憶手段に登録された複数の関係情報に基づいて、前記複数のアクセス権情報から前記特定されたアクセス権を表すアクセス権情報を検索する、
ことを特徴とする請求項１から３のいずれか１項に記載のアクセス権情報管理プログラム。
【請求項５】
前記設定要求で特定されたアクセス権を表すアクセス権情報が前記複数のアクセス権情報中に存在しない場合に、前記特定されたアクセス権を表すアクセス権情報を前記アクセス権情報記憶手段に登録するアクセス権情報登録ステップ、
をさらに前記コンピュータに実行させることを特徴とする請求項１から４のいずれか１項に記載のアクセス権情報管理プログラム。
【請求項６】
前記複数のアクセス権情報中の各前記アクセス権情報を頂点とするグラフ構造であって前記複数の関係情報が表す前記アクセス権情報間の前記関係に対応する辺を有するグラフ構造において、各辺の両端点を始点及び終点とする経路であって当該各辺以外の経路が存在しないように、前記グラフ構造中の各辺を表す情報を前記アクセス権情報記憶手段に登録するステップ、
をさらに前記コンピュータに実行させることを特徴とする請求項３に記載のアクセス権情報管理プログラム。
【請求項７】
前記アクセス権情報記憶手段は、さらに、前記複数のアクセス権情報中の各前記アクセス権情報を元とする前記集合において前記半順序関係についての最小元となる元を表す情報を記憶することを特徴とする請求項６に記載のアクセス権情報管理プログラム。
【請求項８】
前記アクセス権情報記憶手段は、前記複数のアクセス権情報中の各前記アクセス権情報に含まれる操作主体のそれぞれに関し、各操作主体に対して許可又は禁止される操作の種類を表す前記組み合わせだけを含むアクセス権情報を記憶することを特徴とする請求項７に記載のアクセス権情報管理プログラム。
【請求項９】
操作主体と許可又は禁止される操作の種類とを特定する検索要求に応じて、前記複数のアクセス権情報のうち前記検索要求で特定された操作主体に対して前記検索要求で特定された種類の操作の許可又は禁止を表す前記組み合わせだけを含むアクセス権情報を起点として前記グラフ構造を走査することで、前記検索要求で特定された操作主体に対して前記検索要求で特定された種類の操作の実行を許可又は禁止する旨を表すアクセス権情報を検索するアクセス権情報検索ステップと、
前記アクセス権情報検索ステップの検索結果のアクセス権情報に関連付けられたオブジェクトを前記オブジェクト情報記憶手段から検索するステップと、
をさらに前記コンピュータに実行させることを特徴とする請求項８に記載のアクセス権情報管理プログラム。
【請求項１０】
前記複数のアクセス権情報中の各前記アクセス権情報を頂点とするグラフ構造であって前記複数の関係情報が表す前記アクセス権情報間の前記関係に対応する辺を有するグラフ構造に基づいて、前記アクセス権情報を図式的に表示手段に表示させるアクセス権情報表示ステップ、
をさらに前記コンピュータに実行させることを特徴とする請求項１から９のいずれか１項に記載のアクセス権情報管理プログラム。
【請求項１１】
前記複数のアクセス権情報中のアクセス権情報を特定する表示要求に応じて、前記オブジェクト情報記憶手段を参照し、前記表示要求で特定された前記アクセス権情報に関連付けられたオブジェクトに関する情報を表示手段に表示させるオブジェクト表示ステップ、
をさらに前記コンピュータに実行させることを特徴とする請求項１０に記載のアクセス権情報管理プログラム。
【請求項１２】
操作主体と当該操作主体に対して許可又は禁止される操作の種類との組み合わせを含むアクセス権情報を記憶するアクセス権情報記憶手段と、
前記アクセス権情報記憶手段に記憶された複数のアクセス権情報のうち２つのアクセス権情報の間に、これら２つのアクセス権情報のそれぞれに含まれる前記組み合わせに基づいて定義される関係が成立する場合に、これら２つのアクセス権情報の間に前記関係が成立する旨を表す関係情報を前記アクセス権情報記憶手段に登録する関係情報登録手段と、
アクセス制限の対象となる情報の一単位であるオブジェクトとアクセス権とを特定する情報を含む設定要求に応じて、前記複数のアクセス権情報のうち前記設定要求で特定されたアクセス権を表すアクセス権情報と、前記設定要求で特定されたオブジェクトと、を関連付けてオブジェクト情報記憶手段に登録するオブジェクト情報登録手段と、
を備えることを特徴とするアクセス権情報管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス権情報管理プログラム及びアクセス権情報管理装置に関する。
【背景技術】
【０００２】
電子文書のファイルや、ファイルを格納するフォルダなどのオブジェクトを管理するシステムでは、オブジェクトに関してユーザに与えられる利用権限の管理が行われることがある。利用権限の管理は、通常、各オブジェクトに対する各ユーザ又は各グループの権限、例えば閲覧可能／不可、書込可能／不可など、のアクセス権を示す情報を設定登録することで行われる。オブジェクトの利用管理を行うシステムは、ユーザからあるオブジェクトに対する操作の要求を受けた場合、そのオブジェクトについて設定登録されたアクセス権の情報に基づいて、その操作がそのユーザの権限内のものであるかを判定し、その操作を許可するか否かを判定する。
【０００３】
各オブジェクトに対して設定されるアクセス権の情報は、アクセス制御リスト（ACL, Access Control List）と呼ばれる形式で表される場合がある。ＡＣＬは、各ユーザ又は各グループとそのユーザ又はグループのアクセス権とを表すアクセス制御エントリ（ACE, Access Control Entry）を含む。
【０００４】
また例えば、特許文献１には、木構造を用いて機密保護を行う技術が開示されている。特許文献１に記載の技術では、利用者識別子やグループ識別子からなる木構造を生成し、木構造の根ノードに近い識別子の利用者（又はグループ）ほど強い権限を付与するように管理する。
【０００５】
また、アクセス権を考慮して電子文書群をユーザに提示する技術の例として、特許文献２には、あるユーザがアクセス可能な電子文書を、そのアクセス権の種類に応じて分類して提示するシステムが開示されている。このシステムでは、ネットワーク上の各文書サーバから、該文書サーバが有する各電子文書のアクセス権情報を収集してアクセス権ＤＢに登録する。そして、システムにログインしてきたユーザを認証すると、アクセス権ＤＢを参照し、そのユーザに対してアクセス権が与えられた電子文書群をそのアクセス権の種類に従って分類したビューを作成し、そのユーザに提示する。
【０００６】
【特許文献１】特開平０５−２０４７６３号公報
【特許文献２】特開２００５−２４２５８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、各オブジェクトに対してアクセス権を設定するシステムでは、オブジェクトとそのアクセス権とを関連付ける情報は管理されることはあるが、複数のオブジェクトそれぞれに設定される各アクセス権同士の関係が管理されることはない。
【０００８】
本発明の目的は、各オブジェクトに対して設定されるアクセス権を表すアクセス権情報の間の関係を管理するアクセス権情報管理プログラム及びアクセス権情報管理装置を提供することである。
【課題を解決するための手段】
【０００９】
請求項１に係る発明は、操作主体と当該操作主体に対して許可又は禁止される操作の種類との組み合わせを含むアクセス権情報を記憶するアクセス権情報記憶手段を参照可能なコンピュータに、前記アクセス権情報記憶手段に記憶された複数のアクセス権情報のうち２つのアクセス権情報の間に、これら２つのアクセス権情報のそれぞれに含まれる前記組み合わせに基づいて定義される関係が成立する場合に、これら２つのアクセス権情報の間に前記関係が成立する旨を表す関係情報を前記アクセス権情報記憶手段に登録する関係情報登録ステップと、アクセス制限の対象となる情報の一単位であるオブジェクトとアクセス権とを特定する情報を含む設定要求に応じて、前記複数のアクセス権情報のうち前記設定要求で特定されたアクセス権を表すアクセス権情報と、前記設定要求で特定されたオブジェクトと、を関連付けてオブジェクト情報記憶手段に登録するオブジェクト情報登録ステップと、を実行させることを特徴とするアクセス権情報管理プログラムである。
【００１０】
請求項２に係る発明は、請求項１に係る発明において、前記関係情報が表す前記関係は、前記複数のアクセス権情報中の各前記アクセス権情報を元とする集合において、推移律を満たす。
【００１１】
請求項３に係る発明は、請求項２に係る発明において、前記関係情報が表す前記関係は、前記複数のアクセス権情報中の各前記アクセス権情報を元とする集合において、半順序関係である。
【００１２】
請求項４に係る発明は、請求項１から３のいずれか１項に係る発明において、前記アクセス権情報記憶手段に登録された複数の関係情報に基づいて、前記複数のアクセス権情報から前記特定されたアクセス権を表すアクセス権情報を検索する。
【００１３】
請求項５に係る発明は、請求項１から４のいずれか１項に係る発明において、前記設定要求で特定されたアクセス権を表すアクセス権情報が前記複数のアクセス権情報中に存在しない場合に、前記特定されたアクセス権を表すアクセス権情報を前記アクセス権情報記憶手段に登録するアクセス権情報登録ステップ、をさらに前記コンピュータに実行させる。
【００１４】
請求項６に係る発明は、請求項３に係る発明において、前記複数のアクセス権情報中の各前記アクセス権情報を頂点とするグラフ構造であって前記複数の関係情報が表す前記アクセス権情報間の前記関係に対応する辺を有するグラフ構造において、各辺の両端点を始点及び終点とする経路であって当該各辺以外の経路が存在しないように、前記グラフ構造中の各辺を表す情報を前記アクセス権情報記憶手段に登録するステップ、をさらに前記コンピュータに実行させる。
【００１５】
請求項７に係る発明は、請求項６に係る発明において、前記アクセス権情報記憶手段は、さらに、前記複数のアクセス権情報中の各前記アクセス権情報を元とする前記集合において前記半順序関係についての最小元となる元を表す情報を記憶する。
【００１６】
請求項８に係る発明は、請求項７に係る発明において、前記アクセス権情報記憶手段は、前記複数のアクセス権情報中の各前記アクセス権情報に含まれる操作主体のそれぞれに関し、各操作主体に対して許可又は禁止される操作の種類を表す前記組み合わせだけを含むアクセス権情報を記憶する。
【００１７】
請求項９に係る発明は、請求項８に係る発明において、操作主体と許可又は禁止される操作の種類とを特定する検索要求に応じて、前記複数のアクセス権情報のうち前記検索要求で特定された操作主体に対して前記検索要求で特定された種類の操作の許可又は禁止を表す前記組み合わせだけを含むアクセス権情報を起点として前記グラフ構造を走査することで、前記検索要求で特定された操作主体に対して前記検索要求で特定された種類の操作の実行を許可又は禁止する旨を表すアクセス権情報を検索するアクセス権情報検索ステップと、前記アクセス権情報検索ステップの検索結果のアクセス権情報に関連付けられたオブジェクトを前記オブジェクト情報記憶手段から検索するステップと、をさらに前記コンピュータに実行させる。
【００１８】
請求項１０に係る発明は、請求項１から９のいずれか１項に係る発明において、前記複数のアクセス権情報中の各前記アクセス権情報を頂点とするグラフ構造であって前記複数の関係情報が表す前記アクセス権情報間の前記関係に対応する辺を有するグラフ構造に基づいて、前記アクセス権情報を図式的に表示手段に表示させるアクセス権情報表示ステップ、をさらに前記コンピュータに実行させる。
【００１９】
請求項１１に係る発明は、請求項１０に係る発明において、前記複数のアクセス権情報中のアクセス権情報を特定する表示要求に応じて、前記オブジェクト情報記憶手段を参照し、前記表示要求で特定された前記アクセス権情報に関連付けられたオブジェクトに関する情報を表示手段に表示させるオブジェクト表示ステップ、をさらに前記コンピュータに実行させる。
【００２０】
請求項１２に係る発明は、操作主体と当該操作主体に対して許可又は禁止される操作の種類との組み合わせを含むアクセス権情報を記憶するアクセス権情報記憶手段と、前記アクセス権情報記憶手段に記憶された複数のアクセス権情報のうち２つのアクセス権情報の間に、これら２つのアクセス権情報のそれぞれに含まれる前記組み合わせに基づいて定義される関係が成立する場合に、これら２つのアクセス権情報の間に前記関係が成立する旨を表す関係情報を前記アクセス権情報記憶手段に登録する関係情報登録手段と、アクセス制限の対象となる情報の一単位であるオブジェクトとアクセス権とを特定する情報を含む設定要求に応じて、前記複数のアクセス権情報のうち前記設定要求で特定されたアクセス権を表すアクセス権情報と、前記設定要求で特定されたオブジェクトと、を関連付けてオブジェクト情報記憶手段に登録するオブジェクト情報登録手段と、を備えることを特徴とするアクセス権情報管理装置である。
【発明の効果】
【００２１】
請求項１又は１２に係る発明によると、複数のオブジェクトに対してそれぞれ設定される複数のアクセス権情報について、各アクセス権情報の内容に基づいて定義されるアクセス権情報間の関係を管理できる。
【００２２】
請求項２に係る発明によると、複数のオブジェクトに対してそれぞれ設定される複数のアクセス権情報について、推移律を満たすアクセス権情報間の関係に従って管理できる。
【００２３】
請求項３に係る発明によると、複数のオブジェクトに対してそれぞれ設定される複数のアクセス権情報について、各アクセス権情報を元とする半順序集合として管理できる。
【００２４】
請求項４に係る発明によると、アクセス権情報間の関係を用いて、アクセス権情報記憶手段に記憶された複数のアクセス権情報の中から、オブジェクトに対して設定されるアクセス権を表すアクセス権情報を検索することができる。
【００２５】
請求項５に係る発明によると、オブジェクトに対して設定されるアクセス権を表すアクセス権情報を、管理対象としてアクセス権情報記憶手段に登録することができる。
【００２６】
請求項６に係る発明によると、複数のオブジェクトに対してそれぞれ設定される複数のアクセス権情報について、アクセス権情報間の関係に対応する辺を有するグラフ構造であって、３つ以上の頂点を含む経路の両端点を短絡する辺を含まないグラフ構造として管理できる。
【００２７】
請求項７に係る発明によると、アクセス権情報記憶手段中の各アクセス権情報を元とする半順序集合において最小元が存在するため、アクセス権情報記憶手段中のすべてのアクセス権情報を頂点として含む１つのグラフ構造を構成できる。
【００２８】
請求項８に係る発明によると、複数のアクセス権情報が構成するグラフ構造において、同一の操作主体を含む任意の２つのアクセス権情報の間を結ぶ経路が必ず存在するグラフ構造とすることができる。
【００２９】
請求項９に係る発明によると、複数のアクセス権情報が構成するグラフ構造を走査した結果を用いて、特定の操作主体に対して特定の種類の操作の実行が許可又は禁止されるオブジェクトを検索できる。
【００３０】
請求項１０に係る発明によると、複数のアクセス権情報の間の関係を図式的にユーザに提示できる。
【００３１】
請求項１１に係る発明によると、特定のアクセス権情報に従ってアクセスの可否が決定されるオブジェクトに関する情報をユーザに提示できる。
【発明を実施するための最良の形態】
【００３２】
図１は、文書管理システムの概略構成の例を示すブロック図である。このシステムは、インターネットやローカル・エリア・ネットワーク等のネットワーク３０を介して接続された文書管理サーバ１０とクライアント２０−１，２０−２，・・・（以下、クライアント２０と総称する）とから構成される。
【００３３】
文書管理サーバ１０は、本発明の１つの実施形態のアクセス権情報管理装置として機能する。文書管理サーバ１０は、クライアント２０からの処理要求に応じて処理を行う。例えば、文書管理サーバ１０は、クライアント２０から文書の出力要求を受けると、要求対象の文書に設定されたアクセス権に基づいて当該文書の出力の可否を決定し、クライアント２０に対して、当該文書又は文書出力要求を拒否する旨を表す情報を出力する。
【００３４】
文書管理サーバ１０は、処理要求受付部１００、制御部１１０、処理結果出力部１２０、オブジェクト情報管理部１３０、ＡＣＬグラフ管理部１４０、ＡＣＬツリー表示部１５０、検索処理部１６０、及びアクセス制御部１７０を備える。また、文書管理サーバ１０は、文書ＤＢ（データベース）４０、オブジェクト情報ＤＢ５０、ＡＣＬ情報ＤＢ６０、及びユーザ情報ＤＢ７０、を参照可能である。これら各種ＤＢは、文書管理サーバ１０にネットワークを介して接続されていてもよいし、文書管理サーバ１０が備える記憶装置（図示しない）上に構築されていてもよい。
【００３５】
処理要求受付部１００は、ネットワークを介して接続されたクライアント２０からの処理要求を受け付けて、受け付けた要求の内容を制御部１１０に渡す。
【００３６】
制御部１１０は、文書管理サーバ１０の各部における処理を制御する。制御部１１０は、クライアント２０からの処理要求を処理要求受付部１００から受け取ると、受け取った要求の内容に応じた処理を行うよう文書管理サーバ１０の各部を制御し、その処理結果を取得して処理結果出力部１２０に渡す。
【００３７】
処理結果出力部１２０は、クライアント２０からの処理要求に応じた処理の結果を制御部１１０から取得して、取得した処理結果をクライアント２０に対して出力する。
【００３８】
オブジェクト情報管理部１３０は、文書管理サーバ１０が管理する各オブジェクトに関する情報を管理する。以下の説明において、「オブジェクト」とは、文書や画像などのデータを含むファイル、及びファイルを格納するフォルダなど、アクセス制限の対象となる情報の一単位を表す。例えば、オブジェクト情報管理部１３０は、文書管理サーバ１０の管理対象の文書ファイルのオブジェクトを管理する。文書管理サーバ１０の管理対象の文書ファイルは、文書ＤＢ４０に格納される。文書ＤＢ４０は、一般的なファイルシステムであってよい。また例えば、オブジェクト情報管理部１３０は、各オブジェクトのアクセス権の設定情報を管理する。本実施形態では、各オブジェクトのアクセス権は、ＡＣＬの形式で表される。
【００３９】
また、オブジェクト情報管理部１３０は、各オブジェクトに対してシステム内で一意なオブジェクトＩＤ（識別子）を付与し、各オブジェクトのオブジェクトＩＤと、そのオブジェクトの属性情報と、を関連付けてオブジェクト情報ＤＢ５０に登録する。オブジェクトの属性情報には、オブジェクトの名前、オブジェクトの種類（文書ファイルオブジェクト、画像ファイルオブジェクト、及びフォルダオブジェクトなど）、オブジェクトの作成者、オブジェクトの実体データのデータベースにおける格納位置、及び、オブジェクトに対するアクセス権を表すＡＣＬなどがある。
【００４０】
図２に、オブジェクト情報ＤＢ５０のデータ内容の一例を示す。図２の表の１行は、１つのオブジェクトに対応する。図２を参照し、オブジェクト情報ＤＢ５０には、各オブジェクトのオブジェクトＩＤに関連付けて、「オブジェクト名」、「オブジェクトタイプ」、「作成者」、「格納位置」、及び「ＡＣＬ＿ＩＤ」の各項目が登録される。オブジェクト名は、対応するオブジェクトに対して、例えばユーザ又はシステムの管理者などが付与した名称である。オブジェクトタイプは、オブジェクトの種類を表す。作成者は、オブジェクトを作成したユーザを表す。格納位置は、オブジェクトが格納されているデータベース上の格納位置を表す。格納位置の項目には、例えば、ファイルシステムにおけるオブジェクトの格納位置を表すパス情報が登録される。文書管理サーバ１０は、この格納位置の項目の値を参照することでオブジェクトの実体データを取得する。ＡＣＬ＿ＩＤは、オブジェクトに対する操作権限を表すＡＣＬの識別情報である。ＡＣＬ＿ＩＤに対応するＡＣＬの内容は、後述のＡＣＬ情報ＤＢ６０に記憶される。
【００４１】
図２の例の表において各オブジェクトＩＤに関連付けられる各項目のうち、ＡＣＬ＿ＩＤ以外の項目は必須ではない。オブジェクト情報ＤＢ５０には、オブジェクトＩＤとＡＣＬ＿ＩＤとの組を登録しておけば、その他の各項目は、システムの管理目的上必要なければ登録しなくてもよい。あるいは、例えばオブジェクトの作成日時など、図２に例示する項目以外の項目を各オブジェクトＩＤに関連付けて登録してもよい。
【００４２】
ＡＣＬグラフ管理部１４０は、オブジェクトに設定されるＡＣＬに関する情報を管理する。例えば、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０に新規にＡＣＬを登録したり、ＡＣＬ情報ＤＢ６０からＡＣＬを削除したりする。また例えば、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０内に登録されたＡＣＬについて、後述するＡＣＬ間の関係に基づくグラフ構造を生成して管理する。
【００４３】
図３に、ＡＣＬ情報ＤＢ６０のデータ内容の一例を示す。図３を参照し、ＡＣＬ情報ＤＢ６０には、各ＡＣＬのＡＣＬ＿ＩＤに対応づけて、「ＡＣＬ名」、「ＡＣＥ」、「上位ＡＣＬ」、「下位ＡＣＬ」、及び「オブジェクトＩＤ」の各項目が登録される。ＡＣＬ＿ＩＤは、各ＡＣＬに付与されるシステム内で一意な識別情報であり、オブジェクト情報ＤＢ５０にオブジェクトＩＤと関連付けて登録されるＡＣＬ＿ＩＤと同様である。ＡＣＬ名は、対応するＡＣＬに対して、例えばユーザ又はシステムの管理者などが付与した名称である。ＡＣＬ名が付与されていない場合は、ＡＣＬ名の項目の値は「ＮＵＬＬ」に設定される。
【００４４】
ＡＣＥは、ＡＣＬにおいて、各ユーザ又はユーザグループに対して許可される操作の種類を表す。ＡＣＥの項目は、「主体」及び「権限」の各項目を下位項目に含む。主体の項目には、ユーザ又はユーザグループの識別情報（ユーザＩＤ又はグループＩＤ）が登録される。権限の項目には、対応するユーザ又はユーザグループに対して許可される操作の種類が登録される。図３の例では、文字「ｍ」は「管理権限」、文字「ｗ」は「書き込み権」、及び文字「ｒ」は「読み込み権」を表す。１つの主体と対応する権限との組み合わせが１つのＡＣＥである。各ＡＣＬは、１以上のＡＣＥを含む。図３の例では、ＡＣＬ＿ＩＤ"acl1"のＡＣＬは、主体「全ユーザ」に対して、権限「ｒ（読み込み権）」を許可する旨を表すＡＣＥを１つ含む。また例えば、ＡＣＬ＿ＩＤ"acl7"のＡＣＬは、主体「鈴木太郎」に対して、権限「ｍ（管理権），ｗ（書き込み権），ｒ（読み込み権）」を許可する旨を表すＡＣＥと、主体「営業一課」に対して、権限「ｗ（書き込み権），ｒ（読み込み権）」を許可する旨を表すＡＣＥと、の２つのＡＣＥを含む。
【００４５】
上位ＡＣＬ及び下位ＡＣＬの各項目には、対応するＡＣＬとの間に後述の所定の関係を有するＡＣＬのＡＣＬ＿ＩＤが登録される。また、ＡＣＬ＿ＩＤと上位ＡＣＬ又は下位ＡＣＬとの組は、後述するＡＣＬ間の関係に基づくグラフ構造中の辺を表す情報である。
【００４６】
オブジェクトＩＤの項目には、対応するＡＣＬを参照してアクセスの可否を決定するオブジェクトのオブジェクトＩＤが登録される。したがって、ＡＣＬ情報ＤＢ６０において互いに関連付けられるＡＣＬ＿ＩＤとオブジェクトＩＤとの組は、オブジェクト情報ＤＢ５０においても互いに関連付けられる。なお、後述のように、ＡＣＬ情報ＤＢ６０内には、いずれのオブジェクトからも参照されないＡＣＬが登録される場合もある。いずれのオブジェクトからも参照されないＡＣＬに関しては、オブジェクトＩＤの項目の値は「ＮＵＬＬ」に設定される。
【００４７】
なお、図３の例の表の各項目は単なる例示であり、必要に応じて、図３の例の項目の一部を省略したり、図３に例示しない項目を追加したりしてもよい。例えば、上位ＡＣＬの項目を登録しておけば、下位ＡＣＬの項目は登録しなくてもよい。ＡＣＬ情報ＤＢ６０において下位ＡＣＬの項目を登録しない場合、各ＡＣＬ＿ＩＤに対応するＡＣＬの下位ＡＣＬは、そのＡＣＬ＿ＩＤを上位ＡＣＬの項目の値として含むＡＣＬ＿ＩＤを検索することで取得される。また例えば、図３の例のオブジェクトＩＤの項目は、ＡＣＬ情報ＤＢ６０においては必須ではない。上述のようにオブジェクト情報ＤＢ５０においてオブジェクトＩＤに関連付けてＡＣＬ＿ＩＤを登録しておけば、ＡＣＬ情報ＤＢ６０においてオブジェクトＩＤの項目を登録しなくても、オブジェクト情報ＤＢ５０を参照することで、各ＡＣＬ＿ＩＤに関連付けられたオブジェクトＩＤが取得される。
【００４８】
ＡＣＬツリー表示部１５０は、ＡＣＬグラフ管理部１４０が管理するＡＣＬ間の関係に基づいて、ＡＣＬを図式的に表示させる表示情報を生成する。ＡＣＬツリー表示部１５０が生成する表示情報の詳細は後述する。
【００４９】
検索処理部１６０は、制御部１１０が示す検索条件を満たすオブジェクトを検索する処理を行う。例えば、検索処理部１６０は、ユーザＩＤと操作の種類とを指定する検索指示を制御部１１０から受けた場合に、指定されたユーザＩＤのユーザに対して、指定された種類の操作の実行が許可又は禁止されるオブジェクトを検索する処理を行う。
【００５０】
ユーザ情報ＤＢ７０は、ユーザに関する情報を記憶するデータベースである。ユーザ情報ＤＢ７０には、例えば、ユーザグループのグループＩＤと、そのユーザグループに所属するユーザのユーザＩＤと、が関連付けられて登録される。
【００５１】
アクセス制御部１７０は、文書又はフォルダなどのオブジェクトに対するクライアント２０からの操作要求を受けた場合に、その操作の実行の可否を決定する。例えば、アクセス制御部１７０は、処理要求受付部１００及び制御部１１０を介して、要求元のクライアント２０のユーザのユーザＩＤと、操作要求の対象のオブジェクトのオブジェクトＩＤと、を受け取ると、オブジェクト情報管理部１３０を介してオブジェクト情報ＤＢ５０を参照し、対象のオブジェクトＩＤに関連付けられるＡＣＬ＿ＩＤを取得する。そして、このＡＣＬ＿ＩＤに対応するＡＣＬに含まれるＡＣＥについて、ＡＣＬグラフ管理部１４０を介してＡＣＬ情報ＤＢ６０を参照し、要求元のクライアント２０のユーザに対して要求された種類の操作の実行が許可されているか否かを判定する。そして、この判定結果に従って、要求された操作の実行の可否を決定する。
【００５２】
以下、ＡＣＬグラフ管理部１４０によるＡＣＬの管理について説明する。ＡＣＬグラフ管理部１４０は、ＡＣＬ中のＡＣＥに基づいて定義されるＡＣＬ間の関係を用いてＡＣＬを管理する。また、ＡＣＬグラフ管理部１４０は、ＡＣＬ間の関係に基づいてグラフ構造を生成して管理する。ＡＣＬ間の関係及びＡＣＬからなるグラフ構造（ＡＣＬグラフ）は、後に例示する数学的モデルによって表現されるものであってよい。
【００５３】
ＡＣＬ間の関係及びＡＣＬグラフの数学的モデルの例について述べる前に、まず、説明で用いる集合論及びグラフ理論の用語を説明する。
【００５４】
＜集合論の用語＞
・同値関係
集合Ａ上の関係〜が、次の条件（反射律、対称律、及び推移律）を満たす場合、関係〜は同値関係であるという。
反射律：任意の元ｘ∈Ａに対して、ｘ〜ｘ
対称律：任意の元ｘ，ｙ∈Ａに対して、ｘ〜ｙならばｙ〜ｘ
推移律：任意の元ｘ，ｙ，ｚ∈Ａに対して、ｘ〜ｙかつｙ〜ｚならばｘ〜ｚ
・半順序関係
集合Ａ上の関係〜が、次の条件（反射律、推移律、及び反対称律）を満たす場合、関係〜は半順序関係であるという。半順序関係は、単に「順序関係」と呼ばれる場合もある。
反射律：任意の元ｘ∈Ａに対して、ｘ〜ｘ
推移律：任意の元ｘ，ｙ，ｚ∈Ａに対して、ｘ〜ｙかつｙ〜ｚならばｘ〜ｚ
反対称律：任意の元ｘ，ｙ∈Ａに対して、ｘ〜ｙかつｙ〜ｘならばｘ＝ｙ
・同値類
集合Ａ上の同値関係〜について、ａ∈Ａに対するＡの部分集合｛ｘ∈Ａ｜ａ〜ｘ｝を、
ａを代表元とする同値類と呼び、［ａ］と記載する。
・商集合
集合Ａ上の同値関係〜について、同値類全体のなす集合｛［ｘ］｜ｘ∈Ａ｝を、Ａの〜
による商集合と呼び、Ａ／〜と表す。
【００５５】
＜グラフ理論の用語＞
・有向グラフ
集合Ｖ，Ｅと、関数ｆ：Ｅ→Ｖ×Ｖにおいて、対（ｆ，Ｖ，Ｅ）を有向グラフという。Ｖの要素を頂点（ノード）と呼び、Ｅの要素を辺（エッジ）と呼ぶ。
・ループ
辺の両端点が等しいとき、その辺をループ（自己ループ）という。
・多重辺
任意の２頂点間に複数の辺が存在するとき、これら複数の辺を多重辺という。
・単純グラフ
ループ及び多重辺のいずれも含まないグラフを単純グラフという。
・隣接
辺と辺とがある頂点を共有しているとき、その辺同士は隣接しているという。
・パス
２頂点間（始点と終点）を隣接している辺で辿った系列のうち、頂点も辺も重複しない系列をパス（道、経路）という。
【００５６】
以下、ＡＣＬ間の関係を表現する数学的モデルの例について述べる。
【００５７】
＜ＡＣＬのモデル表現＞
空でない有限集合Ｕ、空でない有限集合Ｐ、及び有限集合Ａについて、関数ｆAを、
ｆA：Ａ→Ｕ×２P
とするとき、組（ｆA，Ｕ，Ｐ，Ａ）を権限定義と呼ぶ。また、ｕ∈Ｕを主体と呼び、また、ρ∈Ｐを権限と呼ぶ。集合Ａの要素は、上述のＡＣＥを表す。ＡＣＥ：α∈ＡについてｆA（α）＝（ｕ，ｐ）であるとき、ρ∈ｐ⊆Ｐなる権限ρに関して、ＡＣＥ：αは主体ｕに対して権限ρを許可することを表す。以下、ＡＣＥを単に（ｕ，ｐ）と表記し、ｆA（α）＝（ｕ，ｐ）となるα∈Ａを指す場合もある。
【００５８】
[権限定義及びＡＣＥの例]
Ｕ＝｛鈴木太郎，山田花子，佐藤次郎，開発１グループ，管理責任者，全ユーザ｝
Ｐ＝｛読み込み権，書き込み権，管理権｝
ｕ＝鈴木太郎，ｐ＝｛書き込み権，読み込み権｝
ＡＣＥ：（ｕ，ｐ）＝（鈴木太郎，｛書き込み権，読み込み権｝）
【００５９】
また、主体を抽出する関数ｐｒｎ：Ｕ×２P→Ｕを次のように定義する。
任意のｘ＝（ｕ，ｐ）∈Ｕ×２Pに対してｐｒｎ（ｘ）＝ｐｒｎ（ｕ，ｐ）＝ｕ
【００６０】
ＡＣＥ：ａ∈Ａの主体ｐｒｎ（ｆA（ａ））を略してｐｒｎ（ａ）と表記する場合がある。
【００６１】
さらに、権限定義（ｆA，Ｕ，Ｐ，Ａ）及び有限集合£において、関数ｆLを、
ｆL：£→｛Ａ´⊆Ａ｜∀ａ，ｂ∈Ａ´；ｐｒｎ（ａ）＝ｐｒｎ（ｂ）⇒ｆA（ａ）＝ｆA（ｂ）｝
とするとき、組（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）をアクセス権と呼ぶ。£の要素は、上述のＡＣＬを表す。集合£をＡＣＬ集合と呼ぶ。
【００６２】
また、ＡＣＬの取りうる値の集合、すなわち関数ｆLの値域全体を、ｆL（£）と表す。
ｆL（£）＝｛Ａ´⊆Ａ｜∀ａ，ｂ∈Ａ´；ｐｒｎ（ａ）＝ｐｒｎ（ｂ）⇒ｆA（ａ）
＝ｆA（ｂ）｝
【００６３】
さらに、ｆL（Ｌ）＝φとなるようなＬ∈£を空のＡＣＬと呼ぶ。図３の例のＡＣＬ情報ＤＢ６０では、ＡＣＬ＿ＩＤ"acl0"のＡＣＬが空のＡＣＬに該当する。
【００６４】
なお、ＡＣＬ：Ｌの主体の集合｛ｐｒｎ（ａ）｜ａ∈Ｌ｝を略してｐｒｎ（Ｌ）と表記する場合がある。
【００６５】
また、関数ＦL：£→｛ｘ｜ｘ⊆Ｕ×２P｝を次のように定義する。
ＦL（Ｌ）＝｛（ｕ，ｐ）｜∃ａ∈ｆL（Ｌ）⊆Ａ（ｕ，ｐ）＝ｆA（ａ）｝⊆Ｕ×２P
【００６６】
以下、ＡＣＬを単に｛α，β，…｝又は｛（ｕ１，ｐ１），（ｕ２，ｐ２），…｝のように表記し、ｆL（Ｌ）＝｛α，β，…｝又はＦL（Ｌ）＝｛（ｕ１，ｐ１），（ｕ２，ｐ２），…｝となるＬ∈£を指す場合もある。
【００６７】
［ＡＣＬの例］
ＡＣＬ：Ｌ1＝｛（鈴木太郎，｛書き込み権，読み込み権｝），（山田花子，｛管理権，書き込み権，読み込み権｝），（開発１グループ，｛読み込み権｝）｝
【００６８】
［ＡＣＬとしての条件を満たさない例］
Ｍ＝｛（鈴木太郎，｛書き込み権，読み込み権｝），（鈴木太郎，｛管理権，読み込み権｝）｝
【００６９】
以上で説明したＡＣＬ：Ｌ∈£は、図３の例を参照して説明したＡＣＬ情報ＤＢ６０に登録されるＡＣＬに対応する。ＡＣＬ情報ＤＢ６０におけるＡＣＬ＿ＩＤは、各ＡＣＬ：Ｌ∈£に対して付与される識別情報である。さらに、ＡＣＬ情報ＤＢ６０において、ＡＣＥの項目中の主体及び権限の各下位項目の値の組は、（ｕ，ｐ）∈ＦL（Ｌ）を表す。
【００７０】
上述のＡＣＬ集合£に関し、例えば、次に述べるＡＣＬ間の関係を定義する。
【００７１】
＜ＡＣＬ間の同値関係＞
アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ集合£上に、次の条件を満たす二項関係〜を定義する。
（条件）Ｌ1，Ｌ2∈£について、ＦL（Ｌ1）＝ＦL（Ｌ2）であるとき、Ｌ1〜Ｌ2
この条件の定義により、関係〜は、ＡＣＬ集合£上の同値関係である。
【００７２】
＜ＡＣＬ間の半順序関係＞
アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）の上述の同値関係〜によるＡＣＬの商集合£／〜上に次の条件を満たす二項関係≦を定義する。
（条件）ＡＣＬの同値類［Ｌ1］，［Ｌ2］⊆£について、任意の（ｕ，ｐ）∈ＦL（Ｌ1）に対して、あるｐ⊆ｐ´⊆Ｐが存在して、（ｕ，ｐ´）∈ＦL（Ｌ2）であるとき、［Ｌ1］≦［Ｌ2］
この条件の定義より、関係≦は半順序関係である。この定義は、Ｌ1≠Ｌ2かつＬ1〜Ｌ2であっても、反対称律［Ｌ1］≦［Ｌ2］かつ［Ｌ2］≦［Ｌ1］ならば［Ｌ1］＝［Ｌ2］が成立することに注意されたい。アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）における組（£／〜，≦）をＡＣＬ空間と呼ぶ。ＡＣＬ空間は半順序集合である。
【００７３】
［半順序関係≦を有するＡＣＬの具体例］
ＡＣＬ：Ｌ1＝｛（鈴木太郎，｛書き込み権，読み込み権｝），（山田花子，｛管理権，書き込み権，読み込み権｝），（開発１グループ，｛読み込み権｝）｝
ＡＣＬ：Ｌ2＝｛（鈴木太郎，｛書き込み権，読み込み権｝），（山田花子，｛読み込み権｝）｝
のとき、［Ｌ2］≦［Ｌ1］である。
【００７４】
［半順序関係≦を有しないＡＣＬの具体例］
ＡＣＬ：Ｌ1＝｛（鈴木太郎，｛書き込み権，読み込み権｝），（山田花子，｛管理権，書き込み権，読み込み権｝）｝
ＡＣＬ：Ｌ2＝｛（鈴木太郎，｛管理権，書き込み権，読み込み権｝），（山田花子，｛書き込み権，読み込み権｝）｝
のとき、［Ｌ1］と［Ｌ2］との間に半順序関係≦は成り立たない。
【００７５】
なお、本実施形態の説明では、［Ｌ2］≦［Ｌ1］が成立するとき、ＡＣＬ：Ｌ1をＡＣＬ：Ｌ2の「下位のＡＣＬ」と呼び、逆に、ＡＣＬ：Ｌ2をＡＣＬ：Ｌ1の「上位のＡＣＬ」と呼ぶ。
【００７６】
＜Allow-Denyモデル＞
以上で説明したＡＣＬのモデルの例は、主体に対して操作（権限）を許可するモデルである。他の例では、主体に対して操作を明示的に禁止するモデルとしてもよい。このようなＡＣＬのモデルにおける半順序関係は、例えば、次のように定義すればよい。
【００７７】
次の条件をすべて満たすアクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ空間（£／〜，≦）をＡｌｌｏｗ−ＤｅｎｙＡＣＬ空間と呼ぶ。
（条件１）アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）の部分集合Ｐ´⊆Ｐに対して、条件「任意のρ∈Ｐ´に対して、ρ≠ｇ（ρ）かつρ＝ｇ（ｇ（ρ））」を満たすＰ´上の全単射ｇ：Ｐ´→Ｐ´が存在する。
（条件２）任意の（ｕ，ｐ）∈ＦL（£）に対して、ρ∈ｐならば¬（ｇ（ρ）∈ｐ）
（条件１）及び（条件２）より、Ｐ´を次のように分割できる。
Ｐ´＝Ｐ+∪Ｐ-かつＰ+∩Ｐ-＝φであり、
任意のρ∈Ｐ+に対して、ｇ（ρ）∈Ｐ-
ＡＣＥ（ｕ，ｐ）について、ρ∈ｐかつρ∈Ｐ+であればＡＣＥ（ｕ，ｐ）は、主体ｕに対して権限ρを許可するといい、ω＝ｇ（ρ）∈ｐかつω∈Ｐ-であれば、ＡＣＥ（ｕ，ｐ）は主体ｕに対して権限ρを禁止するという。
【００７８】
［Allow-DenyモデルによるＡＣＬの具体例］
Ｐ＝｛読み込み許可，読み込み禁止，書き込み許可，書き込み禁止，管理許可，管理禁止｝
ｇ：Ｐ→Ｐ
ｇ（読み込み許可）＝読み込み禁止
ｇ（読み込み禁止）＝読み込み許可
ｇ（書き込み許可）＝書き込み禁止
ｇ（書き込み禁止）＝書き込み許可
ｇ（管理許可）＝管理禁止
ｇ（管理禁止）＝管理許可
Ｐ+＝｛読み込み許可，書き込み許可，管理許可｝
Ｐ-＝｛読み込み禁止，書き込み禁止，管理禁止｝
ＡＣＬ：Ｌ1＝｛（鈴木太郎，｛書き込み許可，読み込み許可｝），（山田花子，｛管理許可，書き込み許可，読み込み許可｝），（開発１グループ，｛読み込み許可，管理禁止｝）｝
なお、本具体例において、例えば、Ｍ＝｛（鈴木太郎，｛書き込み許可，読み込み許可，管理禁止，書き込み禁止｝）｝などは、（条件１）及び（条件２）を満たさないため、ＡＣＬであるとはいえない。
【００７９】
以上、ＡＣＬ間の半順序関係についての数学的モデルの例を示した。以下、ＡＣＬグラフの数学的モデルの例を示す。
【００８０】
＜ＡＣＬグラフ＞
アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ空間（£／〜，≦）におけるＡＣＬ集合Ｓ⊆£に対し、辺集合Ｅを、
Ｅ＝｛（［Ｌ1］，［Ｌ2］）｜［Ｌ1］≦［Ｌ2］かつ［Ｌ1］≠［Ｌ2］；Ｌ1，Ｌ2∈Ｓ｝⊆Ｓ／〜×Ｓ／〜
とする有向グラフＧ：（Ｓ／〜，Ｅ）を、ＡＣＬ集合ＳのＡＣＬグラフと呼ぶ。
【００８１】
以上より、ＡＣＬグラフＧ：（Ｓ／〜，Ｅ）について、辺集合ＥはＳ／〜×Ｓ／〜の部分集合として定められる。したがって、例えば、関数ｆG：Ｅ→Ｓ／〜×Ｓ／〜を、
任意のｅ＝（［Ｌ1］，［Ｌ2］）∈Ｅに対してｆG（ｅ）＝ｅ＝（［Ｌ1］，［Ｌ2］）
と定義し、Ｇ：（Ｓ／〜，Ｅ）を、Ｇ：（ｆG，Ｓ／〜，Ｅ）と表現してもよい。
【００８２】
ＡＣＬグラフＧの辺集合Ｅの定義より、ＡＣＬグラフＧは、ループや多重辺を含まない単純グラフである。
【００８３】
また、辺集合Ｅの定義より、辺ｅ＝（［Ｌ1］，［Ｌ2］）∈Ｅは、半順序関係≦に関し、上位のＡＣＬ：Ｌ1から下位のＡＣＬ：Ｌ2へ向かう辺であると解釈してよい。
【００８４】
図４に、ＡＣＬグラフの一例を示す。図４は、図３の例のデータ内容がＡＣＬ情報ＤＢ６０に登録されている場合のＡＣＬグラフの例である。図４において、ＡＣＬ間を結ぶ矢印は、辺ｅ∈Ｅを表し、図４中の矢印の向きは、半順序関係≦に関して、上位から下位へ向かう方向を表す。図３及び図４を参照し、ＡＣＬ情報ＤＢ６０において各ＡＣＬ＿ＩＤの「上位ＡＣＬ」及び「下位ＡＣＬ」の各項目の値は、ＡＣＬグラフにおいて各ＡＣＬ＿ＩＤに対応するＡＣＬを一方の端点とする辺の他方の端点となるＡＣＬを表す。さらに、「上位ＡＣＬ」及び「下位ＡＣＬ」の各項目の値は、それぞれ、各ＡＣＬ＿ＩＤに対応するＡＣＬに対して半順序関係≦に関して上位及び下位のＡＣＬを表す。例えば、図４の例のＡＣＬグラフにおいて、ＡＣＬ＿ＩＤ"acl2"のＡＣＬに着目すると、"acl2"を一方の端点とする辺は、ＡＣＬ＿ＩＤ"acl0"のＡＣＬから"acl2"へ向かう辺、及び、"acl2"からＡＣＬ＿ＩＤ"acl3"のＡＣＬへ向かう辺である。図３の例の表において、ＡＣＬ＿ＩＤ"acl2"の「上位ＡＣＬ」の項目の値は"acl0"であり、「下位ＡＣＬ」の項目の値は"acl3"である。
【００８５】
＜制約付きＡＣＬグラフ＞
ＡＣＬ空間（£／〜，≦）上のＡＣＬグラフ（Ｓ／〜，Ｅ）が次の条件を満たすとき、ＡＣＬグラフ（Ｓ／〜，Ｅ）を「制約付きＡＣＬグラフ」と呼ぶ。
（条件Ｇ１）あるＬ0∈Ｓが存在して、ＦL（Ｌ0）＝φ
（条件Ｇ２）Ｌ1，Ｌ2∈Ｓに対して、［Ｌ1］≦［Ｌ2］ならば、［Ｌ1］，ｅ1，［Ｌ´］，ｅ2，…，ｅn，［Ｌ２］となるような有向のパスが存在する。
すなわち、Ｅ´⊆Ｅが存在して次の条件を満たす。
（条件Ｇ２−１）あるＬ´∈Ｓが存在して、（［Ｌ1］，［Ｌ´］）∈Ｅ´
（条件Ｇ２−２）あるＬ´´∈Ｓが存在して、（［Ｌ´´］，［Ｌ2］）∈Ｅ´
（条件Ｇ２−３）（［Ｌx］，［Ｌy］）∈Ｅ´に対してＬy〜Ｌ2でなければ、あるＬz∈Ｓが存在して、（［Ｌy］，［Ｌz］）∈Ｅ´
【００８６】
（条件Ｇ１）は、制約付きＡＣＬグラフが空のＡＣＬを含むことを表す。空のＡＣＬは、ＡＣＬ空間（£／〜，≦）における最小元である。
【００８７】
なお、（条件Ｇ２）に関し、定義より辺集合Ｅは有限集合であることに注意されたい。
【００８８】
（条件Ｇ１）及び（条件Ｇ２）より、制約つきＡＣＬグラフは連結グラフであって、任意の頂点に対して、空のＡＣＬに対応する頂点［Ｌ0］を始点とする有向のパスが存在することがわかる。したがって、ＡＣＬ情報ＤＢに空のＡＣＬを登録すると、ＡＣＬ情報ＤＢ内のすべてのＡＣＬが１つのＡＣＬグラフに含まれることになる。図４に例示するＡＣＬグラフは、（条件Ｇ１）及び（条件Ｇ２）を満たす制約付きＡＣＬグラフである。
【００８９】
＜最適化ＡＣＬグラフ＞
上述の（条件Ｇ１）及び（条件Ｇ２）を満たす制約付きＡＣＬグラフであって、さらに、次の（条件Ｇ３）〜（条件Ｇ５）を満たすＡＣＬグラフ（Ｓ／〜，Ｅ）を、最適化ＡＣＬグラフと呼ぶ。
（条件Ｇ３）Ｌ1，Ｌ2∈Ｓに対して、あるＬ3∈Ｓが存在して、［Ｌ1］≦［Ｌ3］≦［Ｌ2］かつ［Ｌ1］≠［Ｌ3］≠［Ｌ2］ならば、（［Ｌ1］，［Ｌ2］）∈Ｅではない
（条件Ｇ４）［Ｌ1］≦［Ｌ2］でも［Ｌ2］≦［Ｌ1］でもないようなＬ1，Ｌ2∈Ｓ⊆£に対して、あるｕ∈Ｕが存在して、（ｕ，ｐ1）∈ＦL（Ｌ1）かつ（ｕ，ｐ2）∈ＦL（Ｌ2）かつｐ1∩ｐ2≠φであるならば、あるＬ≠φ∈Ｓが存在して、［Ｌ］≦［Ｌ1］かつ［Ｌ］≦［Ｌ2］
（条件Ｇ５）  任意のＬ∈Ｓの任意のｘ∈ＦL（Ｌ）に対して、あるＬ´∈Ｓが存在して、ＦL（Ｌ´）≠φかつ∀ｙ∈ＦL（Ｌ´）に対してｐｒｎ（ｙ）＝ｐｒｎ（ｘ）
【００９０】
（条件Ｇ３）は、ＡＣＬグラフにおいて、任意の辺ｅ∈Ｅの両端点を始点及び終点とするパスは、その辺ｅ唯一つであることを表す。言い換えると、ＡＣＬグラフにおいて、任意の２つのＡＣＬ：Ｌi，Ｌj∈Ｓの間に、他のＡＣＬ：Ｌk∈Ｓを通るパスが存在する場合、当該２つのＡＣＬ：Ｌi，Ｌjを両端とする辺が存在しない、つまり、Ｌiから直接Ｌjへ向かうショートカットの辺が存在しないことを表す。
【００９１】
（条件Ｇ４）は、互いに半順序関係の成立しない任意の２つのＡＣＬについて、両者が共通の主体を含むＡＣＥを有し、かつ、そのＡＣＥに共通する権限が含まれる場合に、その２つのＡＣＬに対して上位のＡＣＬであって空でないＡＣＬがＡＣＬグラフ中に存在することを表す。
【００９２】
（条件Ｇ５）は、Ｓに関連する任意の主体ｕ（＝ｐｒｎ（ｘ））に対して、ＡＣＥをただ１つだけ有し、その主体がｕであるようなＬ´が必ず存在することを表す。
【００９３】
図４の例のＡＣＬグラフは、（条件Ｇ３）〜（条件Ｇ５）を満たす最適化ＡＣＬグラフである。
【００９４】
＜ＡＣＬの積＞
また、アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）において、£上の演算＊を定義する。Ｌ1，Ｌ2∈£に対しＬ1＊Ｌ2∈£は次の条件を満たす。
（条件）ＦL（Ｌ1＊Ｌ2）＝｛（ｕ，ｐ1∩ｐ2）｜ｕ∈ｐｒｎ（Ｌ1）∩ｐｒｎ（Ｌ2），（ｕ，ｐ1）∈ＦL（Ｌ1），（ｕ，ｐ2）∈ＦL（Ｌ2），ｐ1∩ｐ2≠φ｝
定義より、任意のＬ∈£に対してＬ＊φ＝φ＊Ｌ＝φである。
【００９５】
＜最適化ＡＣＬグラフへのＡＣＬの追加＞
アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ空間（£／〜，≦）上の最適化ＡＣＬグラフＧ：（Ｓ／〜，Ｅ）に対して、［Ｌ+］∈Ｓ／〜でないＡＣＬ：Ｌ+∈£が与えられたとき、次の（条件ＡＤＤ１）〜（条件ＡＤＤ４）を満たすＳ+の最適化ＡＣＬグラフＧ+：（Ｓ+／〜，Ｅ+）を、Ｌ+を追加した最適化ＡＣＬグラフと呼ぶ。
（条件ＡＤＤ１）［Ｌ］∈Ｓ／〜ならば［Ｌ］∈Ｓ+／〜（元のグラフのノードをすべて含む）
（条件ＡＤＤ２）［Ｌ+］∈Ｓ+／〜（追加するＡＣＬのノードを含む）
（条件ＡＤＤ３）［Ｌ］∈Ｓ／〜ならば［Ｌ＊Ｌ+］∈Ｓ+／〜（積のノードを含む）
（条件ＡＤＤ４）あるｕ∈ｐｒｎ（Ｌ+）が存在して、ｕ∈ｐｒｎ（Ｌ）となるＬ∈Ｓが存在しないならば、ｕの権限ｐ：（ｕ，ｐ）∈ＦL（Ｌ+）に対し、ＦL（Ｌu）＝｛（ｕ，ｐ）｝となる［Ｌu］∈Ｓ+／〜が存在する（新しい主体のＡＣＥ１つだけからなるＡＣＬを含む）
【００９６】
上記（条件ＡＤＤ３）及び（条件ＡＤＤ４）は、それぞれ、Ｌ+を追加した結果のＡＣＬグラフが最適化ＡＣＬグラフについての（条件Ｇ４）及び（条件Ｇ５）を満たすようにするための条件である。
【００９７】
ＡＣＬグラフ管理部１４０は、例えば、ＡＣＬ情報ＤＢ６０内の複数のＡＣＬが最適化ＡＣＬグラフＧ：（Ｓ／〜，Ｅ）を構成するときに、ＡＣＬ情報ＤＢ６０に未登録のＡＣＬ：Ｌ+を新規登録する場合、上記（条件ＡＤＤ１）〜（条件ＡＤＤ４）を満たすようにＡＣＬ情報ＤＢ６０内のデータ内容の変更等を行うことで、Ｌ+を登録した後のＡＣＬ情報ＤＢ６０内の複数のＡＣＬが最適化ＡＣＬグラフを構成するようにする。
【００９８】
以下、ＡＣＬグラフに関連して文書管理サーバ１０が行う処理の例を説明する。以下で説明する処理の例では、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０内の複数のＡＣＬが上述の最適化グラフを構成するようにＡＣＬ情報ＤＢ６０内のデータを管理する。なお、以下の説明では、オブジェクト情報ＤＢ５０において、各オブジェクトＩＤに関連付けて、図２の例の表に示す各項目の値が登録され、ＡＣＬ情報ＤＢ６０において、各ＡＣＬ＿ＩＤに関連付けて、図３の例の表に示す各項目の値が登録されているとする。また、以下の説明では、ＡＣＬ情報ＤＢ６０には、少なくとも、空のＡＣＬが登録されているとする。
【００９９】
図５は、オブジェクトに対してＡＣＬを設定する際の文書管理サーバ１０の処理手順の例を表す。
【０１００】
例えば、ユーザがクライアント２０において、あるオブジェクトを指定し、指定したオブジェクトに対してＡＣＬを設定した場合、クライアント２０は、ユーザが指定したオブジェクトのオブジェクトＩＤと、ユーザが設定したＡＣＬと、を含む設定要求を文書管理サーバ１０に対して送信する。文書管理サーバ１０の処理要求受付部１００は、この設定要求を受け付けて、受け付けた設定要求を制御部１１０に対して出力する。
【０１０１】
制御部１１０は、処理要求受付部１００から設定要求を取得すると、図５に例示する手順の処理を開始する。まず、制御部１１０は、ユーザが指定したオブジェクトのオブジェクトＩＤ（以下、対象オブジェクトＩＤと呼ぶ）と、ユーザが設定したＡＣＬ（以下、対象ＡＣＬと呼ぶ）と、を設定要求から抽出する（ステップＳ１）。次に、制御部１１０は、ＡＣＬグラフ管理部１４０に対して、対象オブジェクトＩＤ及び対象ＡＣＬを含む検索指示を出力し、ＡＣＬ情報ＤＢ６０内のＡＣＬのうち、対象ＡＣＬと同一のＡＣＬを検索させる（ステップＳ３）。
【０１０２】
図６及び図７は、対象ＡＣＬ検索処理（図５のステップＳ３）の詳細手順の例を表すフローチャートである。図６及び図７の例の手順の処理により、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０内の複数のＡＣＬが構成するＡＣＬグラフを走査することで対象ＡＣＬと同一のＡＣＬを検索する。
【０１０３】
図５のステップＳ３で制御部１１０から検索指示を受けたＡＣＬグラフ管理部１４０は、図６に例示する手順の処理を開始する。
【０１０４】
図６を参照し、まず、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０内に、対象オブジェクトＩＤに関連付けられたＡＣＬが存在するか否かを判定する（ステップＳ３０）。この判定は、例えば、ＡＣＬ情報ＤＢ６０内の各ＡＣＬ＿ＩＤに対応するレコードのうち、「オブジェクトＩＤ」の項目の値として対象オブジェクトＩＤを含むレコードが存在するか否かを判定することで行なう。対象オブジェクトＩＤに関連付けられたＡＣＬが存在する場合（ステップＳ３０でＹＥＳ）、当該ＡＣＬを注目ＡＣＬとして設定する（ステップＳ３２）。対象オブジェクトＩＤに関連付けられたＡＣＬが存在しない場合（ステップＳ３０でＮＯ）、ＡＣＬ情報ＤＢ６０内の空ＡＣＬを注目ＡＣＬとして設定する（ステップＳ３４）。
【０１０５】
「注目ＡＣＬとして設定する」処理（ステップＳ３２又はステップＳ３４）は、例えば、該当するＡＣＬ（ステップＳ３２の場合は対象オブジェクトＩＤに関連付けられたＡＣＬであり、ステップＳ３４の場合は空ＡＣＬである）に対応するレコードをＡＣＬ情報ＤＢ６０から取得し、取得したレコードに含まれる情報（ＡＣＬ＿ＩＤ，ＡＣＥ，上位ＡＣＬ，下位ＡＣＬなど）を注目ＡＣＬの値とする処理を表す。以下の説明で、ＡＣＬ情報ＤＢ６０内の特定のＡＣＬについて「注目ＡＣＬとする」と記載する場合も同様の処理を表すものとする。
【０１０６】
ステップＳ３２又はステップＳ３４では、ＡＣＬグラフの走査の起点が設定される。
【０１０７】
注目ＡＣＬの値が設定されると（ステップＳ３２又はステップＳ３４）、次に、ＡＣＬグラフ管理部１４０は、対象ＡＣＬと注目ＡＣＬとが一致するか否かを判定する（ステップＳ３６）。ここで、対象ＡＣＬ及び注目ＡＣＬのそれぞれに含まれるＡＣＥのすべてに関し、それぞれの主体及び権限の組み合わせが同一であれば、対象ＡＣＬと注目ＡＣＬとが一致すると判定される。両者が一致する場合（ステップＳ３６でＹＥＳ）は、注目ＡＣＬを検索結果とし（ステップＳ３８）、ＡＣＬ検索処理を終了する。両者が一致しない場合（ステップＳ３６でＮＯ）、処理は、図７のステップＳ４０に進む。
【０１０８】
図７を参照し、ＡＣＬグラフ管理部１４０は、対象ＡＣＬと注目ＡＣＬとを比較し、対象ＡＣＬ中のＡＣＥにおいて、注目ＡＣＬ中のＡＣＥから削除されている主体又は権限が存在するか否かを判定する（ステップＳ４０）。ここで、「削除されている主体」とは、注目ＡＣＬ中のＡＣＥに含まれているけれども対象ＡＣＬ中のＡＣＥには含まれていない主体を指す。また、「削除されている権限」とは、注目ＡＣＬと対象ＡＣＬとの間で共通の主体を含むＡＣＥ同士を比較した場合に、注目ＡＣＬのＡＣＥには含まれているけれども、対象ＡＣＬのＡＣＥには含まれていない権限を指す。
【０１０９】
例えば、図８を参照し、ＡＣＬ＿ＩＤ"acl9"のＡＣＬが注目ＡＣＬであり、ＡＣＬ：Ｌiが対象ＡＣＬであるとする。注目ＡＣＬ"acl9"中の各ＡＣＥ（｛鈴木太郎，mwr｝，｛山田花子，mwr｝，｛営業一課，-wr｝，｛全ユーザ，--r｝）と、対象ＡＣＬ：Ｌi中の各ＡＣＥ（｛鈴木太郎，-wr｝，｛営業一課，-wr｝，｛佐藤次郎，-wr｝）と、を比較すると、対象ＡＣＬ：Ｌiにおいて、注目ＡＣＬ"acl9"から「削除されている主体」は、「山田花子」及び「全ユーザ」である。また、注目ＡＣＬ"acl9"と対象ＡＣＬ：Ｌiとの間で共通の主体を含むＡＣＥは、主体「鈴木太郎」及び「営業一課」を含むＡＣＥである。共通の主体「鈴木太郎」を含むＡＣＥ同士を比較すると、注目ＡＣＬ"acl9"中のＡＣＥの権限は、「mwr」であり、対象ＡＣＬ：Ｌi中のＡＣＥの権限は「-wr」であるため、権限「m（管理権限）」が「削除されている権限」に該当する。また、共通の主体「営業一課」を含むＡＣＥ同士を比較すると、注目ＡＣＬ"acl9"中のＡＣＥの権限と対象ＡＣＬ：Ｌi中のＡＣＥの権限とは、いずれも「-wr」で同一であるため、主体「営業一課」を含むＡＣＥに関しては「削除されている権限」は存在しない。図８の例の場合、図７のステップＳ４０の判定結果はＹＥＳとなる。
【０１１０】
図７の説明に戻り、対象ＡＣＬ中のＡＣＥにおいて、注目ＡＣＬ中のＡＣＥから削除されている主体又は権限が存在する場合（ステップＳ４０でＹＥＳ）、ＡＣＬグラフ管理部１４０は、注目ＡＣＬの上位ＡＣＬのいずれかが対象ＡＣＬと一致するか否かを判定する（ステップＳ５０）。削除されている主体又は権限が存在する場合、半順序関係≦の定義より、対象ＡＣＬが、注目ＡＣＬに対して下位のＡＣＬである可能性はない。よって、ＡＣＬグラフ管理部１４０は、注目ＡＣＬの上位ＡＣＬの中から対象ＡＣＬと一致するＡＣＬを検索する。注目ＡＣＬの上位ＡＣＬのうち、対象ＡＣＬと一致するＡＣＬが存在すれば（ステップＳ５０でＹＥＳ）、当該一致する上位ＡＣＬを検索結果とし（ステップＳ５４）、検索処理を終了する。対象ＡＣＬと一致するＡＣＬがなければ（ステップＳ５０でＮＯ）、注目ＡＣＬの上位ＡＣＬのうちの１つを新たな注目ＡＣＬとして（ステップＳ５２）、処理はステップＳ４０に戻る。ステップＳ５２で、注目ＡＣＬの上位ＡＣＬが複数存在する場合、ＡＣＬグラフ管理部１４０は、例えば、複数の上位ＡＣＬのうち、対象ＡＣＬと共通の主体及び権限を含むＡＣＥを最も多く有する上位ＡＣＬを優先して１つ選択し、選択した上位ＡＣＬを新たな注目ＡＣＬとする。
【０１１１】
対象ＡＣＬ中のＡＣＥにおいて、注目ＡＣＬ中のＡＣＥから削除されている主体又は権限が存在しない場合（ステップＳ４０でＮＯ）、ＡＣＬグラフ管理部１４０は、注目ＡＣＬの下位ＡＣＬのいずれかが対象ＡＣＬと一致するか否かを判定する（ステップＳ４２）。削除されている主体又は権限が存在しない場合、対象ＡＣＬは、注目ＡＣＬ中のＡＣＥの主体及び権限をすべて含む。さらに、対象ＡＣＬは、注目ＡＣＬ中のＡＣＥに含まれない主体を含むＡＣＥ、及び、注目ＡＣＬのＡＣＥと同一の主体を含むＡＣＥであって注目ＡＣＬのＡＣＥに含まれない権限を含むＡＣＥ、の少なくとも一方を有する。したがって、半順序関係≦の定義より、対象ＡＣＬは、注目ＡＣＬに対して下位のＡＣＬである。よって、ＡＣＬグラフにおいて注目ＡＣＬに対して下位であるＡＣＬの中に対象ＡＣＬと一致するＡＣＬが存在する可能性がある。注目ＡＣＬの下位ＡＣＬのうち、対象ＡＣＬと一致するＡＣＬが存在すれば（ステップＳ４２でＹＥＳ）、当該一致する下位ＡＣＬを検索結果として（ステップＳ５４）、検索処理を終了する。対象ＡＣＬと一致するＡＣＬが存在しなければ（ステップＳ４２でＮＯ）、ＡＣＬグラフ管理部１４０は、注目ＡＣＬの下位ＡＣＬのいずれかが対象ＡＣＬに対して上位のＡＣＬであるか否かを判定する（ステップＳ４４）。
【０１１２】
ステップＳ４４の判定は、注目ＡＣＬの下位ＡＣＬ：Ｌdのうち、対象ＡＣＬ：Ｌiとの間に半順序関係Ｌd≦Ｌiが成立するＡＣＬ：Ｌdが存在するか否かを判定することで行われる。Ｌd≦Ｌiが成立する場合、当該ＡＣＬ：Ｌdは、対象ＡＣＬに対して上位のＡＣＬである。
【０１１３】
注目ＡＣＬの下位ＡＣＬのうち対象ＡＣＬに対して上位のＡＣＬが存在する場合（ステップＳ４４でＹＥＳ）、該当する下位ＡＣＬを注目ＡＣＬとし（ステップＳ４８）、処理はステップＳ４２に戻る。ステップＳ４４の判定の結果、該当するＡＣＬが複数存在する場合は、それら複数のＡＣＬの中からいずれか１つを選択して、選択したＡＣＬをステップＳ５４で注目ＡＣＬとすればよい。例えば、該当する複数のＡＣＬのうち、対象ＡＣＬと共通の主体及び権限を最も多く含むＡＣＬを優先的に選択して注目ＡＣＬとする。
【０１１４】
注目ＡＣＬの下位ＡＣＬのうち対象ＡＣＬに対して上位のＡＣＬが存在しない場合（ステップＳ４４でＮＯ）、検索結果を「ＮＵＬＬ」とし（ステップＳ４６）、検索処理を終了する。
【０１１５】
再び図５を参照し、対象ＡＣＬ検索処理（ステップＳ３）が終了すると、検索結果がＮＵＬＬでない値を持つか否かが判定される（ステップＳ５）。検索結果がＮＵＬＬでない値を持つ場合（ステップＳ５でＹＥＳ）、制御部１１０は、検索結果のＡＣＬのＡＣＬ＿ＩＤと対象オブジェクトＩＤとを関連付ける処理を行う（ステップＳ７）。ステップＳ７で、例えば、制御部１１０は、オブジェクト情報管理部１３０を介してオブジェクト情報ＤＢ５０を参照し、対象オブジェクトＩＤのレコードにおいて、ＡＣＬ＿ＩＤの項目の値を検索結果のＡＣＬのＡＣＬ＿ＩＤに書き換える。ここで、制御部１１０は、書き換え前のＡＣＬ＿ＩＤの項目の値がＮＵＬＬでなければ、その書き換え前のＡＣＬ＿ＩＤを保持しておく。さらに、制御部１１０は、ＡＣＬグラフ管理部１４０を介してＡＣＬ情報ＤＢ６０を参照し、検索結果のＡＣＬに対応するレコードのオブジェクトＩＤの項目に対象オブジェクトＩＤを追加する。また、さらに、制御部１１０は、前述のように書き換え前のＡＣＬ＿ＩＤを保持している場合は、そのＡＣＬ＿ＩＤに対応するＡＣＬ情報ＤＢのレコードのオブジェクトＩＤの項目から対象オブジェクトＩＤを削除する。ステップＳ７の後、図５の例の手順の処理は終了する。
【０１１６】
対象ＡＣＬ検索処理の検索結果がＮＵＬＬである場合（ステップＳ５でＮＯ）、ＡＣＬグラフ管理部１４０は、対象ＡＣＬにＡＣＬ＿ＩＤを付与し、付与したＡＣＬ＿ＩＤに対応するレコードを新たに生成してＡＣＬ情報ＤＢ６０に登録する（ステップＳ９）。この新たなレコードにおいて、ＡＣＬ＿ＩＤの項目の値は、付与したＡＣＬ＿ＩＤに、ＡＣＥの項目の値は、対象ＡＣＬのＡＣＥに設定される。また、上位ＡＣＬの項目には、図７の例の処理が（ステップＳ４６の後に）終了した時点での注目ＡＣＬのＡＣＬ＿ＩＤが設定される。下位ＡＣＬの項目の値はＮＵＬＬに設定される。
【０１１７】
次に、制御部１１０は、対象ＡＣＬのＡＣＬ＿ＩＤと対象オブジェクトＩＤとを関連付ける処理を行う（ステップＳ１１）。制御部１１０は、オブジェクト情報ＤＢ５０において、対象オブジェクトＩＤのレコードのＡＣＬ＿ＩＤの項目の値を対象ＡＣＬのＡＣＬ＿ＩＤ（ステップＳ９で付与）に書き換え、ＡＣＬ情報ＤＢ６０において、対象ＡＣＬに対応するレコードのオブジェクトＩＤの項目に対象オブジェクトＩＤを追加する。さらに、オブジェクト情報ＤＢ５０の対象オブジェクトＩＤのレコードにおいて書き換え前のＡＣＬ＿ＩＤの値がＮＵＬＬでない場合、その書き換え前のＡＣＬ＿ＩＤに対応するＡＣＬ情報ＤＢ６０のレコードにおいて、オブジェクトＩＤの項目から対象オブジェクトＩＤを削除する。
【０１１８】
その後、制御部１１０は、ＡＣＬグラフ管理部１４０に対して指示を出し、対象ＡＣＬを追加した後のＡＣＬグラフを最適化する処理を実行させる（ステップＳ１３）。ＡＣＬグラフ最適化処理では、ＡＣＬグラフ管理部１４０は、例えば、上記の＜最適化ＡＣＬグラフへのＡＣＬの追加＞で示した（条件ＡＤＤ１）〜（条件ＡＤＤ４）が満たされるようにＡＣＬ情報ＤＢ６０内のデータ内容の変更等を行う。
【０１１９】
図９は、ＡＣＬグラフ最適化処理の手順の一例を示すフローチャートである。図５のステップＳ１３が開始されると、ＡＣＬグラフ管理部１４０は、図９の例の手順の処理を開始する。
【０１２０】
図９を参照し、まず、ＡＣＬグラフ管理部１４０は、新規ＡＣＬ（この例では、図５のステップＳ９でＡＣＬ情報ＤＢ６０に登録された対象ＡＣＬ）中の各ＡＣＥの主体を含むＡＣＥのみからなるＡＣＬがＡＣＬ情報ＤＢ６０内に存在するか否かを判定する（ステップＳ１３０）。ステップＳ１３０の判定は、新規ＡＣＬを含むＡＣＬグラフが上述の（条件ＡＤＤ４）を満たすか否かの判定である。新規ＡＣＬ中のＡＣＥのうち、その主体を含むＡＣＥのみからなるＡＣＬがＡＣＬ情報ＤＢ６０内に存在しないＡＣＥがある場合（ステップＳ１３０でＮＯ）、ＡＣＬグラフ管理部１４０は、該当するＡＣＥのみからなるＡＣＬを生成し、ＡＣＬ情報ＤＢ６０に登録する（ステップＳ１３２）。
【０１２１】
ステップＳ１３２で、ＡＣＬグラフ管理部１４０は、該当するＡＣＥの主体及び権限を含むＡＣＥのみからなるＡＣＬに対してＡＣＬ＿ＩＤを付与し、そのＡＣＬに対応するレコードをＡＣＬ情報ＤＢ６０に登録する。ステップＳ１３２でＡＣＬ情報ＤＢ６０に登録されるレコードは、上位ＡＣＬの項目の値として空ＡＣＬのＡＣＬ＿ＩＤを含み、下位ＡＣＬの項目の値として新規ＡＣＬのＡＣＬ＿ＩＤを含む。また、ステップＳ１３２では、ＡＣＬ情報ＤＢ６０の新規ＡＣＬに対応するレコードにおいて、該当するＡＣＥのみを含むＡＣＬとして新たに登録されたＡＣＬのＡＣＬ＿ＩＤを、上位ＡＣＬの値として登録する。
【０１２２】
例えば、空のＡＣＬだけがＡＣＬ情報ＤＢ６０に登録されている場合に、図４に例示するＡＣＬ"acl7"と同様のＡＣＬ（｛鈴木太郎，mwr｝，｛営業一課，-wr｝）が、新たに図５のステップＳ９でＡＣＬ情報ＤＢ６０に登録されたとする。この例の場合、新規ＡＣＬ中の各ＡＣＥの主体「鈴木太郎」及び「営業一課」を含むＡＣＥのみからなるＡＣＬは、ＡＣＬ情報ＤＢ６０内に未だ存在しない。したがって、この例において、ＡＣＬグラフ管理部１４０は、図９のステップＳ１３２で、主体「鈴木太郎」及び「営業一課」のそれぞれを含むＡＣＥのみからなるＡＣＬを生成し、生成した各ＡＣＬをＡＣＬ情報ＤＢ６０に登録する。このとき生成される各ＡＣＬ中のＡＣＥに含まれる権限は、新規ＡＣＬ中の対応するＡＣＥに含まれる権限と同様であってよい。本例では、図４に例示するＡＣＬ"acl7"中の各ＡＣＥを含むＡＣＬ（｛鈴木太郎，mwr｝）及び（｛営業一課，-wr｝）が生成されてＡＣＬ情報ＤＢ６０に登録される。
【０１２３】
図９のステップＳ１３２の後、又は、新規ＡＣＬ中の各ＡＣＥの主体を含むＡＣＥのみからなるＡＣＬがＡＣＬ情報ＤＢ６０内にすでに存在する場合（ステップＳ１３０でＹＥＳ）、ＡＣＬグラフ管理部１４０は、新規ＡＣＬに接続される辺を生成する（ステップＳ１３４）。ステップＳ１３４の辺の生成は、例えば、以下の手順で行われる。まず、ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０において、（例えば、図５のステップＳ９、又は図９のステップＳ１３２で）すでに新規ＡＣＬの上位ＡＣＬ又は下位ＡＣＬとして登録されているＡＣＬ以外のＡＣＬの中から、新規ＡＣＬに対して上位又は下位であるＡＣＬを検索する。この検索は、例えば、ＡＣＬ情報ＤＢ６０内の各ＡＣＬ中のＡＣＥと新規ＡＣＬ中のＡＣＥとを比較し、半順序関係≦が成立するか否かを判定することで行う。次に、新規ＡＣＬと検索された上位又は下位のＡＣＬとの間の辺を表す情報をＡＣＬ情報ＤＢ６０に登録する。つまり、ＡＣＬ情報ＤＢ６０において、新規ＡＣＬに対応するレコードの上位ＡＣＬ又は下位ＡＣＬの項目の値として、検索された上位又は下位のＡＣＬのＡＣＬ＿ＩＤを登録する。さらに、新規ＡＣＬに対して上位のＡＣＬが検索されていた場合は、その上位のＡＣＬに対応するレコードの下位ＡＣＬの項目の値として新規ＡＣＬのＡＣＬ＿ＩＤを登録し、下位のＡＣＬが検索されていた場合は、その下位のＡＣＬに対応するレコードの上位ＡＣＬの項目の値として新規ＡＣＬのＡＣＬ＿ＩＤを登録する。以上の例の手順の処理により、ＡＣＬグラフにおいて新規ＡＣＬに接続される辺が生成される。
【０１２４】
なお、ステップＳ１３４で新規ＡＣＬに接続される辺を生成した結果、ショートカットの辺に該当する辺（上記＜最適化ＡＣＬグラフ＞の（条件Ｇ３）参照）が生じた場合、ＡＣＬグラフ管理部１４０は、当該ショートカットの辺を削除する。すなわち、ＡＣＬ情報ＤＢ６０において、当該ショートカットの辺の両端点のＡＣＬにそれぞれ対応する２つのレコードの上位ＡＣＬ及び下位ＡＣＬの項目から、互いのＡＣＬ＿ＩＤを削除する。この処理により、（条件Ｇ３）が満たされる。
【０１２５】
再び図９を参照し、ステップＳ１３４の後、ＡＣＬグラフ管理部１４０は、ＡＣＬの補完が必要であるか否かを判定する（ステップＳ１３６）。これは、上述の（条件ＡＤＤ３）を満たすか否かの判定である。新規ＡＣＬ：Ｌ+との間の積のＡＣＬ：Ｌk＊Ｌ+が存在しないＡＣＬ：ＬkがＡＣＬ情報ＤＢ内に存在する場合、（条件ＡＤＤ３）が満たされないので、積のＡＣＬ：Ｌk＊Ｌ+を補完する必要があると判定される（ステップＳ１３６でＹＥＳ）。この場合、ＡＣＬグラフ管理部１４０は、積のＡＣＬ：Ｌk＊Ｌ+を補完ＡＣＬとして生成し、補完ＡＣＬに対応するレコードをＡＣＬ情報ＤＢ６０に登録する（ステップＳ１３８）。補完ＡＣＬの下位ＡＣＬとしては、補完ＡＣＬを生成する演算＊の引数に該当するＡＣＬ、つまり、ＡＣＬ：Ｌk及び新規ＡＣＬ：Ｌ+のＡＣＬ＿ＩＤが登録される。補完ＡＣＬの上位ＡＣＬとしては、例えば、ＡＣＬ情報ＤＢ内で補完ＡＣＬに対して上位であるＡＣＬを検索した結果のＡＣＬのＡＣＬ＿ＩＤが登録される。
【０１２６】
補完ＡＣＬの登録の後、補完ＡＣＬの下位ＡＣＬを参照するオブジェクトが存在するか否かを判定する（ステップＳ１４０）。この判定は、例えば、ＡＣＬ情報ＤＢ６０において、補完ＡＣＬの下位ＡＣＬに対応するレコードのオブジェクトＩＤの項目の値がＮＵＬＬであるか否かを判定することで行う。そのようなオブジェクトが存在しない（オブジェクトＩＤの項目の値がＮＵＬＬである）場合（ステップＳ１４０でＮＯ）、補完ＡＣＬの下位ＡＣＬをＡＣＬ情報ＤＢ６０から削除する（ステップＳ１４２）。ＡＣＬグラフ管理部１４０は、ＡＣＬ情報ＤＢ６０において、補完ＡＣＬの下位ＡＣＬに対応するレコードを削除するとともに、当該削除されるＡＣＬの下位ＡＣＬを、補完ＡＣＬの新たな下位ＡＣＬとして登録する。また、当該削除されるＡＣＬと辺で接続されるＡＣＬのレコードにおいて、上位ＡＣＬ又は下位ＡＣＬの項目の値から当該下位ＡＣＬのＡＣＬ＿ＩＤを削除する。
【０１２７】
ステップＳ１４０，Ｓ１４２の処理により、ＡＣＬグラフ管理部１４０は、ＡＣＬグラフにおいて、オブジェクトに対するアクセスの可否の決定に用いられないＡＣＬの増加を防ぐ。
【０１２８】
ステップＳ１３６でＡＣＬの補完は必要ない（（条件ＡＤＤ３）が満たされる）と判定された場合（ステップＳ１３６でＮＯ）、ステップＳ１４０で補完ＡＣＬの下位ＡＣＬを参照するオブジェクトが存在する（オブジェクトＩＤの項目の値がＮＵＬＬでない）と判定された場合（ステップＳ１４０でＹＥＳ）、又は、ステップＳ１４２で補完ＡＣＬの下位ＡＣＬをＡＣＬ情報ＤＢ６０から削除した後、図９の例のＡＣＬグラフ最適化処理は終了する。
【０１２９】
ここで、図１０〜図１４を参照し、図９の例のＡＣＬグラフ最適化処理の具体例を述べる。例えば、図１０に例示するＡＣＬグラフに対して、図１１の例の内容のＡＣＬ"acl105"が新規ＡＣＬとして追加された場合、図９の例の処理手順のステップＳ１３４までの処理が終了した段階で、図１２の例のＡＣＬグラフが得られる。このとき、ＡＣＬ"acl105"とＡＣＬ"acl102"との間には、ＡＣＬグラフ中に積のノードが存在しない。したがって、図９の例の処理手順のステップＳ１３６の判定の結果、ＡＣＬ"acl105"とＡＣＬ"acl102"との積のノードが補完ＡＣＬとして生成されてＡＣＬ情報ＤＢ６０に登録され（ステップＳ１３８）、図１３に例示するようなＡＣＬグラフが得られる。図１３を参照し、ＡＣＬ"acl106"が補完ＡＣＬに該当する。
【０１３０】
図１３のＡＣＬグラフの例において、補完ＡＣＬ"acl106"は、最適化ＡＣＬグラフの条件を満たすために生成されたＡＣＬであって、このＡＣＬを参照するオブジェクトは存在しない。したがって、例えば、補完ＡＣＬ"acl106"の下位ＡＣＬであるＡＣＬ"acl102"についても、いずれのオブジェクトからも参照されていない場合、図９の例の処理のステップＳ１４０，１４２により、ＡＣＬ"acl102"は削除される。その結果、図１４に例示するＡＣＬグラフのように、ＡＣＬ"acl102"の下位ＡＣＬであったＡＣＬ"acl100"が、補完ＡＣＬ"acl106"の下位ＡＣＬとなる。
【０１３１】
再び図５を参照し、ＡＣＬグラフの最適化処理（ステップＳ１３）が終了すると、図５の例の手順の処理は終了する。
【０１３２】
以上、図５〜図７，図９の各フローチャートの例を参照して説明した処理により、オブジェクト情報ＤＢ５０及びＡＣＬ情報ＤＢ６０において、ユーザが指定したオブジェクトのオブジェクトＩＤと、ユーザが指定したＡＣＬと同一の内容を有するＡＣＬのＡＣＬ＿ＩＤと、が関連付けられる。上述の例の処理では、ユーザが指定したＡＣＬと同一のＡＣＬがＡＣＬ情報ＤＢ６０内に既に存在すれば、そのＡＣＬ＿ＩＤと対象オブジェクトＩＤとを関連付ける。ユーザが指定したＡＣＬと同一のＡＣＬがＡＣＬ情報ＤＢ６０内に存在しなければ、そのようなＡＣＬを新たに生成してＡＣＬ情報ＤＢ６０に登録し、新規登録されたＡＣＬ＿ＩＤと対象オブジェクトＩＤとを関連付ける。したがって、上述の例の処理では、ユーザがオブジェクトにＡＣＬを設定する際に、ＡＣＬ情報ＤＢ６０内に登録済みのＡＣＬの内容が変更されることはない。例えば、すでにＡＣＬが設定されていたオブジェクト（ＡＣＬ情報ＤＢ６０内の特定のＡＣＬに関連付けられていたオブジェクト）について、ユーザがＡＣＬの内容を変更する操作を行った場合であっても、当該オブジェクトのオブジェクトＩＤに関連付けられるＡＣＬ＿ＩＤが変更されるだけで、変更前に当該オブジェクトに設定されていたＡＣＬ自体の内容が変更されることはない。
【０１３３】
なお、以上では、ＡＣＬ情報ＤＢ６０において空ＡＣＬのレコード（図３の例のＡＣＬ＿ＩＤ"acl0"のレコード）が登録されているものとして、図５〜図７，図９の各フローチャートに従った処理の例を説明した。しかしながら、上述の処理の例と同様の処理を実行するためには、少なくとも空ＡＣＬのＡＣＬ＿ＩＤが特定されていれば、ＡＣＬ情報ＤＢ６０において空ＡＣＬに対応するレコードを実際に登録しておかなくてもよい。例えば、空ＡＣＬに対応するレコードをＡＣＬ情報ＤＢ６０に登録せずに、空ＡＣＬに対して付与されたＡＣＬ＿ＩＤだけをＡＣＬ情報ＤＢ６０に記憶させておけばよい。空ＡＣＬについて、対応するレコードを登録せずにＡＣＬ＿ＩＤだけをＡＣＬ情報ＤＢ６０に記憶させておく場合、空ＡＣＬの下位ＡＣＬを取得する処理（例えば、図７のステップＳ４２，Ｓ４４）では、ＡＣＬグラフ管理部１４０は、空ＡＣＬのＡＣＬ＿ＩＤを上位ＡＣＬの項目の値に含むレコードをＡＣＬ情報ＤＢ６０から検索し、検索結果のレコードのＡＣＬ＿ＩＤを取得することで、空ＡＣＬの下位ＡＣＬを取得する。
【０１３４】
以上、ＡＣＬグラフに対して変更が加えられる場合の文書管理サーバ１０の処理の例を述べた。以下、文書管理サーバ１０がＡＣＬグラフを利用してオブジェクト及びＡＣＬに関する情報を出力する場合の処理の例を述べる。
【０１３５】
例えば、特定の主体（ユーザ又はグループ）に対して特定の種類の操作の実行が許可又は禁止されているオブジェクトに関する情報を出力するようクライアント２０から要求を受けると、文書管理サーバ１０は、ＡＣＬグラフを用いて該当するオブジェクトを検索し、検索結果のオブジェクトに関する情報をクライアント２０に対して出力する。
【０１３６】
図１５は、クライアント２０からの上述の例の出力要求に応じて文書管理サーバ１０が行う処理の手順の例を示すフローチャートである。制御部１１０は、処理要求受付部１００を介してクライアント２０からの出力要求を受けると、検索処理部１６０に対して、図１５に例示する手順の処理の実行の開始を指示する。
【０１３７】
図１５を参照し、検索処理部１６０は、処理要求受付部１００及び制御部１１０を介して取得されるクライアント２０からの出力要求から、主体及び操作種類を取得する（ステップＳ２）。次に、検索処理部１６０は、ユーザ情報ＤＢ７０を参照し、ステップＳ２で取得した主体がユーザＩＤである場合（ステップＳ４でＹＥＳ）、当該ユーザＩＤのユーザが所属するグループのグループＩＤをユーザ情報ＤＢ７０から取得する（ステップＳ６）。ステップＳ６の後、又は、ステップＳ２で取得した主体がユーザＩＤでなくグループＩＤである場合（ステップＳ４でＮＯ）、処理は、ステップＳ８へ進む。ステップＳ８で、検索処理部１６０は、ＡＣＬグラフ管理部１４０を介してＡＣＬ情報ＤＢ６０を参照し、ステップＳ４〜Ｓ６で取得されたユーザＩＤ又はグループＩＤのそれぞれと、ステップＳ２で取得された操作種類と、を含むＡＣＥのみからなるＡＣＬのＡＣＬ＿ＩＤを取得する（ステップＳ８）。そして、取得したＡＣＬ＿ＩＤごとに、ＡＣＬグラフ管理部１４０による下位ＡＣＬ探索処理（ステップＳ１０）を実行する。
【０１３８】
図１６は、下位ＡＣＬ探索処理の手順の一例を示すフローチャートである。まず、検索処理部１６０は、現在の処理対象のＡＣＬ＿ＩＤを注目ＩＤとする（ステップＳ１００）。次に、注目ＩＤを中間結果リストに加える（ステップＳ１０２）。中間結果リストは、要求された処理の処理結果を求めるための材料となる情報を蓄積するために構築されるリストである。注目ＩＤを中間結果リストに加えた後、検索処理部１６０は、ＡＣＬグラフ管理部１４０を介してＡＣＬ情報ＤＢ６０内の注目ＩＤに対応するレコードを参照し、注目ＩＤのＡＣＬに下位ＡＣＬが存在するか否かを判定する（ステップＳ１０４）。注目ＩＤのＡＣＬに下位ＡＣＬが存在する場合（ステップＳ１０４でＹＥＳ）、その下位ＡＣＬのＡＣＬ＿ＩＤごとに、下位ＡＣＬ探索処理を再帰的に呼び出して実行する（ステップＳ１０）。注目ＡＣＬに下位ＡＣＬが存在しない場合（ステップＳ１０４でＮＯ）、図１６の例の処理は終了する。
【０１３９】
再び図１５を参照し、ステップＳ８で取得したＡＣＬ＿ＩＤごとの下位ＡＣＬ探索処理（ステップＳ１０）が終了すると、中間結果リストには、ＡＣＬ情報ＤＢ６０内のＡＣＬのうち、指定されたユーザＩＤ又はグループＩＤが表すユーザ又はグループに対して、指定された種類の操作の実行を許可又は禁止するすべてのＡＣＬのＡＣＬ＿ＩＤが含まれていることになる。
【０１４０】
例えば、図１７を参照し、指定されたユーザＩＤが「ユーザＡ」であり、ユーザＡがグループＰ，Ｑに所属する場合に、図１５のステップＳ２〜Ｓ１０までの処理が終了した時点で、ＡＣＬグラフ中のＡＣＬのうち中間結果リストに含まれるＡＣＬの例を斜線で表す。斜線で表されるＡＣＬは、ユーザＡ、グループＰ、及びグループＱのそれぞれと、指定された操作種類と、を含むＡＣＥのみからなるＡＣＬ（破線円で囲んだＡＣＬ）、並びに、各ＡＣＬの下位に位置するＡＣＬである。
【０１４１】
図１５の説明に戻り、検索処理部１６０は、ＡＣＬグラフ管理部１４０を介してＡＣＬ情報ＤＢ６０を参照して、中間結果リストに含まれるＡＣＬ＿ＩＤに関連付けられるオブジェクトＩＤを取得し、そのオブジェクトＩＤのリストを制御部１１０に渡す（ステップＳ１２）。制御部１１０は、検索処理部１６０から取得したオブジェクトＩＤのリストを用いて、クライアント２０の要求に応じた出力情報を生成する。例えば、該当するオブジェクトのオブジェクト名のリストの表示を要求されている場合、オブジェクト情報管理部１３０を介してオブジェクト情報ＤＢ５０を参照し、検索処理部１６０から取得したリスト中の各オブジェクトＩＤのオブジェクト名を取得し、そのオブジェクト名のリストを出力情報として生成する。制御部１１０は、処理結果出力部１２０を介して、出力情報を要求元のクライアント２０に対して出力する（ステップＳ１４）。
【０１４２】
文書管理サーバ１０は、また、ＡＣＬグラフの構造を用いて、ＡＣＬ情報ＤＢ６０内のＡＣＬ同士の関係を図式的にクライアント２０の表示装置に表示させる処理を行う場合もある。
【０１４３】
図１８は、文書管理サーバ１０がクライアント２０の表示装置に表示させる表示画面の一例である。画面左上のオブジェクトツリー表示エリア２００には、文書ＤＢ４０においてオブジェクトが格納されるフォルダの構造を表す木構造が表示される。画面右側の一覧表示エリア２０２には、オブジェクトツリー表示エリア２００において選択されたフォルダに格納されたオブジェクトのリストが表示される。オブジェクトツリー表示エリア２００で表示されるフォルダの名前、及び、一覧表示エリア２０２で表示される文書ファイルの名前や作成者などは、各オブジェクトについてオブジェクト情報ＤＢ５０を参照することで取得される情報である。画面左下のＡＣＬツリー表示エリア２０４には、一覧表示エリア２０２において選択されたオブジェクトに設定されたＡＣＬに関する木構造が表示される。このＡＣＬの木構造は、ＡＣＬ情報ＤＢ６０内のＡＣＬグラフの構造に従って、文書管理サーバ１０のＡＣＬツリー表示部１５０が生成する。図１８の例では、ＡＣＬツリー表示エリア２０４において、一覧表示エリア２０２で選択されたオブジェクトに関連付けられるＡＣＬが強調表示されている。図１８の例の表示画面をクライアント２０に表示させる場合、例えば、文書管理サーバ１０は、選択されたオブジェクトのオブジェクトＩＤをクライアント２０から取得すると、オブジェクト情報ＤＢ５０を参照し、当該オブジェクトＩＤに関連付けられるＡＣＬ＿ＩＤを取得する。そして、取得したＡＣＬ＿ＩＤに対応するＡＣＬのアイコンを強調表示させる表示情報をクライアント２０に対して出力することで、ＡＣＬツリー表示エリア２０４において対応するＡＣＬを強調表示させる。
【０１４４】
なお、一覧表示エリア２０２で選択されたオブジェクトに対応するＡＣＬをＡＣＬツリー表示エリア２０４において強調表示させる例について説明したが、ＡＣＬツリー表示エリア２０４において特定のＡＣＬが選択された場合に、一覧表示エリア２０２中のオブジェクトのうち、選択されたＡＣＬに関連づけられるオブジェクトを強調表示させてもよい。この例の場合、文書管理サーバ１０は、例えば、選択されたＡＣＬのＡＣＬ＿ＩＤをクライアント２０から取得し、ＡＣＬ情報ＤＢ６０を参照して当該ＡＣＬ＿ＩＤに関連付けられるオブジェクトＩＤを取得する。そして、オブジェクト情報ＤＢ５０を参照し、ＡＣＬ情報ＤＢ６０から取得したオブジェクトＩＤのうち、一覧表示エリア２０２に表示されているオブジェクトのオブジェクトＩＤを特定し、特定したオブジェクトＩＤに対応するオブジェクトを強調表示させる表示情報をクライアント２０に対して出力する。またあるいは、一覧表示エリア２０２中のオブジェクトのうち、ＡＣＬツリー表示エリア２０４で選択されたＡＣＬに関連付けられるオブジェクトのみを表示させるフィルタリング処理を行ってもよい。
【０１４５】
図１９は、表示画面の他の一例である。図１９の例では、ＡＣＬツリー表示エリア２０４においてＡＣＬが選択された場合に、オブジェクトツリー表示エリア２００で選択されたフォルダに含まれるオブジェクト以外のオブジェクトも含め、選択されたＡＣＬに関連付けられるすべてのオブジェクトのリストを一覧表示エリア２０２に表示させる。この場合、文書管理サーバ１０は、例えば、選択されたＡＣＬのＡＣＬ＿ＩＤに関連付けられるオブジェクトＩＤをＡＣＬ情報ＤＢ６０から取得する。そして、取得したオブジェクトＩＤに関する情報（名前、タイプ、作成者など）をオブジェクト情報ＤＢ５０から取得することで、一覧表示エリア２０２に表示させる表示情報を生成してクライアント２０に対して出力する。また例えば、選択されたＡＣＬに関連付けられるオブジェクトだけでなく、選択されたＡＣＬに対して下位であるＡＣＬに関連付けられるオブジェクトをすべて表示させてもよい。また、図１９の例において、一覧表示エリア２０２に表示されたオブジェクトのうちの１つをユーザが選択した場合に、選択されたオブジェクトが格納されるフォルダをオブジェクトツリー表示エリア２００において強調表示させてもよい。
【０１４６】
図２０は、表示画面のさらに他の一例を示す。図２０の例では、ＡＣＬの木構造を表示する表示画面においてＡＣＬが選択された場合に、選択されたＡＣＬに関連付けられるオブジェクトを、木構造において当該ＡＣＬの下位に位置するように表示させる。
【０１４７】
以上、図１８〜図２０のいずれの表示画面の例においても、文書管理サーバ１０は、ＡＣＬ間の関係をＡＣＬの木構造で表す。一方、ＡＣＬグラフの構造は、必ずしも木構造であるとは限らない。文書管理サーバ１０のＡＣＬツリー表示部１５０は、ＡＣＬグラフの構造に対応する構造を有するＡＣＬの木構造を表す情報を生成することで、クライアントの表示画面に当該木構造を表示させる。
【０１４８】
以下、ＡＣＬグラフに対応する構造を有するＡＣＬの木構造をＡＣＬグラフの「擬似木」と呼ぶ。ＡＣＬグラフの擬似木は、例えば、次のような数学的モデルによって表される。
【０１４９】
＜ＡＣＬグラフの擬似木＞
アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ空間（£／〜，≦）上の制約つきＡＣＬグラフ（Ｓ／〜，Ｅ）に対し、次の条件を満たす有向グラフ（ｇ，ＶT，ＥT）を、ＡＣＬグラフ（Ｓ／〜，Ｅ）の擬似木と呼ぶ。
（条件Ｔ１）（ｇ，ＥT，ＶT）は単連結で閉路を持たない。
（条件Ｔ２）ｈ：ＶT→Ｓ／〜となる全射が存在する。
（条件Ｔ３）任意のｖ1∈ＶTに対する任意の（［Ｌ］，ｈ（ｖ1））∈Ｅに対して、あるｖ0∈ＶTおよびｅ∈ＥTが存在して、ｈ（ｖ0）＝［Ｌ］かつｇ（ｅ）＝（ｖ0，ｖ1）。
【０１５０】
例えば、図２１を参照し、図２１（ａ）は、ＡＣＬのグラフ構造の例を表し、図２１（ｂ）は、図２１（ａ）のＡＣＬグラフに対応する擬似木の例を表す。図２１（ａ）を参照すると、ＡＣＬ：Ｄは、ＡＣＬグラフにおいて、ＡＣＬ：Ａ及びＡＣＬ：Ｂの２つの上位ＡＣＬを有する。一方、木構造は、２つ以上の親ノードを有するノードが存在しないデータ構造である。したがって、ＡＣＬツリー表示部１５０は、ＡＣＬグラフにおいて複数の上位ＡＣＬを有するＡＣＬについて、このＡＣＬに対応する２つのノードを生成することで、ＡＣＬグラフの擬似木を生成する。例えば、図２１（ａ）の例のＡＣＬ：Ｄに対応するノードを２つ生成し、各ノードを、ＡＣＬ：Ａに対応するノードの子ノード及びＡＣＬ：Ｂに対応するノードの子ノードとする。図２１（ｂ）を参照し、表示画面上のＡＣＬの木構造において、ＡＣＬ：Ｄは、ＡＣＬ：Ａ及びＡＣＬ：Ｂの子ノードとして２箇所に現れる（破線円）が、木構造におけるこれら２つのノードは、ＡＣＬグラフにおける１つのノードであるＡＣＬ：Ｄに対応する。
【０１５１】
以下、ＡＣＬツリー表示部１５０がＡＣＬグラフから木構造を生成する処理の手順を説明する。まず、ＡＣＬツリー表示部１５０は、処理要求受付部１００及び制御部１１０を介して取得されるクライアント２０からの表示要求に応じて、ＡＣＬ情報ＤＢ６０内の複数のＡＣＬのうち、表示対象とするＡＣＬグラフの部分を特定する。表示対象のＡＣＬグラフの部分は、例えば、ＡＣＬグラフにおいて、クライアントの表示画面で選択されたオブジェクトに関連付けられたＡＣＬ、及び当該ＡＣＬからＡＣＬグラフ中で所定数以内の辺を介して接続されるＡＣＬを含む部分グラフとする。あるいは、クライアントにおいて特定のＡＣＬが指定された場合に、指定されたＡＣＬと当該ＡＣＬからＡＣＬグラフ中で所定数以内の辺を介して接続されるＡＣＬとを含む部分グラフを表示対象の部分としてもよい。次に、表示対象のＡＣＬグラフの部分のうち、木構造の生成のための分離処理が必要なＡＣＬ（ノード）を特定する。分離処理が必要なノードは、図２１の例で説明したように、複数の上位ＡＣＬ（上位ノード）を有するノードである。そして、分離処理が必要なノードについて、当該ノードが有する上位ノードの数だけ、当該ノードの下位グラフに対応するグラフを生成する。ここで、あるノードの「下位グラフ」とは、当該ノードと当該ノードに対して下位であるノードであって当該ノードへのパスを有するノードとを含む部分グラフを指す。
【０１５２】
例えば、図２２を参照し、図２２（ａ）において、ノードｄは、２つの上位ノードｂ，ｃを有する。ＡＣＬツリー表示部１５０は、ノードｄの下位グラフ（ノードｄ及びノードｅを含む）に対応するグラフを、ノードｄの上位ノードの個数（２つ）だけ生成し、ノードｄに対応する各ノードｄ１，ｄ２を各上位ノードｂ，ｃの子ノードとする（図２２（ｂ））。以上の処理を、分離処理が必要なノードがなくなるまで繰り返すことで、ＡＣＬグラフの擬似木が生成される。
【０１５３】
なお、分離処理が必要なノードが複数存在する場合、分離処理を行う順番によって、結果として得られる擬似木が異なる場合がある。一例として、図２３を参照し、図２３（ａ）のＡＣＬグラフの擬似木を生成する場合について考える。図２３（ａ）のＡＣＬグラフにおいて、分離処理が必要なノードは、ノードｄ及びノードｅである。図２３（ａ）のＡＣＬグラフに対し、ノードｅについて最初に分離処理を行うと、図２３（ｂ）に例示するグラフが得られ、次に、ノードｄについて分離処理を行うと、図２３（ｃ）に例示するグラフが得られる。図２３（ｃ）に例示するグラフは、分離処理が必要なノードを含まず、図２３（ａ）の例のＡＣＬグラフの擬似木である。クライアント２０の表示画面においては、図２３（ｃ）の例の擬似木をＡＣＬの木構造として表示させればよい。
【０１５４】
一方、図２３（ａ）の例のＡＣＬグラフに対し、最初にノードｄについて分離処理を行うと、図２３（ｄ）の例のグラフが得られる。図２３（ｄ）の例のグラフは、図２３（ａ）におけるノードｅに対応する２つのノードｅ１，ｅ２を含む。ノードｅ１，ｅ２は、それぞれ、上位ノードを２つ（ノードｄ１及びノードｆ、ノードｄ２及びノードｆ）有するので、いずれのノードｅ１，ｅ２についても分離処理が必要である。各ノードｅ１，ｅ２について分離処理を行うと、図２３（ｅ）の例のグラフが得られる。図２３（ｅ）の例のグラフは、分離処理の必要なノードを含まず、図２３（ａ）の例のＡＣＬグラフの擬似木である。しかしながら、図２３（ｅ）の例の擬似木は、ノードｆが２つの子ノードｅ１２，ｅ２２を有する点で、最初にノードｅに対して分離処理を行った結果の図２３（ｃ）の例の擬似木と異なる。また、図２３（ｅ）の例の擬似木において、ノードｅ１２，ｅ２２は、いずれも、図２３（ａ）の例のＡＣＬグラフにおける同じ１つのノードｅに対応するものであり、かつ、同じ親ノードｆを有する。したがって、図２３(e)の例の擬似木におけるノードｅ１２，ｅ２２は互いに冗長である。
【０１５５】
図２３（ａ）の例のＡＣＬグラフにおいて、ノードｄについてノードｅより先に分離処理を行った場合に、互いに冗長なノードｅ１２，ｅ２２が生成されるのは、分離処理が必要であるノードｄの下位グラフに含まれるノードｅが、当該下位グラフ中のノード以外のノードｆを上位ノードとして有するためである。
【０１５６】
図２３（ｅ）の例のように互いに冗長なノードを含む擬似木の生成を防ぐため、ＡＣＬグラフにおいて、「ノードｘが複数の上位ノードを有し、かつ、ノードｘの下位グラフ中のノードｘ以外のノードのうち、下位グラフ中のノード以外のノードを上位ノードとして有するノードが存在しない」という条件が満たされる場合に、ノードｘについて分離処理を行い、この条件が満たされない場合には、ノードｘについて分離処理を行わないものとする。この条件を満たすノードを「枝分かれ可能」なノードと呼ぶ。
【０１５７】
図２３（ａ）の例のＡＣＬグラフにおいて、ノードｅは枝分かれ可能であるが、ノードｄは枝分かれ可能でない。枝分かれ可能であるノードｅについて分離処理を行うと、その結果のグラフ（図２３（ｂ））では、ノードｄは、枝分かれ可能となることに注意されたい。
【０１５８】
枝分かれ可能なノードが複数存在する場合は、いずれのノードから分離処理を行っても、結果として得られる擬似木は同様のものとなるし、結果の擬似木において互いに冗長なノードが現れることもない。例えば、図２４（ａ）に例示するＡＣＬグラフにおいて、ノードｄ，ｇはいずれも枝分かれ可能である。ノードｇについて最初に分離処理を行い（図２４（ｂ））、次に、ノードｄについて分離処理を行うと、図２４（ｄ）の例の擬似木が得られる。また、図２４（ａ）の例のＡＣＬグラフにおいて、最初にノードｄについて分離処理を行い（図２４（ｃ））、次に、ＡＣＬグラフのノードｇに対応する２つのノードｇ´について分離処理を行った場合も、図２４（ｄ）の例の擬似木が得られる。図２４（ｄ）には、互いに冗長なノードは存在しない。
【０１５９】
以上で説明した表示画面の例において、例えばマウスで入力されるポインタ位置の指定やキーボードで入力されるカーソル位置の指定などによって特定のＡＣＬが選択された場合に、文書管理サーバ１０は、そのＡＣＬの内容を表す情報を表示させてもよい。例えば図２５のように、選択されたＡＣＬのＡＣＥを表示させる。
【０１６０】
また、いわゆる「ドラッグ・アンド・ドロップ」の処理によって、オブジェクトにＡＣＬを設定することを可能としても良い。例えば、図１８及び図１９等の例の表示画面において、ユーザが、マウスのポインタによってオブジェクトを表すアイコンを指定して、ＡＣＬを表すアイコンへ「ドラッグ・アンド・ドロップ」する処理を行なうと、指定されたオブジェクトのオブジェクトＩＤと、指定されたＡＣＬのＡＣＬ＿ＩＤと、を含むＡＣＬ設定要求を、クライアント２０は文書管理サーバ１０に対して送信する。この要求を受けた文書管理サーバ１０は、指定されたＡＣＬ＿ＩＤとオブジェクトＩＤとを関連付ける処理を行う。
【０１６１】
ＡＣＬの半順序関係は、以上で例示したモデル以外に、権限の強弱によって定義してもよい。例えば、Allow-Denyモデルの場合、上述の半順序関係のモデルでは「許可」を追加しても「禁止」を追加しても同じ方向に変化するが、「許可」を追加すると権限が強くなり、「禁止」を追加すると権限が弱くなるように、権限の強弱の変化の方向に従って半順序関係の方向を定義してもよい。
【０１６２】
また、上述の実施形態におけるＡＣＬ間の構造の表示処理の例では、ＡＣＬグラフに対応する擬似木を生成して表示させるが、他の例では、擬似木の生成を行わずに、ＡＣＬグラフ自体を表現する表示情報を生成してクライアント２０の表示画面に表示させてもよい。例えば、図２３（ａ）及び図２４（ａ）に例示するようなＡＣＬグラフの画像を表示画面に表示させてよい。
【０１６３】
以上で説明した実施形態では、ＡＣＬグラフ管理部１４０は、同一内容のＡＣＬが重複して存在しないようにＡＣＬ情報ＤＢ６０内の複数のＡＣＬを管理する。しかしながら、前述の数学的なＡＣＬのモデルで説明したように、半順序関係はＡＣＬの商集合上で定義されるため、同一の内容のＡＣＬが複数存在していてもよい。
【０１６４】
また、以上で説明した実施形態では、ＡＣＬの同値関係〜による商集合£／〜上に定義されるＡＣＬ間の半順序関係≦に従った処理を行うが、ＡＣＬ間の半順序関係は、ＡＣＬの商集合上で定義する代わりに、ＡＣＬ集合£上で定義してもよい。同一内容のＡＣＬが重複して存在しないようにＡＣＬ情報ＤＢ６０内の複数のＡＣＬを管理する場合、ＡＣＬ集合£上で定義した半順序関係に従った処理は、商集合£／〜上で定義した半順序関係に従った処理と同様となる。以下、ＡＣＬ集合£上でＡＣＬ間の半順序関係を定義する場合の数学的モデルの一例を示す。
【０１６５】
＜ＡＣＬ集合£上の半順序関係≦＞
例えば、アクセス権（ｆA，Ｕ，Ｐ，Ａ，ｆL，£）のＡＣＬ集合£上に、次の条件を満たす二項関係≦を定義する。
Ｌ1，Ｌ2∈£について、任意の（ｕ，ｐ）∈ＦL（Ｌ1）に対して、あるｐ⊆ｐ´⊆Ｐが存在して、（ｕ，ｐ´）∈ＦL（Ｌ2）かつ、Ｌ1〜Ｌ2ならばＬ1＝Ｌ2であるとき、Ｌ1≦Ｌ2
定義より≦は半順序関係である。この定義においては、ＡＣＬがもつＡＣＥの値のセットが同じ（ＦL（Ｌ1）＝ＦL（Ｌ2））であっても、ＡＣＬが異なれば（Ｌ1≠Ｌ2）、Ｌ1とＬ2との間に関係≦はないとすることで、関係≦の反対称律を保証し、関係≦を半順序関係として定義している。
【０１６６】
なお、以上の各種実施形態の例では、ＡＣＬ間の関係を半順序関係として定義する。他の実施形態の例では、ＡＣＬ間の関係は、少なくとも推移律を満たす関係であれば、半順序関係でなくてもよい。ＡＣＬ間の関係として推移律を満たす関係を定義することで、その関係を用いてＡＣＬの有向グラフが定義される。
【０１６７】
以上に例示した文書管理サーバ１０は、典型的には、汎用のコンピュータにて上述の文書管理サーバ１０の各部の機能又は処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、図２６に示すように、ＣＰＵ（中央演算装置）８０、メモリ（一次記憶）８２、各種Ｉ／Ｏ（入出力）インタフェース８４等がバス８６を介して接続された回路構成を有する。また、そのバス８６に対し、例えばＩ／Ｏインタフェース８４経由で、ハードディスクドライブ（ＨＤＤ）８８やＣＤやＤＶＤ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブ９０が接続される。このようなドライブ８８又は９０は、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク経由で、ハードディスクドライブ８８などの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリに読み出されＣＰＵにより実行されることにより、実施形態の処理が実現される。
【図面の簡単な説明】
【０１６８】
【図１】文書管理システムの概略構成の例を示すブロック図である。
【図２】オブジェクト情報ＤＢのデータ内容の一例を示す図である。
【図３】ＡＣＬ情報ＤＢのデータ内容の一例を示す図である。
【図４】ＡＣＬグラフの一例を示す図である。
【図５】オブジェクトに対してＡＣＬを設定する場合に文書管理サーバが行う処理の手順の一例を示すフローチャートである。
【図６】ＡＣＬ情報ＤＢから特定のＡＣＬを検索する処理の部分的な手順の一例を示すフローチャートである。
【図７】ＡＣＬ情報ＤＢから特定のＡＣＬを検索する処理の部分的な手順の一例を示すフローチャートである。
【図８】オブジェクトに対して設定されるＡＣＬの一例を示す図である。
【図９】ＡＣＬグラフ管理部が行うＡＣＬグラフ最適化処理の手順の一例を示すフローチャートである。
【図１０】ＡＣＬグラフの他の例を示す図である。
【図１１】ＡＣＬの一例を示す図である。
【図１２】図１０に例示するＡＣＬグラフに対して図１１に例示するＡＣＬを追加した結果のＡＣＬグラフの一例を示す図である。
【図１３】図１２に例示するＡＣＬグラフに対するＡＣＬグラフ最適化処理の過程で生成されるＡＣＬグラフの一例を示す図である。
【図１４】図１２に例示するＡＣＬグラフに対するＡＣＬグラフ最適化処理の結果として生成されるＡＣＬグラフの一例を示す図である。
【図１５】検索処理部が行う処理の手順の一例を示すフローチャートである。
【図１６】下位ＡＣＬ探索処理の手順の一例を示すフローチャートである。
【図１７】検索処理部が行う処理の結果の例を説明するための図である。
【図１８】クライアントの表示装置に表示される表示画面の一例を示す図である。
【図１９】クライアントの表示装置に表示される表示画面の他の一例を示す図である。
【図２０】クライアントの表示装置に表示される表示画面の他の一例を示す図である。
【図２１】ＡＣＬグラフの擬似木の例を示す図である。
【図２２】ＡＣＬグラフの擬似木を生成する手順の例を説明するための図である。
【図２３】ＡＣＬグラフの擬似木を生成する手順の例を説明するための図である。
【図２４】ＡＣＬグラフの擬似木を生成する手順の例を説明するための図である。
【図２５】クライアントの表示装置に表示されたＡＣＬの内容を表示させる場合の表示画面の一例を示す図である。
【図２６】コンピュータのハードウエア構成の一例を示す図である。
【符号の説明】
【０１６９】
１０  文書管理サーバ、２０  クライアント、３０  ネットワーク、４０  文書ＤＢ、５０  オブジェクト情報ＤＢ、６０  ＡＣＬ情報ＤＢ、７０  ユーザ情報ＤＢ、８４  Ｉ／Ｏインタフェース、８６  バス、８８  ＨＤＤ、９０  ディスクドライブ、１００  処理要求受付部、１１０  制御部、１２０  処理結果出力部、１３０  オブジェクト情報管理部、１４０  ＡＣＬグラフ管理部、１５０  ＡＣＬツリー表示部、１６０  検索処理部、１７０  アクセス制御部。
【図１】
0005035089.tif 000002
【図２】
0005035089.tif 000003
【図３】
0005035089.tif 000004
【図４】
0005035089.tif 000005
【図５】
0005035089.tif 000006
【図６】
0005035089.tif 000007
【図７】
0005035089.tif 000008
【図８】
0005035089.tif 000009
【図９】
0005035089.tif 000010
【図１０】
0005035089.tif 000011
【図１１】
0005035089.tif 000012
【図１２】
0005035089.tif 000013
【図１３】
0005035089.tif 000014
【図１４】
0005035089.tif 000015
【図１５】
0005035089.tif 000016
【図１６】
0005035089.tif 000017
【図１７】
0005035089.tif 000018
【図１８】
0005035089.tif 000019
【図１９】
0005035089.tif 000020
【図２０】
0005035089.tif 000021
【図２１】
0005035089.tif 000022
【図２２】
0005035089.tif 000023
【図２３】
0005035089.tif 000024
【図２４】
0005035089.tif 000025
【図２５】
0005035089.tif 000026
【図２６】
0005035089.tif 000027