(57)【特許請求の範囲】
【請求項１】
識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶する記憶部と、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理部と、を備える情報処理装置。
【請求項２】
前記ファイル管理部は、ディレクトリ名とファイル名とを含むファイルパス名と、同一ファイルパス名のファイルを識別する管理値とによってファイルを識別する請求項１に記載の情報処理装置。
【請求項３】
前記ファイル管理部は、ディレクトリを第１の因子とし、前記ディレクトリ中のファイル名を第２因子として前記第１因子に積演算子で結合して項を形成し、同一ディレクトリに含まれるファイルについては、ファイル名を集合構成演算子で構成される第１の集合因子中の項に含め、ディレクトリを第１の集合因子に積演算子で結合する因子とし、同一ディレクトリに含まれる同一ファイル名の項については、管理値を集合構成演算子によって構成される第２の集合因子中の項とし、ファイル名を前記第２の集合因子に積演算子で結合される因子とする、請求項２に記載の情報処理装置。
【請求項４】
コンピュータに、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶部に記憶するステップと、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理ステップと、を実行させるプログラム。
【請求項５】
前記ファイル管理ステップは、ディレクトリ名とファイル名とを含むファイルパス名と、同一ファイルパス名のファイルを識別する管理値とによってファイルを識別するステップを含む請求項４に記載のプログラム。
【請求項６】
前記ファイル管理ステップは、ディレクトリを第１の因子とし、前記ディレクトリ中のファイル名を第２因子として前記第１因子に積演算子で結合して項を形成し、同一ディレクトリに含まれるファイルについては、ファイル名を集合構成演算子で構成される第１の集合因子中の項に含め、ディレクトリを第１の集合因子に積演算子で結合する因子とし、同一ディレクトリに含まれる同一ファイル名の項については、管理値を集合構成演算子によって構成される第２の集合因子中の項とし、ファイル名を前記第２の集合因子に積演算子で結合される因子とするステップを含む、請求項５に記載のプログラム。
【請求項７】
コンピュータが、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、前記項の組み合わせの順序を維持しないで前記項の組み合わせを関係付けることによって前記因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶部に記憶するステップと、
前記ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新た
な世代のファイルとして保存するファイル管理ステップと、を実行する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置のファイル管理技術に関する。
【背景技術】
【０００２】
コンピュータ上のファイルを更新した場合に、更新前のファイルを維持した上で、更新後のファイルを最新ファイルとして保存したい場合がある。しかしながら、従来の情報処理技術では、ユーザが更新前後で同一のファイルをコンピュータ上の同一ディレクトリ（フォルダともいう）に保存した場合、コンピュータ上のファイルシステムは、一般的には、更新前のファイルに更新後のファイルを上書きする。その結果、更新前のファイルの内容は破棄される。このようなファイルシステムでは、ユーザは、ディレクトリまたはファイル名を変更し、いわゆるファイルパス名を変更して保存する。
【０００３】
一方、従来のデータベースシステム、あるいは、ファイルシステムで、同一のファイルの複数世代を管理する技術も提案されている（例えば、下記特許文献１等）。従来のファイルの世代を管理する技術では、世代の管理情報をデータベース、あるいは、ファイルシステムの管理テーブルなどに保持する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１９１８８９号公報
【特許文献２】特許第４３４３９８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、コンピュータ上のファイルは、階層構造を有するディレクトリと、ディレクトリ内のファイルとによって管理される。したがって、管理テーブルなどの表形式で、ファイルの世代を管理すると、階層構造を有するディレクトリデータと、世代を管理する管理テーブルとを取り扱う必要が生じ、処理が極めて複雑となる。
【０００６】
本発明の課題は、階層構造を有するディレクトリで管理されるファイルの世代を簡易に一元的に取り扱う情報処理技術を提案することにある。
【課題を解決するための手段】
【０００７】
本発明の一側面は、情報処理装置として例示できる。本情報処理装置は、識別子と、順序を持つ因子の列として複数の識別子を結合する積演算子と、識別子および因子の列として結合された複数の識別子のいずれかまたは両方から項の組み合わせを構成する和演算子と、項の組み合わせの順序を維持しないで項の組み合わせを関係付けることによって因子とする集合因子構成演算子とによって、ファイルシステム中のファイルの世代とファイルが所属するディレクトリとの関係を記憶する記憶部と、ファイルが更新されたときに更新前のファイルを維持して更新後のファイルを新たな世代のファイルとして保存するファイル管理部と、を備える。
【０００８】
本情報処理装置によれば、複数のファイルが項の和で記述され、ファイルの世代とファイルが所属するディレクトリとの関係が項に含まれる因子によって記述され、更新前後のファイルが保存される。
【発明の効果】
【０００９】
本発明によれば、階層構造を有するディレクトリで管理されるファイルの世代を簡易に一元的に取り扱うことができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の構成を例示すブロック図である。
【図２】ディレクトリデータを例示する図である。
【図３】ディレクトリデータの構造を例示する図である。
【図４】部分集合取得処理を実行する処理のフローを例示する図である。
【図５Ａ】部分集合取得処理を実行中の対象情報の状態を例示する図である。
【図５Ｂ】部分集合取得処理を実行中の対象情報の状態を例示する図である。
【図６】ディレクトリデータへのファイル登録処理を例示するフローチャートである。
【図７】実体ファイルの登録処理を例示するフローチャートである。
【図８】実体ファイルにアクセスするときのディレクトリデータの処理手順を例示するフローチャートである。
【図９】実体ファイルに対する処理を例示するフローチャートである。
【図１０】任意の管理値のファイルにアクセスする場合のディレクトリデータに対する処理を例示するフローチャートである。
【図１１】ファイル削除の場合の実体ファイルに対する処理を例示するフローチャートである。
【図１２】ファイルの復元処理でのディレクトリデータに対する処理を例示するフローチャートである。
【図１３】ファイルの復元処理での実体ファイルに対する処理を例示するフローチャートである。
【図１４】操作画面の例である。
【図１５】ファイルの選択部を用いたアップロード時の操作例である。
【図１６】ファイルの登録が完了したことを示す完了メッセージ部を例示する図である。
【図１７】ＯＳのファイルシステムの表示画面の例である。
【図１８】確認部の表示例である。
【図１９】上書きを完了した状態を例示する図である。
【図２０】プロパティ表示部の表示例である。
【図２１】ファイルの復元処理の実行を指示する操作画面の例である。
【図２２】復元処理実行後のプロパティ表示部および確認部での確認結果の例である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本装置は実施形態の構成には限定されない。
【実施例１】
【００１２】
＜装置構成＞
図１は、第１の実施形態（実施例１ともいう）に係る情報処理装置１０の構成を例示すブロック図である。同図に示すように、第１の実施形態に係る情報処理装置１０は、ＣＰＵ１１、主記憶装置１２、外部記憶装置１４、ディスプレイ１５、入力装置１６、可搬記憶媒体駆動装置１７、通信装置１８を有する。
【００１３】
ＣＰＵ１１は、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行し、情報処理装置１０の機能を提供する。実施例１では、コンピュータプログラムとしては、コンピュータをネットワーク上のデータ管理サーバとして機能させるデータ管理プロ
グラムを説明する。
【００１４】
主記憶装置１２は、ＣＰＵ１１が実行するプログラム、あるいは、ＣＰＵ１１が処理するデータを保持する。主記憶装置１２は、揮発性のＤＲＡＭ（Dynamic Random Access Memory）を含む。ただし、主記憶装置１２として、不揮発性のＲＯＭ（Read Only Memory）、フラッシュメモリ等を含むようにしてもよい。
【００１５】
外部記憶装置１４は、インターフェース１４Ａを通じてＣＰＵ１１に接続される。外部記憶層１４は、例えば、ハードディスク駆動装置とハードディスクを含む。ただし、外部記憶装置１４は、フラッシュメモリ等を用いたＳＳＤ（Solid State Drive）であっても
よい。外部記憶装置１４には、フォルダの階層構造とフォルダ内のファイルを含むファイルシステムが構築される。フォルダをディレクトリともいう。
【００１６】
ディスプレイ１５は、インターフェース１５Ａを通じて、ＣＰＵ１１と接続される。ディスプレイ１５は、例えば、液晶ディスプレイ、ＥＬ（エレクトロルミネッセンス）パネル等である。
【００１７】
入力装置１６は、インターフェース１６Ａを通じて、ＣＰＵ１１と接続される。入力装置１６は、例えば、キーボード、ポインティングデバイス等である。ポインティングデバイスには、マウス、静電容量の変化によって人の指の動作を検出するタッチパッド、フラットポイント等を含む。
【００１８】
可搬記憶媒体駆動装置１７は、インターフェース１７Ａを通じて、ＣＰＵ１１と接続される。可搬記憶媒体駆動装置１７は、例えば、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ブルーレイディスク、フラッシュメモリカード等である。
【００１９】
本実施例の情報処理装置１０の機能を実現させるプログラムを可搬記憶媒体に記憶することができる。そして、情報処理装置１０に可搬記憶媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００２０】
通信装置１８は、インターフェース１８Ａを通じて、ＣＰＵ１１と接続される。通信装置１８は、例えば、有線のＬＡＮ（Local Area Network）、無線ＬＡＮ等のインターフェースであり、ＮＩＣ（Network Interface Card）と呼ばれるものでもよい。ただし、インターフェース１８ＡがＰＣの内部バスに接続されるＮＩＣであってもよい。情報処理装置１０へのプログラムのインストールは、上記可搬記憶媒体の他、通信装置１８を通じても実行できる。
【００２１】
なお、主記憶装置１２、外部記憶装置１４、および可搬記憶媒体駆動装置１７の少なくとも１つは、記憶部に相当する。
＜ディレクトリデータの構成＞
外部記憶装置１４上、あるいは、可搬記憶媒体駆動装置１７を通じて入出力される可搬記憶媒体上のデータの管理方式は、ファイルシステムと呼ばれる。実施例１では、情報処理装置１０のファイルシステムの機能を拡張する。ファイルシステムは、ディレクトリあるいはフォルダと呼ばれる管理情報を有し、管理情報は、１以上のデータの記憶単位（ブロックともいう）を含むファイルの実体をファイル名等の管理情報で特定する。以下、ＯＳのファイルシステム上に構築され、ファイル名等の管理情報でアクセスされる個々のファイルを実体ファイルという。すなわち、情報処理装置１０が取り扱う外部記憶装置１４または可搬記憶媒体上のデータで、ファイルシステム上のファイル名で識別されるデータのひとまとまりを実体ファイルという。実体ファイルを単にファイルともいう。なお、ファイルシステム上でファイルを識別するための管理情報には、ディレクトリとファイル名
が含まれる。ディレクトリとファイル名とを合わせた名称をファイルパス名という。また、情報処理装置１０のファイルシステム上に構築されるディレクトリの階層構造を定義したデータをディレクトリデータという。
【００２２】
実施例１では、実体ファイルは、ＯＳのファイルシステム上に保存される。一方、ディレクトリデータも、ＯＳのファイルシステム上のファイルに格納される。ただし、ディレクトリデータへのデータの登録、更新は、情報処理装置１０のアプリケーションプログラムによって実行される。実施例１の情報処理装置１０では、実体ファイルおよびファイルシステムの管理情報とは分離して、ディレクトリデータをアプリケーションプログラムで管理することで、ＯＳに依存することなく、ファイルシステムに管理機能を追加する。
【００２３】
実施例１の情報処理装置１０で追加される管理機能の１つとして、ファイルの管理値を例示できる。情報処理装置１０において、ファイルの管理値は、ディレクトリとファイル名が同一の複数のファイルを区別する情報である。ファイルの管理値とは、実体ファイルの世代管理情報とも呼ぶことができる。
【００２４】
例えば、ファイルＡを最初に作成したときに、ファイルシステム上では、管理値００１が付与される。そして、ユーザまたは情報処理装置１０のプログラムがファイルＡを更新すると、ファイルシステム上では、管理値００１の実体ファイルを維持した状態で、新たな管理値００２を付与された実体ファイルが作成される。ユーザ、情報処理装置１０のプログラム、情報処理装置１０と接続されるネットワーク上のコンピュータ等は、通常、最新の管理値の実体ファイルにアクセスする。ただし、明示的に、ファイルの管理値（以下、単に管理値という）を指定することで、最新以外の管理値の実体ファイルにアクセスすることもできる。
【００２５】
なお、実施例１では、管理値として、ＵＴＣ（Coordinated Universal Time）を示す文字列を用いる。ＵＴＣは、１９５８年１月１日０時０分０秒からの経過時間を原子時計でカウントして定めた時刻である「国際原子時」に、グリニッジ標準時とのずれを調整するための「閏秒」を追加した時刻である。ＵＴＣは、ＯＳのアプリケーションインターフェースを通じて、ＯＳから取得できる。
【００２６】
図２に、情報処理装置１０が管理するディレクトリデータを例示する。図２のように、情報処理装置１０は、実体ファイルとディレクトリデータとを分けて管理する。ディレクトリデータは、実体ファイルが含まれているフォルダの階層構造を定義する。ディレクトリデータは、情報処理装置１０上のファイルパス名を管理するデータである。ディレクトリデータは、例えば、情報処理装置１０のファイルの１つに格納される。
【００２７】
また、情報処理装置１０で、個々の実体ファイルは、情報処理装置１０のＯＳのファイルシステムが管理するファイルとして、外部記憶装置１４あるいは可搬記憶媒体に格納される。ただし、上述のように、情報処理装置１０の実体ファイルには、管理値が付与される。情報処理装置１０は、例えば、ユーザが設定したファイル名に、管理値を付与し、それぞれの実体ファイルを生成し、更新する。また、情報処理装置１０は、管理値が明示的に指定されない場合、最新の管理値の実体ファイルにアクセスする。
【００２８】
図３に、ディレクトリデータの構造を例示する。図３で示される構造は、情報処理装置１０内のディレクトリの階層構造と、それぞれのディレクトリに属する実体ファイルの関係を示す図ということもできる。図３で、FolderA,FolderB,FolderCは、ディレクトリの
１階層（フォルダ）を示す。また、FileD,FileE,FileFは、実体ファイルのファイル名を
示す。
【００２９】
図３に示すディレクトリデータは、FolderAの下に、２つのFolderA、FolderCを有する
。また、FolderBには、FileDとFileEが含まれる。一方、FolderCには、FileFが含まれる
。そして、FileDは、管理値００１を有する。また、FileEは、管理値００１と００２とを有する。この場合、FileEのうち、管理値００２で指定される実体ファイルの方が、管理
値００１で指定される実体ファイルより新しい。同様に、FileFは、管理値００１、００
２、および００３を有する。
＜式表現＞
情報処理装置１０は、図３に示したディレクトリデータを式表現で記述する。以下、ディレクトリデータを記述する式表現について説明する。
（１）式表現
情報処理装置１０は、処理対象の情報（以下、対象情報）を式の形式で表現する。式は、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”によって記述される。第１の括弧が本発明の集合因子構成演算子に相当する。また、第２の括弧が本発明の順序構成演算子に相当する。このような対象情報の表現形式を式表現とも呼ぶ。
【００３０】
式は、１以上の識別子を含む。識別子は、記号または記号列で表現される。本実施形態では、記号として、英数字、および特殊文字（ただし、和演算子“＋”、積演算子“×”、第１の括弧“（”“）”、および第２の括弧“｛”“｝”を除外する）を用いることとする。ただし、記号は、一般的にアルファベットとも呼ばれ、必ずしも、これらの文字には限定されない。
【００３１】
本実施形態では、特殊な識別子として、Φおよびεを用いる。Φは、値ゼロ、和演算子において演算結果を変化させない値、または空集合を示す識別子である。本実施形態では、Φを零元と呼ぶ。また、εは、値１、あるいは、積演算子において演算結果を変化させない値である。本実施形態では、εを単位元と呼ぶ。なお、Φを和演算の単位元と呼ぶ場合もあるが、本実施形態では、Φを零元と呼ぶことにする。
【００３２】
本実施形態では、以下の規則によって対象情報、すなわち、識別子、因子、項（要素ともいう）、集合情報、接着空間の情報、およびセル空間の情報を記述する式表現が生成される。
（ａ）識別子、単位元、および零元はいずれも式表現、すなわち、対象情報を記述する表現である。
（ｂ）ｒとｓとがともに、式表現である場合、ｒ＋ｓも式表現である。
（ｃ）ｒとｓとがともに、式表現である場合、ｒ×ｓも式表現である。この場合、演算の結合の強さは、通常の代数と同様に、ｒ×ｓの方が、ｒ＋ｓよりも強い。
（ｄ）ｒが式表現である場合、（ｒ）、｛ｓ｝も式表現である。
【００３３】
（２）式表現の代数的構造
本実施形態において、式表現ｒ、ｓ、ｔ、ｙは、次の代数の性質を有する。
（ａ）結合律
ｒ＋（ｓ＋ｔ）＝（ｒ＋ｓ）＋ｔ；ｒ×（ｓ×ｔ）＝（ｒ×ｓ）×ｔ；
（ｂ）可換律
ｒ＋ｓ＝ｓ＋ｒ；
なお、本実施形態の式表現では、積演算子の可換律は成立しない。したがって、積演算子で複数の因子が結合されている場合に、個々の因子位置が情報（あるいは意味）を持つ。すなわち、因子は、いわゆる位置を指定してされた位置パラメータとしての機能を有する。「積演算子の可換律は成立しない」ことは、本発明の積演算子が「順序を持つ因子の列として複数の識別子を結合する」ことに相当する。
（ｃ）積演算の単位元
ｒ×ε＝ε×ｒ＝ｒ；
（ｄ）積演算、和演算の零元
ｒ×Φ＝Φ×ｒ＝Φ；ｒ＋Φ＝ｒ；
（ｅ）分配率
ｒ×（ｓ＋ｔ）＝ｒ×ｓ＋ｒ×ｔ；（ｒ＋ｓ）×ｔ＝ｒ×ｔ＋ｓ×ｔ；
（ｆ）
｛ｒ＋ｓ｝×｛ｔ＋ｕ｝＝｛ｒ×ｔ＋ｓ×ｕ｝；
【００３４】
（３）集合情報
集合情報は、項の組み合わせ、あるいは、項の和として、定義される。ここで、それぞれの項は集合ＩＤ（本発明の第１の識別因子に相当）となる識別子と値となる識別子の積、すなわち、集合ＩＤ×値として定義される。ただし、値は、複数の識別子の積であってもよい。集合の情報の式表現は、典型的には、集合ＩＤ×値１＋集合ＩＤ×値２＋・・・である。
【００３５】
上述のように、本実施形態のデータ構造では、和演算子に可換律が成立することから、集合情報は、順序のない項の組み合わせということができる。一方、項を構成する因子間の位置関係は維持されることになる。
【００３６】
このような因子間の位置関係の維持機能は、コンピュータ上で事物、あるいは、概念を表現する場合に、極めて大きな効果を発揮する。すなわち、一般的に、事物、あるいは概念を記述する修飾関係には、可換律が成立しない。例えば、”児玉の机”は、”机の児玉”と意味が異なる。
【００３７】
本実施形態の因子と積演算子によれば、このような修飾関係を極めて単純化して、記述することができる。さらに、そのような修飾関係で記述された項を和演算子によって組み合わせることで事物の集合、あるいは、概念の集合を記述し、極めて単純な形式のデータベースを構築できる。
【００３８】
さらにまた、管理対象の事物あるいは概念を項の集合として管理する場合に、項における因子の位置関係に意味を付与することもできる。また、項を構成する因子は、それぞれ、いわゆる位置パラメータとしての意義を有するということもできる。
【００３９】
例えば、集合情報が、果物×任意形状×任意色×バナナ＋果物×任意形状×任意色×りんご＋果物×細長×黄色×バナナ＋果物×丸×赤×リンゴという集合情報を考える。この場合、項の第１因子は、集合ＩＤである果物であり、第２因子は形状を示し、第３因子は色を示し、第４因子は名称を示す。このように、それぞれの因子の位置に意味上の制限を加えて使用することで、属性と属性値との関係を集合レベルでも処理できる。情報処理装置１００では、集合情報は、このような順序が維持された因子によって事物の属性を自在に定義することができる。また、そのような因子を含む項の組み合わせによって、事物、人の集合など、現実世界の情報がコンピュータ上に表現される。
（例）
Ａ×ａ１＋Ａ×ａ２＋Ａ×ａ３、ｂ１×Ｂ＋ｂ２×Ｂ×Ｂ、果物×リンゴ＋果物×バナナ＋果物×ミカン、野菜×キャベツ＋野菜×キュウリ＋野菜×ゴボウ、社員×Ａ＋社員×Ｂ＋社員×Ｃ
すなわち、集合情報は、集合ＩＤで識別される集合に所属する項の組み合わせを記述し、メモリ１２に記憶される。この場合、社員Ｃが退職し、社員Ｄと社員Ｅが入社した場合には、社員×Ａ＋社員×Ｂ＋社員×Ｃのようにメモリ１２に格納される。
＜部分集合取得処理＞
以下、上記式表現に対する基本演算として、部分集合取得処理を説明する。  部分集合
取得処理は、集合から、指定された因子（以下、指定因子という）を有する項を含む式（部分集合）と、指定因子を有しない項の式（部分集合）に分離する処理である。この処理を実行するＣＰＵ１３が、本発明の部分集合形成部に相当する。ただし、本実施形態では、指定因子（今ｐとする）を有する項が複数個存在する場合には、｛左因子１＋左因子２＋・・・｝ｐ｛左因子１が含まれていた項の右因子＋左因子２が含まれていた項の右因子＋・・・｝＋因子ｐを含まない部分集合の和のように、指定された因子ｐで括り出す。このように、部分集合取得処理の括り出しでは、括り出し前の各項において、指定因子ｐの左側に結合する因子（左因子と呼ぶ）と、指因子ｐの右側に結合する因子（右因子と呼ぶ）とをそれぞれ、第２の｛｝内に和演算する。そして、左因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の左側に結合される。
【００４０】
また、右因子の和は、第２の｛｝によって括られ、その順序を維持して、指定された因子の右側に結合される。さらに、同一の左因子に対して、異なる右因子を有する項が複数存在する場合、それらの右因子は、第１の括弧“（）”で括り出される。この場合、左因子は、集合情報の識別情報として機能する。例えば、
ａ１×ｂ×ｃ１＋ａ１×ｂ×ｃ２＋ａ２×ｂ×ｃ１＋ａ２×ｂ×ｃ２＋ａ３×ｂ×ｃ３＋ａ×ｕ×ｖという式表現に対して、因子ｂを指定因子として部分集合取得演算を実行すると、
｛ａ１＋ａ２＋ａ３｝ｂ｛（ｃ１＋ｃ２）＋（ｃ１＋ｃ２）＋ｃ３｝＋ａ×ｕ×ｖ
となる。この場合、右因子の列は、それぞれ、集合ＩＤがａ１の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ２の集合の部分集合ｂ（ｃ１＋ｃ２）、集合ＩＤがａ３の集合の部分集合ｂ×ｃ３を表している。
【００４１】
さらに、部分集合取得処理の対象となる項に、第１の括弧“（）”または第２の括弧“｛｝”が含まれている場合には、これらの括弧内の式表現に対して、再起的に部分集合取得処理が実行される。したがって、第１の括弧“（）”または第２の括弧“｛｝”で括られた個々の括弧内で、部分集合取得処理が実行される。
【００４２】
部分集合取得処理のアプリケーションインターフェースは、例えば、部分集合取得後の式表現は、戻り値＝separate(部分集合取得前の式表現、指定因子)；のように定義できる。対象の式，因子を指定すると、括った後の式（戻り値）になる。
【００４３】
次に部分集合取得処理について説明する。図４は、部分集合取得処理を実行する処理のフローを示す。ステップＳ５０１では、演算前の所定の表現形式で表現される対象情報と、部分集合を指定するための指定因子ｐを入力する。以下、対象情報として数１に示すデータを用いて、指定因子“ｐ”で部分集合を取得する場合について説明する。
ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）＋ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））・・・（数１）
ステップＳ５０２では、部分集合を取得するための因子以外（ここでは、「その他の式」「左因子式」および「右因子式」）をΦと設定する。ステップＳ５０３では「処理後の項」をεに設定する。ステップＳ５０４では、対象情報を構成する式の長さが０であるかを判断する。すなわち、対象情報が存在するか否かを判断する。式の長さが０であると判断した場合には、ステップＳ５１７へ進む。一方、式の長さが０であると判断しなかった場合には、ステップＳ５０５へ進む。
【００４４】
ステップＳ５０５では、数１から第一項を取得し保存する。次にステップＳ５０６では、数１から第一項を削除する。次にステップＳ５０７では、取得した項に因子ｐが含まれるか判断する。取得した項に因子ｐが含まれると判断した場合にはステップＳ５１５へ進む。一方、取得した項に因子ｐが含まれると判断しなかった場合には、ステップＳ５０８へ進む。
【００４５】
ステップＳ５０８では、項の長さが０であるか否かを判断する。項の長さが０であると判断した場合にはステップＳ５１４へ進む。一方、項の長さが０であると判断しなかった場合には、項から第一因子を取得し、これを保存し（ステップＳ５０９）、次に項から第一因子を削除する（ステップＳ５１０）。
【００４６】
次にステップＳ５１１では、第一因子が第一の括弧又は第二の括弧で括られているか判断する。因子が第一の括弧又は第二の括弧で括られていると判断した場合には、第一の括弧又は第二の括弧で括られている式に対して、本部分集合取得処理を実行する（ステップＳ５１２）。すなわち、再起呼び出しを実行する。一方、第一の括弧又は第二の括弧で括られていると判断しなかった場合には、第一因子を取得した因子とし（Ｓ５２０）、ステップＳ５１３へ進む。ステップＳ５１３では、処理後の項に取得した因子によって積演算処理を実行し、その結果を処理後の項とし、ステップＳ５０８の処理を再度実行する。
【００４７】
ステップＳ５０８において、項の長さが０であると判断した場合には、その他の式に処理後の項を和演算処理し、その結果をその他の式とする（ステップＳ５１４）。ステップＳ５１４の処理を実行後、再度ステップＳ５０３の処理を実行する。次にステップＳ５０４において式の長さが０であると判断した場合には、部分集合の項として｛左因子式｝ｐ｛右因子式｝を作成し（ステップＳ５１７）、その他の式に部分集合項を和演算し，演算後の式とし（ステップＳ５１８）、処理を終了する。以上の処理を実行することにより、数１により表現される対象情報は、数２により表現される対象情報となる。なお、部分集合取得処理を実行中の対象情報の状態の詳細は図５Ａ、図５Ｂに示す。
ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋ｐ４）｝・・・（数２）
図５Ａおよび図５Ｂに、数１の式表現に対して、部分集合取得処理が実行された場合の「演算前の式」、「部分集合取得のための因子」、「左因子式」、「右因子式」、「左因子」、「右因子」「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」の変化を示す。図５Ａの各行と、図５Ｂの各行は、図４の処理での同一の処理を示している。すなわち、図５Ａおよび図５Ｂを横に接続して、部分集合取得処理の状態変化が表されることになる。
【００４８】
図５Ａおよび図５Ｂの第１行目は、各列の要素、すなわち、図４中の該当する処理を示す番号、「その他の式」、「取得した項」、「取得した因子」、「処理後の項」、「部分集合項」および「演算後の式」を示している。第２行以下の各行は、一連の処理ステップであり、図５Ａおよび図５Ｂの表の上から下へ実行される。
【００４９】
ここでは、数１の式表現を処理対象とする。部分集合取得処理を実行する共通関数separateに対して、まず、部分集合取得前の式表現である数１が与えられる。この式表現はメモリ１２に格納される。また、指定因子はｐであるとする。
【００５０】
まず、Ｓ５０５、Ｓ５０５の処理で、式から第一項ｓ×ｐ（ｐ１＋ｐ２）が取得される。ｓ×ｐ（ｐ１＋ｐ２）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｓおよび右因子（ｐ１＋ｐ２）がそれぞれ左因子式および右因子式に和演算される。
【００５１】
次に、Ｓ５０５、Ｓ５０６の処理で、式から第二項ｔ×ｐ（ｐ３＋ｐ４）が取得される。ｔ×ｐ（ｐ３＋ｐ４）に指定因子ｐが含まれているので、Ｓ５１５およびＳ５１６が実行され、左因子ｔおよび右因子（ｐ３＋ｐ４）がそれぞれ左因子式および右因子式に和演算される。
【００５２】
さらに、Ｓ５０５、Ｓ５０６の処理で、式から第三項ｉｄ（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。そして、Ｓ５０９において、第一因子としてｉｄが取得される。項ｉｄは、Ｓ５１３にて、処理後の項に積演算される。さらに、Ｓ５０９において、第一項として、次の項（ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４））が取得される。これは、Ｓ５１１の判定で、第１の括弧を含むとされるので、Ｓ５１２が実行される。
【００５３】
そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）に対して、部分集合取得処理が再起呼び出しで実行される。図５Ａおよび図５Ｂでは、再起呼び出し中の状態は、省略されているので、本文にて説明する。この場合も、ｓ×ｐ（ｐ１＋ｐ２）から、左因子ｓ、右因子（ｐ１＋ｐ２）が取得される。また、ｔ×ｐ（ｐ３＋ｐ４）から、左因子ｔ、右因子（ｐ３＋ｐ４）が取得される。これらの左因子および右因子は、Ｓ５１６において、それぞれ左因子式、および右因子式に和演算される。そして、式表現ｓ×ｐ（ｐ１＋ｐ２）＋ｔ×ｐ（ｐ３＋ｐ４）の末尾まで処理が進み、Ｓ５０４で、残りの式の長さが０であると判定される。すると、ＣＰＵ１３は、部分集合の項として、｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝を作成する。そして、ＣＰＵ１３は、部分集合の項を演算後の式として、再起呼び出しを終了する。
【００５４】
再起呼び出しを終了すると、演算後の式を取得するので、これを取得した因子とする。この場合、取得した因子は、（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）である。そして、ＣＰＵ１３は、Ｓ５１３にて、再起呼び出し前に計算しておいた処理後の項（“ｉｄ”が積演算されている）に、取得した因子を積演算する。その結果、Ｓ５１３において、処理後の項は、ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）となる。ＣＰＵ１３は、Ｓ５１４にて、処理後の項をその他の式として和演算する。
【００５５】
そして、Ｓ５０４にて、残りの式の長さが０であると判定されると、ＣＰＵ１３は、再起呼び出し前に作成していた左因子式ｓ＋ｔおよび右因子式（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）から、部分集合の項｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝を作成する。そして、ＣＰＵ１３は、Ｓ５１８にて、その他の式に部分集合の項を和演算する。これによって、演算後の式ｉｄ（｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋（ｐ３＋４）｝）＋｛ｓ＋ｔ｝ｐ｛（ｐ１＋ｐ２）＋Ｐ３＋ｐ４）｝が作成されることになる。
＜式表現にしたがったディレクトリデータの記述法＞
実施例１に係る情報処理装置１０は、式表現にしたがって、ディレクトリデータを記述する。情報処理装置１０においては、ディレクトリの階層構造は、ルートディレクトリ、すなわち、最上位のディレクトリから、最下層のディレクトリまで深さ優先で、第１の括弧”（”および”）”の階層構造で記述する。また、同一の階層に複数のディレクトリ、またはファイルが存在する場合、和演算子（＋）で区切って、複数のディレクトリまたはファイルを並べて記述する。
【００５６】
例えば、図２で例示されるディレクトリ構造の式表現は、次のようになる。
（式表現１）
FolderA(FolderB(FileD+FileE))+FolderC×FileF);
なお、上位のディレクトリに所属する下位のディレクトリまたはファイルが１個しかない場合には、（）内に下位のディレクトリまたはファイルを記述する代わりに、積演算子を用いて、上位と下位の従属関係を記述する。例えば、"FolderC×FileF"は、ディレクトリ"FolderC"に、"FileF"が１個所属する場合である。
【００５７】
さらに、図３のように、ファイル名に、管理値を付与して、ファイルの世代管理を行う場合、ディレクトリデータの式表現は、次のようになる。
（式表現２）
FolderA(FolderB(FileD×001+FileE(001+002)))+FolderC×FileF(001+002+003));
＜ディレクトリデータの管理処理＞
以下、図６−図１１を参照して、部分集合取得処理を適用して上述の式表現で記述したディレクトリデータを処理する手順を説明する。本実施例では、例えば、情報処理装置１０は、ネットワーク上のウェブサイトを通じて、ユーザのコンピュータからアクセス可能なサーバである。情報処理装置１０は、ネットワークを通じて、ユーザからのファイルのアップロードあるいはダウンロードを受け付ける機能を提供する。なお、情報処理装置１０のＣＰＵ１１は、ファイル管理部として、図６−図１１の処理を実行する。
【００５８】
図６は、情報処理装置１０によるディレクトリデータへのファイル登録処理を例示するフローチャートである。今、以下のディレクトリデータが情報処理装置１０の主記憶装置１２、あるいは、外部記憶装置１２に格納されていると仮定する。
（ディレクトリデータ１）
FolderA
(FolderB(FileD×1273799840230+FileE(1273799910230+1273799940100))+
FolderC×FileF(1273799915010+1273799923400+1273799925601)）
ここで、例えば、FileEはFolderB内に存在すること、および、FileEは２つの管理値1273799910230,1273799940100によって２つの世代が保持されていることがわかる。ここでは、FolderB内のFileEを更新したときのディレクトリデータに対する情報処理装置１０の処理を説明する。
【００５９】
この処理では、情報処理装置１０は、ファイル登録に対する処理を監視する（Ｓ０）。ファイル登録の処理とは、例えば、ネットワーク上のコンピュータから、ファイルが情報処理装置１０にアップロードされる場合を例示できる。さらに、ファイル登録されるファイルとしては、すでに過去にアップロード済みのファイルが同一のファイル名である場合も含む。また、ファイル登録の処理として、例えば、入力装置１６を通じたユーザ操作にしたがって、ファイルが情報処理装置１０に登録され、あるいは、登録済みのファイルが更新される場合を例示できる。
【００６０】
ファイル登録に対する処理、例えばファイル登録要求、ファイル書き込み要求等を検出すると、情報処理装置１０は、要求に含まれるファイルパス名から、ファイル名を取得する（Ｓ１）。ここで、ファイルパス名とは、例えば、ディレクトリとファイル名の並びであり、情報処理装置１０上でのファイルをユニークに特定できる情報である。また、ファイルパス名には、管理値は含まれていないものとする。管理値は通常ファイル登録操作では、ユーザには明示されないからである。すなわち、管理値はファイル登録時に、情報処理装置１０によって設定されるからである。ここでは、ファイル登録の対象として、ファイルパス名FolderA×FolderB×FileEが取得され、ファイル名としてFileEが取得されたとする。
【００６１】
次に、情報処理装置１０は、管理値としてＵＴＣの値を取得する（Ｓ２）。情報処理装置１０は、例えば、ＯＳのアプリケーションインターフェースを通じて、ＯＳからＵＴＣの値を取得できる。今、ＵＴＣは、1273799988154であったと仮定する。
【００６２】
次に、情報処理装置１０は、管理値付きファイル名を生成する（Ｓ３）。管理値付きファイル名とは、ファイル名に管理値を結合した名称である。管理値付きファイル名は、ファイル登録処理前に存在したファイルパスと、同一のファイルパスにファイルが登録された場合でも、同一のファイルパスの複数のファイルを識別可能なファイル名である。上記例では、管理値付きファイル名は、FileE×1273799988154となる。
【００６３】
次に、情報処理装置１０は、ファイル登録要求、ファイル書き込み要求等の対象となっ
ているファイルパス名から、ディレクトリパス名を取得する（Ｓ４）。上記ファイルパス名の例では、ディレクトリパス名は、FolderA×FolderBとなる。
【００６４】
次に、情報処理装置１０は、ディレクトリデータに追加するデータ（項）を生成する（Ｓ５）。ここで、データ（項）は、ディレクトリパス名と管理値値付きファイル名とを結合した式表現である。上記例では、項は、FolderA×FolderB×FileE×1273799988154となる。
【００６５】
そして、情報処理装置１０は、生成した項をディレクトリデータに登録する（Ｓ６）。すなわち、情報処理装置１０は、生成した項を式表現に加算する。そして、情報処理装置１０は、項が追加された式表現を整理する。その結果、上記ディレクトリデータ１は、ディレクトリデータ２のように変更される。
（ディレクトリデータ２）
FolderA
(FolderB
(FileD×1273799840230+FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601)）
すなわち、FolderA×FolderB×FileEのファイルパスで示されるファイルには、３つの
管理値(1273799910230+1273799940100+1273799988154)によって、３世代のファイルが管
理される。
【００６６】
図７は、図６のディレクトリデータの登録処理に対応する、実体データの登録処理を例示するフローチャートである。実体データとは、ディレクトリデータによって管理されるファイル自体をいう。実体データの登録処理のうち、Ｓ０−Ｓ３は、図６のＳ０−Ｓ３と共通の処理であるので、その説明を省略する。情報処理装置１０は、管理値付きファイル名を生成すると、実体ファイルのファイル名を管理値付きファイル名に変更し、ファイルシステム、例えば、外部記憶装置１４に格納する（Ｓ９）。
【００６７】
ただし、実体ファイルをファイルシステムに格納する際に、ファイル名としては、制限が生じる場合もある。例えば、”ファイル名×管理値”という名称で実体ファイルを格納できない場合もある。その場合には、”×”に代えて、ファイルシステムで許容される文字を用いればよい。実施例１では、ディレクトリデータ中は、”ファイル名×管理値”で項を記述し、一方、情報処理装置１０の実体ファイルのファイル名として、”ファイル名_管理値”を用いる場合を想定して説明する。なお、実体ファイルのファイル名としては
、”ファイル名×管理値”、”ファイル名_管理値”等に限定されるわけではなく、ファ
イルシステムで許容される文字を用いればよい。
【００６８】
Ｓ９の処理は、例えば、ＯＳのファイルシステムに対して、管理値付きファイル名で登録対象のファイルを保存する処理である。Ｓ９の処理の結果、登録要求対象のファイルパス名と同一のファイルパス名でファイルが登録され、上書き要求があったとしても、情報処理装置１０は、上書き前のファイルの実体を維持した上で、登録対象の実体ファイルを保存できる。また、情報処理装置１０は、ファイル更新要求を受け付けた場合も、更新前のファイルの実体を維持した上で、更新後の実体ファイルを保存できる。
【００６９】
図８に、実体ファイルにアクセスするときのディレクトリデータの処理手順を例示する。ここでは、例えば、
Folder A
（Folder B
(FileD×1273799840230+
FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601))というディレクトリデータが、主記憶装置１２あるいは外部記憶装置１４で管理されているときに、FolderA
×FolderBというディレクトリパスのFileEにアクセスする場合の処理を例示する。
【００７０】
この処理でも、情報処理装置１０は、ファイルに対する要求処理を監視する（Ｓ１０）。そして、ファイルに対する要求処理、例えばファイル読み出し要求を検出すると、情報処理装置１０は、要求に含まれるファイルパス名から、ファイル名を取得する（Ｓ１１）。ここでは、要求に含まれるファイル名、すなわち、読み出し対象のファイル名をFileE
とする。
【００７１】
次に、情報処理装置１０は、ファイル登録要求、ファイル書き込み要求等の対象となっているファイルパス名から、ディレクトリパス名を取得する（Ｓ１２）。ここでは、ディレクトリパス名は、FolderA×FolderBとする。
【００７２】
次に、情報処理装置１０は、ディレクトリデータから、ディレクトリパス名とファイル名を結合した式表現FolderA×FolderB×FileEにより部分集合取得演算を実行する（Ｓ１
３）。すると、ディレクトリパス名×ファイル（管理値の集合）という式表現で、部分集合が得られる（Ｓ１４）。この例では、FolderA×FolderB×FileE(1273799910230+1273799940100+1273799988154)が得られる。
【００７３】
次に、情報処理装置１０は、得られた部分集合中に２以上の管理値があるか否かを判定する（Ｓ１５）。そして、得られた部分集合内に２以上の管理値がある場合、情報処理装置１０は、管理値の集合から最大値を取得する（Ｓ１６）。この例では、管理値として、1273799988154が得られる。管理値の集合から最大値を取得するのは、複数世代の実体フ
ァイルが維持されている場合の最新の実体ファイルを取得するためである。
【００７４】
次に、情報処理装置１０は、管理値付きファイル名を生成する（Ｓ１７）。この例では、生成される最新の管理値付きファイル名は、FileE×1273799988154である。そして、情報処理装置１０は、ディレクトリパス名と最新の管理値付きファイル名を実体ファイル処理に引き渡す（Ｓ１９）。なお、引き渡す際に、情報処理装置１０は、ファイル名をFileE×1273799988154からFileE_1273799988154に変換する。変換は、引き渡す側（ディレク
トリデータ処理側のプログラム）で実行してもよいし、引き渡しを受ける側（実体ファイル処理側のプログラム）で実行してもよい。
【００７５】
図９に、実体ファイルに対する要求処理を例示する。この処理では、情報処理装置１０は、ディレクトリデータに対する処理結果として、ディレクトリパス名と管理値付きファイル名(ファイル名_管理値)を受け取る（Ｓ２０）。そして、情報処理装置１０は、ディ
レクトリパス名と管理値付きファイル名(ファイル名_ファイル管理値)に対応する実体フ
ァイルが、ファイルシステム上に存在するか否かを判定する（Ｓ２１）。
【００７６】
実体ファイルがない場合、情報処理装置１０は、エラー処理を実行する（Ｓ２２）。エラー処理は、例えば、エラーコードの設定、あるいは、エラーメッセージの表示である。一方、実体ファイルがある場合、情報処理装置１０は、その実体ファイルにアクセスする。例えば、ネットワーク上のコンピュータからダウンロードの指示があった場合には、情報処理装置１０は、実体ファイルのデータを読み出す。そして、情報処理装置１０は、管理値付きファイル名(ファイル名_管理値)から管理値を取り除く。なお、この処理は、式
表現上では、該当するファイルの最後の識別子を取り除く処理となる。そして、情報処理装置１０は、実体ファイルのデータを要求元、例えば、ネットワーク上のコンピュータにファイル出力する（Ｓ２４）。
【００７７】
図１０に、任意の管理値のファイルにアクセスする場合のディレクトリデータに対する処理を例示する。ここでは、アクセスの例として、任意の管理値のファイルを削除する処理を例示する。今、例えば、ディレクトリデータとして、
FolderA
(Folder B
(FileD×1273799840230+FileE(1273799910230+1273799940100+1273799988154))+
FolderC×FileF(1273799915010+1273799923400+1273799925601)）が主記憶装置１２または外部記憶装置１４に格納されているとする。また、要求処理の対象としてFileEが
指定されているとする。
【００７８】
図１０の処理で、図８と同一の処理は、図８と同一の符号を付してその説明を省略する。任意の管理値のファイルにアクセスする場合に、情報処理装置１０は、Ｓ１０−Ｓ１４で取得された項、すなわち、ディレクトリパス名、ファイル名、および管理値について、管理値が複数あるか否かを判定する（Ｓ１５）。そして、ディレクトリ名とパス名に対して、複数の管理値がある場合、情報処理装置１０は、入力装置１６を通じて、任意の管理値の指定を受け付ける。あるいは、情報処理装置１０は、通信装置１８を通じて、任意の管理値の指定を受け付ける（Ｓ１６Ａ）。ここでは、例えば、1273799988154が指定され
たと仮定する。
【００７９】
すると、情報処理装置１０は、指定を受けた管理値により管理値付きファイル名を生成する（Ｓ１７）。ここでは、FileE×1273799988154が生成される。
【００８０】
そして、情報処理装置１０は、生成された管理値付きファイル名をディレクトリデータから削除する（Ｓ１８Ａ）。なお、Ｓ１７−Ｓ１８の処理は、単純に、Ｓ１６Ａで指定を受け付けた管理値をＳ１４で取得した管理値の集合から削除するものでもよい。そして、情報処理装置１０は、ディレクトリパス名と、Ｓ１８Ａで削除した管理値付きファイル名を実体ファイル処理に引き渡す。ここでは、FolderA×Folder Bのディレクトリパス名と
、FileE×1273799988154という管理値付きファイル名が引き渡される。
【００８１】
図１１に、ファイル削除の場合の実体ファイルに対する処理を例示する。この処理では、情報処理装置１０は、図１０の処理の結果として、ディレクトリパス名と、管理値付きファイル名を引き渡される（Ｓ２０）。そして、情報処理装置１０は、ディレクトリパス名と、管理値付きファイル名で指定される実体ファイルの有無を判定する。実体ファイルがない場合、情報処理装置１０は、エラー処理を実行する（Ｓ２２）。一方、実体ファイルがある場合、情報処理装置１０は、その実体ファイルを削除する。（Ｓ２３）。
【００８２】
なお、図１０および図１１では、任意のファイル管理値の実体ファイルを削除する処理例を示したが、任意のファイル管理値の実体ファイルを読み出す場合も、図１０および図１１と同様に、実行できる。任意のファイル管理値の実体ファイルを読み出す場合には、例えば、ディレクトリデータからの管理値の削除、あるいは、実体ファイルの削除は行わないようにすればよい。
【００８３】
図１２に、ファイルの復元処理でのディレクトリデータに対する処理を例示する。復元処理では、任意のファイル管理値の実体ファイルに新たに最大の管理値を付与して、ファイルを最新化する。図１２の処理でも、図１０の場合と同様のディレクトリデータが存在する場合を想定する。そして、ここでは、FolderA×FolderC×FileF(1273799915010+1273799923400+1273799925601)という複数の管理値、すなわち、複数の世代を有する実体ファイルから、管理値1273799915010で特定される実体ファイルの世代を復元し、最新化する
処理例を説明する。
【００８４】
この処理では、情報処理装置１０は、ファイルに対する要求処理を監視する（Ｓ３０）。
【００８５】
そして、ファイルに対する復元要求を検出すると、情報処理装置１０は、要求に含まれるファイルパス名から、ファイル名を取得する（Ｓ３２）。ここでは、要求に含まれるファイル名、すなわち、復元対象のファイル名をFileFとする。
【００８６】
次に、情報処理装置１０は、復元要求の対象となっているファイルパス名から、復元される元管理値を取得する（Ｓ３３）。ここでは、元管理値は、例えば、1273799915010で
ある。どの世代を復元するかについては、情報処理装置１０が、例えば、ネットワーク上のユーザのコンピュータに世代を示すファイルのリストを表示し、ユーザの選択を受け付けるようにすればよい。
【００８７】
次に、情報処理装置１０は、復元要求の対象となっているファイルパス名から、ディレクトリパス名を取得する（Ｓ３4）。ここでは、ディレクトリパス名は、FolderA×FolderCである。
【００８８】
次に、情報処理装置１０は、新ファイル管理値として、システム時刻の値をＯＳのアプリケーションインターフェースを通じて取得する（Ｓ３５）。ここでは、新たな管理値は、例えば、1273800915999である。
【００８９】
そして、情報処理装置１０は、新管理値付きファイル名を生成する（Ｓ３６）。そして、情報処理装置１０は、Ｓ３４で取得したディレクトリパス名と、Ｓ３３で取得したファイル名のファイルについて、ディレクトリデータ内の項を書き換える（Ｓ３７）。すなわち、ディレクトリパス名×ファイル名×元管理値をディレクトリパス名×ファイル名×元管理値とした式表現を追加する。そして、そして、情報処理装置１０は、項が追加された式表現を整理する。その結果、FileFについては、例えば、FileF(1273800915999+1273799923400+1273799925601)という複数の管理値が、ディレクトリデータが生成される。
【００９０】
図１３に、実体ファイルに対する処理を例示する。この処理では、情報処理装置１０は、ディレクトリデータに対する処理に基づき、新ファイル名と元ファイル名を引き渡される（Ｓ４０）。そして、情報処理装置１０は、ＯＳのファイルシステム上で、元ファイル名を新ファイル名に置換する（Ｓ４１）。ここでは、元ファイル名FolderA×FolderC×FileF×1273799915010が、新ファイル名FolderA×FolderC×FileF×1273800915999に変更される。
＜処理例＞
図１４から図２２に、情報処理装置１０とネットワークで接続されたユーザのコンピュータでの操作例を説明する。以下の操作例では、情報処理装置１０は、アップロードされたファイルの格納、更新、ダウンロード等のデータ管理サーバの機能をネットワークに接続されたユーザのコンピュータに提供する。
【００９１】
図１４の操作画面３０は、左部分にディレクトリデータの階層構造を表示するディレクトリ表示部３１を有する。ディレクトリ表示部３１には、ディレクトリとファイル名の階層構造が表示される。さらに、ディレクトリ表示部３１は、ファイルを格納するデバイス、例えば、外部記憶装置１４の残容量を表示する残容量表示部３１１、ディレクトリ（フォルダ）の追加および削除を行うディレクトリ編集部３１２を有する。ただし、ＯＳが、外部記憶装置１４を複数の論理デバイス、あるいは、論理ドライブに区切って管理する場合には、残容量は、区切られた論理デバイスまたは論理ドライブごとに表示されるようにしてもよい。
【００９２】
また、図１４の操作画面３０に重畳して、ファイルアップロード部３２が表示されている。ファイルアップロード部３２は、データ管理サーバである情報処理装置１０にユーザがファイルを登録する際の登録手順の説明欄３２１、登録するファイル名の設定欄３２２、登録するファイルをファイルのリストから参照する参照ボタン３２３、ファイルのアップロードを指示する送信ボタン３２４等を有している。なお、図１４では、情報処理装置１０は、ファイルアップロード部３２を操作画面３０に重畳する別ウィンドウとして表示する。しかしながら、このような画面構成に代えて、情報処理装置１０は、例えば、操作画面３０の領域の一部にファイルアップロード部３２を配置し、いわゆるタイル型のユーザインターフェースを提供するようにしてもよい。
【００９３】
図１５は、アップロードするファイルの選択部３２５を用いた操作例である。情報処理装置１０は、例えば、ファイルアップロード部３２の参照ボタン３２３がユーザのコンピュータ上で押下されると、ネットワークを通じて、ユーザ操作を受信する。すると、情報処理装置１０は、ユーザのコンピュータ上に選択部３２５を表示する。選択部３２５は、ユーザのコンピュータ上のファイルを表示する。以下、ユーザのコンピュータ上でのファイルは、階層構造を有するディレクトリとディレクトリ内のファイル名で管理されているとする。ただし、情報処理装置１０での処理と区別する場合に、ユーザのコンピュータ上では、ディレクトリをフォルダと呼ぶことにする。図１５は、ユーザがフォルダ”２００９年”内のファイル0501.pdfを選択した例を示している。
【００９４】
なお、図１５の右下付近には、確認画面４０が表示されている。確認画面４０は、例えば、例えば、情報処理装置１０上のデータ管理プログラムのデバッグ用に使用できる。確認画面４０は、情報処理装置１０上のデータ管理プログラムが管理する各種情報、例えば、ディレクトリデータ等を表示する。図１５の例では、現在、ディレクトリ”AA”が空の状態で表示されている。確認画面４０には、例えば、ディレクトリデータに含まれる文字列を検索する検索部４０１等が用意されている。なお、確認画面４０には、ディレクトリデータの他、実体ファイルの存在場所を示す情報を表示してもよい。実体ファイルの存在場所とは、例えば、ネットワーク上のノード、外部記憶装置１４あるいは可搬記憶媒体駆動装置１７の論理名称、外部記憶装置１４内の論理デバイス、論理ドライブ等である。
【００９５】
図１６は、ファイルの登録が完了したことを示す完了メッセージ部３２６を例示する図である。完了メッセージ部３２６に、さらにアップロードを続けることを指示する”続ける”ボタン、ファイルのアップロードを電子掲示板に掲載することを指示する”掲示板掲載”ボタンなどが用意されている。
【００９６】
ファイルの登録が完了したとき、確認画面４０では、AA(0501.pdf(1273809631938))と
いう階層構造が式表現で表示される。ここでは、AAがディレクトリパス名、501.pdfがフ
ァイル名、1273809631938が管理値の例である。なお、このとき、情報処理装置１０の外
部記憶装置１４には、ディレクトリAA内に、ファイル名"0501.pdf_1273809631938"で実体ファイルが作成され、アップロードされた0501.pdfの内容が格納される。なお、実体ファイルの名称中、ファイルの拡張子（この例ではpdf）と、管理値の間の接続文字（この例
では"_"）に、限定はなく、情報処理装置１０で許容される文字を用いればよい。
【００９７】
図１７は、情報処理装置１０のＯＳのファイルシステムの表示画面５０の例である。表示画面５０は、実体ファイルが存在するフォルダdemo3での実体ファイルのファイル名"0501.pdf_1273809631938"を表示している。なお、実体ファイルのフォルダ（図１７の例で
は"demo3"）は、情報処理装置１０のデータ管理システム上で、管理者が決定すればよく
、特に制限はない。
【００９８】
図１８は、ユーザが、すでにアップロード済みのファイル0501.pdfを再度アップロード
する場合に表示される上書き確認部３２７の表示例である。上書き確認部３２７は、例えば、アップロード先のディレクトリ（図１８では"AA"）に、アップロード対象のファイルと同一のファイル名（図１８では、"0501.pdf"）のファイルがすでに存在する場合に、上書きを確認するために、ユーザのコンピュータ上に表示される。ただし、アップロード作業を継続し（上書き確認部３２７で"はい"を選択）、ファイルを上書きした場合も、新たに管理値が付与される。その結果、過去に同一ディレクトリにアップロード済みのファイルの実体ファイルは、元の管理値で維持されることになる。
【００９９】
図１９は、同一のファイル名でファイルをアップロードし、上書きを完了した状態を例示する図である。完了メッセージ部３２６は、ファイルの登録が完了したことを示している。確認画面４０には、AA(0501.pdf(1273809631938,127310190907))という階層構造が式表現で表示される。したがって、新たに管理値127310190907が取得され、２回目にアップロードされたファイルの実体ファイルが保存されたことがわかる。また、最初のアップロードされたファイルは、管理値1273809631938で維持されていることがわかる。
【０１００】
図２０は、情報処理装置１０でデータ管理されているファイルの属性を表示するプロパティ表示部３２８の表示例である。プロパティ表示部の機能には、ファイルサイズ、登録日、管理値等を表示するプロパティ表示機能、ファイルのディレクトリを変更する移動機能、ファイルを削除する削除機能、ファイルの登録、更新の履歴を表示する履歴表示機能等がある。また履歴表示機能は、同一のファイルの複数の世代が同一のディレクトリに登録された場合に、それぞれの世代を表示する。
【０１０１】
図２０では、プロパティ表示部３２８の履歴表示機能により、アップロード済みのファイル（図２０の例ではディレクトリ表示部３１で表示されているファイル"0501.pdf"）について、登録と上書きの履歴が表示されている。すなわち、ファイル"0501.pdfの複数回
のアップロードに対応して、アップロードされた日時、アップロードされたファイルのそれぞれの世代のデータ量等が表示されている。
【０１０２】
図２１は、ファイルの復元処理の実行を指示する操作画面の例である。図２１では、復元処理をロールバックと呼ぶ。ユーザは、プロパティ表示部３２８の例えば履歴表示機能に表示されているファイルの世代のうち、復元の対象としたい世代を指定し、復元処理の実行を指示する。
【０１０３】
図２２は、復元処理実行後のプロパティ表示部３２８、および、確認画面４０での確認結果の例である。図２２では、プロパティ表示部３２８に、復元の結果、管理値1273809631938の世代が表示されている。また、確認画面４０には、復元の結果0501.pdf_1273809631938の実体ファイルだけが維持されている。なお、図２２では、復元処理の結果、復元
の対象となった世代だけが維持されているが、そのような処理に代えて、復元の対象となった世代に、新たな管理値を付与し、最新化した上で、他の世代の実体ファイルを維持するようにしてもよい。
【０１０４】
以上述べたように、情報処理装置１０によれば、同一のファイル名で複数回に渡って同一ディレクトリに保存する場合に、保存されたそれぞれの世代の実体ファイルを維持することができる。情報処理装置１０は、通常の操作では、維持された複数世代のうち最新の世代を表示する。また、ユーザの要求に応じて、最新以外の世代のファイルを復元し、最新化することもできる。したがって、ユーザが同一のファイルを登録し、更新を繰り返すようなアプリケーションにおいても、ユーザに複数世代のファイルの管理機能を提供できる。
【０１０５】
そのような複数世代の管理機能を実現するためのデータ構造として、情報処理装置１０
は、式表現を用いる。式表現は、複数の識別子、例えば、ディレクトリ名、ファイル名、管理値等の積演算子による結合として得られるファイルパスの表現（ディレクトリ名×ファイル名×管理値）である項、あるいは、複数の項の並びを含む。したがって、式表現は、ディレクトリ名（複数階層を含む）、ファイル名、および管理値を含むファイルパスの階層構造を適切に記述できる。
【０１０６】
さらに、複数の項から、共通の識別子を第１の括弧の外に括り出し、非共通の識別子を第１の括弧内に含めることによって、ディレクトリ間の階層構造、ディレクトリに含まれるファイルの位置、ファイルの世代を第１の括弧の階層構造にマッピングし、管理することができる。
【０１０７】
式表現を文字列で記述した場合に、式表現によって、ディレクトリデータを記述することによって、ディレクトリ名（フォルダ名）、ファイル名、管理値等を簡易に検索することができる。また、式表現の部分集合取得処理によって、積演算子と和演算子による項の並びを簡易に第１の括弧を含む階層構造の表現形式に変換できる。したがって、積演算子と和演算子、第１の括弧による式表現でファイルパスを記述し、部分集合取得処理を適用することで、簡易かつ、汎用的に、ディレクトリの階層構造を処理できる。
【０１０８】
さらに、実体ファイルに管理値を付与して世代を管理する場合も、ファイル名を部分集合名称とし、管理値を第１の括弧内の項の和とすることによって、簡易に、ファイルの世代を管理できる。
【０１０９】
すなわち、式表現を用いることで、ディレクトリデータを簡易に管理することができ、ディレクトリの階層構造を記述できる。その結果、ファイルシステム自体にファイルの世代管理機能がない場合でも、アプリケーションプログラムでファイルの世代管理機能を極めて簡易に実現できる。
【０１１０】
上記実施例では、管理値として、ＵＴＣを示す文字列を用いた。ＵＴＣは、１９５８年１月１日０時０分０秒からの経過時間を示すので、単に、世代の新旧以外に、情報処理装置１０への登録日時を含むことができる。ただし、管理値としては、ＵＴＣを示す文字列に限定されず、例えば、１，２，３等の通し番号を用いてもよい。
＜その他の変形例＞
上記実施例では、ディレクトリ名、ファイル名、管理値によってファイルを管理する処理例を提示した。しかし、ディレクトリ名に代えて、ネットワーク上のノードを示すノード名、コンピュータ内のデバイス名（ドライブ名ともいう）等を含むようにしてもよい。
【０１１１】
上記実施例では、情報処理装置１０が、アップロードされたファイルの格納、更新、ダウンロード等の機能を提供するネットワーク上のデータ管理サーバとして、アプリケーションプログラムを実行する処理を説明した。そして、上記管理値によるファイルの世代管理が、ＯＳのファイルシステム上のアプリケーションプログラムで提供された。しかし、本実施例に係るディレクトリデータの管理処理は、ネットワーク上のサーバに限定されるわけではなく、スタンドアロンのコンピュータ上で、ユーザ操作にしたがって、以下の処理を実行するようにしてもよい。例えば、個々のアプリケーションプログラム、例えば、ワードプロセッサのプログラム、表計算（スプレッドシート）のプログラム、ウェブページ作成プログラム等が、それぞれのプログラムが作成し、更新したファイルの世代を式表現と管理値で管理するようにしてもよい。
【０１１２】
また、ＯＳのファイルシステムが式表現を用いてファイルの世代を管理するようにしてもよい。すなわち、ＯＳのファイルシステムが式表現で記述されたディレクトリデータを主記憶装置１２または外部記憶装置１４などに保持し、実体ファイルの世代を管理するよ
うにしてもよい。
【符号の説明】
【０１１３】
１０  情報処理装置
１１  ＣＰＵ
１２  主記憶装置
１３  外部記憶装置
３０  操作画面
３１  ディレクトリ表示部
３２  ファイルアップロード部
４０  確認画面
【図１】
0005508958.tif 000002
【図２】
0005508958.tif 000003
【図３】
0005508958.tif 000004
【図４】
0005508958.tif 000005
【図５Ａ】
0005508958.tif 000006
【図５Ｂ】
0005508958.tif 000007
【図６】
0005508958.tif 000008
【図７】
0005508958.tif 000009
【図８】
0005508958.tif 000010
【図９】
0005508958.tif 000011
【図１０】
0005508958.tif 000012
【図１１】
0005508958.tif 000013
【図１２】
0005508958.tif 000014
【図１３】
0005508958.tif 000015
【図１４】
0005508958.tif 000016
【図１５】
0005508958.tif 000017
【図１６】
0005508958.tif 000018
【図１７】
0005508958.tif 000019
【図１８】
0005508958.tif 000020
【図１９】
0005508958.tif 000021
【図２０】
0005508958.tif 000022
【図２１】
0005508958.tif 000023
【図２２】
0005508958.tif 000024