(57)【要約】本発明は、アプリケーションプログラム（３７Ａ）の旧バージョン、アクティブバージョン、および将来のバージョンと互換性のある拡張可能ファイル形式を規定することができる。本発明では、ファイルバージョン透かしをアプリケーションプログラムのオリジナルデータファイルに入れることができる。ファイルバージョン透かしは、オリジナルデータファイルのさまざまなプロパティを示すことができる。ファイルバージョン透かしには、上位バージョン透かし、最終バージョン透かし、低位バージョン透かし、作成バージョン透かし、およびオブジェクト（１００）バージョン透かしがある。各ファイルバージョン透かしは、ファイルに加えられた変更、追加、または削除を示すことができる。本発明では、ファイルバージョン透かしを使用して、ファイル、またはファイル内の特定の情報がアプリケーションプログラムの旧バージョンに対応するのか、アクティブバージョンに対応するのか、それとも将来のバージョンに対応するのかを判別することができる。したがって、本発明は、判別の実行結果に基づいてオリジナルデータファイルのロードまたは保存を行うことができる。
2005539277.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムのアクティブバージョンおよび後のバージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに上位バージョン透かしを入れて、前記上位バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最高位バージョンであることを示すステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの後のバージョンに対応しているかどうかを判別するために、前記上位バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイルが前記後のバージョンに対応していると判断されたときに、前記ロードするステップは、
前記オリジナルデータファイル内の未知の情報を無視するステップと、
前記オリジナルデータファイルから知られている情報を前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項２】
前記オリジナルデータファイルはオブジェクトプロパティリストを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記オブジェクトプロパティリストはオブジェクトプロパティリスト配列を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記オブジェクトプロパティリスト配列内のオブジェクトの位置を追跡するステップと、
前記追跡ステップにおいて追跡された前記オブジェクトの位置に基づき前記オブジェクトプロパティリスト配列を更新するステップと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記未知の情報および知られている情報はそれぞれ、オブジェクトプロパティリストのプロパティを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記オリジナルデータファイルの修正されたバージョンを保存するステップをさらに含み、前記保存するステップは、
前記オリジナルデータファイルからの前記知られている情報を前記修正されたバージョンからの情報で上書きするステップと、
前記オリジナルデータファイルからの前記未知の情報を保持しておき、前記後のバージョンで前記未知の情報を利用できるようにするステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記最終バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較することによって前記オリジナルデータファイルの特性を判別するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記判別するステップで、前記最終バージョン透かしが前記アクティブバージョンよりも前のバージョンである前記アプリケーションプログラムのバージョンに対応すると判断したときに、前記オリジナルデータファイル内の情報に基づき前記アプリケーションプログラムのアクティブバージョンで情報を変換するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
さらに、
前記オリジナルデータファイルに低位バージョン透かしを入れて、前記低位バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記低位バージョン透かしを前記アプリケーションプログラムの前記アクティブバージョンと比較して前記オリジナルデータファイルの特性を判別するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記オリジナルデータファイルにオブジェクトのオブジェクトバージョン透かしを入れ、前記オブジェクトバージョン透かしにより、前記オブジェクト内のすべてのプロパティを解釈できる前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記オブジェクトバージョン透かしを前記アプリケーションプログラムの前記アクティブバージョンにおける前記オブジェクトバージョンと比較することによって前記オリジナルデータファイルの特性を判別するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
請求項１の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項１２】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに上位バージョン透かしを入れて、前記上位バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最高位バージョンであることを示すステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために、前記上位バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記比較ステップにより、前記オリジナルデータファイルが前記旧バージョンに対応していると判断されたときに、変更を含まない前記オリジナルデータファイルを前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項１３】
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記最終バージョン透かしを前記アプリケーションプログラムの前記アクティブバージョンと比較することによって前記オリジナルデータファイルの特性を判別するステップと
をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記判別するステップで、前記最終バージョン透かしが前記アクティブバージョンよりも前のバージョンである前記アプリケーションプログラムのバージョンに対応すると判断したときに、前記オリジナルデータファイル内の情報に基づき前記アプリケーションプログラムのアクティブバージョンで情報を変換するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記オリジナルデータファイルはオブジェクトプロパティリストを含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記オブジェクトプロパティリストはオブジェクトプロパティリスト配列を含むことを特徴とする請求項１３に記載の方法。
【請求項１７】
前記オブジェクトプロパティリスト配列内のオブジェクトの位置を追跡するステップと、
前記追跡ステップにおいて追跡された前記オブジェクトの位置に基づき前記オブジェクトプロパティリスト配列を更新するステップと
をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記変換ステップで変換された情報を保存するステップと、
前記オリジナルデータファイルから前記未変換の古い情報を保存するステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記変換ステップで変換された情報を保存するステップと、
前記オリジナルデータファイルからの古い情報に対応する情報を生成するステップと、
前記生成ステップで生成された情報を保存するステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項２０】
請求項１２の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項２１】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために、前記最終バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイルが前記旧バージョンに対応していると判断されたときに、前記ロードするステップは、
前記旧バージョンが前記アクティブバージョンから削除されている削除済み項目を含むかどうかを判定するステップと、
前記判定するステップで、前記旧バージョンが前記削除済み項目を含むと判断したときに、前記削除済み項目に対応する前記オリジナルデータファイル内の古い情報を無視するステップと、
前記削除済み項目以外の項目に対応する前記オリジナルデータファイルから情報をロードするステップとを含むことを特徴とする方法。
【請求項２２】
前記削除済み項目はオブジェクトプロパティを含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記削除済み項目はオブジェクトを含むことを特徴とする請求項２１に記載の方法。
【請求項２４】
前記オリジナルデータファイルの修正されたバージョンを保存するステップと、
前記オリジナルデータファイルの前記削除済み項目に対応する情報を保存するステップと
をさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２５】
前記オリジナルデータファイルの修正されたバージョンを保存するステップと、
前記オリジナルデータファイルからの前記削除済み情報に対応する情報を生成するステップと、
前記生成ステップで生成された情報を保存するステップと
をさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２６】
請求項２１の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項２７】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために前記最終バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイルが前記旧バージョンに対応していると判断されたときに、前記ロードするステップは、
前記アクティブバージョンは前記オリジナルデータファイル内の古い情報に関係する修正された項目を含むかどうかを判別するステップと、
前記判別するステップにより、前記アクティブバージョンが前記オリジナルデータファイル内の古い情報に関係する修正された項目を含むと判断されたときに、前記オリジナルデータファイルから前記古い情報を前記修正された項目に対応する情報に変換するステップと、
前記変換ステップで変換された前記情報を前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項２８】
前記修正済み項目はオブジェクトプロパティを含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記修正済み項目はオブジェクトを含むことを特徴とする請求項２７に記載の方法。
【請求項３０】
前記オリジナルデータファイルの修正されたバージョンを保存するステップをさらに含み、前記保存するステップは、
前記修正済み項目に対応する情報を保存するステップと、
第２の変換ステップで、前記修正済み項目に対応する情報を前記古い情報に対応し、前記旧バージョンにより読み取り可能な情報に変換するステップと、
前記第２の変換ステップから前記変換された情報を保存するステップと
を含むことを特徴とする請求項２７に記載の方法。
【請求項３１】
請求項２７の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項３２】
アプリケーションプログラムのアクティブバージョン、旧バージョン、および後のバージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに上位バージョン透かしを入れて、前記上位バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最高位バージョンであることを示すステップと、
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの旧バージョン、アクティブバージョン、および後のバージョンのうちの１つに対応しているプロパティを含んでいるかどうかを判別するために前記上位バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記オリジナルデータファイルが前記アプリケーションプログラムの旧バージョン、アクティブバージョン、および後のバージョンのうちの１つに対応している追加プロパティを含んでいるかどうかを判別するために前記最終バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイルが前記アプリケーションプログラムの異なるバージョンに対応するプロパティを含むと判断されたときに、前記ロードするステップは、
前記オリジナルデータファイルのどのプロパティが現在プロパティであり、前記オリジナルデータファイルのどのプロパティが期限切れになっているかを判別するステップと、
前記判別ステップで判別された現在プロパティに基づいて前記オリジナルデータファイルをアクティブバージョンにロードするステップと、
前記判別ステップで判別された前記期限切れのプロパティを無視するステップと
を含むことを特徴とする方法。
【請求項３３】
アプリケーションプログラムのアクティブバージョン、旧バージョン、および後のバージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記ファイルを保存するために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記オリジナルデータファイルを保存するために使用される前記最終バージョンが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために前記最終バージョン透かしを前記アプリケーションプログラムのアクティブバージョンと比較するステップと、
前記比較ステップにより、前記オリジナルデータファイルを保存するために使用される最終バージョンが旧バージョンに対応していると判断されたときに、前記オリジナルデータファイル内の情報に基づき前記アプリケーションプログラムのアクティブバージョン内の情報を変換するステップと、
前記変換ステップで変換された情報をロードするステップと
を含むことを特徴とする方法。
【請求項３４】
アプリケーションプログラムのアクティブバージョンおよび後のバージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、前記オリジナルデータファイルはオブジェクトプロパティリストを含み、前記方法は、
前記オリジナルデータファイルのオブジェクトプロパティリストにオブジェクトのオブジェクトバージョン透かしを入れ、前記オブジェクトバージョン透かしにより、前記オブジェクトに含まれるすべてのプロパティを解釈できる前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記オブジェクトが前記アプリケーションプログラムの後のバージョンに対応しているかどうかを判別するために前記オブジェクトのオブジェクトバージョン透かしを前記アプリケーションプログラムのアクティブバージョンのオブジェクトバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オブジェクトが前記後のバージョンに対応していると判断されたときに、前記ロードするステップは、
前記オリジナルデータファイル内のオブジェクトに対応する未知の情報を無視するステップと、
前記オリジナルデータファイル内のオブジェクトに対応する知られている情報を前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項３５】
前記オブジェクトプロパティリストを更新し、前記変換ステップで変換された情報を含むようにするステップと、
前記オブジェクトプロパティリスト内に前記古い情報を保持するステップと
をさらに含むことを特徴とする請求項３４に記載の方法。
【請求項３６】
前記オブジェクトプロパティリストはオブジェクトプロパティリスト配列を含むことを特徴とする請求項３４に記載の方法。
【請求項３７】
前記オブジェクトプロパティリスト配列内のオブジェクトの位置を追跡するステップと、
前記追跡ステップにおいて追跡された前記オブジェクトの位置に基づき前記オブジェクトプロパティリスト配列を更新するステップと
をさらに含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記未知の情報および知られている情報はそれぞれ、前記オブジェクトプロパティリストのプロパティを含むことを特徴とする請求項３４に記載の方法。
【請求項３９】
前記オリジナルデータファイルの修正されたバージョンを保存するステップをさらに含み、前記保存するステップは、
前記オリジナルデータファイルのオブジェクトプロパティリストからの前記知られている情報を前記修正されたバージョンで上書きするステップと、
前記オリジナルデータファイルのオブジェクトプロパティリストからの前記未知の情報を保持しておき、前記後のバージョンで前記未知の情報を利用できるようにするステップと
を含むことを特徴とする請求項３４に記載の方法。
【請求項４０】
前記オリジナルデータファイルに最終バージョン透かしを入れ、前記最終バージョン透かしにより、前記オブジェクトを書き込むために使用される前記アプリケーションプログラムの最終バージョンであることを示すステップと、
前記最終バージョンオブジェクト透かしを前記アプリケーションプログラムのアクティブバージョンと比較することによって前記オリジナルデータファイル内のオブジェクトの特性を判別するステップと
をさらに含むことを特徴とする請求項３４に記載の方法。
【請求項４１】
前記判別するステップで、前記最終バージョンオブジェクト透かしが前記アクティブバージョンよりも前のバージョンである前記アプリケーションプログラムのバージョンに対応すると判断したときに、前記オリジナルデータファイル内のオブジェクトに対応する情報に基づき前記アプリケーションプログラムのアクティブバージョンで情報を変換するステップをさらに含むことを特徴とする請求項４０に記載の方法。
【請求項４２】
請求項３４の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項４３】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、前記オリジナルデータファイルはオブジェクトプロパティリストを含み、前記方法は、
前記オリジナルデータファイルのオブジェクトプロパティリストにオブジェクトのオブジェクトバージョン透かしを入れ、前記オブジェクトバージョン透かしにより、前記オブジェクトに含まれるすべてのプロパティを解釈できる前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記オリジナルデータファイル内のオブジェクトが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために前記オブジェクトのオブジェクトバージョン透かしを前記アプリケーションプログラムのアクティブバージョンのオブジェクトバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイル内の前記オブジェクトが前記旧バージョンに対応していると判断されたときに、前記ロードするステップは、
前記オリジナルデータファイル内のオブジェクトに対応する古い情報を前記アクティブバージョンの形式に変換するステップと、
前記変換ステップで変換された情報を前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項４４】
前記オブジェクトプロパティリストはオブジェクトプロパティリスト配列を含むことを特徴とする請求項４３に記載の方法。
【請求項４５】
前記オブジェクトプロパティリスト配列内の前記オブジェクトの位置を追跡するステップと、
前記追跡ステップにおいて追跡された前記オブジェクトの前記位置に基づき前記オブジェクトプロパティリスト配列を更新するステップと
をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４６】
前記変換ステップで変換された情報を保存するステップと、
前記オリジナルデータファイルから未変換の古い情報を保存するステップと
をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４７】
前記変換ステップで変換された情報を保存するステップと、
前記オリジナルデータファイルからの前記古い情報に対応する情報を生成するステップと、
前記生成ステップで生成された情報を保存するステップと
をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４８】
請求項４３の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項４９】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、前記オリジナルデータファイルはオブジェクトプロパティリストを含み、前記方法は、
前記オリジナルデータファイルのオブジェクトプロパティリストにオブジェクトのオブジェクトバージョン透かしを入れ、前記オブジェクトバージョン透かしにより、前記オブジェクトに含まれるすべてのプロパティを解釈できる前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記オリジナルデータファイル内の前記オブジェクトが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために前記オブジェクトバージョン透かしを前記アプリケーションプログラムのアクティブバージョンのオブジェクトバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイル内のオブジェクトが前記旧バージョンに対応していると判断されたときに、前記ロードするステップは、
前記旧バージョンが前記アクティブバージョンから削除されている削除済み項目を含むかどうかを判定するステップと、
前記判定するステップで、前記旧バージョンが前記削除済み項目を含むと判断したときに、前記削除済み項目に対応する前記オリジナルデータファイル内の古い情報を無視するステップと、
前記削除済み項目以外の項目に対応するオリジナルデータファイルから情報をロードするステップと
を含むことを特徴とする方法。
【請求項５０】
前記削除済み項目はオブジェクトプロパティを含むことを特徴とする請求項４９に記載の方法。
【請求項５１】
前記削除済み項目はオブジェクトを含むことを特徴とする請求項４９に記載の方法。
【請求項５２】
前記オリジナルデータファイルの修正されたバージョンを保存するステップと、
前記オリジナルデータファイルの削除済み項目に対応する情報を保存するステップと
をさらに含むことを特徴とする請求項４９に記載の方法。
【請求項５３】
前記オリジナルデータファイルの削除済み項目に対応する情報はデフォルト値から導かれた情報または前記アクティブバージョンの他のプロパティに基づく情報のうちの１つを含むことを特徴とする請求項５２に記載の方法。
【請求項５４】
請求項４９に記載の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項５５】
アプリケーションプログラムのアクティブバージョンおよび旧バージョンとの互換性を保ってオリジナルデータファイルを読み込む方法であって、前記オリジナルデータファイルはオブジェクトプロパティリストを含み、前記方法は、
前記オリジナルデータファイルのオブジェクトプロパティリストにオブジェクトのオブジェクトバージョン透かしを入れ、前記オブジェクトバージョン透かしにより、前記オブジェクトに含まれるすべてのプロパティを解釈できる前記アプリケーションプログラムの最低位バージョンであることを示すステップと、
前記オリジナルデータファイル内のオブジェクトが前記アプリケーションプログラムの旧バージョンに対応しているかどうかを判別するために前記オブジェクトバージョン透かしを前記アプリケーションプログラムのアクティブバージョンのオブジェクトバージョンと比較するステップと、
前記オリジナルデータファイルを前記アクティブバージョンにロードするステップとを含み、
前記比較ステップにより、前記オリジナルデータファイル内のオブジェクトが前記旧バージョンに対応していると判断されたときに、前記ロードするステップは、
前記アクティブバージョンは前記オリジナルデータファイル内の古い情報に関係する修正された項目を含むかどうかを判別するステップと、
前記判別するステップにより、前記アクティブバージョンが前記オリジナルデータファイル内の古い情報に関係する修正された項目を含むと判断されたときに、前記オリジナルデータファイルからの古い情報を前記修正された項目に対応する情報に変換するステップと、
前記変換ステップで変換された情報を前記アクティブバージョンにロードするステップと
を含むことを特徴とする方法。
【請求項５６】
前記修正済み項目はオブジェクトプロパティを含むことを特徴とする請求項５５に記載の方法。
【請求項５７】
前記修正済み項目はオブジェクトを含むことを特徴とする請求項５５に記載の方法。
【請求項５８】
前記のオリジナルデータファイルの修正されたバージョンを保存するステップをさらに含み、前記保存するステップは、
前記修正済み項目に対応する情報を保存するステップと、
第２の変換ステップで、前記修正済み項目に対応する情報を前記古い情報に対応し、前記旧バージョンにより読み取り可能な情報に変換するステップと、
前記第２の変換ステップから前記変換された情報を保存するステップと
を含むことを特徴とする請求項５５に記載の方法。
【請求項５９】
請求項５５に記載の方法を実行するためのコンピュータ実行可能命令が収められていることを特徴とするコンピュータ可読媒体。
【請求項６０】
アプリケーションプログラムのアクティブバージョンおよび前記アプリケーションプログラムの後のバージョンにより読み取り可能なデータファイルであって、
オブジェクトと、
少なくとも１つの知られているプロパティが前記オブジェクトに関連付けられており、前記知られているプロパティが前記アクティブバージョンによって認識されており、少なくとも１つの未知のプロパティが前記オブジェクトに関連付けられており、前記未知のプロパティが前記アクティブバージョンによって認識されていない、オブジェクトプロパティリスト配列と、
前記オブジェクトに含まれるすべてのプロパティを解釈することができる前記アプリケーションプログラムの最低位バージョンを示すオブジェクトバージョン透かしとを備え、
前記アプリケーションプログラムのアクティブバージョンは前記オブジェクトバージョン透かしを前記アクティブバージョンに関連付けられているバージョン番号と比較し、前記オブジェクトバージョン透かしが前記アクティブバージョンに関連付けられているバージョン番号よりも大きいとの判断の応答として前記未知のプロパティを無視するように動作することを特徴とするデータファイル。
【請求項６１】
アプリケーションプログラムのアクティブバージョンおよび前記アプリケーションプログラムの旧バージョンにより読み取り可能なデータファイルであって、
オブジェクトと、
少なくとも１つのプロパティが前記オブジェクトに関連付けられ、前記旧バージョンに対応しているオブジェクトプロパティリスト配列と、
前記オブジェクトに含まれるすべてのプロパティを解釈することができる前記アプリケーションプログラムの最低位バージョンを示すオブジェクトバージョン透かしとを備え、
前記アプリケーションプログラムのアクティブバージョンは前記オブジェクトバージョン透かしを前記アクティブバージョンに関連付けられているバージョン番号と比較し、前記オブジェクトバージョン透かしが前記アクティブバージョンに関連付けられているバージョン番号よりも小さいとの判断の応答として、前記オブジェクトに関連付けられており、前記データファイル内の前記少なくとも１つのプロパティのうちの１つのプロパティに基づく前記アクティブバージョンに対応する他のプロパティを更新するように動作することを特徴とするデータファイル。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムおよびプログラムに関する。より具体的には、本発明は、アプリケーションプログラムの旧バージョン、アクティブバージョン、および将来のバージョンと互換性のあるファイル形式を規定することができるシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータアプリケーションプログラムは、一般に、多数のコンピュータ処理タスクを実行するために使用される。アプリケーションプログラムを使用して、アプリケーションプログラムに関する特定の項目の情報を格納するデータファイルを作成し修正することができる。例えば、デスクトップパブリッシングタイプのアプリケーションプログラムを使用して、ドキュメントを作成することができる。ドキュメントには、ヘッダ、テキスト、グラフィックス、スタイル、フォントなど多数の個別要素を入れることができる。パブリッシングタイプのアプリケーションプログラムは、その特定のドキュメントのすべての情報を収めたデータファイルを作成するために使用できる。
【０００３】
ファイルをコンピュータシステムに保存するアプリケーションはすべて、データを保存する形式を決定しなければならない。データを保存する方法としては、データからメモリイメージを保存する方法から、業界標準形式でデータを書き出す方法までさまざまな方法がある。さらに、コンピュータアプリケーションプログラムは、最新の機能および技術を利用できるように更新および変更が常時行われている。更新および変更は、通常、アプリケーションプログラムの更新バージョンをリリースするという形でエンドユーザに提供される。アプリケーションプログラムの更新バージョンで使用されるファイル形式は、旧バージョンおよび将来のバージョンと互換性がなければならない。しかし、更新バージョンの新しい機能では新しいデータをデータファイルに書き込む必要があるため、旧バージョンと異なるファイル形式が更新バージョンに使用されるのがふつうである。ファイル形式が異なると旧バージョンで更新バージョンのファイルを読み込めなくなる可能性があるため、２つの異なるバージョンのアプリケーションプログラムに問題が生じることがある。
【０００４】
本開示で使用しているような「オブジェクト」という用語は、特性を持ち、アプリケーションプログラムにより表示されるか、またはアプリケーションプログラムの一部であるか、またはプログラムによって格納／操作されるデータの一部であるエンティティを指す。アプリケーションプログラムにより表示されるオブジェクトの一例は、ユーザがテキストを入力できるアプリケーションプログラムのウインドウに含まれるテキストボックスである。テキストボックスの特性には、その色、テキストのフォント、およびテキストのポイントサイズがある。アプリケーションプログラムの一部であるオブジェクトの一例として、動物のメモリ内表現（ｉｎ−ｍｅｍｏｒｙ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）があり、色、脚の数、および肉食かどうかなどの特性が与えられる。このメモリ内表現はデータ構造体として実装することができ、データ構造の要素に特性を格納する。このようなデータ構造体の一例に、Ｃ＋＋クラスデータ構造体がある。オブジェクトの特性を、そのオブジェクトのプロパティと呼ぶ。オブジェクトの各プロパティは、通常、値を持つ。例えば、色のプロパティは赤という値を持つことができる。
【０００５】
オブジェクト１００の一例を図１に示す。オブジェクト１００は、枠線（ｂｏｒｄｅｒ）１０２とテキスト１０４とからなる。オブジェクト１００は、枠線１０２の６つのプロパティとテキスト１０４とを備えることができる。枠線１０２は、枠線スタイルと枠線サイズとのプロパティを持つことができる。テキスト１０４は、フォント、テキストサイズ、位置揃え、およびテキストスタイルのプロパティを持つことができる。枠線１０２とテキスト１０４とのデフォルト値では、枠線スタイルを実線、枠線サイズを４ポイント、テキストフォントをＴｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ、テキストサイズを２０ポイント、テキスト位置揃えを左寄せ、テキストスタイルを非イタリック体とすることができる。
【０００６】
アプリケーションプログラムでは、初期プログラミングの際にオブジェクトおよびプロパティのデフォルト値を設定することができる。デフォルト値は、プログラムの動作中に、変更してデータファイルに格納することができる。例えば、四角形や三角形などのオブジェクトを表示できる描画プログラムでは、ユーザがオブジェクトのプロパティを修正することができる。図１の例に戻ると、オブジェクト１００のプロパティを変更することで、実線の枠線を破線の枠線にし、テキストスタイルをイタリック体にすることができる。新しいバージョンのプログラムであれば、デフォルト値と、各オブジェクトの変更を読み取れるのがふつうである。しかし、新しいバージョンのプログラムが作成されると、ファイル形式は通常、旧バージョンのファイル形式とは異なる。したがって、旧バージョンでは、新バージョンのファイルを読み取れないことがある。上述のパラグラフからの上記の例を使用すると、新しいバージョンに、オブジェクト１００のシャドウ（ｓｈａｄｏｗ）などの新しい機能を含めることが可能である。追加機能は、新しいデータをプログラムのファイルに書き込み、そうすることでその形式を変更する必要がある。旧バージョンからでは、ファイル形式が異なるため、新しいデータが含まれる新しいバージョンのファイルを読み込むことはできない。
【０００７】
【特許文献１】米国特許第５９３３８４２号明細書
【特許文献２】米国特許第５９４６６９６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述の問題に対する従来の解決策では、更新されたバージョンの新しい機能を制限することで、旧バージョンとのファイル形式の互換性を維持する。しかし、このような解決策では、最良の製品をユーザに配布することができず、プログラム全体の機能およびパフォーマンスを制限することになりかねない。
【０００９】
上述の問題に対する他の従来の解決策では、旧ファイルを旧バージョンから更新バージョンと互換性のある新しいファイルに変換するアダプタプログラム（ａｄａｐｔｅｒ  ｐｒｏｇｒａｍ）を作成する。アダプタプログラムはさらに、新しいファイルを旧バージョンと互換性のあるファイルに変換することもできる。しかし、このような解決策は、ユーザにとっては不便なものであり、ファイル変換に大量のメモリと長い処理時間が必要になることがある。さらに、このような解決策では、ユーザは、旧バージョンでファイルが保存されたときに新しいバージョンのプログラムにより必要な重要情報が失われる可能性がある。
【００１０】
したがって、旧バージョン、アクティブバージョン、および新しいバージョンのアプリケーションプログラムと互換性のあるファイル形式を用意することができる改良されシステムおよび方法が当技術分野では必要である。また、旧バージョンとの互換性を保持しながら将来のバージョンのアプリケーションプログラムに新しい機能を追加できる拡張可能ファイル形式が当技術分野では必要である。
【課題を解決するための手段】
【００１１】
本発明は、一般に、アプリケーションプログラムの旧バージョン、アクティブバージョン、および将来のバージョンとの互換性をとることができる拡張可能ファイル形式を規定するシステムおよび方法に関する。本発明は、旧および／またはアクティブバージョンとの互換性を維持しながら（修正せず）新しい機能を将来のバージョンのアプリケーションプログラムに追加できるようにする拡張可能ファイル形式を対象とする。したがって、本発明を採用したソフトウェアベンダは将来のバージョンに追加できる機能を制限することなく同じファイルとの複数バージョン互換性を実現することができる。
【００１２】
本発明の一態様例では、ファイルバージョン透かし（ｗａｔｅｒｍａｒｋ）をアプリケーションプログラムのオリジナルデータファイルに入れることができる。ファイルバージョン透かしは、オリジナルデータファイルのさまざまなプロパティを示すオリジナルデータファイル内の要素とすることができる。例えば、オリジナルデータファイルに上位バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最高位バージョンであることを示すことができる。オリジナルデータファイルに最終バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最終バージョンであることを示すことができる。オリジナルデータファイルに低位バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最低位バージョンであることを示すことができる。オリジナルデータファイルに作成バージョン透かしを入れて、最初にファイルを作成したアプリケーションプログラムのバージョンであることを示すことができる。オリジナルデータファイルにオブジェクトバージョン透かしを入れて、特定のオブジェクトを書き込むアプリケーションプログラムの最高位バージョンであることを示すことができる。各ファイルバージョン透かしは、ファイルに加えられた変更、追加、または削除を示すことができる。
【００１３】
本発明の他の態様例では、１つまたは複数のファイルバージョン透かしで与えられる情報に基づきオリジナルデータファイルをロードまたは保存する方法を決定することを含むことができる。本発明の一態様例では、ファイル内の上位バージョン透かしがファイルをロードまたは保存するアプリケーションプログラムのアクティブバージョンよりも新しいバージョンを表すかどうかを決定することができる。上位バージョン透かしは、オリジナルデータファイルがアクティブバージョンに関してアプリケーションプログラムの、より新しいバージョンにより保存された場合に、より新しいバージョンを表す。その場合、本発明では、オリジナルデータファイルに、アクティブバージョンにとっては不明な情報が含まれているかどうかを判別することができる。不明な情報は、アプリケーションプログラムのアクティブバージョンにより無視され、より新しい（より後のほうの）バージョン用に保持されるようにできる。
【００１４】
本発明の他の態様例では、ファイル内の上位バージョン透かしがファイルをロードまたは保存するアプリケーションプログラムのアクティブバージョンよりも古いバージョンを表すかどうかを決定することができる。上位バージョン透かしは、オリジナルデータファイルがアクティブバージョンに関してアプリケーションプログラムの、より古いバージョンにより保存された場合に、より古いバージョンを表す。その場合、本発明では、アクティブバージョンに、オリジナルデータファイル内の古い情報に基づく新しい情報が含まれるかどうかを判別することができる。新しい情報は、古い情報に基づいて更新することができる。さらに、新しい情報は、より古いバージョンの形式でデータを格納するだけでなく、アクティブバージョンおよびより新しいバージョンの形式でもデータを格納することにより、より古い（以前の）バージョン、アクティブバージョン、およびより新しい（後のほうの）バージョンで使用できるように保存することができる。
【００１５】
本発明の他の態様例によれば、アプリケーションプログラムのメモリ内構造は、データファイル形式から分離することができる。したがって、アプリケーションプログラムの将来のバージョンは、データファイル形式を変更することなく多くの新しい機能を取り込むことができる。例えば、データファイル形式が異なることから、異なるバージョンとの互換性を失うことなく特定のプロセッサタイプについては効率が高くなるように構造体をメモリ内でいかようにも移動することができる。
【００１６】
本発明はさらに、アプリケーションプログラムの異なるバージョンに対応するデータファイルのロードおよび保存に必要なメモリ容量と処理能力を最小限に抑えることができる。ファイルバージョン透かしにより、異なるバージョンに対応するデータファイル内の特定の情報を識別することができる。したがって、処理または変換は識別された情報に対してしか実行できない。
【００１７】
本発明の他の態様例では、オブジェクトプロパティリスト（ｏｂｊｅｃｔ  ｐｒｏｐｅｒｔｙ  ｌｉｓｔ）（「ＯＰＬ」）またはオブジェクトプロパティリスト配列（「ＯＰＬ配列」）をデータファイル構造体として組み込む。ＯＰＬまたはＯＰＬ配列を使用すると、未知のデータを保存済みデータファイルに伝搬させるか、または返すことにより将来のバージョンから未知のプロパティデータの「ラウンドトリッピング（ｒｏｕｎｄ−ｔｒｉｐｐｉｎｇ）」を行うことができる。ＯＰＬまたはＯＰＬ配列は、メモリにロードすることができる。特定のバージョンのアプリケーションプログラムにより認識されているプロパティすべてを、必要に応じて上書きすることができる。残りのプロパティ（つまり、特定バージョンには認識されないプロパティ）は、より新しいバージョンによって作成されており、ファイル内にそのまま残すことができる。データファイルに保存されるメモリ構造毎に、その構造を保存するため関連するＯＰＬまたはＯＰＬ配列を用意することができる。
【００１８】
本発明のこれらおよびその他の態様、目的、および特徴は、添付図面に関して、また添付図面を参照して、好ましい実施形態の詳細な説明を読むことにより明白になるであろう。
【発明を実施するための最良の形態】
【００１９】
本発明については、付属の図面を参照しながら詳細に説明するが、ただし類似の参照番号は類似の要素を表す。
【００２０】
本発明は、アプリケーションプログラムの旧バージョン、アクティブバージョン、および将来のバージョンと互換性のある拡張可能ファイル形式を規定することができる。本発明では、ファイルバージョン透かしをアプリケーションプログラムのオリジナルデータファイルに入れることができる。ファイルバージョン透かしは、オリジナルデータファイルのさまざまなプロパティを示すことができる。ファイルバージョン透かしには、上位バージョン透かし、最終バージョン透かし、低位バージョン透かし、作成バージョン透かし、およびオブジェクトバージョン透かしがある。各ファイルバージョン透かしは、ファイルに加えられた変更、追加、または削除を示すことができる。各ファイルバージョン透かしを、ファイル内の特定のオブジェクトなど、ファイル内の特定の情報について用意し、特定の情報を修正したバージョンを示すことができる。本発明では、ファイルバージョン透かしを使用して、ファイル、またはファイル内の特定の情報がアプリケーションプログラムの旧バージョンに対応するのか、アクティブバージョンに対応するのか、それとも将来のバージョンに対応するのかを判別することができる。したがって、本発明は、判別の実行結果に基づいてオリジナルデータファイルのロードまたは保存を行うことができる。
【００２１】
図２は、本発明が動作するように設計されているコンピューティング環境例のさまざまな態様を示している。当業者であれば、図２および関連する説明は、好ましいコンピュータハードウェアおよびプログラムモジュールの簡単な概要説明を行うことを目的としており、また適切なプログラミングマニュアル、ユーザーズガイド、および類似の刊行物で補足情報を容易に得られることを理解するであろう。
【００２２】
図２は、本発明の好ましい実施形態の動作をサポートするのに好適な従来のパーソナルコンピュータ１０を示す。図２に示されているように、パーソナルコンピュータ１０は、リモートサーバ１１に論理的に接続しているネットワーク接続環境において動作する。パーソナルコンピュータ１０とリモートサーバ１１との間の論理接続は、ローカルエリアネットワーク１２およびワイドエリアネットワーク１３により表されている。当業者であれば、このクライアント／サーバ構成で、リモートサーバ１１はファイルサーバまたはコンピュータサーバとして機能できることを理解するであろう。
【００２３】
パーソナルコンピュータ１０は、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（カリフォルニア州サンタクララ）製の「Ｐｅｎｔｉｕｍ（登録商標）」マイクロプロセッサなどの処理ユニット１４を備える。パーソナルコンピュータ１０は、さらに、読み取り専用メモリ（ＲＯＭ）１６およびランダムアクセスメモリ（ＲＡＭ）１７など、システムバス１８によってプロセッサ１４に接続されているシステムメモリ１５も備える。好ましいコンピュータ１０ではＲＯＭ１６に格納されているＢＩＯＳ１９を使用する。当業者であれば、ＢＩＯＳ１９はパーソナルコンピュータ１０内の要素間の情報伝達を補助する基本ルーチンの集まりであることを理解しているであろう。また当業者であれば、本発明は、ＢＩＯＳを使用しないコンピュータおよび他のマイクロプロセッサを利用しているコンピュータなど、他のアーキテクチャを備えるコンピュータ上に実装できることも理解するであろう。
【００２４】
パーソナルコンピュータ１０内には、ローカルハードディスクドライブ２０が装備され、ハードディスクドライブインターフェース２１を介してシステムバス１８に接続されている。フロッピー（登録商標）ディスク２３を読み書きするために使用されるフロッピー（登録商標）ディスクドライブ２２は、フロッピー（登録商標）ディスクドライブインターフェース２４を介してシステムバス１８に接続される。ＣＤ−ＲＯＭまたはＤＶＤディスク２６を読み取るために使用されるＣＤ−ＲＯＭまたはＤＶＤドライブ２５は、ＣＤ−ＲＯＭまたはＤＶＤインターフェース２７を介してシステムバス１８に接続される。ユーザは、シリアルポートインターフェース３０を介してシステムバス１８に接続されている、キーボード２８および／またはマウス２９などのポインティングデバイスなどの入力デバイスを使用して、コマンドおよび情報をパーソナルコンピュータ１０に入力する。他の種類のポインティングデバイス（図２には示されていない）としては、トラックパッド、トラックボール、ペン、ヘッドトラッカ、データグローブ、およびコンピュータのモニタ３１上でカーソルの位置を決めるのに好適なその他のデバイスがある。モニタ３１またはその他の種類の表示デバイスも、ビデオアダプタ３２を介してバス１８に接続される。
【００２５】
このネットワーク接続環境内のリモートサーバ１１は、リモートメモリ記憶デバイス３３に接続される。リモートメモリ記憶デバイス３３は、通常、ハードディスクドライブ、ＣＤ−ＲＯＭ、またはＤＶＤドライブ、光磁気ドライブなどの大容量デバイスである。当業者であれば、アプリケーションプログラムモジュール３７Ｃおよび３７Ｄなどのプログラムモジュールはコンピュータ可読媒体を介してリモートサーバ１１に供給されることを理解するであろう。パーソナルコンピュータ１０は、ネットワークインターフェース３４によりリモートサーバ１１に接続されており、このインターフェースを介して、ローカルエリアネットワーク１２上で通信を行う。
【００２６】
他の実施形態では、パーソナルコンピュータ１０は、さらに、モデム３５によりリモートサーバ１１にも接続され、このモデムを使用して、インターネットなどのワイドエリアネットワーク１３上で通信を行う。モデム３５は、シリアルポートインターフェース３０を介してシステムバス１８に接続される。また、モデム３５は、公衆交換電話網（ＰＳＴＮ）または共聴アンテナ式テレビ（ＣＡＴＶ）ネットワークに接続することもできる。図２にはパーソナルコンピュータ１０の外部にあるように示されているが、当業者であれば、モデム３５は、パーソナルコンピュータ１０に内蔵することもでき、そうすることで、システムバス１８を介して直接通信することを理解することができる。ローカルエリアネットワーク１２とワイドエリアネットワーク１３との両方を介したリモートサーバ１１との接続は必要なことではなく、パーソナルコンピュータ１０とリモートサーバ１１との間の通信経路を提供する他の方法を単に示しているだけであることに注意されたい。
【００２７】
パーソナルコンピュータ１０の他の内部コンポーネントは図に示されていないが、当業者であれば、そのようなコンポーネントおよびコンポーネント間の相互接続は周知であることを理解するであろう。したがって、本発明に関しては、パーソナルコンピュータ１０の内部構造に関するさらなる詳細を開示する必要はない。
【００２８】
当業者であれば、オペレーティングシステム３６、アプリケーションプログラムモジュール３７Ａ、ブラウザプログラムモジュール３７Ｂ、その他のプログラムモジュール３７Ｎなどのプログラムモジュールおよびデータは、コンピュータ可読媒体を介してパーソナルコンピュータ１０に供給されることを理解するであろう。好ましいコンピュータ１０では、コンピュータ可読媒体として、ローカルまたはリモートメモリ記憶デバイスがあり、ローカルハードディスクドライブ２０、フロッピー（登録商標）ディスク２３、ＣＤ−ＲＯＭまたはＤＶＤ２６、ＲＡＭ１７、ＲＯＭ１６、およびリモートメモリ記憶デバイス３３などがある。好ましいパーソナルコンピュータ１０では、ローカルハードディスクドライブ２０を使用して、データおよびプログラムを格納する。
【００２９】
プログラムモジュール３７Ｎは、本発明の実施例による拡張可能ファイル形式のファイルを利用できるアプリケーションプログラムを含むことができる。第１のアプリケーションプログラムは、さらに拡張可能ファイル形式のオブジェクトプロパティリスト（ＯＰＬ）を入れることができるオブジェクトを管理することができる。ＯＰＬは、システムメモリ１６の連続するブロック内に格納することができる。第２のアプリケーションプログラムは、オブジェクトのＯＰＬにアクセスすることができ、また後述のように、ＯＰＬを使用してさまざまな機能を実行することができる。
【００３０】
ＯＰＬは、データファイルにデータを保存するためのデータ構造体である。ＯＰＬについてはさらに詳しく説明されている（例えば、特許文献１および２参照）。これらの特許の開示は、参照により本明細書に組み込まれている。
【００３１】
従来のＯＰＬでは、データファイル用にデータ構造体を用意する。そのデータ構造体を使用することで、アプリケーションプログラムの旧バージョンおよび将来のバージョンとの互換性を実現するために使用される共通形式で情報を格納することができる。ＯＰＬの形式を使用すると、アプリケーションプログラムで認識されるデータを使用しながら、アプリケーションプログラムで認識されないデータをスキップすることができる。従来のＯＰＬは、新しいオブジェクトおよびプロパティ用に動的に拡張できるため、アプリケーションプログラムの新しいバージョンに新しい情報が加わるとともに拡大することが可能である。
【００３２】
図３では、従来のＯＰＬ３００の特性を説明する。（ＯＰＬの詳細については、（特許文献１）および（特許文献２）を参照のこと。）
【００３３】
本明細書の開示で使用している用語「オブジェクト」は、アプリケーションプログラムにより表示されるか、またはアプリケーションプログラムの一部である特性を持つエンティティを指す。アプリケーションプログラムにより表示されるオブジェクトの一例は、ユーザがテキストを入力できるアプリケーションプログラムのウインドウに含まれるテキストボックスである。テキストボックスの特性には、その色、テキストのフォント、およびテキストのポイントサイズがある。アプリケーションプログラムの一部であるオブジェクトの一例として、動物のメモリ内表現があり、色、脚の数、および肉食かどうかなどの特性が与えられる。このメモリ内表現はデータ構造体として実装することができ、データ構造の要素に特性を格納する。このようなデータ構造体の一例に、Ｃ＋＋クラスデータ構造体がある。オブジェクトの特性を、そのオブジェクトのプロパティと呼ぶ。オブジェクトの各プロパティは、通常、値を持つ。例えば、色のプロパティは赤という値を持つことができる。
【００３４】
「背景技術」で説明したように、オブジェクト１００の例が図１に示されている。オブジェクト１００は、枠線１０２とテキスト１０４とからなる。オブジェクト１００は、枠線１０２の６つのプロパティとテキスト１０４とを備えることができる。枠線１０２は、枠線スタイルと枠線サイズとのプロパティを持つことができる。テキスト１０４は、フォント、テキストサイズ、位置揃え、およびテキストスタイルのプロパティを持つことができる。枠線１０２とテキスト１０４とのデフォルト値では、枠線スタイルを実線、枠線サイズを４ポイント、テキストフォントをＴｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ、テキストサイズを２０ポイント、テキスト位置揃えを左寄せ、テキストスタイルを非イタリック体とすることができる。
【００３５】
ＯＰＬ  ３００では標準形式を使用しているため、オブジェクトのプロパティを内部的に格納するために使用できる。例えば、ＯＰＬ３００は、オブジェクトプロパティ識別（「ｏｐｙｉｄ」）要素３０２、オブジェクトプロパティ型要素３０４、およびオブジェクトプロパティ値要素３０６を備えることができる。Ｏｐｙｉｄ要素３０２は、特定のプロパティに関連付けられている数値識別子を含むことができる。システムは、ｏｐｙｉｄへのすべてのプロパティのマッピングを保持するが、このマッピングはＯＰＬ毎に異なっていてもよい。つまり、各ＯＰＬで、ｏｐｙｉｄ値が表すプロパティを定義することができ、他のＯＰＬで、異なるプロパティに同じｏｐｙｉｄ値を使用することができる。オブジェクトプロパティ型要素３０４は、短整数（２バイト）、長整数（４バイト）、Ｕｎｉｃｏｄｅ文字列などを参照する。オブジェクトプロパティ値要素３０６は、関連するオブジェクトプロパティ型要素３０４の適切なデータ型に対応する。例えば、図３に示されているように、ｏｐｙｉｄ「１」は、システムが「色」に対応していると認識する短整数（２バイト）のオブジェクトプロパティ型要素３０４および、「赤」を示すＲＧＢ（赤、緑、青）の符号化である０ｘ００ＦＦ００００のオブジェクトプロパティ値要素３０６を表す。特定のプロパティを参照するときに、ｏｐｙｉｄを使用する。例えば、ＯＰＬ３００の枠線プロパティが必要な場合、これは、ｏｐｙｉｄ「２」により参照される。ＯＰＬはさらに、他のＯＰＬをプロパティとして含むことができるため、さらに複雑なデータ構造体を作成することができる。
【００３６】
１６ビットの従来のＯＰＬでは、通常、ｏｐｙｉｄ要素３０２は１１ビットである。このような構成では、１１ビットという制約があるためＯＰＬ３００は２０４８項目に制限される。パブリッシングシステムでは、オブジェクトおよびプロパティの数は簡単に２０４８項目を超えてしまう。パブリッシングドキュメントは複数のページで構成でき、それぞれ多数のオブジェクトを含む。各オブジェクトは、それに関連付けられた多数のプロパティを有することができる。したがって、いくつかの場合にＯＰＬ容量を最大にすることが望ましい。このために、本発明では、改良されたＯＰＬ型、ＯＰＬ配列を備え、ほとんど無制限の容量を使えるようにできる。ＯＰＬ配列には、ドキュメント内のすべてのオブジェクトなど大量のデータを格納することができる。ＯＰＬはそれでも、少ない量のプロパティを格納するのに使用することができる。
【００３７】
図４では、本発明の一実施形態によるデータ構造体４００について説明する。データ構造体４００は、ルートＯＰＬ４０２を含むことができる。ルートＯＰＬ４０２は、「最大」プロパティ４０２ａ、不変プロパティ４０２ｂ、およびＯＰＬ配列プロパティ４０２ｃを備えることができる。必要というわけではないが、最大プロパティ４０２ａはＯＰＬ配列プロパティ４０２ｃのサイズを示し、データ構造体４００を読み込む際に十分なメモリを簡単に割り当てられる。不変プロパティ４０２ｂは、ＯＰＬ配列プロパティ４０２ｃ内の項目の配列インデックスが一定となる特徴を定義することができる。つまり、ＯＰＬ配列プロパティ４０２ｃ内の項目の配列インデックスは、その項目の存続期間全体を通して変化することがない。したがって、現在使用されていないインデックスに新しい項目を追加できるだけであり、項目を削除するとインデックスロケーションが空になる。
【００３８】
ＯＰＬ配列プロパティ４０２ｃは、ＯＰＬ配列４０４を参照することができる。ＯＰＬ配列４０４は、ＯＰＬ配列プロパティ４０２ｃに格納するか、または別個に格納することができる。ＯＰＬ配列４０４は、プロパティ、他のＯＰＬ、または他のＯＰＬ配列を取得することができる。図４に示されているように、ＯＰＬ配列４０４は、サブオブジェクトプロパティリスト（「ｓｕｂｏｐｌ」）４０４ａ〜４０４ｅを含み、各ｓｕｂｏｐｌ４０４ａ〜４０４ｅはプロパティ、ＯＰＬ、または他のＯＰＬ配列とすることができる。各ｓｕｂｏｐｌ４０４ａ〜４０４ｅは、配列要素４０６を参照することができる。各配列要素４０６は、プロパティ、ＯＰＬ、または他のＯＰＬ配列とすることができる。例では、配列要素４０６は、ＩＤおよび変数長文字列を含むＯＰＬである。
【００３９】
図４には、関連するＯＰＬ配列要素４０６とともにＯＰＬ配列４０４が１つだけ示されているが、本発明はこのような構造体に限られない。例えば、データ構造体４００は、ＯＰＬ配列４０４のような複数のＯＰＬを含み、それぞれＯＰＬ配列要素４０６が関連付けられている。その場合、インデックス４０２ｃは各ＯＰＬ配列４０４を参照することができる。
【００４０】
ｓｕｂｏｐｌｓ４０４ａ〜４０４ｅはそれぞれ、従来のＯＰＬのｏｐｙｉｄ３０２（図３）と同様に、プロパティ、オブジェクト、またはその他のＯＰＬを参照する。しかし、データ構造体４００では、ＯＰＬ配列４０４内の項目に対しては特定のｏｐｙｉｄを与えられない。その代わりに、ＯＰＬ配列４０４内の各ｓｕｂｏｐｌ４０４ａ〜４０４ｅのｏｐｙｉｄは「−１」に設定することができる。その後、ＯＰＬ配列４０４内の各ｓｕｂｏｐｌ４０４ａ〜４０４ｅの位置をｏｐｙｉｄとして使用することができる。各ｓｕｂｏｐｌ４０４ａ〜４０４ｅの位置は、図４でそれぞれのインデックス位置指標４０５ａ〜４０５ｅにより表されている。例えば、ＯＰＬ配列４０４内の位置「２」にあるものなどの特定のｓｂｏｐｌが必要な場合、インデックス位置指標の項目に対応するｓｕｂｏｐｌ４０４ｃが用意される。ｓｕｂｏｐｌ４０４ｃは、ＯＰＬ配列４０４内のインデックス位置２に配置される。したがって、データ構造体４００は、ＯＰＬ配列４０４内のそれぞれのインデックス位置に基づいて特定のＯＰＬを参照する。特定のｓｕｂｏｐｌのインデックス位置がそのｏｐｙｉｄである。データ構造体４００を使用することで、各要素の特定のｏｐｙｉｄを格納する必要がなくなり、それにより、従来のＯＰＬの欠陥に対処することができる。通常の３２ビットシステムでは、データ構造体４００は、４０億を超える項目を格納することができるが、それは、項目の個数はもはやｏｐｙｉｄの範囲による制限を受けることがないからである（位置指標４０５ａ〜４０５ｅは、説明を目的としており、通常、ＯＰＬ配列４０４で与えられる）。
【００４１】
図４では、さらに、後で参照するためにＯＰＬ配列４０４内の空のスロットをどのように保存すればよいかについて説明されている。インデックス位置４０５ｂの空のスロット４０４ｂについては、プレースホルダプロパティ「ｏｐｌｅｍｐｔｙ」で、インデックス位置４０５ｂにあるそれぞれの項目が空であることを示すことができる。ｏｐｌｅｍｐｔｙは、単一配列要素が空であり、スキップしなければならないことを示すことができる。複数の隣接する空の配列要素について、プレースホルダプロパティ「ｏｐｌｓｋｉｐ＝ｎ」を使用できる。ｏｐｌｓｋｉｐ＝ｎとすると、次の（ｎ）個のエントリが空であることを指定できる。例えば、図４に示されているように、インデックス位置４０５ｄ、つまりＯＰＬ配列４０４内のインデックス位置「３〜５」に対応する項目４０４ｄはプレースホルダプロパティ「ｏｐｌｓｋｉｐ＝３」により埋められ、ＯＰＬ配列４０４内の次の３項目が空であり、スキップしなければならないことを示す。
【００４２】
データファイルは、オブジェクトの集合として特徴付けることができる。各オブジェクトは、ＯＰＬにより定義することができる。各ＯＰＬには、オブジェクトハンドル（ＯＨ）を関連付けることができる。ＯＨは、オブジェクトＯＰＬへのインデックスとすることができる。したがって、ＯＨによりオブジェクトを識別することができ、ＯＨはオブジェクトの存続期間中変化しない。（図４の不変フィールド４０２ｂを参照のこと）各オブジェクトに特有の情報を使用しなくても、各オブジェクトのＯＨを参照することによりファイルの構造をトラバースすることができる。ＯＨは、ファイルを保存しても変化しないため（不変）、ＯＨを使用してメモリおよび／またはファイル内のオブジェクトを参照することができる。
【００４３】
通常、ＯＨは、単一オブジェクトに割り当てなければならず、アプリケーションプログラムの後のバージョンでファイルを保存した場合、再利用すべきでない。例えば、追跡テーブルをアプリケーションプログラムのアクティブバージョンに導入し、プログラムによって作成されたすべてのオブジェクトを追跡することも可能である。旧バージョンでファイルをロードし、アクティブバージョンのオブジェクトの１つを削除した場合、アクティブバージョンの追跡テーブルは変更を反映するために更新されない。さらに、削除されたオブジェクトのＯＨを旧バージョンで作成した異なるオブジェクトについて再利用した場合、アクティブバージョンの追跡テーブルはその再利用されるＯＨを異なるオブジェクトとして解釈する。本発明では、後のバージョンでファイルを保存したかどうかを判別することにより、ＯＨの再利用を回避し、そうすることで、問題が生じないようにする。次に、後のバージョンでファイルをロードする場合、後のバージョンは削除されているすべてのオブジェクトを見ることができる。それに応じて追跡テーブルを調整することができる。さらに、本発明では、（バージョン透かしにより判別された）そのファイルを使用したことのある最高位バージョンＯＨを再利用できる。本発明では、最高位バージョンを使用して、使用可能ＯＨを判別することができ、また旧バージョンによりすでに削除されているオブジェクトへのすべての古い参照を削除することにより再利用することができる。
【００４４】
メモリ構造をＯＰＬまたはＯＰＬ配列内に格納するために、「ＯＰＬ辞書」を定義し、各プロパティのデフォルト値および型を示すようにできる。未使用プロパティは領域をいっさい占有しないため、辞書の数を最小限に抑えることができる。したがって、本発明の一実施形態では、単一の辞書を使用することができる。このような実施形態では、すべての共通オブジェクトに、それぞれの同一項目に対する同じｏｐｙｉｄまたは配列インデックス位置を持たせることができる。他の実施形態では、（１）すべてのファイル構造体関連プロパティ（つまり、ＯＰＬツリーのルート）を収めることができるファイル構造体辞書、（２）パブリッシングドキュメントのすべてのページオブジェクトのプロパティを収めることができるページオブジェクト辞書、および（３）関連するテキストとともにオブジェクトが含まれるテキストを記述するための辞書、または出版などで使用される色を定義するための色記述辞書を収めることができるその他の構造体辞書を用意することができる。プロパティが辞書の中に定義されている場合、これらのプロパティは、どのようなオブジェクトからも参照できる。したがって、共通オブジェクトによって使用される共通プロパティは、同じ辞書が出所なので同じである。
【００４５】
ＯＰＬ（およびＯＰＬ配列）は、将来のバージョンからの未知のプロパティまたは情報を保存する、つまり「ラウンドトリッピング」する場合に役立つ。特定のバージョンにより、オリジナルのＯＰＬをディスクからメモリにロードをすることができる。特定のバージョンにより認識されるＯＰＬのすべてのプロパティを上書きすることができる。残りのプロパティ（つまり、特定バージョンには認識されない未知のプロパティ）は、将来のバージョンによって作成されており、ファイル内にそのまま残すことができる。したがって、未知のプロパティは、後のバージョンで使用できるように保存済みファイルに伝搬により戻すことができる。未知のプロパティは、ロードするときに無視し、保存するときに簡単に保持できる。
【００４６】
ＯＰＬまたはＯＰＬ配列をメモリ構造体として使用すると、メモリ内構造をファイル形式から分離することができる。したがって、アプリケーションプログラムの将来のバージョンは、異なるファイル形式に関連する問題を引き起こすことなく多くの新しい機能を取り込むことができる。例えば、ファイル形式を変更せずに特定のプロセッサタイプについては効率が高くなるように、構造体をメモリ内であちこち移動することができる。ファイルに保存されるメモリ構造体毎に、その構造体を保存するため関連するＯＰＬを用意することができる。ＯＰＬから構造体へのマッピングは、１対１である必要はない。ディスク上の論理オブジェクトは、パフォーマンス上の理由から別のメモリ構造体とすることができる。例えば、オブジェクト上のハイパーリンクプロパティは、逆引きテーブルに格納し、これを使用して、与えられたオブジェクトにリンクされている他のオブジェクトを調べることも可能である。あるいは、複数のディスク上オブジェクトを組み合わせて単一の構造体をメモリ内に作成することもできる。
【００４７】
そこで図５および６を参照すると、本発明による方法は、アクティブバージョン、旧バージョン、および後のバージョンのアプリケーションプログラム間の互換性を実現するものであり、以下ではこれについて説明する。アクティブバージョンのアプリケーションプログラムは、コンピュータシステム２００（図２）上で現在動作しているアプリケーションプログラムである。旧バージョンのアプリケーションプログラムは、アクティブバージョンの前に作成されたバージョンのアプリケーションプログラムである。後のバージョンのアプリケーションプログラムは、アクティブバージョンの後に作成されたバージョンのアプリケーションプログラムである。通常、アプリケーションプログラムのバージョンは、番号で示される。例えば、アプリケーションプログラムの第１のバージョンはバージョン１．０と表すことができる。アプリケーションプログラムの後のバージョンは、それよりも高い番号で示すことができる。例えば、アプリケーションプログラムの第２のバージョンはバージョン２．０と表すことができる。バージョン１．０は、バージョン２．０に関して旧バージョンである。バージョン２．０は、バージョン１．０に関して後のバージョンである。
【００４８】
本発明は、データファイルの構造体として上で説明したＯＰＬ配列および従来のＯＰＬとともに使用することができる。しかし、当業者であれば、本発明はこれらのファイル構造体に限られないことを理解するであろう。
【００４９】
本発明の一実施形態によれば、ファイルバージョン透かしは、オリジナルデータファイルのさまざまなプロパティを示すアプリケーションプログラムのオリジナルデータファイルで与えることができる。ファイルバージョン透かしはファイルヘッダに入れることができ、これによりファイルに関する情報を提供する。上位バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最高位バージョンであることを示すことができる。最終バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最終バージョンであることを示すことができる。低位バージョン透かしを入れて、ファイルを保存するために使用されるアプリケーションプログラムの最低位バージョンであることを示すことができる。作成バージョン透かしを入れて、ファイルを最初に作成したアプリケーションプログラムのバージョンを示すことができる。オブジェクトバージョン透かしをプロパティとして各オブジェクトに入れ、特定のオブジェクトを書き込むアプリケーションプログラムの最高位バージョンであることを示すことができる。各ファイルバージョン透かしは、ファイルに加えられた変更、追加、または削除を示すことができる。本発明は、ファイルをロードをするときに、低位透かしバージョン以降に追加または修正されたデータ構造体およびプロパティを判別することができる。その後、どのようなバージョンとも互換性を持つように、追加または修正された項目を訂正することができる。
【００５０】
動作時に、データファイル内の上位バージョン透かしをアクティブバージョンのアプリケーションプログラムと比較することができる。このような比較により、オリジナルデータファイルがアクティブバージョンに対応しているか、旧バージョンに対応しているか、または後のバージョンのアプリケーションプログラムに対応しているかを判別することができる。アプリケーションプログラムによりファイル全体を保存できるので、ファイル内のオブジェクトは、上位バージョン透かしによって識別されたバージョンで作成されたファイルの特性を含む。アプリケーションプログラムでは、アクティブバージョンに対応しているか、旧バージョンに対応しているか、または後のバージョンに対応しているかに基づいてオリジナルデータファイルをロードし、かつ／または保存する方法を決定できる。オリジナルデータファイルは、オブジェクトプロパティリスト、オブジェクトプロパティ配列、またはその他のファイル構造体を含むことができる。
【００５１】
例えば、バージョン２．０（後のバージョン）のアプリケーションプログラムは、バージョン２．０の情報の取り扱いがバージョン１．０（旧バージョン）と比べてどれだけ異なっているかに基づいて情報を変換するかどうかを決定することができる。例えば、バージョン１．０にハイパーリンク用の追跡テーブルがあるが、バージョン２．０では、ハイパーリンクデータをオブジェクト自身に配置し、バージョン１．０によって書き込まれたファイルをロードする際にそのような情報を変換すべきであると判断することができる。しかし、バージョン２．０がファイルを書き込む最古バージョンであった場合、バージョン２．０では、そのような変換が必要でないと判定することができる。
【００５２】
低位および上位バージョン透かし（およびオブジェクト透かし）は、前のマークを超えた場合に更新できる。ファイルを保存する最終バージョンは、保存時に更新できる。作成バージョン透かしは、ファイルが最初に作成されても、通常は更新されないときに入れることができる。
【００５３】
そこで図５を参照し、本発明の一実施形態によるデータファイルをロードをする方法５００について説明する。図５は、オリジナルデータファイルとアクティブバージョン、旧バージョン、および後のバージョンとの互換性が維持されるように、アプリケーションプログラムにオリジナルデータファイルをロードする方法５００を説明する流れ図である。方法５００は、オリジナルデータファイルに上位バージョン透かし、低位バージョン透かし、最終バージョン透かし、作成バージョン透かし、および／またはオブジェクトバージョン透かしを入れるステップ５１０を含むことができる。ステップ５２０で、オリジナルデータファイル内の上位バージョン透かしを決定する。この方法ではさらに、ステップ５３０に示されているように、オリジナルデータファイルの中の低位バージョン透かし、最終バージョン透かし、作成バージョン透かし、および／またはオブジェクトのオブジェクトバージョン透かしを決定することもできる。ステップ５４０で、上位バージョン透かしをアプリケーションプログラムのアクティブバージョンと比較し、上位バージョンがアクティブバージョンよりも新しいかどうかを判別する。この方法は、その比較に基づいて、オリジナルデータファイルをロードする方法を決定する。
【００５４】
ステップ５４０の比較によって上位バージョン透かしがアクティブバージョンよりも新しくないアプリケーションプログラムのバージョンを表していることが示されると、オリジナルデータファイルはアクティブバージョンに関してアプリケーションプログラムの同じバージョンまたは旧バージョンに対応する。その場合、この方法はステップ５６０に分岐し、そこで変更することなくオリジナルデータファイルをアプリケーションプログラムにロードすることができる。上位バージョン透かしはアプリケーションプログラムの同じバージョンまたは旧バージョンに対応しているため、アクティブバージョンはオリジナルデータファイル内のすべての情報を読み取り、理解できる。
【００５５】
ステップ５４０の比較によって上位バージョン透かしがアクティブバージョンよりも新しいアプリケーションプログラムのバージョンを表していることが示されると、オリジナルデータファイルはアクティブバージョンに関してアプリケーションプログラムの後のバージョンに対応する。その場合、この方法はステップ５５０に分岐し、オリジナルデータファイルをロードする。上位バージョン透かしはアプリケーションプログラムの後のバージョンに対応しているため、アクティブバージョンはオリジナルデータファイル内のすべての情報を読み取り、理解することができない場合がある。したがって、ステップ５５０で、知られているすべての情報をロードし未知のすべての情報をスキップすることで、オリジナルデータファイルがアプリケーションプログラムにロードされる。ＯＰＬまたはＯＰＬ配列をファイル構造体として使用する場合、オブジェクトに関連付けられているＯＰＬの未知のプロパティを保持するために、未知のすべてのプロパティをロードし、ファイルが保存されるまでそれらのプロパティをメモリブロック内に格納する。あるいは、プログラム側で、ディスク上のオブジェクトに関連付けられているオリジナルのＯＰＬの場所を追跡し、ＯＰＬの未知のプロパティを必要に応じてメモリ内に読み込んで戻してからファイルを上書きすることができる。
【００５６】
ステップ５５０または５６０の後、この方法はステップ５７０に進み、そこでは、オリジナルのコンピュータファイル内の最終バージョン透かしがアクティブバージョンよりも古いアプリケーションプログラムのバージョンを表しているかどうかを判別する。ステップ５７０での判別が否定的であれば、この方法は終了する。ステップ５７０での判別が肯定的であれば、この方法はステップ５８０に分岐し、そこで、オリジナルデータファイル内の古い情報に基づき新規または修正済み情報を更新することによりオリジナルデータファイルを変換することができる。また古い情報は、変更を加えずに保持することもできる。
【００５７】
ステップ５７０および５８０は、最終バージョン透かしに基づいてオリジナルデータファイルを変換する動作を行う。最終バージョン透かしは、上位バージョン透かしからの追加情報を示し、オリジナルデータファイルに対してどのような変更が必要かを判別することができる。例えば、バージョン２のコンピュータアプリケーションプログラム（上位バージョン透かし）は、オリジナルデータファイルを書き込んでいるものとする。バージョン２は、バージョン１からの新しいまたは修正済みプロパティを含んでいる。しかし、バージョン１のアプリケーションプログラムがファイルを書き込む最終バージョンであった場合（最終バージョン透かし）、バージョン２の新規または修正済みプロパティに対応するデータの一部が変更されている可能性がある。したがって、バージョン２または後のバージョン（アクティブバージョン）がオリジナルデータファイルを読み込む場合、そのバージョンは、ファイルを書き込む最終バージョンはバージョン１だったのでデータファイル内のデータを変換する必要があるかもしれない（バージョン１により書き込まれたデータは、バージョン２または後のバージョンに対応するように更新しなければならない場合がある）。
【００５８】
ファイルバージョン透かしは、ファイル全体の代わりに、またはそれだけでなくファイル全体でも、オブジェクトに入れることができる。その後、方法５００（および後述の方法６００）をオリジナルデータファイル内のオブジェクトに適用することができる。個々のオブジェクトについてファイルバージョン透かしを入れると、変換するか、または無視する必要があるファイル内のオブジェクトを判別することによりロードおよび保存の方法を最適化することができる。さらに、ファイルバージョン透かしは、ファイル全体またはオブジェクト全体ではなくプロパティ毎に、またはファイル全体またはオブジェクト全体とともにプロパティ毎に入れることができる。その後、方法５００（および後述の方法６００）をオリジナルデータファイル内のプロパティに適用することができる。個々のプロパティについてファイルバージョン透かしを入れると、変換するか、または無視する必要があるファイル内のプロパティを判別することによりロードおよび保存の方法を最適化することができる。
【００５９】
さらに、アプリケーションプログラムのアクティブバージョンでは、アクティブバージョン透かしを、オブジェクトを改訂、変更、または削除したアプリケーションプログラムのバージョンを表すことができる各オブジェクトに関連付けることができる。方法５００（および後述の方法６００）では、特定のオブジェクトのオブジェクトバージョン透かしをアクティブバージョンと比較できるが、ただし、アクティブバージョンはアクティブバージョンのその特定のオブジェクトのアクティブバージョン透かしにより表される。したがって、本発明では、アクティブバージョン透かしがオブジェクトバージョン透かしよりも新しい場合のみオブジェクトを更新する必要があるため、オリジナルデータファイル内のオブジェクトを更新する必要があるかどうかの判別を最適化することができる。例えば、オリジナルデータファイル内の特定のオブジェクトのオブジェクトバージョン透かしは、バージョン１．０が特定のオブジェクトを保存する最終バージョンであったことを示すと仮定する。アクティブバージョン２．０がファイルをロードすると、バージョン２．０はバージョン１．０よりも新しいため、特定のオブジェクトに基づくアクティブバージョン内で情報を更新する。しかし、アクティブバージョンのその特定のオブジェクトについてアクティブバージョン透かしが入れられた場合、アクティブバージョン透かしは、バージョン１．０以降、特定のオブジェクトが変化しておらず、バージョン２．０で変更されていないためアクティブバージョンは特定のオブジェクトを更新しない。したがって、ロード方法は、不要な変換ステップを削除することにより最適化することができる。
【００６０】
そこで図６を参照し、本発明によるデータファイルを保存する方法６００の実施形態について説明する。方法６００では、修正済みデータファイルを保存することで、アクティブバージョン、旧バージョン、および後のバージョンと互換性を持つようにできる。アクティブバージョンのアプリケーションプログラムによりオリジナルデータファイルが修正された後、その修正されたオリジナルデータファイルを、アクティブバージョン、旧バージョン、および後のバージョンと互換性を持つように保存することができる。図６は、方法６００を説明する流れ図である。方法６００は、オリジナルデータファイルに上位バージョン透かし、低位バージョン透かし、最終バージョン透かし、作成バージョン透かし、および／またはオブジェクトバージョン透かしを入れるステップ６０５を含むことができる。ステップ６１０で、オリジナルデータファイル内の上位バージョン透かしを決定する。方法６００ではさらに、ステップ６１５に示されているように、オリジナルデータファイルの低位バージョン透かし、最終バージョン透かし、作成バージョン透かし、および／またはオブジェクトバージョン透かしを決定することもできる。ステップ６２０で、上位バージョン透かしをアクティブバージョンのアプリケーションプログラムと比較する。この方法は、その比較に基づいて、修正されたオリジナルデータファイルをどのように保存するかを決定する。
【００６１】
ステップ６２０の比較によって上位バージョン透かしがアクティブバージョンよりも古いアプリケーションプログラムのバージョンを表していることが示されると、オリジナルデータファイルはアクティブバージョンに関してアプリケーションプログラムの旧バージョンに対応する。その場合、この方法はステップ６２５に分岐し、修正されたオリジナルデータファイルをアプリケーションプログラムのアクティブバージョンの形式で保存する。上位バージョン透かしはアプリケーションプログラムの旧バージョンに対応しているため、アクティブバージョンのアプリケーションプログラムはさらに、修正されたオリジナルデータファイルをすべての旧バージョンと互換性のある形式で保存することができる。したがって、方法はステップ６３０に進み、そこで、修正されたオリジナルデータファイル内の項目が旧バージョンの形式に変換され、保存される。すると、修正されたオリジナルデータファイルはアクティブバージョンと旧バージョンとの両方の形式で保存される。旧バージョンからの古い情報は、ステップ６３０で再構築され、アプリケーションプログラムの旧バージョン、アクティブバージョン、および将来のバージョンによってファイルが使用される。古い情報を再構築する作業が大きくなりすぎた場合、将来のバージョンのうち特定のバージョンでのみファイルを読み込めることを伝えるコマンドを挿入することにより、将来のファイルは切り詰められる。ステップ６３５で、オリジナルデータファイルの上位バージョン透かしは、アクティブバージョンのアプリケーションプログラムと対応するように更新される。次に、この方法はステップ６６５に進み、さらにファイルを保存する最終バージョンを将来の使用に備えて更新する。
【００６２】
ステップ６２０の比較によって上位バージョン透かしがアクティブバージョンよりも新しいアプリケーションプログラムのバージョンを表していることが示されると、オリジナルデータファイルはアクティブバージョンに関してアプリケーションプログラムの後のバージョンに対応する。その場合、この方法はステップ６４０に分岐し、オリジナルデータファイルを取得する。ステップ６４５で、オリジナルデータファイルを修正済みオリジナルデータファイルで上書きする。上位バージョン透かしはアプリケーションプログラムのは後のバージョンに対応しているため、修正されたオリジナルデータファイルには、アクティブバージョンには未知の情報またはデータを格納することができる（例えば、図５のステップ５８０を参照のこと）。したがって、ステップ６４５では、オリジナルデータファイルの知られているデータのみが修正されたオリジナルデータファイルのデータで上書きされる。未知のプロパティデータは変更されない。この方法により、未知のデータは、そのデータを読み込むことができるアプリケーションプログラムの後のバージョンでそのまま利用できる。未知のデータは、図５を参照して上述したようにアプリケーションプログラムにより保持することができる。その後、この方法はステップ６３０に進み、そこで、修正されたオリジナルデータファイル内の項目が旧バージョンの形式に変換され、保存される。すると、修正されたオリジナルデータファイルはアクティブバージョンと旧バージョンとの両方の形式で保存される。
【００６３】
次に、この方法では、低位バージョン透かしを更新する必要があるかどうかを判定する。ステップ６５０で、アプリケーションプログラムのアクティブバージョンをオリジナルデータファイルの低位バージョン透かしと比較する。ステップ６５０で、アクティブバージョンが低位バージョン透かしにより表されるアプリケーションプログラムのバージョンよりも古いと判断された場合、方法はステップ６５５に分岐し、そこで、低位バージョン透かしが更新されアクティブバージョンに対応するようになる。次に、この方法はステップ６６５に進み、さらにファイルを保存する最終バージョンを将来の使用に備えて更新する。ステップ６５０で、アクティブバージョンが低位バージョン透かしにより表されるアプリケーションプログラムのバージョンと同じか、それよりも新しいと判断された場合、方法はステップ６６５に分岐し、そこで、最終バージョン透かしが更新されアクティブバージョンに対応するようになる。
【００６４】
ステップ６２０の比較によって上位バージョン透かしがアクティブバージョンと同じアプリケーションプログラムのバージョンを表していることが示されると、オリジナルデータファイルはアプリケーションプログラムのアクティブバージョンに対応する。その場合、この方法はステップ６６０に分岐し、修正されたオリジナルデータファイルは、オリジナルデータファイルを上書きすることにより保存される。その後、この方法はステップ６３０に進み、そこで、修正されたオリジナルデータファイル内の項目が旧バージョンの形式に変換され、保存される。そのため、修正されたオリジナルデータファイルはアクティブバージョンと旧バージョンとの両方の形式で保存される。次に、この方法はステップ６６５に進み、ファイルを保存する最終バージョンを将来の使用に備えて更新する。
【００６５】
ステップ６３０はステップ６２０から辿る分岐に関係なく実行することができることに注意されたい。したがって、旧バージョンに対応するプロパティは、常に、ファイルが旧バージョンと互換性を持つようにファイルに書き込むことができる。
【００６６】
いくつかの場合には、方法５００および６００は、ファイルを修正後に保存するＯＰＬ配列要素の場所を追跡する追加ステップ（図に示されていない）を含むことができる。例えば、あるバージョンのデータファイルは、４つの要素からなるテーブルを格納することができる。しかし、データファイルの修正されたバージョンには、３つの要素しか入らない。アプリケーションプログラムがオリジナルデータファイルを上書きしようとすると、ディスクバージョンには、オリジナルの４つの要素が入るが、メモリバージョンには、要素は３つしか入らない。追跡ステップがないと、アプリケーションプログラムでは、どの要素が削除されたかを知ることができない。追跡ステップでは、アプリケーションプログラムはすべてのテーブルのオリジナルインデックスを追跡する。ディスクからテーブルが読み込まれると、テーブル内の各要素の位置を示す付加データ項目が追加される。つまり、アプリケーションプログラムは、最初の要素、２番目の要素、というようにマークを付けてゆく。したがって、プログラムでは、存在していないため削除されてしまった要素を判別し、配列要素内に存在するかもしれない将来のバージョンプロパティを保持することができる。
【００６７】
ステップ５００および６００では、アプリケーションプログラムのアクティブバージョンは、透かしのどれかを使用して、オリジナルデータファイルをロードするときに実行するアクションを決定することができる。上位バージョン透かしの使用については、すでに上述した。低位バージョン透かしは、アプリケーションプログラムに与えることができるヒントとなり、オリジナルデータファイルに対する必要な変換の種類を制限する。前の例を構築して、低位バージョン透かしがそのバージョンによりファイルが書き込まれたことのないことを示しているため、バージョン１．０のハイパーリンクテーブルが存在しないことが知られている場合、変換プロセスは、ハイパーリンクテーブルを扱うものをスキップしても安全である。最終バージョン透かしは、ファイルを書き込む最終バージョンによって認識されているデータだけでなく、未知ではあるがファイルで運ばれるデータをも示すことができる。
【００６８】
オブジェクトバージョン透かしは、特定のオブジェクトに対する特定の情報を提供することができ、そのため、その情報に基づいて、特定オブジェクトのロード、保存、または変換を行うことができる。オブジェクトバージョン透かしは、特定のオブジェクトの情報を提供することができ、また特定のオブジェクトに含まれるプロパティの最高位ファイルバージョンを示すことができる。例えば、ハイパーリンクプロパティがバージョン２．０のオブジェクトＸに追加され、バージョン３．０のオブジェクトＸには新しいプロパティは追加されなかったと仮定する。オブジェクトＸに、バージョン２．０または後のバージョンで書かれたハイパーリンクが含まれる場合、そのバージョン透かしはバージョン２．０に設定される。オブジェクトＸがハイパーリンクを含まない（したがって、ハイパーリンクプロパティが書き込まれない）場合、またはバージョン１．０によって書かれている場合、バージョン透かしはバージョン１．０に設定される。この情報を使用して、各個別オブジェクトおよび、そのオブジェクト内のすべてのプロパティを認識する最高位バージョンに関してロードおよび保存オペレーションをさらに最適化することができる。例えば、バージョン３．０によって書かれたが、ハイパーリンクを含まない（したがって、バージョン１．０オブジェクト透かしを持つ）オブジェクトＸは、バージョン１．０により読み書きすることができ、しかも、ファイルの上位バージョン透かしがバージョン３．０を反映するとしても、将来のプロパティの存在に関して気にする必要がない。
【００６９】
一般に、ファイルを保存する最新バージョンのアプリケーションプログラムは、そのバージョンまたは旧バージョンからの情報の取り扱い方法を決定するのに最も適している。最新バージョンでは、ファイル内のすべてを読むことができ、また認識することができる。アプリケーションプログラムの最新バージョンにより、保持する、変換する、または破棄する情報が決定される。したがって、ファイルを書き込む最高位バージョンにより、情報を破棄するのか、それとも変換するのかが決定される。より低いバージョンはすべて、単に、未知の情報を伝搬することができるだけである。
【００７０】
結局、本発明を動作可能にするために図５および６に示されている方法５００および６００のすべてのステップが必要なわけではないということである。さらに、図に示されているのと違う順序でいくつかのステップを実行することができる。
【００７１】
図７〜９を参照して、本発明による方法５００および６００の具体的実施形態について説明する。図７〜９のそれぞれで、方法５００または６００により、最終バージョン透かしがアプリケーションプログラムのアクティブバージョンよりも低い（つまり、オリジナルデータファイルを保存するアプリケーションプログラムの最終バージョンはアクティブバージョンに関してアプリケーションプログラムの旧バージョンに対応している）と判断されている（図５のステップ５９５を参照のこと）。さらに、図７〜９を参照して以下で説明している実施形態は、方法５００または６００により、上位バージョン透かしがアプリケーションプログラムのアクティブバージョンよりも低いと判断されたときでも動作可能である。
【００７２】
図７は、アクティブバージョンが旧バージョンに含まれない追加オブジェクトプロパティを持つ、本発明によりオリジナルデータファイルのロードおよび保存を行うための方法７００を示す流れ図である。方法７００のステップ７１０では、新しいプロパティのデフォルト値が、アプリケーションプログラムのアクティブバージョンに対するＯＰＬで定義される。プロセスはステップ７２５に進み、そこで、オリジナルデータファイルが変更なしでロードされる。オリジナルデータファイルは、修正された後、ステップ７３０で、保存される。したがって、アプリケーションプログラムのアクティブバージョンおよび将来のバージョンで使用できるように、その新しいプロパティが保存される。旧バージョンは、単に新しいバージョンを無視するだけである。ステップ７４０で、上位バージョン透かしはアクティブバージョンに更新される。
【００７３】
図８は、アクティブバージョンでは旧バージョンで使用されたオブジェクトプロパティを削除してしまっている、本発明によりオリジナルデータファイルのロードおよび保存を行う方法８００を示す流れ図である。ステップ８２０で、削除されたプロパティは、オリジナルデータファイルがアクティブバージョンにロードされる際に無視される。ステップ８３０で、オリジナルデータファイルの修正バージョンが保存されるときに、ファイルは、古いバージョンから使用できる削除済みプロパティとともに保存される。アクティブバージョンは削除済みプロパティを使用していなかったが、削除済みプロパティは、旧バージョンで使用できるように保存ファイルに戻される。削除済みプロパティは、オリジナルデータファイル内に残すこと、つまり、削除済みプロパティをファイルから書き出さないことにより、保存ファイルに戻すことができる。あるいは、削除済みプロパティを（オリジナルデータファイルから）保存ファイルに伝搬させて戻すという方法で、保存ファイルに戻すことができる。削除済みプロパティはアクティブバージョンに知られているので、削除済みプロパティの値を他のプロパティ値から導いたり、または削除済みプロパティを表すデフォルト値を生成し、削除済みプロパティをファイルに戻すようにすることができる。ステップ８４０で、上位バージョン透かしはアクティブバージョンに更新できる。
【００７４】
例えば、旧バージョンは、オブジェクトについてドロップシャドウ（ｄｒｏｐ  ｓｈａｄｏｗ）プロパティを含んでいたと仮定する。アクティブバージョンは、このプロパティをもはやサポートできない、つまり、ドロップシャドウプロパティは、アクティブバージョンから削除されてしまっている。アプリケーションプログラムのより新しいバージョンでは、ドロップシャドウプロパティが削除されたことを認識している。しかし、ドロップシャドウプロパティはそれでも、アクティブバージョンによりファイルに書き込むことができる。ステップ８２０で、オリジナルデータファイルをロードし、削除されたドロップシャドウプロパティを無視することができる。ステップ８３０で、オリジナルデータファイルの修正バージョンが保存されるときに、ファイルは、古いバージョンから使用できる削除済みドロップシャドウプロパティとともに保存される。アクティブバージョンは削除済みドロップシャドウプロパティを使用していなかったが、削除済みドロップシャドウプロパティは、旧バージョンで使用できるように保存ファイルに戻すことができる。ドロップシャドウプロパティ値は、他のプロパティの値から決定できるか、またはデフォルト値を使用することができる。ステップ８４０で、上位バージョン透かしはアクティブバージョンに更新できる。
【００７５】
図９は、アクティブバージョンでは旧バージョンの古いオブジェクトプロパティを修正してしまっている、本発明によりオリジナルデータファイルのロードおよび保存を行う方法９００を示す流れ図である。古いプロパティを修正されたプロパティで置き換えるのではなく、修正されたプロパティを表す新しいプロパティをアクティブバージョンに入れる。方法９００のステップ９１０では、新しいプロパティのデフォルト値が、アプリケーションプログラムのアクティブバージョンのＯＰＬで定義される。古いプロパティは、変更されずそのままである。次にステップ９２０で、オリジナルデータファイルがアクティブバージョンにロードされ、古いプロパティが新しい（修正された）プロパティに変換される。オリジナルデータファイルは、修正された後、ステップ９３０で、保存される。ステップ９３０で、古いプロパティを参照せずに新しいプロパティが保存される。さらに、ステップ９３０で、新しいプロパティが古いプロパティに変換され、旧バージョンで使用できるように保存される。ステップ９４０で、上位バージョン透かしはアクティブバージョンに更新される。
【００７６】
例えば、アプリケーションプログラムの旧バージョンでＲＧＢ（赤、緑、青）色モデルを使用してオブジェクトの色を定義したとする。アプリケーションプログラムのアクティブバージョンは、新しいプロパティを備え、プロ用プリンタで使用されるＣＭＹＫ色モデル（シアン、マゼンタ、黄、黒）でオブジェクトの色を定義することができる。新しいＣＭＹＫ色プロパティは、古いＲＧＢ色プロパティに基づき、相当するＣＭＹＫ値は、ＲＧＢ値毎に決定することができる。新しいｏｐｙｉｄを適切なＯＰＬ辞書に追加することができる。例えば、適切な辞書として、ページオブジェクト用のページオブジェクト辞書、他の既存の辞書、または新規辞書を設定できる。ステップ９１０で、新しいＣＭＹＫ色プロパティのデフォルト値をＯＰＬ辞書で定義することができる。古いＲＧＢプロパティは、変更されずそのままである。ステップ９２０で、オリジナルデータファイルをアクティブバージョンにロードし、オブジェクトの古いＲＧＢプロパティに基づき新しいＣＭＹＫ色プロパティを更新することができる。オリジナルデータファイルは、修正された後、ステップ９３０で、保存できる。ステップ９３０で、オリジナルデータファイルからの古いＲＧＢプロパティを参照せずに新しいＣＭＹＫ色プロパティを保存できる。新しいＣＭＹＫプロパティは、対応する古いＲＧＢプロパティに変換し、ファイルに保存することができる。したがって、アプリケーションプログラムのアクティブバージョンおよび将来のバージョンで使用できるように、新しいＣＭＹＫ色プロパティを保存できる。旧バージョンは、単に新しいＣＭＹＫ色プロパティを無視するだけである。ステップ９４０で、上位バージョン透かしはアクティブバージョンに更新できる。
【００７７】
さらに、本発明の方法では、データファイルに保存されているアプリケーションプログラムの２つのバージョンの間の食い違いを解決することもできる。上述したＣＭＹＫ−ＲＧＢの例では、後のバージョンは新しいＣＭＹＫ色プロパティを対応するＲＧＢプロパティに下方変換するため、旧バージョンはファイルを読み込むことができる。しかし、ファイルを書き込む最終バージョンがファイルを書き込むアクティブバージョンと上位バージョンの両方よりも古い場合に、食い違いが発生することがある。アクティブバージョンは、ファイルを書き込む上位バージョンと同じバージョンまたは後のバージョンであってよい。最終バージョンでない、ファイルを書き込む上位バージョンが新しいＣＭＹＫ色プロパティを認識した場合、新しいＣＭＹＫ色プロパティ値をデータファイルに書き出すだけでなく、対応するＲＧＢ色プロパティ値も書き出す。さらに、ファイルを書き出す最終バージョンがＲＧＢ色プロパティのみを認識した場合、ＲＧＢ色プロパティ値をデータファイルに書き出す。データファイルが新しいＣＭＹＫ色プロパティをサポートするアクティブバージョンにロードされると、データファイルのＣＭＹＫ色プロパティは古い情報に対応する。上位バージョンはＣＭＹＫ色プロパティ値をファイルに書き込み、最終バージョンはＲＧＢ色プロパティ値をファイルに書き込んだため、色プロパティ情報の２つのバージョンがデータファイル内に存在することになる。ファイルを書き込む最終バージョンはＲＧＢ値を更新したが、未知のＣＭＹＫプロパティの値を保持していたため、ＲＧＢおよびＣＭＹＫ値は一致しない。ファイルがアクティブバージョンにロードされるときに、ファイルを書き込む最終バージョンを決定できる（図５のステップ５７０を参照のこと）。その情報に基づき、ＣＭＹＫ色プロパティ値が期限切れになっており、ＲＧＢ色プロパティ値をロードし、更新されたＣＭＹＫ色プロパティ値に変換しなければならないと判断することができる。
【００７８】
オブジェクトはプロパティの集合である。したがって、アプリケーションプログラムの異なるバージョンにおけるオブジェクトの変更は、オブジェクトに対応するプロパティの変更で示すことができる。オブジェクトを含むデータファイルがロードまたは保存されるときに、方法７００、８００、および９００のステップをオブジェクトの個々のプロパティについて反復することができる。
【００７９】
本発明の一実施形態を、本願特許出願人（ワシントン州レッドモンド）が販売しているＭｉｃｒｏｓｏｆｔ  Ｐｕｂｌｉｓｈｅｒというドキュメントパブリッシングシステムの一部として使用することができる。このパブリッシングシステムを使用すると、ユーザは、ドキュメントを編集し、グラフィックスデータ、テキストデータ、スプレッドシートデータ、またはその他の種類のデータを含む各種オブジェクトを挿入することができる。さらに、このシステムでは、オブジェクトのプロパティをユーザ側で修正することができる。システムは、標準値（デフォルト値）に設定されている定義済みプロパティを持つ多数の定義済みオブジェクト型を用意できる。各オブジェクト型は、さまざまなプロパティおよび／またはプロパティ値の集まりを備えることができる。各オブジェクトは、そのオブジェクト型のインスタンスとすることができる。したがって、オリジナルの形式のオブジェクトの設定は容易に取得可能である。ドキュメントパブリッシングシステムを参照して実施形態を説明しているが、当業者であれば、本明細書で説明した手法を実質的に数限りない他の種類のシステムに応用できることを理解するであろう。
【００８０】
本発明は、上述の処理機能を実行するコンピュータのハードウェアおよびソフトウェアとともに使用することができる。当業者であれば理解するであろうが、本明細書で説明しているシステム、方法、および手順は、プログラム可能コンピュータ、コンピュータ実行可能ソフトウェア、またはデジタル回路により実現することができる。ソフトウェアは、コンピュータ可読媒体に格納することができる。例えば、コンピュータ可読媒体には、フロッピー（登録商標）ディスク、ＲＡＭ、ＲＯＭ、ハードディスク、取り外し可能媒体、フラッシュメモリ、メモリスティック、光媒体、光磁気媒体、ＣＤ−ＲＯＭなどがある。デジタル回路には、集積回路、ゲートアレイ、基本的論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などがある。
【００８１】
上記では本発明の特定の実施形態について説明したが、この説明は単に例示することのみを目的としている。上述のものに加えて、複数の実施形態の開示されている態様のさまざまな修正、およびそれらの態様に対応する相当するステップは、当業者であれば、特許請求の範囲で定められている本発明の精神および範囲を逸脱することなく実施することができ、その範囲はそのような修正および同等の構造を含む最も広い解釈を受け入れるものである。
【図面の簡単な説明】
【００８２】
【図１】アプリケーションプログラムによって使用されるオブジェクトを説明するブロック図である。
【図２】本発明の例示的な実施形態を実施するのに好適なコンピュータ例を説明するブロック図である。
【図３】従来のＯＰＬの特徴を説明するブロック図である。
【図４】本発明の例示的な実施形態によるＯＰＬ配列の特徴を説明するブロック図である。
【図５】本発明の例示的な実施形態によりオリジナルデータファイルをロードする方法を示す流れ図である。
【図６】本発明の例示的な実施形態によりオリジナルデータファイルを保存する方法を示す流れ図である。
【図７】アクティブバージョンは旧バージョンに含まれない追加オブジェクトプロパティを持つ、本発明によりオリジナルデータファイルのロードおよび保存を行う方法を示す流れ図である。
【図８】アクティブバージョンでは旧バージョンで使用されたオブジェクトプロパティを削除してしまっている、本発明によりオリジナルデータファイルのロードおよび保存を行う方法を示す流れ図である。
【図９】アクティブバージョンでは旧バージョンの古いオブジェクトプロパティを修正してしまっている、本発明によりオリジナルデータファイルのロードおよび保存を行う方法を示す流れ図である。
【図１】
2005539277.tif 000003
【図２】
2005539277.tif 000004
【図３】
2005539277.tif 000005
【図４】
2005539277.tif 000006
【図５】
2005539277.tif 000007
【図６】
2005539277.tif 000008
【図７】
2005539277.tif 000009
【図８】
2005539277.tif 000010
【図９】
2005539277.tif 000011
【国際調査報告】
2005539277.tif 000012
2005539277.tif 000013
2005539277.tif 000014