(57)【特許請求の範囲】
【請求項１】
方法であって、
１つ以上のプロセッサと、前記方法を実行するために前記１つ以上のプロセッサによって実行される１つ以上のコンピュータプログラムを格納したストレージ媒体と、を備える１つ以上のコンピューティングデバイスにおいて、
複数のアカウントに対するコンテンツであって、複数の階層構造内に配置されている複数のコンテンツアイテム及び複数のフォルダを含む前記コンテンツを、コンテンツ管理システムに格納することと、
複数のルートネームスペースを設けることと、ここで、前記複数のルートネームスペースの各ルートネームスペースは、アカウントのルートフォルダをルートとしており、
前記複数のフォルダから選択された第１のフォルダをルートとしている第１のネームスペースを設けることと、ここで、前記複数の階層構造のうちのある階層構造は、前記複数のアカウントのうちの第１のアカウントのルートフォルダと、前記第１のフォルダと、前記複数のフォルダのうちの第２のフォルダとを有しており、前記第２のフォルダは、前記第１のフォルダの子であり、前記第１のネームスペースは、前記第１のアカウントの前記ルートフォルダをルートとしている前記ルートネームスペースに対して相対的な第１のパスへマウントされており、
前記複数のアカウントのうちのアカウントの第１の集合に対して前記第１のネームスペースへのアクセスを許可する第１のパーミッションであって、前記第１のネームスペースに対する前記第１のパーミッションを保持することと、
前記第２のフォルダを共有することを求める要求を受け付けることと、
前記第２のフォルダを共有することを求める前記要求を受け付けたことに基づいて、前記第２のフォルダをルートとしている第２のネームスペースを設けることと、
前記第２のフォルダをルートとしている前記第２のネームスペースを設けたことに基づいて、前記複数のアカウントのうちのアカウントの第２の集合に対して前記第２のネームスペースへのアクセスを許可する第２のパーミッションであって、前記第２のネームスペースに対する前記第２のパーミッションを保持することと、
前記複数のルートネームスペースのうち、前記第２の集合のアカウントのそれぞれのルートフォルダをルートとしているルートネームスペースに対して相対的な第２のパスへ、前記第２のネームスペースをマウントすることと、
を含む動作を実行することを含む、方法。
【請求項２】
請求項１に記載の方法であって、前記動作は更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のアカウントが有することを判定することと、
前記特定のアカウントが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダを含む、前記特定の階層構造における前記第１のフォルダ及びそのフォルダの子へのアクセスを、前記特定のアカウントに提供することと、
前記特定のアカウントが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダを除く、前記特定の階層構造における前記第１のフォルダ及びその子へのアクセスを、前記特定のアカウントに提供することと、
前記特定のアカウントが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダへのアクセスを、前記特定のアカウントに提供することと、
を含む、方法。
【請求項３】
請求項１に記載の方法であって、前記第１のネームスペースは、共有ネームスペースであり、前記第１のフォルダは、前記第１のネームスペースの共有フォルダである、方法。
【請求項４】
請求項１に記載の方法であって、
前記第１のフォルダは、エンティティアカウントのルートフォルダを含むサブツリー内にあり、
アカウントの前記第１の集合は、前記エンティティアカウントと関連付けられたアカウントのサブセットを少なくとも含む、方法。
【請求項５】
請求項１に記載の方法であって、前記動作は更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のアカウントが有することを判定することと、
前記特定のアカウントが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダ及びその子孫を含む、前記特定の階層構造を記述している階層データを、前記特定のアカウントに提供することと、
前記特定のアカウントが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダ及びその子孫を含まない、前記特定の階層構造を記述している階層データを、前記特定のアカウントに提供することと、
前記特定のアカウントが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダのサブツリーを記述している階層データを、前記特定のアカウントに提供することと、
を含む、方法。
【請求項６】
請求項１に記載の方法であって、前記動作は更に、
前記第２のネームスペースの親フォルダを、前記第１のネームスペースにおけるパスとして設定することと、
親のネームスペースからパーミッションが継承されるべきであるかどうかを示す、前記第２のネームスペースに対するパーミッション継承フラグを設定することと、
前記パーミッション継承フラグが、前記親のネームスペースからパーミッションが継承されるべきであることを示す場合に、アカウントの前記第２の集合内のアカウントの前記第１の集合を含む前記第２のネームスペースに対して前記第２のパーミッションを保持することと、
を含む、方法。
【請求項７】
請求項１に記載の方法であって、更に、
特定のネームスペースにおける特定のパスへ前記第２のネームスペースをマウントすることを求める要求を、前記特定のネームスペースへのアクセスを有する特定のアカウントから受け付けることと、
ここで、前記第２のパーミッションは、前記第２のネームスペースへのアクセスを前記特定のアカウントに許可し、
前記特定のネームスペースにおける前記特定のパスへ前記第２のネームスペースをマウントすることが、ネームスペースのマウントに課せられる１つ以上の制約の集合が満たされるかどうかを判定することと、
前記１つ以上の制約の集合が満たされる場合に、前記第２のネームスペースを、前記特定のネームスペースにおける前記特定のパスへマウントすることと、
を含む、方法。
【請求項８】
請求項７に記載の方法であって、１つ以上の制約の前記集合は、ルートネームスペースではない共有ネームスペースにおける２つ以上のパスに、前記第２のネームスペースをマウントできないという制約を含む、方法。
【請求項９】
請求項７に記載の方法であって、１つ以上の制約の前記集合は、アカウントの前記第２の集合のアカウントについて、ルートネームスペース又はその子ネームスペースにおける２つ以上のパスに前記第２のネームスペースをマウントできないという制約を含む、方法。
【請求項１０】
請求項１に記載の方法であって、前記動作は更に、
前記第２のネームスペースに関係するマウント動作を実行することを求める要求を、特定のアカウントから受け付けることと、
１つ以上の影響を受けるネームスペースについての１つ以上のマウントロックを取得することであって、前記１つ以上のマウントロックが取得できない場合に前記マウント動作が失敗する、前記取得することと、
を含む、方法。
【請求項１１】
１つ以上のコンピュータの１つ以上のプロセッサによって実行された場合に、請求項１から１０のいずれか１項に記載の方法を実行させるためのプログラム。
【請求項１２】
コンピューティングシステムであって、
１つ以上のプロセッサと、
ストレージ媒体と、
前記１つ以上のプロセッサによる実行のために前記ストレージ媒体に格納されており、請求項１から１０のいずれか１項に記載の方法を実行するよう構成された命令を含む１つ以上のプログラムと、
を備える、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドベースのコンテンツ管理システムに関するものである。より具体的には、本明細書に記載の（複数の）実施形態の例は、デジタルドキュメント及びコンテンツアイテムのようなデジタルコンテンツの格納、管理、共有、及び当該デジタルコンテンツへのアクセスのための、クラウドベースのコンテンツ管理システムに関するものである。
【背景技術】
【０００２】
従来、企業及びその他の組織は、ネットワークファイルサーバに、ドキュメント、ファイル、及びその他のデジタル情報といったデジタルコンテンツを格納している。そのようなファイルサーバは、典型的には、ファイルサーバに格納されたコンテンツアイテムへの不正なネットワークを防ぐネットワークファイアウォールの内側にある施設内に設置される。従業員によって作成されたコンテンツは、企業に帰属する。ファイルサーバ上にはそのようなコンテンツが集中化され、それにより、企業が、当該企業に属するコンテンツから個人的なコンテンツアイテムを区別することが可能になる。即ち、企業は、ファイルサーバ上に存在する全てのアイテムを、企業所有のコンテンツとして扱う。更に、この集中化の見方により、企業がコンテンツを容易に管理することが可能になる。例えば、ＩＴ管理者又はアドミニストレータは、会社のファイルサーバに格納されているコンテンツに対してアクセス制御パーミッションを設定できる。
【０００３】
遠隔で働くために、従業員は、多くの場合、そのパーソナルコンピュータ、パーソナルアカウント及び／又はパーソナルストレージデバイスにコンテンツアイテムを格納しており、それにより、オフラインで、又はさもなければファイルサーバに接続されていない間に、コンテンツアイテムを用いて働くことができる。これは雇用主の観点からは理想的ではなく、それは、雇用主は、ファイルサーバに格納されているコンテンツアイテムと比較した場合に、ローカルに格納されたコンテンツアイテムに対するコントロールをほとんど有しないためである。これは、例えば従業員のパーソナルコンピューティングデバイスが紛失、損傷、又は盗難されたような場合に、リスクをもたらす。更に、雇用主は、ファイルサーバの外部ではオフラインコピーについてのアクセスのコントロールを失う。
【０００４】
企業は、自らが所有するファイルサーバ上にコンテンツを格納するのに加えて、又はそれとともに、サービスによって運用されているサーバ上に自らのコンテンツを「ホスティングする（host）」ためにクラウドベースのコンテンツ管理サービスを使用しうる。クラウドベースのストレージは、企業及びその従業員に一様に多くの利点を提供できる。オンラインコンテンツ管理サービスの１つの例は、サンフランシスコ，ＣＡのＤｒｏｐｂｏｘ，Ｉｎｃ．によって提供される「Ｄｒｏｐｂｏｘ」サービスである。Ｄｒｏｐｂｏｘサービスは、ホスティングされたコンテンツアイテムを、多数のデバイス及びユーザ間で同期及び共有する能力を提供している。エンドユーザデバイス及びＤｒｏｐｂｏｘ，Ｉｎｃ．のサーバの両方にコンテンツを格納して同期させることから生じる、この柔軟性は、社内及び遠隔の様々な異なる勤務形態を後押しする。
【０００５】
いくつかの既存のクラウドベースのコンテンツ管理システムでは、コンテンツストレージモデルが、従来のファイルサーバモデルよりも集中化されていない。特に、これらのシステムでは、システムの各ユーザは、システムと同期させられるコンテンツアイテムが格納された、当該ユーザのパーソナルコンピューティングデバイス上に、独自の個人同期リポジトリを有している。更に、各ユーザは、互いに独立した個人同期リポジトリを保持している。
【０００６】
いくつかの既存のシステムは、選択されたコンテンツアイテムを同期リポジトリ間で共有するための仕組みを提供する。例えば、いくつかの既存のシステムでは、ユーザ・アリスは、ボブが彼の同期リポジトリ内の共有フォルダに対して行う更新がアリスの同期リポジトリ内でアリスに見えるように、アリスの同期リポジトリ内のフォルダをユーザ・ボブと共有できる。しかし、既存のシステムでは、共有フォルダの所有者は、個人に関係している。これは、アリスが会社を辞め、彼女の同期リポジトリを廃止した、又は単に彼女の同期リポジトリから共有フォルダを削除した場合に問題がある。この場合、彼女がボブと共有していたフォルダに、もはやボブがアクセスできなくなりうる。最悪の場合、共有フォルダに蓄積されていた作業結果の全てが失われる。
【０００７】
既存のシステム上の共有フォルダに関する他の問題は、当該共有フォルダが他の人の同期リポジトリに組み込まれた場合に、共有フォルダに関連する階層情報が失われうることである。例えば、アリスが彼女の同期リポジトリ内に、パス/Ａ/Ｂ/Ｃを有するフォルダを有していると仮定する。既存のシステムでは、アリスがフォルダ/Ａ/Ｂ/Ｃをクリスと共有する場合、当該フォルダは、親フォルダ「Ａ」及び「Ｂ」についての階層情報が失われたクリスの同期リポジトリ内において/Ｃとして表れる。このため、同一のリソースに関して、異なるユーザに対して異なる階層情報が使用可能になりうるため、当該リソースの正確なロケーションについて伝えることが難しくなる。更には、当該リソース又は親リソースの更なる共有が制約される。例えば、システムは、アリスが、フォルダ/Ａ/Ｂ/Ｃをクリスと共有した後に、フォルダ/Ａ/Ｂをボブと共有することを妨げる。
【０００８】
全体としては、既存のクラウドベースのコンテンツ管理システムは、同期リポジトリの個別化の特性及び分散化の特性に起因して、企業に属するコンテンツアイテムの管理及び格納に使用される場合に当該企業に対して調整コストを増加させる。企業によって生成されるデジタル情報の量の増加を前提とすると、クラウドベースのコンテンツ管理サービスへの企業によるコンテンツアイテムのホスティングは、増加することのみが予測されうる。この傾向は、そのようなサービスに企業がホスティングするコンテンツに対するコントロールのレベルを保持し、かつ、よりカスタマイズ可能なパーミッションをそのようなコンテンツに対して提供するという、企業の要求と関連している。本発明は、このニーズ及び他のニーズを満たす。
【０００９】
このセクションに記載のアプローチは、追及可能なアプローチであるが、必ずしもこれまでに考え出されてきた又は追求されてきたアプローチとは限らない。したがって、特に記載されている場合を除き、このセクションに記載のアプローチのいずれも単にこのセクションに含まれるとの理由で従来技術とみなされると考えられてはならない。
【図面の簡単な説明】
【００１０】
本発明の（複数の）実施形態の例は、添付の図面において、限定ではなく例として示されており、以下の図面において同様の参照番号は同様のエレメントを参照する。
【００１１】
【図１】図１は、本明細書に記載の１つ以上の実施形態に係る分散型コンピューティング環境の例を示すブロック図である。
【００１２】
【図２】図２は、１つ以上の実施形態に係る、２つの階層構造との関連で、ネスト化ネームスペースを含むネームスペースの例を示している。
【００１３】
【図３】図３は、個別のパーミッションを有する共有フォルダに対応するネスト化ネームスペースを作成するためのプロセスの例を図示するフローチャートである。
【００１４】
【図４】図４Ａ〜図４Ｃは、１つ以上の実施形態に係る、パーミッションに基づいて特定のユーザが使用可能な階層データの例を示している。
【００１５】
【図５】図５は、１つ以上の実施形態に係るマウント動作の例に関して取得が成功したマウントロックの例を示している。
【００１６】
【図６】図６は、１つ以上の実施形態に係るマウント動作の例に関して取得が成功していないマウントロックの例を示している。
【００１７】
【図７】図７は、１つ以上の実施形態に係る、ネームスペースをマウントするためのプロセスの例を図示するフローチャートである。
【００１８】
【図８】図８は、１つ以上の実施形態が実施されるコンピューティングデバイスの例のブロック図である。
【００１９】
【図９】図９は、１つ以上の実施形態が実施されるコンピューティングデバイスの例の動作を制御するためのソフトウェアシステムの例のブロック図である。
【発明を実施するための形態】
【００２０】
以下の記載では、説明を目的として、本発明の（複数の）実施形態の例の深い理解を提供するために多数の具体的詳細を説明する。しかし、当該（複数の）実施形態の例がそれらの具体的詳細なしで実施されるることは理解されよう。他の例では、既知の構成及びデバイスについては、当該（複数の）実施形態を不必要に分かりにくくすることを避けるためにブロック図の形式で示していない。
【００２１】
＜コンテンツ管理システム＞
図１は、本明細書に記載の１つ以上の実施形態に係る分散型コンピューティング環境の例を示すブロック図である。システム１００は、１つ以上のクライアント１０２〜１０４を含みうる。クライアントデバイス１０２〜１０４は、コンテンツ管理システム１０８によって管理されるコンテンツにアクセスすることを含む、以下で説明するアクティビティを実現するために使用可能な多数のコンピューティングデバイスのいずれかでありうる。クライアント１０２〜１０４は、パーソナルコンピュータ（ＰＣ）、インターネットキオスク、パーソナル・デジタル・アシスタント、携帯電話、スマートフォン、他のセルラデバイス、ゲームデバイス、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、他の無線デバイス、セットトップデバイス、車載コンピュータ、他のコンピューティングデバイス、及び／又はそれらの組み合わせでありうるが、それらに限定されない。
【００２２】
クライアントデバイス１０２〜１０４は、クライアントアプリケーション１１２を実行する。本明細書で使用される「アプリケーション」との用語は、一般に、ある機能又は主題を実施する実行可能なソフトウェアの単位を指す。アプリケーションの主題は、広く、任意の数の規律及び機能（オンデマンドコンテンツ管理、電子商取引、証券仲介取引、家庭用娯楽、電卓等）に広くわたって変化し、１つのアプリケーションが２つ以上の主題を有してもよい。実行可能なソフトウェアの単位は、一般に、所定の環境で動作する。クライアントアプリケーション１１２は、グラフィカルユーザインタフェース（ＧＵＩ）１１０、１以上のネームスペースと関連付けて格納されたコンテンツ１１４へのアクセス、及びネームスペースメタデータ１１６（ただしこれらに限定されない）等の、１つ以上のコンポーネントを、クライアントデバイス１０２〜１０４上で使用可能にしうる。
【００２３】
クライアント１０２〜１０４は、通信ネットワーク１０６に接続されるよう構成される。通信ネットワーク１０６は、ローカルエリアネットワーク、携帯電話ネットワーク、無線ネットワーク、イントラネット、インターネット、及び／又はデータが転送されうる他の任意の通信リンクといった、１つ以上の通信ネットワークを含みうるが、それらに限定されない。通信ネットワーク１０６は、クライアント１０２〜１０４を、クラウドベースのコンテンツ管理システム１０８に接続する。
【００２４】
コンテンツ管理システム１０８は、ユーザがアクセス可能な「クラウドで」管理されるコンテンツを管理及び格納する。例えば、クライアントデバイス１０２〜１０４を使用するユーザは、デスクトップアプリケーション、モバイルアプリケーション、ウェブアプリケーション、又はアプリケーションプログラムインタフェース（ＡＰＩ）を介して、コンテンツ管理システム１０８によって管理される管理コンテンツにアクセスしうる。ユーザは、１つ以上のクライアントデバイス１０２〜１０４を使用しうる。例えば、ユーザは、１つ以上のデバイスから、関連するアカウントにログインしうる。いくつかの実施形態では、ユーザは、１つ以上のデバイスをコンテンツ管理システム１０８に登録しうる。コンテンツにアクセスするためのパーミッションは、ユーザ単位及びデバイス単位の少なくともいずれかで管理されうるとともに、それらの任意の組み合わせが、コンテンツの任意のサブセットに対して実施されうる。
【００２５】
いくつかの実施形態では、ユーザは、１つ以上のクライアントデバイス１０２〜１０４上の特定のコンテンツのローカルコピーを、１つ以上の他のクライアントデバイス１０２〜１０４上のコンテンツ及び／又はコンテンツ管理システム１０８に格納されているコンテンツと同期させる同期プロセスを通じて、管理されているコンテンツにアクセスできる。例えば、ユーザは、当該ユーザのアカウントと関連付けられているラップトップコンピュータデバイス上でドキュメントを作成又は修正でき、当該更新が、コンテンツ管理システム１０８を通じて、当該ユーザのアカウントに同様に関連付けられているデスクトップコンピュータデバイスに対して自動的に複製される。代替的に及び／又は追加的には、当該ドキュメントの更新されたバージョンが、コンテンツ管理システム１０８によって、例えばコンテンツアイテムサーバ１１８に格納されてもよく、ユーザが、例えばスマートフォンコンピューティングデバイス上で実行するブラウザ又はアプリケーションから、インターネットを介して当該ドキュメントにアクセスしてもよい。
【００２６】
コンテンツ管理システム１０８は、通信ネットワーク１０６に接続されたコンテンツアイテムサーバ１１８及び制御サーバ１２０と、コンテンツアイテムストレージサーバ１２２〜１２４と、ユーザアカウントデータベース１２６と、ネームスペースメタデータ・データベース１２８とを含む。本明細書で使用される「サーバ」との用語は、形式にかかわらず、データ、ファイル、アプリケーション、コンテンツ、又は他のサービスを、コンピュータネットワーク上の１つ以上の他のデバイス又はエンティティに提供するよう構成された、任意のコンピュータ化されたコンポーネント、システム、又はエンティティを指す。いくつかの実施形態によれば、コンテンツ管理システム１０８は、サーバコンピュータ、ネットワークデバイス、ラップトップコンピュータデスクトップコンピュータ、ワークステーションコンピュータ、ブレードサーバ、メインフォースコンピュータ、他のタイプのコンピューティングデバイス、又はそれらの組み合わせ（ただしこれらに限定されない）等の、１つ以上の従来のコンピューティングデバイスに実装される。
【００２７】
コンテンツ管理システム１０８は、１つ以上のネームスペースに関連付けて格納されているコンテンツアイテム及びフォルダ等のコンテンツについて、クライアント１０２〜１０４にコンテンツ管理サービスを提供する。フォルダは、共有フォルダを含んでよく、ネームスペースは、ネスト化ネームスペースを含んでよく、それらの全てについて以降でより詳細に説明する。本明細書で使用される「管理する」との用語は、コンテンツの格納及び提供、コンテンツメタデータの格納及び提供、認証、パーミッションの管理、アカウントの作成及び管理、並びに、コンテンツ管理システム１０８に関して本明細書で説明する全ての機能を含むがそれに限定されない他の任意の機能を指す。
【００２８】
いくつかの実施形態では、コンテンツ管理システム１０８は、インターネット又は他の公衆ネットワークを介してコンテンツを管理するためのインターネット・コンテンツ管理サービス、及び／又は、ローカルエリアネットワーク（ＬＡＮ）又は他のプライベートネットワークを介してコンテンツを管理するためのイントラネット・コンテンツ管理サービスである。コンテンツ管理システム１０８内のコンポーネントの構成は、単に構成例であり、コンテンツ管理システム１０８内のコンポーネントは、他の適切な構成に配置されてもよい。
【００２９】
コンテンツ管理システム１０８によって管理されるコンテンツアイテムは、デジタルドキュメント、ファイル、又はデジタル情報のその他の論理コレクションを含むがそれらに限定されない、デジタル情報の論理コレクションでありうる。多くの場合、コンテンツアイテムは、例えば、画像（例えば、ＪＰＥＧ、ＴＩＦＦ、ＧＩＦ等）、音楽（例えば、ＭＰ３、ＡＩＦＦ、Ｍ４Ａ、ＷＡＶ等）、動画（例えば、ＭＯＶ、ＭＰ４、Ｍ４Ｖ等）、文書処理ドキュメント（例えば、ＤＯＣ、ＤＯＣＸ、ＰＡＧＥＳ等）、他のドキュメント（例えば、ＰＤＦ等）、スプレッドシートドキュメント（例えば、ＸＬＳ、ＸＬＳＸ、ＮＵＭＢＥＲＳ等）、プレゼンテーションドキュメント（例えば、ＰＰＴ、ＰＰＴＸ、ＫＥＹ等）、ウェブページ（例えば、ＨＴＭ、ＨＴＭＬＳ等）、又はテキストファイル（例えば、ＴＸＴ、ＲＴＦ等）のような、既知のメディアタイプに対応する。しかし、コンテンツ管理システム１０８によって管理されるコンテンツアイテムは、特定のメディアタイプに限定されることはなく、コンテンツアイテムには、バイナリデータ、テキストデータ、又は他のデジタル情報を含む、デジタル情報の任意の論理コレクションが包含されうる。
【００３０】
コンテンツ管理システム１０８は、更に、１つ以上のフォルダを管理しうる。コンテンツ管理システム１０８によって管理されるフォルダは、１つ以上のコンテンツアイテム及び／又は他のフォルダのコレクションと名付けられる。フォルダは空であってもよく、それは、コンテンツアイテム又は他のフォルダを含んでいないことを意味する。フォルダは他のフォルダ内にネストされることが可能であるため、コンテンツアイテム及びフォルダは複数の階層構造内に配置される。階層構造の葉ノードは、コンテンツアイテム、又はコンテンツを含まない空のフォルダを表す。
【００３１】
コンテンツ管理システム１０８は、コンテンツアイテムサーバ１１８、制御サーバ１２０、ストレージサーバ１２２〜１２４、及び／又は他のサーバ等の１つ以上のサーバを含むバックエンドシステムを収納した多数のデータセンタを含んでもよい。データセンタは、米国の州間のように地理的に互いに分散されうる。クライアント１０２〜１０４の１つからコンテンツ管理システム１０８へのネットワーク要求は、例えば、要求のコンテンツ、特性若しくはタイプ、及び／又は、ネットワーク要求の地理的ロケーション（ただしこれらに限定されない）等の、種々の可能性のあるファクタに基づいて、特定のバックエンドシステムを有する適切なデータセンタへルーティングされる。
【００３２】
いくつかの実施形態では、各バックエンドシステムは、それぞれのネットワーク通信モジュール（例えば、１３２又は１３６）を介してそれぞれ通信ネットワーク１０６に接続される、制御サーバ１２０のような複数の制御サーバ、及び／又は、コンテンツアイテムサーバ１１８のような複数のコンテンツアイテムサーバを含む。通信ネットワーク１０６は、インターネットでありうるが、任意のローカルエリアネットワーク（ＬＡＮ）及び／又はワイドエリアネットワーク（ＷＡＮ）であってもよい。
【００３３】
いくつかの実施形態において、各コンテンツアイテムサーバ１１８及び各制御サーバ１２０は、ＨＴＴＰ、ＨＴＴＰＳ又は同じようなプロトコルを介して、ネットワーク要求をクライアントアプリケーション１１２から受信し、クライアントアプリケーション１１２へネットワーク応答を配信するＷｅｂサーバである。基本的には、コンテンツアイテムサーバ１１８は、クライアントアプリケーション１１２によって要求されたとおりに、ストレージサーバ１２２〜１２４に格納されているコンテンツアイテムのブロックの格納及び取り出しを行うよう構成される。制御サーバ１２０は、以下で説明するように、クライアントアプリケーション１１２に関連する、１つ以上のネームスペースに関連付けて格納されているコンテンツ１１４へのアクセスの提供、及び、コンテンツ管理システム１０８とクライアント１０２〜１０４との間のコンテンツ１１４の選択的な同期を含む、クライアントアプリケーション１１２に関連するコンテンツアイテム管理プロセスを制御するよう構成される。
【００３４】
コンテンツアイテムサーバ１１８は、典型的には、互いに接続された、ネットワーク通信モジュール１３２と、ブロック要求モジュール１３４とを含む。ネットワーク通信モジュール１３２は、コンテンツアイテムサーバ１１８を通信ネットワーク１０６に接続し、通信ネットワーク１０６からの通信の受信と、クライアントデバイス１０２〜１０４又は他の宛先に向かう、通信ネットワーク１０６への通信の提供とを可能にする。ブロック要求モジュール１３４は、主として、コンテンツアイテムブロックの要求の受信と、それらの処理と、ネットワーク通信モジュール１３２を介した、要求されたブロックのクライアント１０２への返送とに関与する。
【００３５】
ストレージサーバ１２２〜１２４は、コンテンツアイテムブロックを格納する。各コンテンツアイテムブロックは、コンテンツ管理システム１０８によって管理されるコンテンツアイテムの全体又は一部を含みうる。各コンテンツアイテムブロックは、例えば４メガバイト（ＭＢ）のような固定サイズであってもよい。コンテンツアイテムのサイズに依存して、コンテンツアイテムは、ストレージサーバ１２２〜１２４のうちの１つ以上のストレージサーバ上で、１つ以上のコンテンツアイテムブロック内に格納されてよく、最後のコンテンツアイテムブロックは固定サイズのデータ量より少ないデータ量を有する可能性がある。例えば、ブロック要求モジュール１３４は、１つ以上の指定されたコンテンツアイテムに対応するデータＢ1, Ｂ2, ... ＢNの１つ以上のブロックを格納するための、「ストア」要求及び／又は「取り出し」要求を受信及び処理しうる。
【００３６】
制御サーバ１２０は、互いに通信する、ネットワーク通信モジュール１３６、ネームスペース管理モジュール１３８、及び同期モジュール１４０を含む。ネットワーク通信モジュール１３６は、制御サーバ１２０を通信ネットワーク１０６に接続し、通信ネットワーク１０６からの通信の受信と、クライアントデバイス１０２のクライアントアプリケーション１１２又は他の宛先に向かう、通信ネットワーク１０６への通信の提供とを可能にする。
【００３７】
ネームスペース管理モジュール１３８は、主として、ネームスペースメタデータ・データベース１２８内のネームスペースメタデータを閲覧又は変更（即ち、追加、編集、又は削除）することを求める要求を受信すること、当該要求を処理すること、及び要求中のクライアントデバイス１０２へ通信モジュール１３６を介して応答を返すことに関与する。いくつかの実施形態では、ネームスペース管理モジュール１３８は、特定のネームスペースへのアクセスをユーザの集合に許可するパーミッションを保持している。パーミッションについては以降でより詳しく議論する。
【００３８】
いくつかの実施形態では、ネームスペースへのアクセスを有するユーザは、クライアントデバイス１０２〜１０４上で当該ネームスペースに関連付けて格納されているコンテンツ１１４を、コンテンツ管理システム１０８によって管理されている、対応するコンテンツアイテムと同期させうる。例えば、同期モジュール１４０は、特定のネームスペースに関連付けて格納され、かつ、クライアントデバイス１０２〜１０４において格納されたコンテンツ１１４を、ストレージサーバ１２２〜１２４に格納されている対応するコンテンツ（例えば、コンテンツアイテム及び／又はフォルダ）と、定期的に同期させうる。コンテンツアイテム又はフォルダ等のコンテンツが、特定のネームスペースがルートとしているフォルダから下降する場合、当該コンテンツは、当該特定のネームスペースに帰属する。ネームスペースについては以降でより詳しく説明する。
【００３９】
いくつかの実施形態では、同期モジュール１４０は、クライアントデバイス１０２〜１０４において格納されているネームスペースメタデータ１１６を、ネームスペースメタデータ・データベース１２８に格納されているネームスペースメタデータと、定期的に同期させる。例えば、クライアントデバイス１０２〜１０４とコンテンツ管理システム１０８との間のロングポーリング又はショートポーリング技術によって、ネームスペースに属するコンテンツ１１４についての変更が検出されると、同期が開始されうる。
【００４０】
アカウントデータベース１２６は、コンテンツ管理システム１０８によって作成及び／又は管理が行われるアカウントについての情報を格納している。いくつかの実施形態では、コンテンツ管理システム１０８は、それぞれ個人ユーザに対応する個人アカウントをサポートしている。代替的に及び／又は追加的には、コンテンツ管理システム１０８は、エンティティアカウントをサポートしうる。エンティティアカウントは、ユーザの集合と関連付けられたエンティティに対応する。ユーザの集合は、個人アカウントを有するユーザに限定されうるか、又は、コンテンツ管理システム１０８にアカウントを有していない１以上のユーザを含みうる。各ユーザは、アカウントデータベース１２６内にレコードを有しうる。いくつかの実施形態において、アカウントデータベース１２６内の個人アカウントについてのレコードは、以下の情報又は当該情報のサブセット若しくは上位セットを含む：
●アカウントＩＤ − アカウントの固有の識別子。
●認証クレデンシャル − アカウントのユーザを認証するために使用されうるユーザ名及びパスワード（ただしこれらに限定されない）等の情報。
●リンクされたデバイス［デバイスＩＤ1, デバイスＩＤ2, ... デバイスＩＤn］ − 当該アカウントにリンクされたクライアント１０２〜１０４の１つ以上の固有の識別子のリスト。このリストは、クライアント１０２〜１０４が現在、アカウントにリンクされていなければ、空であってもよい。クライアントデバイス１０２は、異なる種々の方法でアカウントにリンクされうる。１つの方法では、ユーザが、クライアントアプリケーション１１２をクライアントデバイス１０２にインストールすることに成功し、かつ、アカウントに対してクライアントデバイス１０２から認証することに成功することによって、当該アカウントにクライアントデバイス１０２をリンクさせうる。例えば、ユーザは、アカウントレコードの認証クレデンシャルをクライアントデバイス１０２から制御サーバ１２０へ提供することによって、当該アカウントに対する認証に成功しうる。場合によっては、ユーザがクライアントデバイス１０２からアカウントに対して認証に成功すること、及びクライアントアプリケーション１１２がクライアントデバイス１０２から制御サーバ１２０との通信に成功することの両方の後まで、クライアントデバイス１０２はアカウントにリンクされない。
●アクセス可能なネームスペース｛デバイスＩＤi, ［ネームスペースＩＤ1, ネームスペースＩＤ2, ... ネームスペースＩＤn］｝ − ［デバイスＩＤ1, デバイスＩＤ2, ... デバイスＩＤn］ におけるアカウントにリンクされたクライアントデバイス１０２（デバイスＩＤi）ごとの、クライアントデバイス１０２がアクセスを有するネームスペースの１つ以上の識別子のリスト。いくつかの実施形態では、個人アカウントも、個人アカウントのルートフォルダをルートとしているルートネームスペースに関連付けられる。アクセス可能なネームスペースのリストは、ルートネームスペースを含んでもよいし、又はルートネームスペースを除外してもよい。
【００４１】
いくつかの実施形態において、より少ない及び／又は更なるモジュール、機能、又はデータベースが、コンテンツ管理システム１０８に含まれていてもよい。図１においてコンテンツ管理システム１０８の一部として示されるモジュールは、実施形態の例において実行される機能を表す。
【００４２】
図１では離散的なブロックを描いているが、同図は、機能エレメントの構造的な記載ではなく、いくつかの実施形態の機能的な記載を意図している。当業者は、実際の実装が、種々のコンポーネント間でグループ化又は分割された機能エレメントを有しうることを理解する。同様に、本明細書に記載のデータベースは、１つ以上の結合したデータベース及び／又は１つ以上の分離したデータベースに格納されてもよい。
【００４３】
加えて、図１の１つ以上のブロックは、説明した機能を提供するように設計された１つ以上のサーバ上で実装されてもよい。更に、本明細書の説明では、クライアントデバイス１０２〜１０４に実装される特定の特徴、及びコンテンツ管理システム１０８に実装される特定の特徴に言及しているが、本発明の実施形態は、そのような特徴に限定されない。例えば、コンテンツ管理システム１０８の一部として本明細書で説明した特徴は、その全体又はその一部がクライアントデバイス１０２に実装されうるし、その逆も同様でありうる。
【００４４】
＜ネームスペース＞
ネームスペースは、コンテンツ管理システム１０８において共通のアクセス制御下にあるコンテンツのコレクションである。ネームスペースは、当該ネームスペース内のコンテンツにアクセスすることをユーザの集合に許可するアクセス制御情報を含むパーミッションを有する。パーミッションは、特定のネームスペースについて異なるユーザに対して許可された異なるタイプのアクセスを特定できる。パーミッションについては以降でより詳しく説明する。
【００４５】
ネームスペースは、特定のフォルダをルートとすることができる。しかし、ネームスペースは、フォルダと等価ではなく、全てのフォルダが、当該フォルダをルートとするネームスペースを有するのではない。コンテンツアイテム又はフォルダ等のコンテンツが、特定のネームスペースがルートとしているフォルダから下降する場合、当該コンテンツは、当該特定のネームスペースに帰属する。特定のネームスペースに属するコンテンツは、更に、当該ネームスペースがルートとしているフォルダから下降する階層構造内にある。このため、ネームスペースのルートフォルダは、当該ネームスペースに属するコンテンツを含む特定の階層構造のルートである。
【００４６】
いくつかの実施形態によれば、ネームスペース内のコンテンツアイテムのサブセットのみが、任意の時点においてクライアントデバイス１０２と同期させられる。例えば、いくつかの実施形態では、ユーザが、ネームスペースへのアクセスを許可され、関連するクライアントデバイス１０２を当該ネームスペースと接続すると、ネームスペースメタデータ１１６及び／又は当該ネームスペースに属するコンテンツを含む階層構造を記述する階層データ等の、当該ネームスペースと関連付けられたデータのサブセットのみが、コンテンツ管理システム１０８から自動的にダウンロードされて、クライアントデバイス１０２において格納される。いくつかの実施形態では、階層構造を記述する階層データは、ネームスペースメタデータ１１６として扱われ、ネームスペースメタデータ１１６に含められる。
【００４７】
ネームスペースと関連付けられたデータのサブセットのみが自動的にダウンロードされる場合、ユーザは、クライアントデバイス１０２をより早く当該ネームスペースに参加させることができ、それは、当該ネームスペース内に、１つ以上のネームスペースに関連付けて格納されているコンテンツ１１４の少なくとも一部が、コンテンツアイテムサーバ１１８から通信ネットワーク１０６を介してクライアントデバイス１０２へダウンロードされないためである。更に、これにより、クライアントデバイス１０２において利用可能なストレージ空間の量が、ネームスペースに属するコンテンツ１１４の大部分又は全てを格納するのに必要となるであろう量よりも少ない場合であっても、ユーザがクライアントデバイス１０２を当該ネームスペースへ参加させることが可能になる。
【００４８】
いくつかの実施形態では、提示されるＧＵＩ１１０は、ネームスペースの階層構造の、ユーザがブラウジング可能なインタラクティブ表現を含む。これは、ルートネームスペース、共有ネームスペース、ネスト化ネームスペース、又はそれらの任意の組み合わせ（ただしこれらに限定されない）等の、以降で説明するネームスペースのタイプの１つ以上に適用されうる。いくつかの実施形態によれば、ユーザは、クライアントデバイス１０２のオペレーティングシステムによって提供される、ＭＡＣ ＯＳデバイス上のＦｉｎｄｅｒ、又はＷＩＮＤＯＷＳ（登録商標）デバイス上のＷＩＮＤＯＷＳ ＥＸＰＬＯＲＥＲ（ただしこれらに限定されない）等の、ファイルシステムブラウザを用いて、クライアントデバイス１０２において階層構造をブラウジングできる。
【００４９】
いくつかの実施形態によれば、クライアントデバイス１０２がネームスペースのメンバーになった後に、アクション可能アイコンが、クライアントデバイス１０２のＧＵＩ１１０に現れる。例えば、当該アイコンは、クライアント１０２デバイス上のオペレーティングシステムによって提供されるＧＵＩ１１０のデスクトップ上に現れうる。ユーザは、ネームスペースのコンテンツアイテム階層構造の、ファイルエクスプローラのようなビューを開くために、当該アイコンとのインタラクション（例えば、当該アイコンに対するダブルクリック）を行いうる。更に、ネームスペースのアイコン又は他のインジケーションも、クライアントデバイス１０２上のオペレーティングシステムによって提供されるインタフェースにおいて他のリソースとともに表示されうる。例えば、アクション可能アイコン又はテキストが、搭載ドライブ、共有ドライブ、ネットワークドライブ、又はクライアントデバイス１０２の他の接続されたリソースとともに、ＧＵＩ１１０内でリスト化されうる。そうすることにより、ユーザが、搭載ドライブ、外部ディスク、及びネットワークドライブといった、他の接続されたリソースにアクセスするために知っているなじみのあるロケーションから、ネームスペースにアクセスできる。
【００５０】
＜ルートネームスペース＞
ネームスペースの１つの特定のタイプは、ルートネームスペースである。いくつかの実施形態では、ルートネームスペースは、個人アカウント及び／又はエンティティアカウントのルートフォルダをルートとする。
【００５１】
いくつかの実施形態では、ルートネームスペースは、個人アカウントのルートフォルダをルートとする。ユーザのアカウントと関連付けられたコンテンツアイテム及びフォルダは、ルートフォルダを含む階層構造内に配置され、当該ルートフォルダは、当該階層構造のルートノードである。ルートネームスペースは、例えば上述のＤＲＯＰＢＯＸコンテンツ管理サービスといったクラウドデータストレージサービスのユーザアカウントと関連付けられたコンテンツアイテム及びフォルダを含む。（例えば、有効なユーザ名／パスワードを用いて）アカウントに対する認証に成功することで、ユーザは、当該ユーザのアカウントと関連付けられたルートネームスペース内のドキュメントへのアクセスを黙示的に有する。
【００５２】
いくつかの実施形態では、個人アカウントは、それぞれがルートフォルダをルートとしている複数のルートネームスペースと関連付けられてよい。例えば、ある実施において、複数のルートネームスペースが、ファイルシステムにおいてマウントされている複数のドライブをエミュレートしうる。代替的に及び／又は追加的には、いくつかの実施形態は、各個人アカウントを、１つのルートフォルダ及び１つのルートネームスペースに制限しうる。この場合、ファイルシステムにおいてマウントされている複数のドライブは、ルートフォルダの子フォルダによってエミュレートされるであろう。
【００５３】
いくつかの実施形態では、ルートネームスペースは、エンティティアカウントのルートフォルダをルートとする。エンティティアカウントは、ユーザ又は個人アカウントの集合と関連付けられる。このため、エンティティアカウントのルートフォルダは、共有フォルダと考えることができ、エンティティアカウントのルートネームスペースは、共有されたルートネームスペースと考えることができる。いくつかの実施形態では、エンティティアカウントは、それぞれが当該エンティティアカウントのルートフォルダをルートとしている複数のルートネームスペースと関連付けられうる。パーミッションは、これらのルートネームスペースに対して個別に管理されうる。代替的に及び／又は追加的には、いくつかの実施形態は、各エンティティアカウントを、１つのルートフォルダ及び１つのルートネームスペースに制限しうる。
【００５４】
いくつかの実施形態では、チームと関連付けられたチームフォルダが実装される。チームは、１以上のユーザの集合、又は複数の個人アカウントを含む。しかし、エンティティアカウントは、チームに対して維持されない。チームと関連付けられたコンテンツアイテム及びフォルダは、チームフォルダから下降する階層構造内に配置されており、当該チームフォルダは、当該チームフォルダに属するコンテンツの階層構造のルートノードである。チームネームスペースは、チームフォルダをルートとする。いくつかの実施形態では、チームネームスペースは、ルートネームスペースとして扱われる。代替的に及び／又は追加的には、いくつかの実施形態において、チームネームスペースは、ルートネームスペースではない共有ネームスペースとして扱われる。
【００５５】
＜共有ネームスペース＞
いくつかの実施形態では、コンテンツ管理システム１０８は、１つ以上の共有フォルダを管理する。コンテンツ管理システム１０８は、共有フォルダをネームスペースと関連付け、当該ネームスペースは、共有ネームスペースと考えらえる。本明細書で使用される、共有ネームスペースとの用語は、共有フォルダのような、複数のユーザがアクセスを有しうる共有リソースをルートとしているネームスペースを指す。
【００５６】
コンテンツ管理システム１０８は、共有ネームスペースに対してパーミッションを保持する。当該パーミッションは、共有フォルダから下降する階層構造におけるフォルダ及びコンテンツアイテム等の、共有フォルダ内のコンテンツへのアクセスを許可する。このコンテンツは、共有フォルダをルートしているネームスペースに「属している」とみなされる。
【００５７】
いくつかの実施形態において、ルートフォルダは、共有フォルダであってもよく、即ち、共有ネームスペースは、当該ルートフォルダをルートとしていてもよい。例えば、エンティティアカウントと関連付けられたルートフォルダは、グループと関連付けられたユーザの集合によるアクセスが可能でありうる。共有ルートフォルダは、ジェネリック共有フォルダとして、共有フォルダの個別タイプとして実装されうる。いくつかの実施形態では、共有ルートフォルダは、ユーザの集合を含む、グループ又はチームに関連付けて存在してもよく、このような共有ルートフォルダは、エンティティアカウントのような特定のアカウントと関連付けられる必要はない。
【００５８】
コンテンツ管理システム１０８は、ユーザの集合に対して共有ネームスペースへのアクセスを許可する、共有ネームスペースについてのパーミッションを保持する。パーミッションについては以降でより詳しく議論する。ネームスペースへのアクセスが許可されたユーザの集合は、当該ネームスペースのメンバーと考えられる。いくつかの実施形態では、共有が有効化されたネームスペースは、共有ネームスペースのメンバーの数が１又は０まで現象した場合であっても、共有ネームスペースであると考えられる。
【００５９】
パーミッションは、共有ネームスペースへのアクセスをユーザの集合に対して許可しうる。ユーザの集合に含まれる異なるユーザは、以降でより詳しく説明される、異なるアクセスタイプを有してもよい。共有ネームスペースは、当該共有ネームスペースに属するコンテンツへのアクセスを複数のユーザに許可するパーミッションを保持するために、コンテンツ管理システム１０８によって使用される。しかし、いくつかの実施形態では、共有ネームスペースへのアクセスを許可されたユーザの集合が、１ユーザ又は０ユーザまで減少してもよい。
【００６０】
共有ネームスペースは、共有ルートネームスペースであってもよい。共有ルートネームスペースは、エンティティアカウントのルートフォルダのような、アカウントのルートフォルダをルートとしている。共有ネームスペースは、任意のアカウントのルートフォルダではないフォルダを、ルートとしてもよい。例えば、共有ネームスペースは、第２のネームスペースをルートとしている親フォルダの子フォルダである共有フォルダを、ルートとしてもよい。本明細書で使用される、親フォルダの子フォルダは、階層構造において直接的に又は間接的に当該親フォルダから下降したフォルダである。即ち、親フォルダは、当該親フォルダと子フォルダとの間の中間フォルダの祖先であってもよい。このように、第２のネームスペースは、共有ネームスペースの親ネームスペースである。即ち、この共有フォルダは、親ネームスペースがルートとしている親フォルダから始まる階層構造内にある。この場合、共有ネームスペースは、親ネームスペースの子・共有ネームスペースであり、
共有ネームスペースのマウントロケーションとも称される、親ネームスペースに対して相対的なパスにマウントされる。例えば、図２では、
●ＮＳ＿Ａは、フォルダＡ＿ＲＯＯＴをルートとしており、当該フォルダは、ＮＳ＿Ａのルートフォルダであり、
●ＮＳ＿１は、フォルダＦ１をルートとしており、当該フォルダは、ＮＳ＿１のルートフォルダであり、
●ＮＳ＿Ａは、ＮＳ＿１の親ネームスペースであり、
●ＮＳ＿１は、パス /Ａ＿ｒｏｏｔ/Ｆ１にマウントされる。
【００６１】
いくつかの実施形態では、第１のネームスペースは、第２のネームスペースのパスにマウントされ、当該パスは、第２のネームスペースに対して相対的に特定される。ネスト化ネームスペースについては以降でより詳しく説明する。
【００６２】
いくつかの実施形態では、共有ネームスペースは、異なる同期設定を有しうる。これらの同期設定は、共有ネームスペースへのアクセスを有する全ユーザに対して設定されてもよいし、又は、各ユーザ及び／又は各クライアントデバイス１０２〜１０４に対して個別に設定されてもよい。クラウドのみの同期設定では、共有ネームスペース内のコンテンツは、クラウドアクセスのみのために設定される。オフラインの同期設定では、ネームスペースに属するコンテンツ１１４は、クライアントデバイス１０２において同期され、オフラインアクセスに利用可能である。代替的に及び／又は追加的には、任意の共有フォルダ及び／又は共有フォルダ内のコンテンツアイテムに対して、同期ステータスが設定されてもよい。
【００６３】
クライアントデバイス１０２〜１０４のユーザが、コンテンツの現在の同期設定ステータスを素早く識別できるように、同期設定ステータスアイコンが、共有ネームスペース、共有フォルダ、及び／又はコンテンツアイテムに関連付けて表示されてもよい。例えば、ＧＵＩ１１０は、クライアントデバイス１０２〜１０４の特定のユーザが、どのコンテンツにオフラインアクセスを有するかを視覚的に判断できるようにコンテンツに関連付けて同期設定ステータスアイコンを表示してもよい。
【００６４】
＜ネスト化ネームスペース＞
上記のように、ネームスペースは、共通アクセス制御の下にあるコンテンツのコレクションであり、当該ネームスペース内のコンテンツにアクセスすることをユーザの集合に許可するアクセス制御情報を含むパーミッションを有する。最高レベルでは、ネスト化ネームスペースは、親ネームスペースに対するパーミッションとは異なりうる共通アクセス制御の下にあるコンテンツのコレクションである。ネスト化ネームスペースは、親ネームスペースがルートしている親フォルダから下降する階層構造内にあるフォルダをルートとしうる。ネスト化ネームスペースは、親ネームスペースに対して相対的なパスにおいて当該親ネームスペースに対してマウントされる。ネスト化ネームスペースのマウントについては以降でより詳しく説明する。
【００６５】
いくつかの実施形態では、ネスト化ネームスペースは、親・共有フォルダの内部の共有フォルダをルートしており、親・共有フォルダをルートしている親ネームスペースに対して保持されるパーミッションとは異なるパーミッションを、ネスト化フォルダに対して保持することを許可するために作成された、ネスト化ネームスペースである。例えば、ネスト化ネームスペースは、親ネームスペースへの管理アクセスを有するユーザが、当該親ネームスペース内のコンテンツアイテム又はフォルダを、当該親ネームスペースのメンバーではない他のユーザと共有する場合に、アクセス制御を区別して管理するために、作成されうる。
【００６６】
いくつかの実施形態では、コンテンツアイテム及び／又はフォルダに対して異なるパーミッションを作成する指示を受けた場合を除き、当該コンテンツアイテム及び／又はフォルダに対してネスト化ネームスペースは作成されない。いくつかの実施形態では、ネームスペースは、フォルダのみをルートとしており、個人のコンテンツアイテムに対する固有のパーミッションは、ネームスペースを使用せずに、アイテムごとに保持される。
【００６７】
いくつかの実施形態では、コンテンツ管理システム１０８は、ネスト化ネームスペースに対するパーミッションが、親ネームスペースに対するパーミッションと一致しても、１つ以上のネスト化ネームスペースを保持し続ける。例えば、親ネームスペースのサブフォルダが、当該親ネームスペースのメンバーではない第１のユーザに共有されたためにネスト化ネームスペースが作成された場合、第１のユーザによる当該サブフォルダへのアクセスが無効になったとしても、又は第１のユーザが当該親ネームスペースのメンバーになったとしても、当該ネスト化ネームスペースは保持されうる。
【００６８】
代替的に及び／又は追加的には、ネスト化ネームスペースは、親ネームスペースのパーミッションが、子・ネスト化ネームスペースのパーミッションと一致した場合に無効化されうる。コンテンツ管理システム１０８は、両方の動作、いずれかの動作、又は他の動作を実施しうる。当該動作は、設定を設定するための許可を有するメンバーによって選択された設定等の、ユーザ入力に依存しうる。一実施形態において、ガーベジコレクションの仕組みによって、もはや必要ないネスト化ネームスペースが定期的に削除され、これは、ネスト化ネームスペースのパーミッションが、一致し、かつ、親ネームスペースのパーミッションにマージされうるためである。
【００６９】
ネスト化ネームスペースは、異なるネームスペースにマウントされてもよい。例えば、図２において、ネスト化ネームスペースＮＳ＿５は、ユーザＡの親ネームスペースＮＳ＿３にマウントされる。他方、ネームスペースＮＳ＿５へのアクセスのみを有し、ネームスペースＮＳ＿３へのアクセスを有しない、ユーザＢについては、ネームスペースＮＳ＿５は、ユーザＢのルートネームスペースＮＳ＿Ｂにマウントされる。いくつかの実施形態では、ネスト化ネームスペースのマウントに対する１つ以上の制約が、コンテンツ管理システム１０８によって課せられる。このような制約は、再帰的ループの防止、エラーの防止、複雑度の制御、及び／又は他の理由のために、使用されうる。制約については以降でより詳しく説明する。
【００７０】
図２は、１つ以上の実施形態に係る、２つの階層構造との関連で、ネスト化ネームスペースを含むネームスペースの例を示している。図２は、ユーザＡが利用可能なコンテンツの階層構造２００と、コンテンツ管理システム１０８のようなコンテンツ管理システムによって管理されるユーザＢが利用可能なコンテンツの階層構造２０２とを示している。ルートネームスペースＮＳ＿Ａは、ユーザＡの階層構造２００のルートフォルダＡ＿ＲＯＯＴをルートとしている。ルートネームスペースＮＳ＿Ｂは、ユーザＢの階層構造２０２のルートフォルダＢ＿ＲＯＯＴをルートとしている。
【００７１】
コンテンツ管理システム１０８は、共有フォルダＦ１を管理する。ネームスペースＮＳ＿１は、共有フォルダＦ１をルートとしている。コンテンツ管理システム１０８は、ユーザの第１の集合に対してネームスペースＮＳ＿１へのアクセスを許可する、ネームスペースＮＳ＿１についてのパーミッションを保持する。ネームスペースＮＳ＿１は両方のユーザが利用可能であるため、ネームスペースＮＳ＿１についてのパーミッションは、ユーザＡ及びユーザＢの両方にアクセスを許可する。両ユーザは、ネームスペースＮＳ＿１を、当該両ユーザのルートフォルダであるＡ＿ＲＯＯＴ及びＢ＿ＲＯＯＴにそれぞれマウントしている。
【００７２】
コンテンツ管理システム１０８は、フォルダＦ２も管理する。フォルダＦ２は、フォルダＦ１の子フォルダである。フォルダＦ２は、共有フォルダであるが、フォルダＦ２に対して特別なパーミッションは定められていない。フォルダＦ２は、ネームスペースＮＳ＿１についてのパーミッションに基づいて、ユーザＡ及びユーザＢの両方が利用可能である。いくつかの実施形態では、共有フォルダＦ２についてのパーミッションが、フォルダＦ２が属するネームスペースであるネームスペースＮＳ＿１とは独立して保持される場合を除き、Ｆ２をルートとするネームスペースは存在しない。
【００７３】
コンテンツ管理システム１０８は、フォルダＦ３も管理する。ネームスペースＮＳ＿３は、共有フォルダＦ３をルートとしている。コンテンツ管理システム１０８は、ユーザの第２の集合に対してネームスペースＮＳ＿３へのアクセスを許可する、ネームスペースＮＳ＿３についてのパーミッションを保持する。ネームスペースＮＳ＿３についてのパーミッションは、ユーザＡにアクセスを許可する。ユーザＡは、ネームスペースＮＳ＿３を、ルートネームスペースＮＳ＿Ａにマウントしている。いくつかの実施形態では、ネームスペースＮＳ＿３についてのパーミッションは、ユーザＢにアクセスを許可しないか、又はユーザＢは、ＮＳ＿３にアクセスしないように選択されている。
【００７４】
コンテンツ管理システム１０８は、フォルダＦ４も管理する。フォルダＦ４は、フォルダＦ３の子フォルダである。フォルダＦ４は、共有フォルダであるが、フォルダＦ４に対して特別なパーミッションは定められていない。フォルダＦ４は、ネームスペースＮＳ＿３についてのパーミッションに基づいて、ユーザＡが利用可能である。
【００７５】
コンテンツ管理システムは、フォルダＦ５も管理する。ネームスペースＮＳ＿５は、共有フォルダＦ５をルートとしている。コンテンツ管理システムは、ユーザの第３の集合に対してネームスペースＮＳ＿５へのアクセスを許可する、ネームスペースＮＳ＿５についてのパーミッションを保持する。ネームスペースＮＳ＿５は両方のユーザが利用可能であるため、ネームスペースＮＳ＿５についてのパーミッションは、ユーザＡ及びユーザＢの両方にネームスペースＮＳ＿５へのアクセスを許可する。ユーザＡは、ネームスペースＮＳ＿５をフォルダＦ３にマウントしている一方で、ユーザＢは、ルートフォルダＮＳ＿５を、そのルートフォルダＢ＿ＲＯＯＴにマウントしている。
【００７６】
コンテンツ管理システムは、フォルダＦ６も管理する。Ｆ６は、ユーザＢの、共有されないプライベートフォルダである。フォルダＦ６に対してはネームスペースは設けられていない。
【００７７】
ネームスペースがマウントされるマウントロケーションは、他のネームスペースに対して相対的なパスによって記述されてもよい。いくつかの実施形態では、ネームスペースのマウントロケーションは、アカウントと関連付けられたルートネームスペースに対して相対的なパスによって記述される。いくつかの実施形態では、マウントテーブルが、複数のルートネームスペースに対して保持される。マウントテーブルは、マウントされたネームスペースの識別子、及びルートネームスペースに対して相対的なパスを含む。例えば、ＮＳ＿Ａについてのマウントテーブルは、（ルートネームスペースＮＳ＿Ａに対して相対的に）、
●パス/Ｆ１におけるＮＳ＿１、
●パス/Ｆ３におけるＮＳ＿３、及び
●パス/Ｆ３/Ｆ５におけるＮＳ＿５、を含む。
【００７８】
例えば、ＮＳ＿Ｂについてのマウントテーブルは、（ルートネームスペースＮＳ＿Ｂに対して相対的に）、
●パス/Ｆ１におけるＮＳ＿１、及び
●パス/Ｆ５におけるＮＳ＿５、を含む。
【００７９】
いくつかの実施形態では、１つ以上のタイプのネームスペース（例えば、ルートネームスペース、共有ネームスペース、ネスト化ネームスペース、又はそれらの組み合わせ）が、同じデータ構造、オブジェクトタイプ、及び／又は他の実装メカニズムを使用して実装される。代替的に及び／又は追加的には、１つ以上のタイプのネームスペースが、異なるデータ構造、異なるオブジェクトタイプ、又は他の異なる実装メカニズムを使用して実装されてもよい。
【００８０】
＜ネームスペースを作成するプロセスの例＞
図３は、個別のパーミッションを有する共有フォルダに対応するネスト化ネームスペースを作成するためのプロセスの例を図示するフローチャートである。プロセス３００は、１つ以上のコンピューティングデバイス及び／又はそのプロセッサによって実行されうる。例えば、プロセッサ３００の１つ以上のブロックが、コンピューティングデバイス８００によって実行されてもよい。いくつかの実施形態では、プロセス３００の１つ以上のブロックは、コンテンツ管理システム１０８等のコンテンツ管理システム内の１つ以上のサーバによって実行される。
【００８１】
ブロック３０２において、コンテンツアイテムサーバ１１８等のコンピューティングデバイスは、複数のユーザについて、コンテンツ管理システム１０８等のコンテンツ管理システムに、コンテンツを格納する。当該コンテンツは、複数の階層構造に配置される、複数のコンテンツアイテム及び複数のフォルダを含む。
【００８２】
ブロック３０４において、制御サーバ１２０等のコンピューティングデバイスは、複数のルートネームスペースを設ける。各ルートネームスペースは、１以上のユーザに対応するアカウントの、関連するルートフォルダである。例えば、ルートネームスペースは、ユーザの個人アカウントのルートフォルダをルートとしうる。代替的に及び／又は追加的には、ルートネームスペースは、エンティティアカウントのルートネームスペースへアクセスするためのパーミッションを有するユーザの集合と関連付けられた、当該エンティティアカウントのルートフォルダをルートしうる。
【００８３】
ブロック３０６において、制御サーバ１２０等のコンピューティングデバイスは、複数のフォルダから選択された第１のフォルダをルートとしている第１のネームスペースを設ける。いくつかの実施形態では、第１のネームスペースは、個人アカウント及び／又はエンティティアカウントのルートネームスペースである。いくつかの実施形態では、第１のネームスペースは、個人アカウントの集合と関連付けられたチームフォルダをルートとしているネームスペースである。いくつかの実施形態では、第１のネームスペースは、個人アカウント及び／又はエンティティアカウントのルートネームスペース以外の共有ネームスペースである。
【００８４】
ブロック３０８において、制御サーバ１２０等のコンピューティングデバイスは、第１のネームスペースに対して第１のパーミッションを保持する。第１のパーミッションは、複数のユーザのうちのユーザの第１の集合に対して第１のネームスペースへのアクセスを許可する。
【００８５】
ブロック３１０において、制御サーバ１２０等のコンピューティングデバイスは、複数の階層構造のうちの特定の階層構造において第１のフォルダの子である第２のフォルダを共有することを求める要求を受信する。
【００８６】
ブロック３１２において、制御サーバ１２０等のコンピューティングデバイスは、第２のフォルダをルートとしている第２のネームスペースを設ける。いくつかの実施形態では、第２のネームスペースは、ネスト化ネームスペースである。
【００８７】
ブロック３１４において、制御サーバ１２０等のコンピューティングデバイスは、第２のネームスペースに対して第２のパーミッションを保持する。第２のパーミッションは、複数のユーザのうちのユーザの第２の集合に対して第２のネームスペースへのアクセスを許可する。
【００８８】
ブロック３１６において、プロセス３００は、リターン及び／又は終了を行う。例えば、処理は、次の要求の処理、呼び出しプロセスへの制御の受け渡し、任意の適切なレコード若しくは通知の生成、方法若しくは機能の呼び出しの後のリターン、又は終了に続く。
【００８９】
＜ネームスペースメタデータ＞
ネームスペースメタデータ・データベース１２８は、ネームスペースに関する情報を格納し、当該情報は、クライアントデバイス１０２〜１０４上のネームスペースメタデータ１１６と同期されうる。例えば、ネームスペースメタデータ・データベース１２８は、共有されていない個人アカウントのルートネームスペース共有されているエンティティアカウントのルートネームスペース、他の共有ネームスペース、及び／又は他の共有されていないネームスペースに関する情報を格納しうる。
【００９０】
いくつかの実施形態によれば、ネームスペースメタデータ・データベース１２８は、対応する各ネームスペースに属するコンテンツアイテム及び／又はフォルダの階層構造を記述する階層データを含む。いくつかの実施形態では、各ネームスペースについてレコードの集合が保持され、各レコードは、コンテンツアイテム又はフォルダと、当該ネームスペースに対して相対的な、当該コンテンツアイテム又はフォルダのパスとを示す。このようなレコードは、現在のネームスペース内のマウントロケーションを示す、現在のネームスペースに対して相対的なパスとともに、現在のネームスペースにマウントされている１つ以上のネームスペースを更に含みうる。
【００９１】
いくつかの実施形態によれば、ネームスペースメタデータ・データベース１２８は、ネームスペースに対するアクセス制御情報から成るパーミッションを含む。いくつかの実施形態では、パーミッションは、共有ネームスペース、又は共有フォルダをルートとしているネームスペースに対してのみ保持される。いくつかの実施形態では、パーミッションは、ネームスペース内のコンテンツへのアクセスをユーザの集合に対して許可する。このようなパーミッションは、親ネームスペース内のネスト化ネームスペースに対して保持されるパーミッションの影響下にありうる。即ち、親ネームスペースのメンバーであるユーザは、必ずしも子ネームスペースのメンバーではない。いくつかの実施形態では、ユーザが親ネームスペース及び子ネームスペースの両方のメンバーであっても、当該ユーザは、親ネームスペース及び子ネームスペースに対して同じアクセスタイプを有しない場合がある。
【００９２】
＜パーミッション＞
いずれの（複数の）ユーザ及び／又はユーザの（複数の）グループが、ネームスペースに属するコンテンツへのアクセスを有するかを特定する、又はさもなければ示す、パーミッションが保持される。特定のネームスペースに対するパーミッションが、当該特定のネームスペースへのアクセスを特定のユーザに対して許可する場合、当該特定のネームスペース内のコンテンツは、当該ユーザが利用可能である。パーミッションは、以降でより詳しく説明する、異なるアクセスレベル、又はアクセスタイプを指定しうる。
【００９３】
以降で説明する１つ以上の実施形態は、デバイスを特定せずにユーザにアクセスを許可するパーミッションに言及するが、いずれかの実施形態のパーミッションは、ユーザの全デバイス、ユーザの特定のデバイス、又はその組み合わせに対して具体的にパーミッションが許可されるように、実現されてもよい。
【００９４】
特定のネームスペースに対応するパーミッションは、いずれの（複数の）ユーザ及び／又はユーザの（複数の）グループが、当該ネームスペースに属する、コンテンツアイテム又はフォルダ等のコンテンツへのアクセスを有するかを、特定するか、示すか又はその両方を行う、明示的及び／又は黙示的なパーミッションに基づきうる。特定のネームスペースに対応するパーミッションは、更に、ユーザに許可されたアクセスタイプを特定してもよい。アクセスタイプのいくつかの例が以下に記載されており、アクセスタイプのサブセット、アクセスタイプの上位セット、アクセスタイプの重複セット、又は他のアクセスタイプが実現されうる。
●存在 − このアクセスタイプは、ネームスペースパスを通じたコンテンツアイテム又はフォルダの存在について知ることをユーザに許可する。しかし、ユーザは、当該コンテンツアイテム又はフォルダのコンテンツを開く又は当該コンテンツにアクセスするためのパーミッションを有しない。
●閲覧 − このアクセスタイプは、コンテンツアイテム又はフォルダのコンテンツを開く又は当該コンテンツにアクセスすることをユーザに許可するが、コンテンツの修正はできない。このアクセスタイプは、存在アクセスタイプによって与えられる全アクセス権を含みうる。
●修正 − このアクセスタイプは、コンテンツアイテム又はフォルダのコンテンツを修正することをユーザに許可する。しかし、ユーザは、当該コンテンツアイテム又はフォルダのコンテンツを削除するためのパーミッションを有しない。このアクセスタイプは、閲覧アクセスタイプによって与えられる全アクセス権を含みうる。
●削除 − このアクセスタイプは、ネームスペースからコンテンツアイテム又はフォルダを消去又は削除することをユーザに許可する。このアクセスタイプは、修正アクセスタイプによって与えられる全アクセス権を含みうる。
●管理 − このアクセスタイプは、メンバーの追加及び／又は削除と、子フォルダの共有との少なくともいずれかといった、他のユーザのパーミッションを管理することをユーザに許可する。このアクセスタイプは、削除アクセスタイプによって与えられる全アクセス権を含みうる。
【００９５】
いくつかの実施形態では、特定のネームスペースに対応するパーミッションは、１つ以上のアクセス制御レコードとして保持される。アクセス制御レコードは、個人コンテンツアイテム、個人フォルダ、又は、特定の共有フォルダに対応するネームスペースのような、コンテンツのコレクションに対応しうる。アクセス制御レコードは、グループ化されるてもよいし、インデックスを付けられもよいし、又はさもなければ、ネームスペース、その他の特性によってソートされてもよい。いくつかの実施形態では、アクセス制御レコードは、共有されていないネームスペース、コンテンツアイテム及び／又はフォルダに対して保持される。あるいは、アクセス制御レコードは、共有ワークスペースに属する共有ネームスペース、コンテンツアイテム及び／又はフォルダに対して保持されてもよい。
【００９６】
いくつかの実施形態では、ユーザに対して明示的なアクセス又は黙示的なアクセスを許可する、ネームスペースメタデータ・データベース１２８内のアクセス制御レコードが存在する場合を除き、当該ユーザは、特定のネームスペース、コンテンツアイテム又はフォルダへのアクセスを有しない。
【００９７】
いくつかの実施形態では、ネームスペースに対するパーミッションは、明示的なアクセスを特定のユーザに対して許可する。明示的なアクセスは、例えば、１つ以上のアクセス制御リスト（ＡＣＬ：access control lists）及び／又はネームスペースと関連付けられた他のデータ、又はそれらの識別子の形式で生じる。例えば、特定の共有フォルダが１以上のユーザと共有される場合、当該１以上のユーザは、当該特定の共有フォルダをルートとしている共有ネームスペースに対して保持されているパーミッションに、明示的に追加される。１以上のユーザは、共有ネームスペースの明示的なメンバーである。
【００９８】
いくつかの実施形態では、ネームスペースに対するパーミッションは、黙示的なアクセスを特定のユーザに対して許可する。黙示的なパーミッションが、他のネームスペースに対する明示的なパーミッションから導き出される。例えば、特定のネームスペースに対するパーミッションが、当該特定のネームスペースがマウントされている親ネームスペースから継承されることを特定する場合、当該親ネームスペースへのアクセスを有するユーザは、当該親ネームスペースに対して保持されているパーミッションに基づいて、当該特定のネームスペースへのアクセスを有することになる。これらのメンバーは、特定のネームスペースの黙示的なメンバーである。
【００９９】
いくつかの実施形態では、特定のネームスペースに対するパーミッション及び関係する祖先ネームスペースが、パーミッションが継承されることを特定する場合、当該特定のネームスペースに対する黙示的なパーミッションが、親ネームスペースより上位の祖先ネームスペースから導き出されてもよい。例えば、クライアントデバイスが、特定のネームスペースに属する特定のコンテンツへのアクセスを要求する場合、対応するパーミッションを評価するために、及びユーザが当該特定のネームスペースの黙示的なメンバーであるかを判定するために、ネームスペースの階層構造のトラバーサル（traversal）が実行されてもよい。
【０１００】
いくつかの実施形態において、特定のネームスペース、コンテンツアイテム、又はフォルダについてのアクセス制御レコードは、以下の情報の全て又は当該情報のサブセット若しくは上位セットを含む：
●親ネームスペースＩＤ − 特定のネームスペース、コンテンツアイテム又はフォルダが属する親ネームスペースの識別子。ネームスペースについて、特定のネームスペースがルートネームスペースである場合等には、親ネームスペースＩＤはヌル（NULL）であってもよい。
●継承フラグ − 親ネームスペースＩＤによって特定される親ネームスペースからパーミッションが継承されるべきかを特定する識別子。
●アクセス制御リスト − それぞれが、特定のネームスペース、コンテンツアイテム又はフォルダに関する、ユーザ又はユーザのグループと、当該ユーザ又はユーザのグループに適用する１つ以上のパーミッションとを特定する、１つ以上のアクセス制御アイテムの集合。
【０１０１】
いくつかの実施形態では、共有フォルダが属する親・共有ネームスペース内の共有フォルダについて固有のパーミッションが要求される場合、共有のネスト化ネームスペースが作成される。シチュエーションの例には、親・共有ネームスペースのメンバーではないユーザとのサブフォルダの共有、サブフォルダへの異なるパーミッションタイプの、親・共有ネームスペースのメンバーではないユーザに対する許可、又は、サブフォルダへのアクセスの更なる制限、が含まれるが、これらに限定されない。
【０１０２】
いくつかの実施形態では、共有のネスト化ネームスペースを作成することは、親・共有ネームスペースを識別するための親ネームスペースＩＤを設定すること、及び親ネームスペースからパーミッションが継承されるべきかを示すための継承フラグを設定することを含む。パーミッションは、共有のネスト化ネームスペースと親ネームスペースとに対して保持される。継承フラグの値に依存して、共有のネスト化ネームスペースに対するパーミッションが、親・共有ネームスペースから継承されてもよいし、継承されなくてもよい。
【０１０３】
＜トラバーサル権＞
設定の例において、第１のネームスペースは、第１のフォルダをルートしている共有ネームスペースであり、第２のネームスペースは、コンテンツアイテム又はフォルダの特定の階層構造において第１のフォルダに含まれる第２のフォルダをルートとしている、ネスト化された共有ネームスペースである。このように、第１のネームスペースは、第２のネームスペースの親ネームスペースである。
【０１０４】
ユーザが、第１のネームスペース及び第２のネームスペースへのアクセスを有する場合に、当該ユーザは、第２のフォルダを含む、特定の階層構造における第１のフォルダ及び当該第１のフォルダの子へのアクセスを提供される。ユーザが、第１のネームスペースへのアクセスを有し、かつ、第２のネームスペースへのアクセスを有しない場合に、当該ユーザは、第２のフォルダを除く、特定の階層構造における第１のフォルダ及びその子へのアクセスを提供される。即ち、第２のネームスペースからのユーザの除外は、第２のネームスペースに属する第１のフォルダのコンテンツに対するパーミッションを無効にするように作用するが、否定的なパーミッション（即ち、ユーザが第２のネームスペースへのアクセスを有しない）について、ユーザは、そうでなければ、第１のコンテンツへのアクセスを許可されていたであろう。ユーザが、第２のネームスペースへのアクセスを有し、かつ、第１のネームスペースへのアクセスを有しない場合に、当該ユーザは、第２のフォルダへのアクセスを提供され、第１のフォルダへのアクセスを提供されない。
【０１０５】
いくつかの実施形態では、コンテンツ管理システム１０８は、クライアントデバイス１０２〜１０４に、コンテンツアイテム及びフォルダ等のコンテンツの１つ以上の階層構造を記述する階層データを提供しうる。例えば、階層データは、ファイルシステムのような階層構造をユーザに対して表示すること、当該ファイルシステムのような階層構造を使用して、利用可能なコンテンツのローカルコピーを同期させること、及び／又は、さもなければ当該ファイルシステムのような階層構造に基づいてコンテンツにアクセスすることを、クライアントデバイス１０２〜１０４に許可しうる。いくつかの実施形態では、１つ以上のネームスペースにアクセスするためのパーミッションは、ネームスペース内のコンテンツアイテム及び／又はフォルダの存在について知ることへのアクセスを制限するアクセスタイプ（例えば、存在）を含みうる。存在アクセスタイプは、階層データの閲覧をユーザに許可する。
【０１０６】
図４Ａ〜図４Ｃは、１つ以上の実施形態に係る、パーミッションに基づいて特定のユーザが使用可能な階層データの例を示している。第１のユーザが、少なくとも第１のネームスペースＮＳ＿１及び第２のネームスペースＮＳ＿２への存在アクセスを有する場合、第１のユーザのクライアントデバイスは、第２のフォルダＦ２及びその子孫を含む、第１のフォルダＦ１からの特定の階層構造を記述する階層データ４００の表示、格納、及び／又はさもなければ使用を行うことが可能である。ＮＳ＿１は、第１のユーザのルートフォルダでありうる又は第１のユーザがアクセスを有する他のフォルダでありうるフォルダ４０２をルートとしている他のネームスペース、及び／又はフォルダ４０２を含む他のネームスペースに、マウントされているように示されている。
【０１０７】
第２のユーザが、少なくとも第１のネームスペースＮＳ＿１への存在アクセスを有するが、第２のネームスペースＮＳ＿２への存在アクセスを有しない場合、第２のユーザのクライアントデバイスは、第２のフォルダＦ２及びその子孫を除く、第１のフォルダＦ１からの特定の階層構造を記述する階層データ４０２の表示、格納、及び／又はさもなければ使用を行うことが可能である。ＮＳ＿１は、第２のユーザのルートフォルダでありうる又は第２のユーザがアクセスを有する他のフォルダでありうるフォルダ４１２をルートとしている他のネームスペース、及び／又はフォルダ４１２を含む他のネームスペースに、マウントされているように示されている。
【０１０８】
一実施形態において、第３のユーザが、少なくとも第２のネームスペースＮＳ＿２への存在アクセスを有するが、少なくとも第１のネームスペースＮＳ＿１への閲覧アクセスを有しない場合、第３のユーザのクライアントデバイスは、それでも、第２のフォルダＦ２及びその子孫だけを記述する、階層データ４０２の一部の表示、格納、及び／又はさもなければ使用を行うことが可能である。即ち、ユーザが、フォルダＦ１の他のコンテンツにアクセスできなくとも、当該ユーザは、フォルダＦ２がフォルダＦ１の子であるという情報を提供される。ＮＳ＿２は、第３のユーザのルートフォルダでありうる又は第３のユーザがアクセスを有する他のフォルダでありうるフォルダ４２２をルートとしている他のネームスペース、及び／又はフォルダ４２２を含む他のネームスペースに、マウントされているように示されている。
【０１０９】
＜ネームスペースのマウント＞
ネスト化ネームスペースは、親ネームスペースに対して相対的なパスにおいて当該親ネームスペースに対してマウントされうる。本明細書で使用される、マウント動作は、１つ以上のネームスペースを１つ以上のマウントロケーションからマウント又はアンマウントする動作を指す。いくつかの実施形態では、共有ネームスペースは、複数のユーザによってマウントされうる。いくつかの実施形態では、ユーザは、共有ネームスペースを、当該ユーザのルートネームスペース、又は当該ルートネームスペースから下降した他のネームスペースに対してマウントできる。即ち、共有ネームスペースは、ルートネームスペースに対して相対的なパスを含むマウントロケーションにマウントされる。１つ以上の中間ネームスペースが存在する場合、ルートネームスペースに対して相対的なパスは、ネームスペースをトラバースすることによって構成されうる。
【０１１０】
ネスト化ネームスペースは、他のネスト化ネームスペースにマウントされてもよく、それにより、ネームスペース階層構造が作成される。いくつかの実施形態では、ネスト化のレベルの限度が実装されうる。例えば、マウント動作の実行前に満たされる必要がある制約として、限度が実装されうる。制約については以降でより詳しく説明する。
【０１１１】
いくつかの実施形態では、明示的なメンバーであるユーザのみが、共有ネームスペースを直接的にマウントすることを許可される。即ち、ユーザが、ユーザがメンバーである親ネームスペースからネームスペースがパーミッションを継承することを理由として当該ネームスペースへのアクセスを有するユーザのような、ネームスペースの黙示的なメンバーにすぎない場合、コンテンツ管理システム１０８は、当該ネームスペースをマウントすることをユーザに許可しえない。このようなユーザは、それでも、親ネームスペースを通じてネームスペースにアクセスすることが可能である。
【０１１２】
＜マウント動作を伴うアクション＞
以下のアクションの例は、マウント動作（例えば、１つ以上のマウントロケーションからの１つ以上のネームスペースのマウント又はアンマウント）を伴う。マウント動作を伴う他のアクションは、ネスト化ネームスペース及び当該ネスト化ネームスペースに対して保持されているパーミッションに基づいて実行される。いくつかの実施形態では、以下のアクション及び／又はマウント動作が実行されるか、そのサブセット若しくは上位セットが実行される。これらのアクション及び／又はマウント動作はいずれも、デフォルトの動作として実行されうるか、又は当該アクション及び／又はマウント動作を進めることを許可するよう、関係のあるユーザが促されうる。説明されるマウント動作以外の他の挙動は、これらのアクションのいずれかに応じて実行されてもよい。
【０１１３】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、ユーザが、独特なパーミッションを有する共有フォルダを作成したときであり、ここで、当該共有フォルダは親・共有フォルダ内にある。新たな共有フォルダをルートとしているネスト化ネームスペースが作成される。親・共有フォルダをルートとしている親ネームスペースのメンバーは、当該メンバーがネスト化ネームスペースのメンバーであるかどうかに基づいて、変更を見られるか又は見られない。例えば、ネスト化ネームスペースがパーミッションを継承せず、かつ、親ネームスペースの特定のメンバーが当該ネスト化ネームスペースのメンバーではない場合、当該ネスト化ネームスペースのコンテンツは、当該メンバーのクライアントデバイスから削除されることになる。いくつかの実施形態では、特定のユーザが、ネスト化ネームスペース及び親ネームスペースの両方のメンバーである場合、新たなネスト化ネームスペースについてのネームスペースメタデータの同期が行われる。いくつかの実施形態では、特定のユーザのクライアントデバイス上のＧＵＩは、共有フォルダが独特なパーミッションを有していることを示し得る。特定のユーザが、ネスト化ネームスペースのメンバーにすぎない場合、当該特定のユーザは、当該ネスト化ネームスペースの外部の階層データを受け取ることはない。このようなユーザは、親ネームスペースに気付かないため、本明細書では外部ユーザと称される。
【０１１４】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、子ネームスペースのメンバーが、当該子ネームスペースがマウントされている親ネームスペースのメンバーとして追加されたときである。親ネームスペースへのアクセスをユーザが得ると、子ネームスペースが当該ユーザのルートネームスペースにマウントされている場合には、子ネームスペースは、当該ユーザの親ネームスペースからアンマウントされうるとともに、親ネームスペースは、当該のユーザのルートネームスペースにマウントされうる。ユーザは、子ネームスペースの明示的なメンバーとして維持されるる。
【０１１５】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、ユーザのルートネームスペースにマウントされたネームスペースがルートとしている共有フォルダを、当該ユーザが消去したときである。これに応じて、ユーザが消去を望む共有フォルダをルートとしているネームスペースをアンマウントするマウント動作が実行されうる。共有フォルダ及び対応するネームスペースは、以前として他のユーザが利用可能でありうるとともに、他のユーザ（例えば、他のユーザのネームスペース）に関する、対応するネームスペースのマウントは、影響を受けない。
【０１１６】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、共有ネームスペースがルートとしているチームフォルダにマウントした子・共有フォルダをユーザが消去したときである。ユーザは、子・共有フォルダへの管理アクセスと、親・共有フォルダへの修正アクセスとを有することを求められうる。子・共有フォルダは、外部ユーザを含む、全てのユーザに対しては共有されえない。いくつかの実施形態では、コンテンツ管理システムは、子ネームスペース及び子・共有フォルダと関連付けられたコンテンツを保有する。これは、子・共有フォルダ及びそのコンテンツに対して、データが回復されることを可能にする。
【０１１７】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、ユーザが、親・共有フォルダの外部の子・共有フォルダを、親・共有フォルダをルートとしている親ネームスペース又は親・共有フォルダを含む親ネームスペースとは異なるネームスペースへ移動したときである。ユーザは、親ネームスペースへの修正アクセスと、宛先ネームスペースへの修正アクセスと、移動された子・共有フォルダをルートとしている子ネームスペースへの管理アクセスとを有することが求められうる。外部ユーザは、子ネームスペースに対して維持されるが、親ネームスペースのメンバーシップに基づいてパーミッションを継承した黙示的なユーザはいずれも、もはや子ネームスペースへのアクセスを有しえない。１つの実施形態において、子・共有フォルダが親・共有フォルダの外部へ移動された場合、親ネームスペースへのアクセスを有する子ネームスペースの明示的なメンバーは、子ネームスペースを親ネームスペースからアンマウントし、子ネームスペースを再マウントすることになる。
【０１１８】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、親ネームスペースへのアクセスをユーザに許可するパーミッションが無効にされたが、当該ユーザが以前として親ネームスペースの子ネームスペースへのアクセスを有するときである。この場合、親ネームスペースは、ユーザのルートネームスペースからアンマウントされ、子ネームスペースは、当該ユーザのルートネームスペースへマウントされる。
【０１１９】
いくつかの実施形態では、１つ以上のマウント動作を生じさせる１つのアクションは、ユーザが、特定のネームスペースがルートとしている共有フォルダの名前を変更したときである。ユーザは、当該特定のネームスペースへの修正アクセスを有することを求められうる。いくつかの実施形態では、当該変更は、共有ネームスペースを、その現在の親ネームスペースからアンマウントし、かつ、次に修正後の共有ネームスペースを、現在の親ネームスペースに再マウントすることによって、実現される。このアクションは、親ネームスペース及び特定のネームスペースの両方へアクセスするためのパーミッションを有する全てのユーザに、当該変更の同期を生じさせることになる。
【０１２０】
＜マウントの制約＞
いくつかの実施形態では、１つ以上の制約が、ネームスペースのマウントに課せられる。例えば、コンテンツ管理システム１０８は、１つ以上の制約の集合が、マウント動作を要求するアクションの完了前に満たされることを要求しうる。このような制約は、再帰的ループの防止、アクセスパーミッションの曖昧さの防止、エラーの防止、複雑度の制御、及び／又は他の理由のために、使用されうる。例えば、１つ以上の制約は、巡回グラフを含まない、アカウントと関連付けられたネームスペース内で、従来のファイルシステムの階層構造を強制しうる。
【０１２１】
いくつかの実施形態では、第１の制約は、ルートネームスペースをルートとしていないあらゆる共有ネームスペースの２つ以上のパスに、ネームスペースをマウントできないことを要求する。
即ち、ネームスペースは、ルートネームスペースをルートとしていない２つ以上の親ネームスペースを有することができない。第１の制約は、ルートネームスペース以外の共有ネームスペース内に含まれるコンテンツの階層構造を、単純なディレクトリツリーに制限することと類似している。いくつかの実施形態では、同様に共有ネームスペースであるルートネームスペースを含む、あらゆる共有ネームスペースの２つ以上のパスにルートネームスペースをマウントすることを許可しない、第１の制約のバージョンが実施される。
【０１２２】
いくつかの実施形態では、第１の制約は、ネームスペースを、ルートネームスペース以外の単一の親ネームスペースを識別する単一親ポインタと関連付けることによって、実施される。例えば、親のルートネームスペースと子の共有ネームスペースとの間の親子関係は、親のルートネームスペースについてのネームスペースメタデータにおいて保持されうる。このため、単一親ポインタは、それぞれのルートネームスペースにマウントされている子の共有ネームスペースを有するいずれのアカウントに対するルートネームスペースをも参照する必要がない。
【０１２３】
いくつかの実施形態では、第２の制約は、あらゆるユーザについて、ルートネームスペース又はその子ネームスペースにおける２つ以上のパスに、ネームスペースをマウントできないことを要求する。即ち、各ネームスペースは、ルートネームスペースが祖先である任意の中間ネームスペースを含め、ルートネームスペースに１回マウントできるにすぎない。実施された場合、第２の制約は、ループするシナリオを防ぐことになり、これは、従来のファイルシステム階層構造と整合する。例えば、ネスト化ネームスペースＢが、ネームスペースＡ内でネスト化される場合、ユーザは、Ｂ及びＡを、当該ユーザのルートネームスペースへ直接マウントすることはできず、これは、ネームスペースＡがネスト化ネームスペースＢを含むためであり、これは、ルートネームスペースＢが、当該ユーザのルートネームスペースに２回マウントされることにつながりうる。
【０１２４】
コンテンツ管理システム１０８は、第１の制約、第２の制約、及び１以上の他の制約のうちの１つ以上を含む、満たされるべき制約の集合を要求しうる。１つの実施形態では、コンテンツ管理システム１０８が、特定のネームスペースの特定のパスに第２のネームスペースをマウントすることを求める要求を、特定のユーザから受け付けた場合、コンテンツ管理システム１０８は、１つ以上の制約が満たされるかどうかを判定する。１つ以上の制約の集合が満たされる場合に、第２のネームスペースを、特定のネームスペースにおける特定のパスへマウントする。１つ以上の制約の集合に含まれるいずれの制約も満たされない場合、コンテンツ管理システム１０８は、マウント動作を必要とするアクションが失敗したことを知らせうる。代替的に及び／又は追加的には、コンテンツ管理システム１０８は、デフォルトの動作を実行すること、１つ以上の代替のソリューションをユーザに促すこと、１つ以上の代替のソリューションを実行すること、１つ以上の制約を満たすように要求を解決すること、及び／又は、それらの組み合わせを行いうる。
【０１２５】
＜マウントロック＞
いくつかの実施形態では、１つ以上の制約は、マウントロックを用いて強制される。本明細書で使用される、マウントロックとの用語は、マウントロケーションの変更に関して、対応するネームスペースへのアクセスを制御するための、個人ネームスペースと関連付けられた同期メカニズムを指す。１つ以上の制約について、当該制約を満たすことは、影響を受けるネームスペースについてのマウントロックを得ることを含む。マウント動作の実行に成功するために、影響を受ける各ネームスペースについてマウントロックが得られる必要がある。
【０１２６】
本明細書で使用される、「影響を受けるネームスペース」との用語は、特定のマウント動作を実行するために、対応するマウントロックが保持される必要がある、任意のネームスペースを指す。いくつかの実施形態では、マウント動作のために影響を受けるネームスペースは、マウント動作が実行される対象ネームスペースと、対象ネームスペースの任意の祖先ネームスペースとを含み、マウント動作が、対象ネームスペースに対して新たな親ネームスペースを特定する場合には、当該新たな親ネームスペースと、当該新たな親ネームスペースの任意の祖先ネームスペースとを含む。
【０１２７】
いくつかの実施形態では、以下のマウンド動作についてマウントロックが得られる。
●ネームスペースＮＳ＿Ｘ又はその子孫のいずれかの、他のマウントロケーションへのマウント
●ＮＳ＿Ｘ又はその子孫のいずれかへの、他のネームスペースのマウント
●ＮＳ＿Ｘ又はその子孫のいずれかのアンマウント
●ＮＳ＿Ｘ又はその子孫のいずれかからの、他のネームスペースのアンマウント
【０１２８】
いくつかの実施形態では、ルートネームスペースは、影響を受けるネームスペースの集合から除外される。例えば、影響を受けるネームスペースの集合からルートネームスペースを除外することにより、ルートネームスペースではないあらゆる共有ネームスペースの２以上のパスに第２のネームスペースをマウントできないという制約を強制することを促進できる。ルートネームスペースを除外する１つの方法は、当該ルートネームスペースについてマウントロックを要求しないことである。いくつかの実施形態では、個人アカウントのルートネームスペースのみが、影響を受けるネームスペースの集合から除外される一方、エンティティアカウントのルートネームスペースは含められる。
【０１２９】
図５は、１つ以上の実施形態に係るマウント動作の例に関して取得が成功したマウントロックの例を示している。図５は、ユーザＣが利用可能なコンテンツの階層構造５００と、コンテンツ管理システム１０８のようなコンテンツ管理システムによって管理されるユーザＤが利用可能なコンテンツの階層構造５０２とを示している。ユーザＣについては、ルートネームスペースＮＳ＿Ｃは、ユーザＣの階層構造５００のルートフォルダＣ＿ＲＯＯＴをルートとしている。ユーザＤについては、ルートネームスペースＮＳ＿Ｄは、ユーザＤの階層構造５０２のルートフォルダＤ＿ＲＯＯＴをルートとしている。
【０１３０】
矢印は、ユーザＣが、フォルダＦ１３をフォルダＦ１２へ移動させることを試みることを示す。このアクションを実行するために、ネームスペースＮＳ＿１３は、ルートネームスペースＮＳ＿Ｃからアンマウントされる必要があり、ネームスペースＮＳ＿１３は、ネームスペースＮＳ＿１２にマウントされる必要がある。マウント動作の実行に成功するために、影響を受ける各ネームスペースについてマウントロックが得られる必要がある。
【０１３１】
いくつかの実施形態では、影響を受けるネームスペースには、任意のルートネームスペースを除く、対象ネームスペース及びその祖先が含まれる。ＮＳ＿１３は、マウント動作が実行される対象ネームスペースであるため、影響を受けるネームスペースである。このため、マウントロック５０４が、ＮＳ＿１３について取得される。
【０１３２】
いくつかの実施形態では、影響を受けるネームスペースには、任意のルートネームスペースを除く、新たな親ネームスペース及びその祖先が含まれる。ＮＳ＿１２は、対象ネームスペースについての新たな親ネームスペースであるため、影響を受けるネームスペースである。このため、マウントロック５０６が、ＮＳ＿１２について取得される。ＮＳ＿１１は、ＮＳ＿１２の祖先であるため、影響を受けるネームスペースである。このため、マウントロック５０８が、ＮＳ＿１１について取得される。
【０１３３】
この場合、影響を受けるネームスペースについての全てのマウントロックの取得が成功する。このため、コンテンツ管理システムは、マウント動作の実行、及びマウントロックの解放を行う。
【０１３４】
図６は、１つ以上の実施形態に係るマウント動作の例に関して取得が成功していないマウントロックの例を示している。図６は、図５に示すマウント動作の成功後にユーザＣが利用可能なコンテンツの階層構造６００を示している。図６は更に、ユーザＤが利用可能なコンテンツの階層構造６０２を含んでいる。ユーザＤが、フォルダＦ１４をフォルダＦ１２へマウントすることを試みた場合、マウント動作が要求される。
【０１３５】
マウント動作の実行に成功するために、影響を受ける各ネームスペースについてマウントロックが得られる必要がある。ＮＳ＿１４は、マウント動作が実行される対象ネームスペースであるため、影響を受けるネームスペースである。このため、マウントロック６０４が、ＮＳ＿１４について取得される。
【０１３６】
いくつかの実施形態では、影響を受けるネームスペースには、任意のルートネームスペースを除く、対象ネームスペースの祖先が含まれる。このため、マウントロック６０６〜６１０が、ネームスペースＮＳ＿１３、ＮＳ＿１２及びＮＳ１１について取得される。
【０１３７】
いくつかの実施形態では、影響を受けるネームスペースには、任意のルートネームスペースを除く、新たな親ネームスペース及びその祖先が含まれる。この場合、ユーザＤは、ＮＳ＿１４をＮＳ＿１２にマウントすることを試みているため、影響を受けるネームスペースには、ＮＳ＿１２及びその祖先ネームスペースＮＳ＿１１が含まれる。しかし、ＮＳ＿１２についてのマウントロック６０８が既に保持されているため、マウントロック６１２を得ることはできない。同様に、ＮＳ＿１１についてのマウントロック６１０が既に保持されているため、マウントロック６１４を得ることはできない。
【０１３８】
影響を受けるネームスペースについてのマウントロックの取得に成功しない場合、制約が失敗する。いくつかの実施形態では、制約が失敗した場合、コンテンツ管理システム１０８及び／又はクライアントデバイス１０２〜１０４の他のコンポーネント等へ、マウント動作を要求するアクション及び失敗が報告される。いくつかの実施形態では、デフォルトのリーガルマウント動作を自動的に実行すること、１つ以上の可能性のあるリーガルマウント動作をユーザに促すこと、及び／又は、失敗の原因を解決し、かつ、制約を満たす互換性のあるマウント動作を決定すること等によって、マウント動作を復旧できる。
【０１３９】
＜ネームスペースをマウントするプロセスの例＞
図７は、１つ以上の実施形態に係る、ネームスペースをマウントするためのプロセスの例を図示するフローチャートである。プロセス７００は、１つ以上のコンピューティングデバイス及び／又はそのプロセッサによって実行されうる。例えば、プロセッサ７００の１つ以上のブロックが、コンピューティングデバイス８００によって実行されてもよい。いくつかの実施形態では、プロセス７００の１つ以上のブロックは、コンテンツ管理システム１０８等のコンテンツ管理システム内の１つ以上のサーバによって実行される。
【０１４０】
ブロック７０２において、制御サーバ１２０等のコンピューティングデバイスは、対象ネームスペースに対するマウント動作の実行を求める要求を受け付ける。例えば、当該要求は、１つ以上のネームスペースが、他のネームスペースからマウント及び／又はアンマウントされることを必要とするアクションを含む。
【０１４１】
ブロック７０４において、コンピューティングデバイスは、マウント動作についての１つ以上の影響を受けるネームスペースを判定する。いくつかの実施形態では、対象ネームスペースに加えて、１つ以上の影響を受けるネームスペースの集合は、マウント動作が実行される対象ネームスペースと、対象ネームスペースの任意の祖先ネームスペースとを含み、マウント動作が、対象ネームスペースに対して新たな親ネームスペースを特定する場合には、当該新たな親ネームスペースと、当該新たな親ネームスペースの任意の祖先ネームスペースとを含む。
【０１４２】
ブロック７０６において、コンピューティングデバイスは、影響を受けるネームスペースの集合に含まれる、影響を受けるネームスペースについてマウントロックの取得を試みる。
【０１４３】
ブロック７０８において、影響を受けるネームスペースについてのマウントロックの取得が成功したかどうかが判定される。影響を受けるネームスペースについてのマウントロックの取得が成功したと判定されると、処理がブロック７１０へ進む。
【０１４４】
ブロック７１０において、コンピューティングデバイスは、影響を受けるネームスペースについてのマウントロックを保持しながら、マウント動作を実行する。
【０１４５】
ブロック７１２において、コンピューティングデバイスは、影響を受けるネームスペースの集合についてのマウントロックを解放する。
【０１４６】
判定ブロック７０４に戻り、影響を受けるネームスペースについてのマウントロックの取得が成功しなかったと判定されると、処理がブロック７１４へ進む。ブロック７１４において、要求されたマウント動作が実行されず、マウント動作の実行の失敗が処理される。いくつかの実施形態では、失敗を処理することは、コンテンツ管理システム１０８及び／又は１つ以上のクライアントデバイス１０２〜１０４の他のコンポーネント等の、１つ以上の他のコンポーネントへ失敗を報告することを含む。いくつかの実施形態では、失敗を処理することは、デフォルトのリーガルマウント動作を自動的に実行すること、１つ以上の可能性のあるリーガルマウント動作をユーザに促すこと、及び／又は、失敗の原因を解決し、かつ、制約を満たす互換性のあるマウント動作を決定すること等によって、マウント動作を復旧することを含む。
【０１４７】
ブロック７１６において、プロセス７００は、リターン及び／又は終了を行う。例えば、処理は、次の要求の処理、呼び出しプロセスへの制御の受け渡し、任意の適切なレコード若しくは通知の生成、方法若しくは機能の呼び出しの後のリターン、又は終了に続く。
【０１４８】
＜コンピューティングデバイスの例＞
図８は、１つ以上の実施形態が実施されるコンピューティングデバイスの例のブロック図である。コンピューティングデバイス８００及びその構成要素は、それらの接続、関係、及び機能を含め、例示のみが意図されており、実施形態の例を制限することは意図されていない。実施形態の例の実施に適した他のコンピューティングデバイスは、種々の接続、関係、及び機能を有する構成要素を含む、種々の構成要素を有しうる。
【０１４９】
コンピューティングデバイス８００は、メインメモリ８０６にアドレスするための、及びデバイス８００の種々の構成要素間でデータを転送するための、バス８０２又はその他の通信機構を含みうる。
【０１５０】
コンピューティングデバイス８００は、情報を処理するためのバス８０２と接続された１つ以上のハードウェアプロセッサ８０４を更に含みうる。ハードウェアプロセッサ８０４は、汎用マイクロプロセッサ、システムオンチップ（ＳｏＣ）、又はその他のプロセッサでありうる。
【０１５１】
ランダムアクセスメモリ（ＲＡＭ）又はその他の動的ストレージデバイス等のメインメモリ８０６も、情報又は（複数の）プロセッサ８０４によって実行されるソフトウェア命令を格納するためにバス８０２に接続されうる。メインメモリ８０６は更に、（複数の）プロセッサ８０４によって実行されるソフトウェア命令の実行中に一時変数又はその他の中間情報を格納するために使用されてもよい。
【０１５２】
（複数の）プロセッサ８０４へアクセス可能な、コンピュータで読み取り可能なストレージ媒体に格納される場合、ソフトウェア命令は、コンピューティングデバイス８００を、ソフトウェア命令に特定された動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスにする。「ソフトウェア」、「ソフトウェア命令」、「コンピュータプログラム」、「コンピュータで実行可能な命令」、及び「プロセッサで実行可能な命令」は、人間が読み取り可能であろうとなかろうと、特定の動作を実行するようコンピューティングデバイスに命令するための、機械で実行可能なあらゆる情報をカバーするよう広く解釈されるべきであり、アプリケーションソフトウェア、デスクトップアプリケーション、スクリプト、バイナリ、オペレーティングシステム、デバイスドライバ、ブートローダ、シェル、ユーティリティ、システムソフトウェア、ＪＡＶＡＳＣＲＩＰＴ（登録商標）、ウェブページ、ウェブアプリケーション、プラグイン、組み込みソフトウェア、マイクロコード、コンパイラ、デバッガ、インタプリタ、仮想マシン、リンカー、及びテキストエディタを含むが、それらに限定されない。
【０１５３】
コンピューティングデバイス８００は更に、静的情報及び（複数の）プロセッサ８０４へのソフトウェア命令を格納するためにバス８０２に接続された、読み取り専用メモリ（ＲＯＭ）８０８又はその他の静的ストレージデバイスを含む。
【０１５４】
１つ以上のマスストレージ８１０は、磁気、光学、ソリッドステート、光磁気、フラッシュメモリ、又はその他の利用可能なマスストレージ技術といった、固定メディア又はリムーバブルメディアに、情報及びソフトウェア命令を永続的に格納するためにバス８０２に接続されうる。マスストレージは、ネットワーク上で共有されてもよいし、又は専用のマスストレージであってもよい。典型的には、マスストレージデバイス８１０（例えば、デバイス用のメインハードディスク）の少なくとも１つは、他のあらゆる種類の他のデータファイルだけでなく、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、及び他のサポートファイルを含む、コンピューティングデバイスの動作を命令するためのプログラム及びデータの本体を格納している。
【０１５５】
コンピューティングデバイス８００は、バス８０２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）等のディスプレイ８１２と接続されうる。いくつかの構成では、タッチ検出技術（例えば、抵抗性、容量性等）を組み込んだタッチセンシティブ面が、タッチジェスチャ（例えば、指又はスライタス）入力を（複数の）プロセッサ８０４へ伝達するタッチセンシティブディスプレイを形成するために、ディスプレイ８１２に重ね合わせられうる。
【０１５６】
入力デバイス８１４は、英数字キー又は他のキーを含み、情報及びコマンドの選択をプロセッサ８０４へ伝達するためにバス８０２に接続されうる。英数字キー又は他のキーに加えて、又はそれに代えて、入力デバイス８１４は、例えば、電源（オン／オフ）ボタン、「ホーム」ボタン、音量調節ボタン等の、１つ以上の物理ボタン又はスイッチを含んでもよい。
【０１５７】
他のタイプのユーザ入力デバイスは、プロセッサ８０４へ方向情報やコマンドの選択を伝達し、ディスプレイ８１２上でのカーソルの移動を制御するための、マウス、トラックボール、カーソル方向キー等の、カーソルコントロール８１６であってもよい。当該入力デバイスは、通常、デバイスが平面上の位置を特定することが可能になる第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の２つの軸の２つの自由度を有する。
【０１５８】
図８に示す構成のようないくつかの構成では、１つ以上のディスプレイ８１２、入力デバイス８１４、及びカーソルコントロール８１６は、コンピューティングデバイス８００の外部コンポーネント（例えば、周辺機器）であるが、他の構成では、ディスプレイ８１２、入力デバイス８１４、及びカーソルコントロール８１６の一部又は全ては、コンピューティングデバイス８００の形成要素の一部として統合される。
【０１５９】
開示したシステム、方法及びモジュールの機能は、メインメモリ８０６に含まれるソフトウェア命令の１つ以上のプログラムを（複数の）プロセッサ８０４が実行することに応じて、コンピューティングデバイス８００によって実行されうる。そのようなソフトウェア命令は、（複数の）ストレージデバイス８１０等の他のストレージ媒体からメインメモリ８０６へ読み込まれてもよい。メインメモリ８０６に含まれるソフトウェアプログラム命令の実行は、（複数の）プロセッサ８０４に、（複数の）実施形態の例の機能を実行させる。
【０１６０】
（複数の）実施形態の例の機能及び動作は、全体がソフトウェア命令によって実施されうるが、他の実施形態では、コンピューティングデバイス８００のハードワイヤード回路又はプログラム可能回路（例えば、ＡＳＩＣ、ＦＰＧＡ等）が、間近の具体的な実施の要件に従って機能を実行するために、ソフトウェア命令に代えて又はソフトウェア命令と組み合わせて使用されてもよい。
【０１６１】
本明細書で使用される「ストレージ媒体」との用語は、特定の様式でコンピューティングデバイスを動作させるデータ及び／又はソフトウェア命令を格納する、非一時的な任意の媒体として参照される。そのようなストレージ媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えてもよい。不揮発性の媒体は、例えば、ストレージデバイス８１０等の不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、フラッシュメモリ、光学ディスク、磁気ディスク、又はソリッドステートドライブを含む。揮発性の媒体は、メインメモリ８０６等のダイナミックメモリを含む。ストレージ媒体の共通の形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は、他の任意の磁気データストレージ媒体、ＣＤ−ＲＯＭ、他の任意の光学データストレージ媒体、ホールのパターンを有する任意の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ，フラッシュメモリ、他の任意のメモリチップ若しくはカートリッジを含む。
【０１６２】
ストレージ媒体は、伝送媒体とは区別されるものの、伝送媒体とともに使用されてもよい。伝送媒体は、ストレージ媒体間で情報を転送することに使用されてもよい。例えば、伝送媒体は、バス８０２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。伝送媒体は、電波及び赤外線のデータ通信中に生成されるような音波又は光波の形式をとることもできる。
【０１６３】
種々の形式の媒体が、（複数の）プロセッサ８０４に対する、実行用の１つ以上のソフトウェア命令から成る１つ以上のシーケンスを担持することに関与しうる。例えば、当該ソフトウェア命令は、初期的には、磁気ディスク又はリモートコンピュータのソリッドステートドライブ上に担持されうる。リモートコンピュータが、当該ソフトウェア命令をダイナミックメモリにロードし、モデムを使用して電話線を介して当該ソフトウェア命令を送信できる。コンピューティングデバイス８００に対してローカルなモデムが、電話線でデータを受信し、赤外線送信機を使用して当該データを赤外線信号に変換できる。赤外線検出器が、赤外線信号で運ばれるデータを受信でき、適切な回路が、当該データをバス８０２に入れることができる。バス８０２は、当該データをメインメモリ８０６へ運び、そこから（複数の）プロセッサ８０４がソフトウェア命令を取り出して実行する。メインメモリ８０６によって受信されたソフトウェア命令は、オプションで、（複数の）プロセッサ８０４による実行の前又は後に（複数の）ストレージデバイス８１０に格納されてもよい。
【０１６４】
コンピューティングデバイス８００は更に、バス８０２に接続された１つ以上の通信インタフェース８１８を含みうる。通信インタフェース８１８は、ローカルネットワーク８２２（例えば、イーサネット（登録商標）ネットワーク、無線ローカルエリアネットワーク、携帯電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線ネットワーク等）に接続された有線又は無線のネットワークリンク８２０に結合している双方向のデータ通信を提供する。通信インタフェース８１８は、種々のタイプの情報を表すデジタルデータストリームを運ぶ電気信号、電磁気信号、又は光信号を送信及び受信する。例えば、通信インタフェース８１８は、有線ネットワークインタフェースカード、組み込み無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、若しくはケーブルモデム）であってもよい。
【０１６５】
（複数の）ネットワークリンク８２０は、典型的には、他のデータデバイスへの１つ以上のネットワークを介したデータ通信を提供する。例えば、ネットワークリンク８２０は、ローカルネットワーク８２２を通じて、ホストコンピュータ８２４へのコネクション、又はインターネットサービスプロバイダ（ＩＳＰ）８２６によって運用されるデータ機器へのコネクションを提供しうる。そして、ＩＳＰ８２６は、今日では一般に「インターネット」８２８と称される、世界的なパケットデータ通信ネットワークを通じて、データ通信サービスを提供する。（複数の）ローカルネットワーク８２２及びインターネット８２８は、デジタルデータストリームを運ぶ電気信号、電磁気信号、又は光信号を使用する。種々のネットワークを通る信号、並びに（複数の）ネットワークリンク８２０上の信号及び（複数の）通信インタフェース８１８を通る信号は、コンピューティングデバイス８００へのデジタルデータ及び当該デバイスからのデジタルデータを運び、伝送媒体の形態の例である。
【０１６６】
コンピューティングデバイス８００は、（複数の）ネットワーク、（複数の）ネットワークリンク８２０、及び（複数の）通信インタフェース８１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信することができる。インターネットの例では、サーバ８３０は、インターネット８２８、ＩＳＰ８２６、（複数の）ローカルネットワーク８２２、及び（複数の）通信インタフェース８１８を通じて、アプリケーションプログラムに対して要求されるコードを送信するかもしれない。
【０１６７】
受信コードは、受信した際にプロセッサ８０４によって実行されてもよく、及び、後の実行のためにストレージデバイス８１０又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われてもよい。
【０１６８】
＜ソフトウェアシステムの例＞
図９は、コンピューティングデバイス８００の動作を制御するために用いられうる基本的なソフトウェアシステム９００のブロック図である。ソフトウェアシステム９００及びその構成要素は、それらの接続、関係、及び機能を含め、例示のみが意図されており、（複数の）実施形態の例を制限することは意図されていない。（複数の）実施形態の例の実施に適した他のソフトウェアシステムは、種々の接続、関係、及び機能を有する構成要素を含む、種々の構成要素を有しうる。
【０１６９】
ソフトウェアシステム９００は、コンピューティングデバイス８００の動作を命令するために提供される。ソフトウェアシステム９００は、システムメモリ（ＲＡＭ）８０６内に格納されてよく、また、固定ストレージ（例えば、ハードディスク又はフラッシュメモリ）８１０に格納されてよく、カーネル又はオペレーティングシステム（ＯＳ）９１０を含む。ＯＳ９１０は、プロセスの実行、メモリの割り当て、ファイルの入出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏを含む、コンピュータ動作の低レベルの側面を管理する。図９において９０２Ａ，９０２Ｂ，９０２Ｃ，... ９０２Ｎとして表される、１つ以上のアプリケーションプログラムは、システム９００による実行のために「ロード」されうる（即ち、固定ストレージ８１０からメモリ８０６へ転送されうる）。デバイス９００での使用が意図されたアプリケーション又は他のソフトウェアは更に、
例えば、インターネットロケーション（例えば、Ｗｅｂサーバ）からのダウンロード及びインストールのために、ダウロード可能な、コンピュータで実行可能な命令のセットとして、格納されてもよい。
【０１７０】
ソフトウェアシステム９００は、グラフィカルな（例えば、「ポイント・アンド・クリック」又は「タッチジェスチャ」）方法でユーザコマンド及びデータを受け付けるための、グラフィカルユーザインタフェース（ＧＵＩ）９１５を含む。そして、これらの入力は、オペレーティングシステム９１０及び／又は（複数の）アプリケーション９０２からの命令に従って、システム９００によって作用されうる。ＧＵＩ９１５は更に、ユーザが追加の入力を提供又はセッションを終了（例えば、ログオフ）すると、ＯＳ９１０及び（複数の）アプリケーション９０２からの動作の結果を表示する働きをする。
【０１７１】
ＯＳ９１０は、デバイス８００のベア・ハードウェア（例えば、（複数の）プロセッサ８０４）上で直接実行できる。あるいは、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）９３０が、ベア・ハードウェア９２０とＯＳ９１０との間に介在してもよい。この構成では、ＶＭＭ９３０は、ＯＳ９１０とデバイス８００のベア・ハードウェア９２０との間のソフトウェア「クッション」又は仮想レイヤとして機能する。
【０１７２】
ＶＭＭ９３０は、１つ以上の仮想マシン・インスタンス（「ゲストマシン」）を生成して実行する。各ゲストマシンは、ＯＳ９１０のような「ゲスト」オペレーティングシステムと、ゲスト・オペレーティングシステム上で実行するよう設計された、（複数の）アプリケーション９０２のような１つ以上のアプリケーションとを備える。ＶＭＭ９３０は、ゲスト・オペレーティングシステムに仮想オペレーティングプラットフォームを与え、ゲスト・オペレーティングシステムの実行を管理する。
【０１７３】
場合によっては、ＶＭＭ９３０は、ゲスト・オペレーティングシステムが、あたかもデバイス８００のベア・ハードウェア９２０上で直接動作しているかのうように動作することを可能にしうる。この場合、ベア・ハードウェア９２０上で実行するよう構成されたゲスト・オペレーティングシステムの同じバージョンも、直接、修正又は再構成なしでＶＭＭ９３０上で実行することが可能であってもよい。言い換えれば、ＶＭＭ９３０は、場合によってはゲスト・オペレーティングシステムに対してフル・ハードウェア及びＣＰＵ仮想化を提供しうる。
【０１７４】
その他の場合において、ゲスト・オペレーティングシステムは、効率化のため、ＶＭＭ９３０上で実行するよう、特別に構成又は設計されてもよい。この場合には、ゲスト・オペレーティングシステムは、仮想マシンモニタ上で実行することを「知っている」。言い換えれば、ＶＭＭ９３０は、場合によってはゲスト・オペレーティングシステムに対して準仮想化（para-virtualization）を提供しうる。
【０１７５】
上述の基本的なコンピュータハードウェア及びソフトウェアは、（複数の）実施形態の例の実施のために採用されうる、基礎となる基本的なコンピュータコンポーネントの例を説明する目的で与えられている。しかし、（複数の）実施形態の例は、任意の特定のコンピューティング環境又はコンピューティングデバイス構成に限定されない。その代わりに、当該（複数の）実施形態の例は、当業者が本開示を考慮して、本明細書で提示される（複数の）実施形態の例の特徴及び機能をサポートできるものと理解する、任意のタイプのシステム構成又は処理環境において実施されうる。
【０１７６】
上述の明細書では、多数の具体的詳細を参照して本発明の（複数の）実施形態の例について説明してきた。しかし、当該詳細は、間近の具体的な実施の要件に従って実施ごとに変化してもよい。したがって、上記（複数の）実施形態の例は、限定的ではなく例示的な意味で考えられるべきである。
なお、本願の出願当初の特許請求の範囲に記載された発明を以下に付記する。
［Ｃ１］
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによる実行のための１つ以上のコンピュータプログラムを格納した、コンピュータで読み取り可能な１つ以上の媒体と、を備え、前記１つ以上のコンピュータプログラムは、
複数のユーザに対するコンテンツであって、複数の階層構造内に配置されている複数のコンテンツアイテム及び複数のフォルダを含む前記コンテンツを、コンテンツ管理システムに格納することと、
複数のルートネームスペースを設けることと、ここで、前記複数のルートネームスペースの各ルートネームスペースは、アカウントのルートフォルダをルートとしており、
前記複数のフォルダから選択された第１のフォルダをルートとしている第１のネームスペースを設けることと、
前記複数のユーザのうちのユーザの第１の集合に対して前記第１のネームスペースへのアクセスを許可する第１のパーミッションであって、前記第１のネームスペースに対する前記第１のパーミッションを保持することと、
前記複数の階層構造のうちの特定の階層構造において前記第１のフォルダの子である第２のフォルダを共有することを求める要求を受け付けることと、
前記第２のフォルダをルートとしている第２のネームスペースを設けることと、
前記複数のユーザのうちのユーザの第２の集合に対して前記第２のネームスペースへのアクセスを許可する第２のパーミッションであって、前記第２のネームスペースに対する  前記第２のパーミッションを保持することと、
を行うための命令を含む、システム。
［Ｃ２］
Ｃ１に記載のシステムであって、前記１つ以上のコンピュータプログラムは、更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のユーザが有することを判定することと、
前記特定のユーザが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダを含む、前記特定の階層構造における前記第１のフォルダ及びそのフォルダの子へのアクセスを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダを除く、前記特定の階層構造における前記第１のフォルダ及びその子へのアクセスを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダへのアクセスを、前記特定のユーザに提供することと、
を行うための命令を含む、システム。
［Ｃ３］
Ｃ１に記載のシステムであって、前記第１のネームスペースは、共有ネームスペースであり、前記第１のフォルダは、前記第１のネームスペースの共有フォルダである、システム。
［Ｃ４］
Ｃ１に記載のシステムであって、
前記第１のフォルダは、エンティティアカウントのルートフォルダを含むサブツリー内にあり、
ユーザの前記第１の集合は、前記エンティティアカウントと関連付けられたユーザのサブセットを少なくとも含む、システム。
［Ｃ５］
Ｃ１に記載のシステムであって、前記１つ以上のコンピュータプログラムは、更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のユーザが有することを判定することと、
前記特定のユーザが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダ及びその子孫を含む、前記特定の階層構造を記述している階層データを、前記特定のユーザに提供することと、 
前記特定のユーザが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダ及びその子孫を含まない、前記特定の階層構造を記述している階層データを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダのサブツリーを記述している階層データを、前記特定のユーザに提供することと、
を行うための命令を含む、システム。
［Ｃ６］
Ｃ１に記載のシステムであって、前記１つ以上のコンピュータプログラムは、更に、
前記第２のネームスペースの親フォルダを、前記第１のネームスペースにおけるパスとして設定することと、
前記親のネームスペースからパーミッションが継承されるべきであるかどうかを示す、前記第２のネームスペースに対するパーミッション継承フラグを設定することと、
前記パーミッション継承フラグが、前記親のネームスペースからパーミッションが継承されるべきであることを示す場合に、ユーザの前記第２の集合内のユーザの前記第１の集合を含む前記第２のネームスペースに対して前記第２のパーミッションを保持することと、
を行うための命令を含む、システム。
［Ｃ７］
Ｃ１に記載のシステムであって、前記１つ以上のコンピュータプログラムは、更に、
前記特定のネームスペースにおける特定のパスへ前記第２のネームスペースをマウントすることを求める要求を、前記特定のネームスペースへのアクセスを有する特定のユーザから受け付けることと、
ここで、前記第２のパーミッションは、前記第２のネームスペースへのアクセスを前記特定のユーザに許可し、
１つ以上の制約の集合が満たされるかどうかを判定することと、
１つ以上の制約の集合が満たされる場合に、前記第２のネームスペースを、前記特定のネームスペースにおける前記特定のパスへマウントすることと、
を行うための命令を含む、システム。
［Ｃ８］
Ｃ７に記載のシステムであって、１つ以上の制約の前記集合は、ルートネームスペースではない共有ネームスペースにおける２つ以上のパスに、前記第２のネームスペースをマウントできないという制約を含む、システム。
［Ｃ９］
Ｃ７に記載のシステムであって、１つ以上の制約の前記集合は、ユーザの前記第２の集合のユーザについて、ルートネームスペース又はその子ネームスペースにおける２つ以上のパスに前記第２のネームスペースをマウントできないという制約を含む、システム。
［Ｃ１０］
Ｃ１に記載のシステムであって、前記１つ以上のコンピュータプログラムは、更に、
前記第２のネームスペースに関係するマウント動作を実行することを求める要求を、特定のユーザから受け付けることと、
１つ以上の影響を受けるネームスペースについての１つ以上のマウントロックを取得することによって、少なくとも１つの制約を強制することであって、前記１つ以上のマウントロックが取得できない場合に前記マウント動作が失敗する、前記強制することと、
を行うための命令を含む、システム。
［Ｃ１１］
方法であって、
１つ以上のプロセッサと、前記方法を実行するために前記１つ以上のプロセッサによって実行される１つ以上のコンピュータプログラムを格納したメモリと、を備える１つ以上のコンピューティングデバイスにおいて、
複数のユーザに対するコンテンツであって、複数の階層構造内に配置されている複数のコンテンツアイテム及び複数のフォルダを含む前記コンテンツを、コンテンツ管理システムに格納することと、
複数のルートネームスペースを設けることと、ここで、前記複数のルートネームスペースの各ルートネームスペースは、アカウントのルートフォルダをルートとしており、
前記複数のフォルダから選択された第１のフォルダをルートとしている第１のネームスペースを設けることと、
前記複数のユーザのうちのユーザの第１の集合に対して前記第１のネームスペースへのアクセスを許可する第１のパーミッションであって、前記第１のネームスペースに対する前記第１のパーミッションを保持することと、
前記複数の階層構造のうちの特定の階層構造において前記第１のフォルダの子である第２のフォルダを共有することを求める要求を受け付けることと、
前記第２のフォルダをルートとしている第２のネームスペースを設けることと、
前記複数のユーザのうちのユーザの第２の集合に対して前記第２のネームスペースへのアクセスを許可する第２のパーミッションであって、前記第２のネームスペースに対する前記第２のパーミッションを保持することと、
を含む動作を実行することを含む、方法。
［Ｃ１２］
Ｃ１１に記載の方法であって、更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のユーザが有することを判定することと、
前記特定のユーザが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダを含む、前記特定の階層構造における前記第１のフォルダ及びそのフォルダの子へのアクセスを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダを除く、前記特定の階層構造における前記第１のフォルダ及びその子へのアクセスを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダへのアクセスを、前記特定のユーザに提供することと、
を含む、方法。
［Ｃ１３］
Ｃ１１に記載の方法であって、前記第１のネームスペースは、共有ネームスペースであり、前記第１のフォルダは、前記第１のネームスペースの共有フォルダである、方法。
［Ｃ１４］
Ｃ１１に記載の方法であって、
前記第１のフォルダは、エンティティアカウントのルートフォルダを含むサブツリー内にあり、
ユーザの前記第１の集合は、前記エンティティアカウントと関連付けられたユーザのサブセットを少なくとも含む、方法。
［Ｃ１５］
Ｃ１１に記載の方法であって、更に、
前記第１のパーミッション及び前記第２のパーミッションの少なくとも１つに基づいて、前記第１のネームスペース及び前記第２のネームスペースの少なくとも１つへのアクセスを特定のユーザが有することを判定することと、
前記特定のユーザが、前記第１のネームスペース及び前記第２のネームスペースへのアクセスを有する場合に、前記第２のフォルダ及びその子孫を含む、前記特定の階層構造を記述している階層データを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第１のネームスペースへのアクセスを有し、かつ、前記第２のネームスペースへのアクセスを有しない場合に、前記第２のフォルダ及びその子孫を含まない、前記特定の階層構造を記述している階層データを、前記特定のユーザに提供することと、
前記特定のユーザが、前記第２のネームスペースへのアクセスを有し、かつ、前記第１のネームスペースへのアクセスを有しない場合に、前記第２のフォルダのサブツリーを記述している階層データを、前記特定のユーザに提供することと、
を含む、方法。
［Ｃ１６］
Ｃ１１に記載の方法であって、更に、
前記第２のネームスペースの親フォルダを、前記第１のネームスペースにおけるパスとして設定することと、
前記親のネームスペースからパーミッションが継承されるべきであるかどうかを示す、前記第２のネームスペースに対するパーミッション継承フラグを設定することと、
前記パーミッション継承フラグが、前記親のネームスペースからパーミッションが継承されるべきであることを示す場合に、ユーザの前記第２の集合内のユーザの前記第１の集合を含む前記第２のネームスペースに対して前記第２のパーミッションを保持することと、
を含む、方法。
［Ｃ１７］
Ｃ１１に記載の方法であって、更に、
前記特定のネームスペースにおける特定のパスへ前記第２のネームスペースをマウントすることを求める要求を、前記特定のネームスペースへのアクセスを有する特定のユーザから受け付けることと、
ここで、前記第２のパーミッションは、前記第２のネームスペースへのアクセスを前記特定のユーザに許可し、
１つ以上の制約の集合が満たされるかどうかを判定することと、
１つ以上の制約の集合が満たされる場合に、前記第２のネームスペースを、前記特定のネームスペースにおける前記特定のパスへマウントすることと、
を含む、方法。
［Ｃ１８］
Ｃ１７に記載の方法であって、１つ以上の制約の前記集合は、ルートネームスペースではない共有ネームスペースにおける２つ以上のパスに、前記第２のネームスペースをマウントできないという制約を含む、方法。
［Ｃ１９］
Ｃ１７に記載の方法であって、１つ以上の制約の前記集合は、ユーザの前記第２の集合のユーザについて、ルートネームスペース又はその子ネームスペースにおける２つ以上のパスに前記第２のネームスペースをマウントできないという制約を含む、方法。
［Ｃ２０］
Ｃ１１に記載の方法であって、更に、
前記第２のネームスペースに関係するマウント動作を実行することを求める要求を、特定のユーザから受け付けることと、
１つ以上の影響を受けるネームスペースについての１つ以上のマウントロックを取得することによって、少なくとも１つの制約を強制することであって、前記１つ以上のマウントロックが取得できない場合に前記マウント動作が失敗する、前記強制することと、
を含む、方法。
［Ｃ２１］
１つ以上のコンピュータの１つ以上のプロセッサによって実行された場合に、Ｃ１１からＣ２０のいずれか１項に記載の方法を実行させる、１つ以上のプログラムを格納した、１つ以上の非一時的なコンピュータ読み取り可能媒体。
【図１】
0006522780.tif 000002
【図２】
0006522780.tif 000003
【図３】
0006522780.tif 000004
【図４】
0006522780.tif 000005
【図５】
0006522780.tif 000006
【図６】
0006522780.tif 000007
【図７】
0006522780.tif 000008
【図８】
0006522780.tif 000009
【図９】
0006522780.tif 000010