(57)【要約】【課題】電子ファイルシステムにおけるリストおよびその他の項目の管理を実現すること。【解決手段】項目が非巡回有向グラフ（ＤＡＧ）に従って編成されることを可能にする電子ファイルシステム編成構造が提供される。項目は木構造の場合と同様に階層的に編成され得るが、項目は複数の直接の親も持つことができる。電子ファイルシステムは、さらに、複数の異なるストアにアクセスすることができる。項目が操作され、複数のストアにまたがって再編成される際にそれらを管理する、本発明による技法のいくつかは、ユーザの意図によりぴったりと一致し、かつ／またはユーザの観点からの予測可能な結果を持ち得る。その際、１つの編成に対して実行されるアクションは、予期しない、または意図しないやり方で他の組織に影響を及ぼすことはない。【選択図】図１８
2006146907.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第１のストアから、前記第１のストアの第１のリストの下に編成されている第１の項目を選択するステップと、
第１の項目が選択されたことに応答して、前記第１の項目が前記第１のストアの第２のリストの下にも編成されているかどうか判定するステップと、
前記第１の項目に基づいて前記第２のストアに第２の項目を格納するステップと、
前記第１の項目が前記第２のリストの下に編成されていると判定したことに応答して、前記第１のストアに、前記第２のストアの前記第２の項目をターゲットとする第１の代用項目を作成するステップであって、前記第１の代用項目が、前記第１のリストではなく前記第２のリストの下に編成されるステップと
を備えることを特徴とする方法。
【請求項２】
前記第１の項目を前記第１のストアから除去するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記第２の項目を前記第１の項目の複製として生成するステップをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記第２の項目を生成する前記ステップは、前記第１の項目に基づいてブロブを生成するステップ、前記ブロブを前記第２のストアに送るステップ、および前記ブロブを前記第２の項目に変換するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第２のストアの前記第２の項目を選択するステップと、
前記第２の項目が選択されたことに応答して、前記第１の代用項目が前記第１のストアに存在するかどうか判定するステップと、
前記第１の代用項目が存在すると判定したことに応答して、前記第１の代用項目を前記第１のストアから除去するステップと、
前記第２の項目に基づいて前記第１のストアに第３の項目を格納するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記第３の項目を前記第２の項目の複製として生成するステップをさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記第１および第２の項目のそれぞれはファイルであることを特徴とする請求項１に記載の方法。
【請求項８】
前記第１および第２の項目のそれぞれはリストであることを特徴とする請求項１に記載の方法。
【請求項９】
前記第１の項目は、前記第１と第２両方のリストの下に編成されることを特徴とする請求項１に記載の方法。
【請求項１０】
実行されると、前記コンピュータに請求項１に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
【請求項１１】
実行されると、前記コンピュータに請求項５に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
【請求項１２】
第１および第２のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第１のストアから第１のリストを選択するステップと、
前記第１のリストに基づいて前記第２のストアに第２のリストを格納するステップと、
前記第１のリストの下に項目が編成されているかどうか判定するステップと、
前記第１のリストの下に前記項目が編成されていると判定したことに応答して、前記第２のストアに、前記第１のストアの前記項目をターゲットとする、前記第２のリストの下に編成される代用項目を作成するステップと
を備えることを特徴とする方法。
【請求項１３】
前記項目はファイルであることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第２のリストは前記第１のリストの複製であることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記代用項目を作成する前記ステップの後に前記第１のリストを前記第１のストアに維持するステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記判定するステップは、前記項目が前記第１のリストの下に直接編成されているかどうか判定するステップを含み、前記作成するステップは、前記項目が前記第１のリストの下に直接編成されているという判定に応答するものであることを特徴とする請求項１２に記載の方法。
【請求項１７】
前記判定するステップは、前記項目が非リスト項目であるかどうか判定するステップを含み、前記作成するステップは、さらに、前記項目が非リスト項目であるという判定に応答するものであることを特徴とする請求項１２に記載の方法。
【請求項１８】
前記第１のリストの下に第３のリストが編成されているかどうか判定するステップと、
前記第１のリストの下に前記第３のリストが編成されていると判定したことに応答して、前記第２のストアに、前記第２のリストの下に編成される第４のリストを、前記第３のリストに基づいて作成するステップと
をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記第４のリストは前記第３のリストの複製であることを特徴とする請求項１８に記載の方法。
【請求項２０】
実行されると、前記コンピュータに請求項１２に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
【請求項２１】
第１および第２のストアにアクセスできる電子ファイルシステムを備えるコンピュータにおける方法であって、
前記第１のストアから、第１のリストの下に編成された１つまたは複数のリストを有する第１のリストを選択するステップと、
前記第１のリストの下に編成された前記１つまたは複数のリストのそれぞれについて、その個別のリストが、前記第１のリストと異なるリストの下にも直接編成されているかどうか判定するステップと、
前記第１のリストの下に編成された前記１つまたは複数のリストのそれぞれについて、前記個別のリストが、前記第１のリストと異なるリストの下に直接編成されていないと判定したことに応答して、その個別のリストを前記第２のストアに移動するステップと、
前記第１のリストの下に編成された前記１つまたは複数のリストのそれぞれについて、前記個別のリストが、前記第１のリストと異なるリストの下に直接編成されていると判定したことに応答して、その個別のリストを前記第２のストアに移動し、前記第１のストアに、現在前記第２のストアにあるその個別のリストをターゲットとする代用項目を作成するステップであって、前記代用項目が、前記第１のリストと異なる前記リストの下に直接編成されるステップと
を備えることを特徴とする方法。
【請求項２２】
前記第１のリストは、前記第１のリストの下に編成された１つまたは複数の非リスト項目を持ち、前記方法は、
前記第１のリストの下に編成された前記１つまたは複数の非リスト項目のそれぞれについて、その個別の非リスト項目を前記第２のストアに移動するステップ
をさらに備えることを特徴とする請求項２１に記載の方法。
【請求項２３】
前記１つまたは複数の非リスト項目のそれぞれはファイルであることを特徴とする請求項２２に記載の方法。
【請求項２４】
実行されると、前記コンピュータに請求項２１に記載のステップを実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の諸態様は、一般に、項目の１つまたは複数のストアにアクセスできる非巡回有向グラフアーキテクチャを課す電子ファイルシステムなどの電子ファイルシステムにおいて項目を管理することを対象とする。
【背景技術】
【０００２】
現代の電子ファイルシステムは、通常、階層木構造としてファイルを格納する。木（ｔｒｅｅ）の各ノードは、１つまたは複数のファイルを含むフォルダとみなされる。通常、そのような電子ファイルシステムでは、ある項目の場所は、そのファイルシステムで定義される編成によって制限される。例えば、多くのファイルシステムにおいて、各ファイルは、１つ（ただ１つ）のフォルダに位置する。言い換えると、各ファイルはただ１つの直接の親を持つ。数年前はこれで問題がなかったが、この木構造は非常に制限されたものになりつつある。従来の階層木構造は柔軟性がない。木においては、ファイル存続期間およびファイル編成が融合される。すなわち、ファイルは、それが他のファイルまたはフォルダとの関連で編成された場所を持つ間だけ存在し得る。また、ファイルは複数の編成内に配置され得ない。これは、例えば、ユーザが複数のフォルダで１つのファイルを見たい場合、そのユーザはそのファイルの複数のコピーを作成しなければならないことを意味する。これは、ユーザにとって退屈なもので、誤りをおかしやすいと同時に、記憶スペースを無駄にするものである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ユーザがファイルへのアクセスを共用すると共に、そのアクセスを制御することをより容易にできるようにする新しい電子ファイルシステム編成構造を開発することが求められている。この編成構造と共に、その編成構造において項目を管理する際の新しい課題も生じる。
【課題を解決するための手段】
【０００４】
本発明の態様は、項目が非巡回有向グラフ（ＤＡＧ）に従って編成されることを可能にする電子ファイルシステム編成構造を提供することを対象とする。これは、項目が木構造の場合と同様に階層的に編成され得ると同時に、複数の直接の親も持ち得ることを意味する。ＤＡＧ編成構造は、複数の親を許容するが、子項目が、その項目の直接または間接の親である項目の親となることは許容しない。言い換えると、ＤＡＧは、項目内に、および項目から複数の分岐を提供するが、巡回分岐は提供しない。この編成構造は、複数ユーザのファイル共用およびアクセス制御を適正に処理するのに必要とされる柔軟性を提供する。
【０００５】
本発明の別の態様は、電子ファイルシステムに複数の異なるストアへのアクセスを提供することを対象とする。ストアは内的に一貫性のあるデータ表現である。ストアは、複数の物理記憶装置（ハードドライブなど）にまたがることができるが、ファイルシステムによって概念的に１つの記憶ユニットであるとみなされる。ストアは、ストア内の項目およびストア内の保持リンクに関して一定の保証を行い得るが、別のストアの項目および保持リンクに関しては保証し得ない。さらに、項目の存続期間およびリンクの一貫性の規則は同じストア内では適用し得るが、必ずしも異なるストアにまたがって適用し得るとは限らない。いくつかの実施形態では、項目は、その項目自体と同じストアにある１つまたは複数の親だけを持ち得る。言い換えると、親と子の間の保持リンクは複数のストアにまたがらない。
【０００６】
本発明のさらに別の態様は、項目が異なるストアにまたがって操作され、再編成される際にどのように管理されるかを扱う。これらの態様は、例えば、すべてが、同じ第１のストアにある複数の直接の親を持つ項目に、その項目が第２の異なるストアに移動され、またはコピーされた場合に何が起こり得るかを扱う。そのような操作を管理する複数のやり方があると考えられるが、いくつかのやり方は、ユーザの意図によりぴったり一致し、かつ／またはよりユーザの観点から予測可能な結果を持ち得る。
【０００７】
本発明の上記その他の態様は、以下の例示的実施形態の詳細な説明を考察すれば明らかになるであろう。
【０００８】
前述の本発明の要約、ならびに以下の例示的実施形態の詳細な説明は、特許請求される本発明に関する限定としてではなく例として含まれる添付の図面と併せて読めば、よりよく理解される。
【発明を実施するための最良の形態】
【０００９】
・例示的コンピューティング環境
本発明の諸態様は、図１に例として示すコンピュータ１００などのコンピューティングデバイスに関連して使用され得る。コンピュータ１００の構成要素には、それだけに限らないが、処理装置１２０、システムメモリ１３０、およびシステムメモリ１３０を含む様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１が含まれ得る。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、および／またはローカルバスを含む数種類のバス構造のいずれを含むこともできる。
【００１０】
システムメモリ１３０は、読出し専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。基本入出力システム（ＢＩＯＳ）１３３は、始動時などに、コンピュータ１００内の諸要素間での情報転送を支援する基本ルーチンを含み、通常、ＲＯＭ１３１に格納される。ＲＡＭ１３２は、通常、処理装置１２０から直ちにアクセス可能であり、かつ／または処理装置１２０によって現在操作されているデータおよび／またはプログラムモジュールを含む。コンピュータ１００は、オペレーティングシステム１３４、１つまたは複数のアプリケーションプログラム１３５、その他のプログラムモジュール１３６、および／またはプログラムデータ１３７も格納し、かつ／または実行することができる。コンピュータ１００は、さらに、他の取り外し可能／取り外し不能の、揮発性／不揮発性コンピュータ記憶媒体も含み得る。例にすぎないが、図１に、取り外し不能の、不揮発性磁気媒体との間で読取りおよび／または書込みを行うハードディスクドライブ１４１、取り外し可能の、不揮発性磁気ディスク１５２との間で読取りおよび／または書込みを行う磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体などの取り外し可能の、不揮発性光ディスク１５６との間で読取りおよび／または書込みを行う光ディスクドライブ１５５を示す。使用され得る他の取り外し可能／取り外し不能の、揮発性／不揮発性のコンピュータ記憶媒体としては、例えば、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが挙げられる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。図示の例では、例えばハードディスクドライブ１４１が１つのストアとみなされ、光ディスクドライブ１５５で使用されるＣＤ−ＲＯＭは別の異なるストアとみなされ得る。また、ハードディスクドライブ１４１内の区画（ｐａｒｔｉｔｉｏｎ）は、それぞれ、異なるストアとみなされ得る。別の例として、複数の内蔵ハードドライブは、要求に応じて、単一の大容量ストアとしても、複数のより小さい独立ストアとしても構成され得る。
【００１１】
様々なコンピュータ記憶媒体のいずれかに格納されるデータは、様々な形式で格納され得る。例えば、データは、ファイルや他の項目など別個の部分として格納され得る。電子ファイルシステムは、オペレーティングシステム１３４の一部とし、かつ／またはそれと別個のものとすることができ、コンピュータ記憶媒体上の項目およびその他のデータの格納、検索、および／またはサーチを管理する役割を果たすことができる。電子ファイルシステムは、ソフトウェア、ハードウェア、および／またはファームウェアとして実施され得る。
【００１２】
ユーザは、キーボード１６２および／または、一般にマウス、トラックボール、タッチパッドと呼ばれるポインティングデバイス１６１などの入力装置を介してコンピュータ１００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、しばしば、システムバス１２１に結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）といった他のインターフェースおよびバス構造を介しても接続され得る。モニタ１９１または他の種類の表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。コンピュータ１００は、さらに、スピーカ１９７やプリンタ１９６など他の周辺出力装置を含むこともでき、それらは、出力周辺装置インターフェース１９５を介してシステムバス１２１に接続され得る。
【００１３】
いくつかの態様では、手描き入力をディジタルで取り込むために、ペンディジタイザ１６５および付随するペンまたはスタイラス１６６が提供される。ペンディジタイザ１６５とユーザ入力インターフェース１６０の間の直接接続が示されているが、実際には、ペンディジタイザ１６５は、有線または無線で、パラレルポートまたは別のインターフェースを介して、あるいは任意の技術によりシステムバス１２１を介して、処理装置１２０に直接結合され得る。ペン１６６は、さらに、例えば加速度計や磁力計を含む電子インクのストロークを判定する他の感知システムも備え得る。
【００１４】
コンピュータ１００は、リモートコンピュータ１８０など、１つまたは複数のリモートコンピュータへの論理接続を使用したネットワークで接続された環境で動作し得る。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他一般のネットワークノードとすることができ、図１には例としてメモリ記憶装置１８１だけを示してあるが、通常は、コンピュータ１００に関連して前述した要素の多くまたはすべてを含む。図１に示すコンピュータ１００外部の例示的論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１および／または広域ネットワーク（ＷＡＮ）１７３が含まれ得るが、他のネットワークも含まれ得る。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットではよくあるものである。コンピュータ１００は、さらに、有線および／または無線機能も含み得る。例えば、ネットワークインターフェース１７０は、ブルートゥース、ＳＷＬａｎ、および／またはＩＥＥＥ８０２．１１互換とすることができる。これらのプロトコルと共に、またはこれらのプロトコルの代わりに、他の無線通信プロトコルも使用され得る。
【００１５】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ１００はネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ１００は、モデム１７２、またはインターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続され得る。
【００１６】
リモートコンピュータ１８０、および／またはコンピュータ１００の外部の他の任意の装置の記憶媒体も、コンピュータ１００の外部の論理接続を介して電子ファイルシステムによってアクセス可能な追加のストアとみなされ得る。例えば、リモートコンピュータ１８０のハードディスクドライブを、コンピュータ１００上で実行される電子ファイルシステムからアクセス可能とすることができ、そのハードディスクドライブ（および／または、別のハードディスクドライブなど、そのハードディスクドライブと一緒にグループ化される他の記憶装置）自体もストアとみなされ得る。あるいは、コンピュータ１００の外部の１つまたは複数のサーバを、インターネットを介して電子ファイルシステムからアクセス可能とすることもでき、それらのサーバまたはサーバグループのそれぞれがストアとみなされ得る。
【００１７】
・電子ファイルシステムによって課される例示的編成構造
コンピュータ１００上で実行される電子ファイルシステムは、項目の非巡回有向グラフ（ＤＡＧ）編成を課すことができる。項目は、ほとんどあらゆる種類の個別データ構造、例えば、ファイル（例えば、ワードプロセッシングファイル、写真、ＭＰ３楽曲など）、連絡先、カレンダ項目、電子メール項目とすることができ、あるいは他の項目のリストとすることさえできる。リスト型項目は、順序付きリストであっても、そうでなくてもよく、従来のフォルダに類似したものとみなされ得る。リストがある項目をリストしているとき、そのリストは親とみなされ、その項目は子とみなされる。子項目は、本明細書では、その項目がその親リストによってリストされている場合、親リストの下に直接編成されているという。これは、親リストと子項目の間の保持関係とも呼ばれる。子項目は、本明細書では、以下で図７に関して説明するように、その項目が親リストの下に直接または間接に編成されている場合、親リストの下に編成されているという。完全なＤＡＧアーキテクチャのさらなる柔軟性を提供するために、複数の異なるリストがすべて同じ項目をリストし、またはそれらの下に同じ項目を持つことができる。言い換えると、項目は、複数の親を持つことができる。
【００１８】
例えば、図７の上部分は、電子ファイルシステムによって課され、管理され得る例示的編成構造を機能的に示すものである。この例では、リストＬ２は、リストＬ１、リストＬ４、およびリストＬ６のそれぞれの下に直接編成されている。ゆえに、リストＬ２は３つの直接の親を持つ。リストＬ３は、リストＬ２の下に直接編成されているが、これは、間接的にではあるが、リストＬ１、Ｌ６、およびＬ４の下にも編成されている。非リスト項目Ｉ１（例えば、ファイル、または純粋にファイルストリームなしで組織的に配置されているファイルの裏付けがない項目（ｎｏｎ−ｆｉｌｅ−ｂａｃｋｅｄ  ｉｔｅｍ）など）は、リストＬ３の下に直接編成され、間接的にリストＬ１、Ｌ２、Ｌ４およびＬ６の下に編成されている。非リスト項目Ｉ２は、Ｌ２の下に直接編成され、間接的にリストＬ１、Ｌ４、およびＬ６の下に編成されている。
【００１９】
また、電子ファイルシステムは、１つまたは複数の項目が配置され得る１つまたは複数の作業領域も提供し得る。作業領域中の項目は、その作業領域中の別の項目に関連する編成を持つことも持たないこともある。例えば、項目Ｌ１、Ｌ２、Ｌ３、Ｌ４、Ｌ６、Ｉ１およびＩ２は、機能的に、これらの項目を囲むボックスであると考えられる同じ作業領域に含まれ得る。これらの項目のそれぞれは、その他の項目に関連する編成を持つ。しかしながら、リストＬ５（図７）は、やはり同じ作業領域にあるが、その他の項目に関連する編成を持たない場合がある。この例では、リストＬ５は、リストＬ１およびＬ４と同様に、「変動」項目とみなされる。ある項目が変動項目であるのは、その項目が他のどんな項目によっても保持されず、またはその下に編成されていない場合である。項目が作業領域に配置されている場合、その項目は、それがその作業領域から除去されるまでその作業領域に留まる。ゆえに、作業領域内で、項目は、それらの項目がその作業領域内にあるかどうかに影響を及ぼさずに要求どおりに編成されることも（されないことも）ある。
【００２０】
上述の編成構造が課された後、項目を管理する際に考慮される必要のあるいくつかの問題がある。例えば、項目は、複数の親リストの下に直接または間接に編成され得るため、その項目を移動し、またはコピーすることを求める要求を処理する多くのやり方がある。おそらく、ユーザは、その項目を、必ずしもその他の親リストからではなく、親リストの１つから移動しようとする。実際、ユーザが、その他の親リストが存在すること、またはそれらが移動されようとする項目を保持していることを知らないことさえも考えられる。以下で、これらの状況、および例示的解決法の例を説明する。
【００２１】
・非リスト項目操作
以下は、項目に対して実行され得る操作の例である。操作は、同じストア内、または複数のストアにまたがって（「ストア横断（ｃｒｏｓｓ  ｓｔｏｒｅ）」）行われ得る。例えば、項目は、同じストア内の１つの場所から別の場所に移動され得る。あるいは、項目は、第１のストアから第２のストアにストア横断で移動され得る。以下で両方の例について説明する。
【００２２】
・項目を移動する−ストア横断
この説明のために、保持リンクは異なるストアにまたがることができないと想定する。したがって、１項目が、同時に、第１のストアの２つの異なる編成に（例えば２つの異なるリストに）あり、ユーザが、これらの編成の１つを第２のストアに移動しようとする場合、これが処理され得るいくつかの可能なやり方がある。図２を参照すると、例えば、項目Ｉ１は、同時に、ストア１のリストＬ１とリストＬ２の両方によって保持されている。ストア２はリストＬ３を持つ。ユーザが項目Ｉ１をリストＬ２からリストＬ３に移動することを要求していると仮定する。第１の可能性は、項目Ｉ１がリストＬ３に含まれるように項目Ｉ１をストア２に移動することである。しかしながら、これは、項目Ｉ１がリストＬ１およびＬ２にもあるという編成を切断することになる。これは、特に、ユーザがリストＬ１とやりとりしておらず、実際には、リストＬ１に気が付いてさえいない可能性があることを考えると、ユーザの意図でない可能性が高い。第２の可能性は、項目Ｉ１がリストＬ３にコピーされるものである。しかしながら、これもやはり、今度は、項目Ｉ１の２つのコピーが存在する点で全体編成を変更することになる。ユーザは、おそらくストア１の記憶スペースを空けるために、（項目Ｉ１をコピーするのでなく）項目Ｉ１を移動しようとしたのであるから、これは、予期しない結果である可能性が高いはずである。第３の可能性は、移動操作に失敗することであるが、大部分のユーザはこの結果に苛立つはずである。第４の可能性は、項目Ｉ１を代用項目（ｐｒｏｘｙ  ｉｔｅｍ）に変換することである。代用項目とは、指し示される項目（すなわち項目Ｉ１）のメタデータを持つショートカット、またはポインタである。この第４の可能性は、この編成を可能な限り移動前の編成に似せることを可能にする。
【００２３】
この第４の可能性を示す図２を参照すると、ステップは丸数字を使って示されており（必ずしも時系列順とは限らない）、項目は四角で示されている。この例に示すように、ステップ１およびステップ２で、項目Ｉ１はストア１のリストＬ２からストア２のリストＬ３に移動される。具体的には、ステップ１で項目Ｉ１が、項目Ｉ１の複製を表すブロブ（ｂｌｏｂ）Ｂ１としてシリアル化される。次いで、ステップ２で、ブロブＢ１が項目Ｉ１（２）に逆シリアル化され、それがリストＬ３によって保持されることになる。この新しい項目を、本明細書では、項目Ｉ１（２）と呼ぶが、項目Ｉ１（２）は元の項目Ｉ１の複製である。この命名方式は、説明のためのものにすぎず、単に、項目Ｉ１（２）が技術的に元の項目Ｉ１ではないことを区別するためにだけに使用される。言い換えると、項目Ｉ１（２）は、他の点では項目Ｉ１の複製であるにもかかわらず、元の項目Ｉ１が利用したものとは異なるストレージ（例えば、異なるハードドライブ上の異なるセクタなど）を利用することができる。複製は、項目（項目Ｉ１など）をブロブとしてシリアル化し、次いで、そのブロブを別の項目（項目Ｉ１（２）など）に逆シリアル化することにより行われ得る。
【００２４】
さらに図２を参照すると、ステップ３で、項目Ｉ１は、項目Ｉ１（２）へのショートカット（または代用項目）に変換される。代用項目は、ターゲット項目を指し示し、またはそこにリンクするが、そのターゲット項目の実体的データ全部を含むとは限らない項目である。この理由は、ユーザは、項目Ｉ１をリストＬ２から移動しようとしたにすぎず、必ずしも、やはり項目Ｉ１に対する保持リンクを持つリストＬ１からも移動しようとしたとは限らないことにある。ゆえに、項目Ｉ１（２）への代用項目を作成することにより、リストＬ１の下を見るユーザには、依然として、項目Ｉ１が、あたかも移動操作によって何の影響も受けなかったかのように見えることになる。これは、リストＬ１に関係なく、項目Ｉ１がリストＬ２から移動されるよう要求したにすぎないユーザの意図である可能性が高い。また、項目Ｉ１を代用項目に置き換え、または変換することにより、ストア１中の記憶スペースも解放され、このことは、項目Ｉ１をストア１からストア２に移動するユーザの意図と一致する。元の項目Ｉ１が、それがリストＬ１によっても保持されるためにストア１に維持された場合、この移動操作は、ストア１の記憶スペースを解放しなかったはずである。そのような結果はおそらくユーザの意図に反する可能性が高い。最後に、ステップ４で、おそらくユーザによって意図されたとおり、項目Ｉ１がリストＬ２によってリストされなくなるように、リストＬ２と項目Ｉ１の関係が切断される。ゆえに、その結果、項目Ｉ１は、リストＬ１（代用項目としてではあるが）およびリストＬ３によってリストされるが、リストＬ２によってはリストされなくなる。
【００２５】
・項目を戻す−ストア横断
前述したように、ユーザの期待および要望に一致する可能性の最も高い予測可能なやり方で項目を操作することが望ましいと考えられる。これは可逆性を含む。言い換えると、１つまたは複数の項目の編成を変更する第１のアクションを開始し、次いで、その逆のアクションを実行することにより、編成が、第１のアクションの前に存在した元の編成に戻ることが望ましいと考えられる。可逆性は必須ではないが、本明細書で説明する操作の一部または全部について望ましいと考えられる。例えば、ユーザが、図２に関して前述したように、最初に項目Ｉ１をリストＬ３に移動し、次いで、ユーザが、直ちに、項目Ｉ１（２）をリストＬ２に移動する移動操作を実行した場合、結果として生じる編成は、好ましくは、最初の移動操作の前の元の編成と同一になるはずである。これを図３に例示する。まず、ステップ１で、項目Ｉ１（２）が、項目Ｉ１（２）の複製を表すブロブＢ１にシリアル化される。ステップ２で、移動される項目をターゲットとする代用項目が存在するかどうか判定される。この例では、そのような代用項目が存在する。すなわち、代用項目Ｉ１は、移動される項目である項目Ｉ１（２）をターゲットとしている。そのような代用項目が存在する場合、その代用項目が除去され、項目Ｉ１（２）の複製で置き換えられ、それがこの例では項目Ｉ１と呼ばれることになる。そのような代用項目が存在しない場合、代用項目は、除去される必要も置き換えられる必要もない。いずれにしても、項目Ｉ１（２）は項目Ｉ１として複製され、これは、ブロブＢ１を項目Ｉ１に逆シリアル化することによって達成される。ステップ３で、項目Ｉ１（２）は単一のリスト、リストＬ３によってのみリストされているため、項目Ｉ１への代用項目がリストＬ３の下に作成される必要はない。ゆえに、項目Ｉ１（２）はリストＬ３から除去され（ストア２から抹消され）る。ゆえに、項目Ｉ１（２）をリストＬ２に戻した結果は、図２に示す元の編成と同一の編成になる。
【００２６】
・項目を付加する
図４に、項目Ｉ１がリストＬ１に付加される例示的実施形態を示す。この例では、項目Ｉ１とリストＬ１の間で、リストＬ１が項目Ｉ１を保持するような保持関係が作成される単一のステップが実行され得る。当然ながら、複数のリストが同じ項目を保持することができるので、項目Ｉ１は、他のリストにも付加され得る。また、項目Ｉ１は、それがどのリストにも保持されないようにも付加され得る。そのような項目を本明細書では変動項目と呼ぶ。
【００２７】
・項目を除去する
図５に、項目Ｉ１がリストＬ１から除去される（が再利用も抹消もされない）例示的実施形態を示す。この場合、項目Ｉ１はリストＬ１によってのみ保持され、そのため、リストＬ１から除去された後、項目Ｉ１は、どのリストによっても保持されない変動項目になる。項目Ｉ１が別のリスト、例えば、リストＬ２などによっても保持されていた場合、項目Ｉ１をリストＬ１から除去した結果は、項目Ｉ１がリストＬ２によってのみ保持されることになったはずである。
【００２８】
・項目をコピーする−同じストア内
図６に示す例示的実施形態を参照すると、ユーザは、項目Ｉ１が同じストア内でコピーされるよう要求することができる。１つの可能性は、変動項目であるコピー（項目Ｉ１（２））が作成されることである。別の可能性は、項目Ｉ１（２）が元の項目Ｉ１と同じように編成されることである。後者の場合、ステップ１で、項目Ｉ１が、項目Ｉ１の複製を表すブロブＢ１にシリアル化される。次いで、ステップ２で、ブロブＢ１が項目Ｉ１（２）として逆シリアル化され、リストＬ１と項目Ｉ１（２）の間の保持関係が、元の項目Ｉ１とリストＬ１の間の保持関係と一致するように確立される。項目Ｉ１がリストＬ１と別のリストＬ２の両方によって保持されていた場合でも、項目Ｉ１（２）は、依然として、リストＬ１によってのみ保持されるようにコピーされたはずである。これは、この例では、元の項目Ｉ１がリストＬ１のコンテキストでコピーされ、Ｌ１のコンテキストでのアクションは、リストＬ２など他の独立のリストには影響しないはずだからである。
【００２９】
・リスト操作
前述の例は、非リスト項目に対する操作を扱っている。再利用や抹消など、非リスト項目に対する他の操作も実行され得る。また、操作は、リストに対しても実行され得る。これらをリスト操作と呼ぶ。例えば、リストは、コピーされ、移動され、付加され、削除され、再利用され、または抹消され得る。次に、リスト操作の例について説明する。リスト操作がどのように実行されるかに応じて、リスト操作は、選択された（１つまたは複数の）リストを取り巻く編成のより少ない部分に影響することも、より多くの部分に影響することもある。
【００３０】
・リストを移動する−同じストア内
例えば、リストは、同じストア内で移動され得る。これは、図７に示すように、かなり単純な操作とすることができる。ここで、ユーザは、リストＬ２をリストＬ１からリストＬ５に移動することを要求している。ゆえに、リストＬ２へのリストＬ１からの保持リンクが切断され、リストＬ５からリストＬ２への新しい保持リンクが設けられる。この移動は同じストア内で行われるため、リストＬ３、Ｌ４、Ｌ６や、項目Ｉ１、Ｉ２など、残りの編成に影響を及ぼすには及ばない。
【００３１】
・リストを浅く移動する−ストア横断
本明細書では、３つのバージョンのストア間リスト移動操作を説明する。第１のバージョンでは、図８に示すような「浅い」移動が実行され得る。浅い移動は、リストを浅く移動する操作ともいい、選択されたリストだけを移動する。ゆえに、例えば、ユーザが、リストＬ２を、ストア１のリストＬ１からストア２のリストＬ５に浅く移動することを要求する場合、以下のステップが実行され得る。ステップ１で、リストＬ２がシリアル化され、リストＬ２の複製を表すブロブＢ１が作成される。ステップ２で、ブロブＢ１が、リストＬ２のコピーであるリストＬ２（２）に逆シリアル化される。ステップ３で、選択されたリストＬ２だけがストア２に移動するはずなので、リストＬ３への代用項目が作成され、その代用項目への保持リンクがリストＬ２（２）から作成される。同様に、ステップ４で、項目Ｉ２への代用項目が作成され、その代用項目への保持リンクがリストＬ２（２）から作成される。ゆえに、結果として生じる編成は、選択されたリストＬ２自体だけが移動されたものである。ステップ５で、元の項目Ｌ２は、別のリスト（すなわちリストＬ６）によって保持されているため、項目Ｌ２は断じて抹消してはならない。そうでないと、これは、明示的に変更するよう要求されたのではない編成を乱すことになる。前述のように、ユーザは、リストＬ２をリストＬ１から移動することを意図しただけで、他のどんなリストから移動することも意図していない。ゆえに、項目Ｌ２は、それが依然としてリストＬ６によって（同じストア内で）参照され得るように、Ｌ２（２）への代用項目と置き換えられ、またはそれに変換される。ステップ６およびステップ７で、元のリストＬ２は、もはや、ストア１には存在せず、代わりにストア２のリストＬ２（２）になっているため、リストＬ２とリストＬ３の間、およびリストＬ２と項目Ｉ２の間の保持リンクの必要がなくなる。ゆえに、これらの保持リンクが除去される。項目Ｉ２は他のどのリストによっても保持されていないため、項目Ｉ２は変動項目になる。これらの操作の結果、ストア２は、ストア１のリストＬ３および項目Ｉ２を指し示す代用項目を保持するリストＬ２（２）を持つ。
【００３２】
・リストを浅く戻す−ストア横断
前述のように、ある操作を実行するとき、その逆の操作の結果として元の編成が生じることが望ましいと考えられる。次に、そのような、ユーザがストア２のリストＬ５からストア１のリストＬ１にリストＬ２（２）を移動することを要求する状況を、図９に示す。ステップ１で、リストＬ２（２）がシリアル化されて、リストＬ２（２）の複製を表すブロブＢ１が作成される。ステップ２で、ストア１にリストＩ２（２）の代用項目が存在するかどうか判定される。この場合、そのような代用項目が存在し、そのため、その代用項目がブロブＢ１で置き換えられ、それが逆シリアル化されてリストＬ２になる。言い換えると、リストＬ２のリモート代用項目がローカルストア１に対して参照解除される。また、ユーザによって要求されたようにリストＬ２がリストＬ１に付加される。そのような代用項目が存在しなかった場合、ブロブＢ１は単に逆シリアル化され、リストＬ２としてリストＬ１に付加される。ステップ３で、（ストア２の）Ｌ３への代用項目の編成に一致するように、リストＬ３がリストＬ２に付加される。ステップ４で、（やはりストア２の）項目Ｉ２への代用項目の編成に一致するように、項目Ｉ２がリストＬ２に付加される。これは、項目Ｉ２の代用項目にローカルストア１を参照解除させることによって行われる。ステップ５〜７で、リストＬ３、項目Ｉ２およびリストＬ２（２）への代用項目が抹消される。図９に示すように、結果として生じる編成は、図８に示す元の編成と同一である。
【００３３】
・リスト構造を移動する−ストア横断
本明細書で論じるリスト移動操作の第２のバージョンを、図１０と関連して説明する。この例では、ユーザは、リストＬ２およびリストＬ２の下の対応する構造が、ストア１のリストＬ１からストア２のリストＬ５に移動されるよう要求している。ユーザは、その下でその構造が大容量の記憶スペースを必要とする１組の項目をサポートしている構造を（その構造中の非リスト項目すべてではないが）コピーすることを要求する場合がある。例えば、再生リストは、各演奏家ごとに１つずつ、各リストの下に多くの音楽ファイルを持つ複数のリストを含み得る。そのような再生リスト中のファイルは、合計で何ギガバイトもの音楽および／またはビデオデータに達すると考えられる。そのような場合、ユーザは、これらの大きなファイルを第１のストアから第２のストアに複製することによって記憶スペース（およびおそらくネットワーク帯域幅）を無駄にすることを望まず、代わりに、単に、第２のストアのコピーされた構造を使って元のストアのファイルを参照することができる。ステップ１で、リストＬ２が、リストＬ２の複製を表すブロブＢ１にシリアル化される。ステップ２で、ブロブＢ１は、リストＬ２のコピーであり、次にリストＬ５によって保持されるリストＬ２（２）に逆シリアル化される。これは、構造移動コマンドであるため、リストＬ３の下の構造、または編成も移動される。これに対して、図８に関して前述した浅い移動のコマンドでは、リストＬ２だけが移動された。したがって、ステップ３で、リストＬ３が、リストＬ３の複製を表すブロブＢ２としてシリアル化され、ステップ４で、ブロブＢ２は、リストＬ３のコピーであり、次に、リストＬ２（２）によって保持されるリストＬ３（２）として逆シリアル化される。元のリストＬ２によって直接または間接的に保持されるいくつかの非リスト項目（Ｉ１およびＩ２）もあるが、これらの項目は構造的ではないため、ストア２に移動されない。代わりに、ステップ５および６で、ストア２に、ストア１に留まっている項目Ｉ１およびＩ２を指し示す代用項目が作成される。また、元のリストＬ２およびＬ３はもはやストア１には存在していない（次に論じるように、これらの代用項目だけが存在する）ため、ステップ７で、リストＬ３と項目Ｉ１の間の保持関係が除去され、ステップ９で、リストＬ２とリストＬ３の間の保持関係が除去され、ステップ１０で、リストＬ２と項目Ｉ２の間の保持関係が除去される。項目Ｉ１およびＩ２は他のどのリストによっても保持されないため、項目Ｉ１およびＩ２は変動項目になる。また、リストＬ２およびＬ３は元々他のリスト（それぞれ、リストＬ１およびＬ４）によっても保持されていたため、これらは、リストＬ１およびＬ４によってリストされることができるという利点のために、絶対に、ストア１においてこれらへの何らかの参照を維持することなく除去されてはならない。ゆえに、ステップ８および１１で、リストＬ２およびＬ３は、それぞれ、ストア１において、それぞれストア２のリストＬ２（２）およびＬ３（３）を指し示す代用項目で置き換えられる。
【００３４】
・リスト構造を戻す−ストア横断
図１１を参照すると、ユーザは、今度は、図１０で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア１のリストＬ１の下に、リストＬ２（２）を構造的に戻すことを要求している。ステップ１で、リストＬ２（２）が、リストＬ２（２）の複製を表すブロブＢ１としてシリアル化され、ステップ２で、ブロブＢ１はリストＬ２として逆シリアル化され、ストア１に、リストＬ２を指し示す代用項目が存在するかどうか判定される。この場合には代用項目が存在し、そのため、その代用項目がリストＬ２で置き換えられる。同様に、ステップ３で、リストＬ３（２）が、Ｌ３（２）の複製を表すブロブＢ２としてシリアル化され、ステップ４で、ブロブＢ２はリストＬ３として逆シリアル化され、ストア１の代用項目Ｌ３を置き換える。ステップ５および６で、リストＬ２と項目Ｉ２の間、およびリストＬ３と項目Ｉ１の間に保持リンクが確立される。システムはこれらのリンクを、リストＬ２（２）と項目Ｉ２の間、およびリストＬ３（２）と項目Ｉ１の間の既存の構造を反映するように確立する。ステップ７および９で、項目Ｉ１およびＩ２への代用項目が抹消される。ステップ８および１０で、リストＬ２（２）およびＬ３（２）が抹消される。これらの操作の結果として、ストア２はリストＬ５だけを含み、残りのリストはストア１に存在することになる。図からわかるように、結果として生じる構造は、図１０に示す操作の前に存在していた構造と同一である。
【００３５】
・リストを深く移動する−ストア横断
本明細書で論じるリスト移動操作の第３のバージョンを、図１２と関連して説明する。この例では、ユーザは、リストＬ２およびリストＬ２の下にあるすべての対応する構造および項目が、ストア１のリストＬ１からストア２のリストＬ５に移動されるよう要求している。ステップ１で、リストＬ２が、リストＬ２の複製を表すブロブＢ１としてシリアル化され、ステップ２で、ブロブＢ１は、ストア２において、リストＬ２のコピーであるリストＬ２（２）として逆シリアル化される。また、リストＬ５とリストＬ２（２）の間に保持リンクも確立される。リストＬ２の下にある構造および項目のすべてがストア２に移動されることになるため、そのような残りの構造および項目に関して類似の操作が続く。ゆえに、ステップ３で、リストＬ３が、リスト３の複製を表すブロブＢ２としてシリアル化され、ステップ４でＢ２は、リストＬ３（２）として逆シリアル化される。ストア１に存在する構造を反映するように、リストＬ２（２）とリストＬ３（２）の間に保持リンクが確立される。ステップ５で、項目Ｉ２が、項目Ｉ２の複製を表すブロブＢ３としてシリアル化され、ステップ６でブロブＢ３は項目Ｉ２（２）として逆シリアル化される。ストア１に存在する構造を反映するように、リストＬ２（２）と項目Ｉ２（２）の間に保持リンクが確立される。ステップ７で、項目Ｉ１が、項目Ｉ１の複製を表すブロブＢ４としてシリアル化され、ステップ８でブロブＢ４は項目Ｉ１（２）として逆シリアル化される。ストア１に存在する構造を反映するように、リストＬ３（２）と項目Ｉ１（２）の間に保持リンクが確立される。ステップ９および１０で、項目Ｉ１およびＩ２がストア１から抹消される。リストＬ２およびＬ３は複数のリストによって保持されているため、これらは、絶対に、ストア１から完全に除去されてはならない。言い換えると、例えば、リストＬ２の痕跡を完全に除去すると、リストＬ２がリストＬ６によってリストされなくなるはずであり、これは、ユーザの意図であるとは考えられない。したがって、ステップ１１および１２で、リストＬ２およびＬ３は、ストア１において、ストア２におけるそれぞれのターゲットリストＬ２（２）およびＬ３（２）を指し示す代用項目で置き換えられる。また、リストＬ２とＬ３の間の保持リンクが除去され、同様にリストＬ１とＬ２の間の保持リンクも除去される。これらの操作の結果、リストＬ２、およびリストＬ２によって直接または間接的に保持されている構造および項目のすべて（すなわちリストＬ３および項目Ｉ１およびＩ２）がストア１からストア２に移動されたことになる。
【００３６】
・リストを深く戻す−ストア横断
図１３を参照すると、ユーザは、今度は、図１２で実行されたのと反対の機能を実行することを要求している。言い換えると、ユーザは、今度は、ストア１へリストＬ１の下にリストＬ２（２）を深く戻すことを要求している。ステップ１で、リストＬ２（２）が、リストＬ２（２）の複製を表すブロブＢ１にシリアル化される。ステップ２で、リストＬ２を指し示す代用項目が、ブロブＢ１の逆シリアル化から生じるリストＬ２で置き換えられる。同様に、ステップ３で、リストＬ３（２）が、リストＬ３（２）の複製を表すブロブＢ２としてシリアル化され、ステップ４で、リストＬ３を指し示す代用項目が、ブロブＢ２の逆シリアル化から生じたリストＬ３で置き換えられる。この手順は、非リスト項目についても繰り返される。ステップ５で、項目Ｉ２（２）が、Ｉ２（２）の複製を表すブロブＢ３としてシリアル化され、ステップ６で、ブロブＢ３は、項目Ｉ２として逆シリアル化される。また、リストＩ２（２）と項目Ｉ２（２）の間の以前の保持関係と一致するように、リストＬ２と項目Ｉ２の間の保持関係も確立される。ステップ７で、項目Ｉ１（２）が、Ｉ１（２）の複製を表すブロブＢ４としてシリアル化され、ステップ８で、ブロブＢ４は、項目Ｉ１として逆シリアル化される。また、リストＬ３（２）と項目Ｉ１（２）の間の以前の保持関係と一致するように、リストＬ３と項目Ｉ１の間の保持関係も確立される。次いで、ステップ９〜１２で、移動し、他のどの項目によっても保持されていないため、項目Ｉ１（２）、Ｉ２（２）、Ｌ３（２）、およびＬ２（２）が抹消される。これらの項目が別の項目によって保持されていた場合、それらは、抹消されるのではなく、代用項目で置き換えられたはずである。結果は、図１２に従って元のリストを深く移動するコマンドが実行される前に存在した構造と同じである。
【００３７】
・リストを浅くコピーする−ストア横断
図１４を参照すると、ユーザは、今度は、ストア１からストア２にリストＬ２のコピーを作成し、リストＬ５の下に新しくコピーされたリストを編成することを要求している。しかしながら、ユーザは、リストＬ２の下にあるすべてではなく、リストＬ２によって直接保持されている項目（リスト項目と非リスト項目の両方）だけをコピーすることを要求している。これを、リストの浅いコピーと呼ぶ。このコマンドを実行するには、ステップ１で、リストＬ２（コピーされるリスト）が、リストＬ２の複製を表すブロブＢ１にシリアル化される。ステップ２で、ブロブＢ１は、それがストア１ではなくストア２に位置することを除いてはリストＬ２の全く同一のコピーである新しいリストＬ２（２）に逆シリアル化される。また、ユーザの要求に応じて、既存のリストＬ５とリストＬ２（２）の間に保持関係が作成される。ユーザが、リストＬ２を、ストア２の別のリストに入れずにコピーしようとした場合には、リストＬ２（２）はストア２において変動項目になるはずである。ステップ３で、リストＬ３を指し示す代用項目が作成され、リストＬ２（２）の下に保持される。これは、元のリストＬ２と元のリストＬ３の間の保持関係と一致するように行われる。同様に、ステップ４で、項目Ｉ２を指し示す代用項目が作成され、リストＬ２（２）の下に保持される。これは、元の項目Ｉ２と元のリストＬ２の間の保持関係と一致するように行われる。その結果、リストＬ２がコピーされ、リストＬ２の下の元の項目を指し示す代用項目が、リストＬ２のコピー（すなわちリストＬ２（２））の下に配置されることになる。このように、システムは、ユーザによってコピーするため具体的に選択された項目（すなわちリストＬ２）のコピーだけを行い、よって、ユーザの意図に一致する可能性の最も高いやり方で働く。
【００３８】
・リスト構造をコピーする−ストア横断
リストコピー操作の第２のバージョンを、図１５と関連して説明する。この例では、ユーザは、リストＬ２、およびリストＬ２の下にある対応する構造が、そのコピーがストア２のリストＬ５の下に保持されるようにコピーされるよう要求している。したがって、ステップ１では、リストＬ２が、リストＬ２の複製を表すブロブＢ１にシリアル化される。ステップ２で、ブロブＢ１は、リストＬ２（２）として逆シリアル化され、リストＬ５とリストＬ２（２）の間に保持関係が確立される。ステップ３で、リストＬ３が、リストＬ３の複製を表すブロブＢ２にシリアル化される。ステップ４で、ブロブＢ２はリストＬ３（２）として逆シリアル化され、リストＬ２とリストＬ３の間の保持関係と一致するように、リストＬ２（２）とリストＬ３（２）の間に保持関係が確立される。ステップ５および６で、項目Ｉ１およびＩ２をターゲットとする代用項目が作成され、それぞれ、項目Ｉ１およびＩ２と一致する保持関係に置かれる。
【００３９】
ゆえに、この操作の結果、リストＬ２、リストＬ２によって直列保持されている非リスト項目、およびリストＬ２の下に保持されている構造がストア２にコピーされ、リストＬ２の下に保持されているがリストＬ２の下に直接保持されていない項目については、ストア２に、ストア１の元の項目をターゲットとする代用項目が作成されることになる。
【００４０】
・リストを深くコピーする−ストア横断
リストコピー操作の第３のバージョンを、図１６と関連して説明する。この例では、ユーザは、リストＬ２、およびリストＬ２の下にあるすべての項目を、そのコピーがストア２のリストＬ５の下に保持されるように深くコピーするよう要求している。この操作は、それらがリストであるか、それともリスト以外であるかに関わらず、すべての項目がコピーされることを除いて、構造的コピー操作に似ている。したがって、ステップ１で、リストＬ２が、リストＬ２の複製を表すブロブＢ１にシリアル化される。ステップ２で、ブロブＢ１は、リストＬ２（２）として逆シリアル化され、リストＬ５とリストＬ２（２）の間に保持関係が確立される。ステップ３で、リストＬ３が、リストＬ３の複製を表すブロブＢ２にシリアル化される。ステップ４で、ブロブＢ２は、リストＬ３（２）として逆シリアル化され、リストＬ２とリストＬ３の間の保持関係と一致するように、リストＬ２（２）とリストＬ３（２）の間に保持関係が確立される。ステップ５および６では、代用項目を作成するのではなく、項目Ｉ１およびＩ２がストア２にコピーされる。ゆえに、ステップ５で、項目Ｉ２が、項目Ｉ２の複製を表すブロブＢ３にシリアル化される。ステップ６で、ブロブＢ３は、リストＬ２と項目Ｉ２の間の保持関係と一致するように、リストＬ２（２）の下に保持される項目Ｉ２（２）に逆シリアル化される。同様に、ステップ７で、項目Ｉ１が、項目Ｉ１の複製を表すブロブＢ４にシリアル化される。ステップ８で、ブロブＢ４が、リストＬ３と項目Ｉ１の間の保持関係と一致するようにリストＬ３（２）の下に保持される項目Ｉ１（２）に逆シリアル化される。ゆえに、この操作の結果、リストＬ２、およびリストＬ２の下の項目すべてがストア２にコピーされることになる。
【００４１】
・抹消する
図１７に、項目の抹消および項目への複数ユーザアクセスに関する考察に関連して使用される項目構造の一例を示す。複数のユーザが同じ項目にアクセスできるようにすることと、個々のユーザが、その他のユーザの同意なしにそれらの項目を抹消し、あるいは他のやり方で除去できるようにすることの間には対立的緊張関係（ｔｅｎｓｉｏｎ）がある。
【００４２】
この図１７の例示的構造では、ルート作業領域「＼」は、それぞれ、ユーザ１およびユーザ２に許可されている作業領域を表す作業領域Ｕ１およびＵ２を直接保持している。作業領域Ｕ１は、作業領域「ＵＤＲ１」および「共用（ｓｈａｒｅｄ）」を直接保持している。作業領域Ｕ２は、作業領域「ＵＤＲ２」を直接保持している。作業領域ＵＤＲ１および共用は、両方とも、リストＬ１を直接保持している。作業領域ＵＤＲ２はリストＬ２を直接保持している。リストＬ１およびＬ２は、両方とも、項目Ｉ１を直接保持している。
【００４３】
この例で、ユーザ１は、リストＬ１および項目Ｉ１を作成しており、Ｌ１と共用の間に保持リンクを確立することによって（すなわち、リストＬ１を共用作業領域に入れることによって）ユーザ２とこれら２つの項目を共用していると仮定する。さらに、ユーザ２が、その後、項目１をリストＬ２に付加したものとする。ゆえに、ユーザ２は、リストＬ１および項目Ｉ１に対する完全な権限を持つ。しかしながら、ユーザ１はリストＬ２に対して何の権限も持たないものとする。この場合には、ユーザ１にとって利用可能な様々な編成および存続時間操作がある。例えば、ユーザ１は、リストＬ１から項目Ｉ１を除去することができる。項目Ｉ１は、リストＬ２、ならびに作業領域ＵＤＲ１および共用の両方に留まるはずである。代替として、ユーザ１は、リストＬ１をすべてのリストから除去することもできる。この場合には、項目Ｉ１は、なお、リストＬ２に留まるはずである。代替として、ユーザ１は、リストＬ１を、作業領域ＵＤＲまたは共用作業領域のどちらからも除去することができる。この場合には、リストＬ１および項目Ｉ１は、リストＬ１がそこから除去される作業領域では利用できなくなるはずである。しかしながら、これは、他の作業領域には影響を及ぼさないはずである。
【００４４】
別のオプションは、ユーザ１が、すべての作業領域からリストＬ１を除去できるものである。この場合には、リストＬ１は、そのストアから完全に抹消されるはずである。ユーザ１は項目Ｉ１での権利を放棄し、項目Ｉ１は、リストＬ２においてユーザ２にとってのみ利用可能になる。さらに別のオプションは、ユーザ１が、おそらくユーザ１がそれ以上項目Ｉ１を必要とせず、項目Ｉ１に何が起こるかに関心がないために、項目Ｉ１での権利を放棄するものである。したがって、今度は、項目Ｉ１は、リストＬ２においてユーザ２にとってのみ利用可能になる。さらに別のオプションは、ユーザ１が、項目Ｉ１を抹消できるものである。この場合には、リストＬ１から項目Ｉ１への保持リンクが削除される。しかしながら、リストＬ２から項目Ｉ１へのリンクはダングリングする（すなわち、存在するがどの項目も指し示さない）。このダングリングリンクは、そのまま留まることもでき、次回リストＬ２が開かれるとき、または他の任意のときに、自動的に消去することもできる。
【００４５】
・再利用する
項目の再利用について、５つのラベル付けした部分に分割されている図１８を参照して論じる。図１８の部分１に示すように、ルート作業領域「＼」は、それぞれ、ユーザ１およびユーザ２に許可されている作業領域を表す作業領域Ｕ１およびＵ２を保持している。作業領域Ｕ１はリストＬ１を直接保持し、同様に、リストＬ１は項目Ｉ１を直接保持している。作業領域Ｕ２はリストＬ２を直接保持し、同様に、リストＬ２も項目Ｉ１を直接保持している。ゆえに、項目Ｉ１はリストＬ１とＬ２によって共用されている。
【００４６】
図１８の部分２に関しては、ユーザ１が項目Ｉ１を再利用しようとしていると仮定する。この場合、項目Ｉ１は、（作業領域Ｕ１から出ている破線によって示すように）ユーザ１の観点から再利用されるはずである。しかしながら、ユーザ２の観点からすると、項目Ｉ１は、依然として、リストＬ２に留まっているはずである。図１８の部分３に関して、ユーザ１がゴミ箱を空にした場合、ユーザ１は項目Ｉ１でのすべての権利を放棄したことになる。しかしながら、やはり、ユーザ２は項目Ｉ１に対するどんな操作も要求しなかったため、項目Ｉ１はユーザ２のリストＬ２に留まっている。
【００４７】
次に、図１８の部分４に関して、ユーザ２が、ユーザ１がゴミ箱を空にした後、項目Ｉ１を再利用することを要求していると仮定する。この場合、項目Ｉ１は、（作業領域Ｕ２から出ている破線によって示すように）ユーザ２の観点からすると、項目Ｉ１は、ゴミ箱の中にあるように見えるはずである。図１８の部分５に関して、ユーザ２がゴミ箱を空にすると、他のどのリストも項目Ｉ１を保持していないため、項目Ｉ１は、完全に削除されたことになる。別のリストが項目Ｉ１を保持していた場合、項目Ｉ１は、依然として、その他のリストの下に保持されたままであったはずである。
【００４８】
・結論
このように、新規の電子ファイルシステムおよびそのようなシステムにおいて項目を管理する方法について説明した。本明細書で説明した、本発明の様々な態様による例示的実施形態が例として示されているが、本発明はこれらの実施形態だけに限定されないことは理解されよう。
【図面の簡単な説明】
【００４９】
【図１】本発明の態様と共に使用され得る例示的コンピューティングデバイスを示す機能ブロック図である。
【図２】本発明の少なくとも１つの態様による、複数のストアにまたがって項目を移動するために取られ得るステップを機能的に示す図である。
【図３】本発明の少なくとも１つの態様による、項目を戻し、ゆえに、図２に示す操作を逆にするために取られ得るステップを機能的に示す図である。
【図４】本発明の少なくとも１つの態様による、項目をリストに付加するために取られ得るステップを機能的に示す図である。
【図５】本発明の少なくとも１つの態様による、リストから項目を除去するために取られ得るステップを機能的に示す図である。
【図６】本発明の少なくとも１つの態様による、項目をコピーするために取られ得るステップを機能的に示す図である。
【図７】本発明の少なくとも１つの態様による、同じストア内でリストを移動するために取られ得るステップを機能的に示す図である。
【図８】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「浅く」移動するために取られ得るステップを機能的に示す図である。
【図９】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「浅く」戻し、ゆえに、図８に示す操作を逆にするために取られ得るステップを機能的に示す図である。
【図１０】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「構造的に」移動するために取られ得るステップを機能的に示す図である。
【図１１】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「構造的に」戻し、ゆえに、図１０に示す操作を逆にするために取られ得るステップを機能的に示す図である。
【図１２】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「深く」移動するために取られ得るステップを機能的に示す図である。
【図１３】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「深く」戻し、ゆえに、図１２に示す操作を逆にするために取られ得るステップを機能的に示す図である。
【図１４】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「浅く」コピーするために取られ得るステップを機能的に示す図である。
【図１５】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「構造的に」コピーするために取られ得るステップを機能的に示す図である。
【図１６】本発明の少なくとも１つの態様による、複数のストアにまたがってリストを「深く」コピーするために取られ得るステップを機能的に示す図である。
【図１７】本発明の少なくとも１つの態様による、リストを抹消するために取られ得るステップを機能的に示す図である。
【図１８】本発明の少なくとも１つの態様による、リストを再利用するために取られ得るステップを機能的に示す図である。
【符号の説明】
【００５０】
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  取り外し不能不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  取り外し可能不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６５  ディジタイザ
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域ネットワーク
１８０  リモートコンピュータ
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺装置インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
2006146907.tif 000003
【図２】
2006146907.tif 000004
【図３】
2006146907.tif 000005
【図４】
2006146907.tif 000006
【図５】
2006146907.tif 000007
【図６】
2006146907.tif 000008
【図７】
2006146907.tif 000009
【図８】
2006146907.tif 000010
【図９】
2006146907.tif 000011
【図１０】
2006146907.tif 000012
【図１１】
2006146907.tif 000013
【図１２】
2006146907.tif 000014
【図１３】
2006146907.tif 000015
【図１４】
2006146907.tif 000016
【図１５】
2006146907.tif 000017
【図１６】
2006146907.tif 000018
【図１７】
2006146907.tif 000019
【図１８】
2006146907.tif 000020