(57)【要約】【課題】部品ベースのモデルを用いて文書インスタンスを生成する。【解決手段】文書インスタンスを生成するための方法では、文書部品の集合を備えたコンテナ１０６を画定し、１又は複数の未解決の要素を示す構成テンプレート１１０を画定し、構成テンプレート１１０をレンダリングするために用いられるファセットの集合を示す構成モデル１１２を画定し、構成モデル１１２を用いることにより、構成テンプレート内の未解決の要素をコンテナ内の文書部品の集合と結合し、(i)コンテナ内の文書部品の集合を変更すること、及び(ii)構成モデルを用いて構成モデル内の未解決の要素をコンテナ内の変更された文書部品の集合の中の文書部品群と再結合すること、により、複数の異なるレンダリングされた文書を生成する。【選択図】図１
2006172476.tif 000002
【特許請求の範囲】
【請求項１】
文書インスタンスを生成するための方法であって、
文書部品の集合を備えたコンテナを画定し、
１又は複数の未解決の要素を示す構成テンプレートを画定し、
構成テンプレートをレンダリングするために用いられるファセットの集合を示す構成モデルを画定し、
構成モデルを用いることにより、構成テンプレート内の未解決の要素をコンテナ内の文書部品の集合と結合し、
(i)コンテナ内の文書部品の集合を変更すること、及び(ii)構成モデルを用いて構成モデル内の未解決の要素をコンテナ内の変更された文書部品の集合の中の文書部品群と再結合すること、により、複数の異なるレンダリングされた文書を生成する、
方法。
【請求項２】
請求項１記載の方法であって、各文書部品は、構成モデル内のファセットに関連づけられた共通インタフェースを介して条項をエクスポートする、ことを特徴とする方法。
【請求項３】
請求項１記載の方法であって、更に、ルックアップ・サービスを用いて文書コンテナの文書部品を部品レジストリに登録する処理を行い、
ルックアップ・サービスに問い合わせることで部品レジストリに登録され構成モデルに示されるファセットを識別することにより、構成モデルが未解決の要素を結合するのに用いられる、
方法。
【請求項４】
請求項１記載の方法であって、更に、構成テンプレートのヘッダに格納された１又は複数の要素を用いることにより、構成テンプレート内の未解決の要素を結合するのに用いる構成モデル及び該構成モデル内のファセットを特定する処理を行う、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下は、大略的には文書管理の分野に関し、更に詳細には文書管理のための、部品ベースのモデルを用いて文書インスタンスを生成するための方法及び装置に関する。
【背景技術】
【０００２】
建築ブロックのように、文書のために部品を定義し、利用することが知られている。モジュール方式で動的に文書を展開していくことは、ハイパーテキストシステムを用いて実現されており、ハイパーリンクを用いて文書のパーツ同士の間の関係を規定している。ｋまた、動的コンテンツ管理システム（例えばActive Server Page, PHP, XSLT）は、文書に挿入されたクエリー（質問）を介して動的な情報を取り扱うことができ、これによっても同様のことが実現されている。更に、動的文書は、文書を一つの形式から他の形式に変換する（例えば、あるスタイルシート又は文書型定義(DTD)に従ったXML文書を変換して、別のスタイルシート又はDTDに従ったXML文書を作成するなど）ための変換機構を利用して作成される場合もある。
【０００３】
公知のハイパーテキストシステムの欠点の一つは、特定の文書を指すリンクに緊密に結合されていることである。すなわち、例えば、ある集合に文書が追加されたり、或いは集合から文書が削除されたりした場合でも、他の文書に存在するリンクがその変化に応じて更新されないであろう。いくつかのハイパーテキストシステムが１つのリンク・トラバース（リンクをたどること）操作（すなわち「文書のロード("load document")」）を規定するのみである一方、他のハイパーテキストシステムは添加(inclusion)のような他のトラバース操作を提供している。これに対し、動的コンテンツ管理システムの一つの欠点は、この種のシステムがサーバ上のデータベースに対するクエリーを実行することに頼っており、システムが動作するためにはそのようなデータベースに対して情報を集中させる必要がある。
【０００４】
【特許文献１】米国特許第６５７８１９２号明細書
【特許文献２】米国特許第６５７３９１６号明細書
【特許文献３】米国特許第６５４２０８３号明細書
【特許文献４】米国特許第６４４６２０８号明細書
【特許文献５】米国特許第６４２２４７４号明細書
【発明の開示】
【課題を解決するための手段】
【０００５】
ここに示す様々な例との関連で、文書部品を異なる複数の方法で結合するための文書管理システムが提供される。大略的にいえば、結合し直しの可能な文書部品群を画定（定義）し、生成し、利用する方法が提供される。結合し直しの可能な文書は、ここでは部品ベースの文書として画定される。部品ベースの文書は、多くの異なる形にレンダリング（表現）されることができ、文書の部品は他の部品との組み合わせる（結合する）ことができる。部品の組合せは様々な基準に基づき選択することができ、文書の構成（すなわちレンダリング）は、新しい文脈に適応するために、静的、動的いずれでも実行することができる。
【０００６】
文書管理システムは、多くの部品から構成される物理的なオブジェクト（もの）のドキュメンテーション（文書）を管理するのに用いることができる。ここで、個別のオブジェクトは、それぞれ、部品の複数の組合せのうちの１つにより構成することができ、構成部品及びその下位の部品はいずれ進化するかまたは再構成される可能性がある。更に、文書管理システムは、部品の依存関係を考慮している（すなわち、部品を追加、削除又は置換すると、他の部品のドキュメンテーションに影響してもよい）。ここで、このシステムは、文書のパーツ間の疎結合を維持する（すなわち、部品間に直接の依存関係が全くないか、或いはほとんどない文書のことをここでは「疎結合である」と呼ぶ）。
【０００７】
ここに示される様々な方法を用いて文書部品を結合することにより、選択された文書部品の一意な集合を含んだレンダリングされた文書が生成される。文書部品の各々が他の文書部品に応じて適応するようにすることもできる。すなわち、それら様々な方法が、文書部品をそれが用いられる文脈に応じて自動的に適応させることを許容する。更に、それら様々な方法において、レンダリングされた文書のテキスト内容を整えたり修正したりするための言語処理を用いてもよい。言語処理には、例えば、名詞の数や性に関する呼応を検査したり、動詞の人称や時制を検査したりするなどがある。
【０００８】
ここに示される様々な方法の一側面では、文書部品は、他の文書部品が参照する１又は複数のアンカー・ポイントをエクスポートすることで可変データを定義できる。この側面又は別の側面では、文書部品は、合意された用語に従って当該文書部品が何を記述しているのかを特定するインタフェースを明示的に宣言し、逆参照演算を提供する。逆参照演算は、参照を無向性のハイパーリンクへと変換するため、又は文書コンテント（内容）のインクルージョン(inclusion：包摂)を可能にするため、のものである。このような逆参照は、各文書部品が用いられる文脈に依存して制御され条件付けされる。ここに示される様々な方法のさらなる側面では、構成モデル及び構成テンプレートが、文書部品の集合を用いて、レンダリングされた文書のインスタンスの構築を制御するとともに、文書部品のインタフェースを介してエクスポートされたルックアップ関数を用いて文書部品間の疎結合を維持する。
【０００９】
ここに示す方法の更に別の側面では、物理的なシステム或いは物品にスマートタグが設けられる。スマートタグには、ここに示す方法に従って、関連する文書を自動的に再構成するための処理のための情報、又はその再構成の助けとなる情報が含まれる。この側面によれば、部品ベースの物理的なオブジェクトの新たな構成を反映するよう文書を自動的に更新できるようになる（例えば、構成部品が追加、削除又は交換された場合、文書は当該オブジェクトの新たな構成を反映するように自動的に更新される）。
【００１０】
ここに示される方法の更に別の側面では、文書のインスタンスを生成するための方法が提供される。この方法では、文書部品の集合を備えたコンテナを画定（定義）し、１又は複数の未解決の要素を示す構成テンプレートを画定し、構成テンプレートをレンダリング（表現）するために用いられるファセットの集合を示す構成モデルを画定し、構成モデルを用いることにより、構成テンプレート内の未解決の要素をコンテナ内の文書部品の集合と結合し、(i)コンテナ内の文書部品の集合を変更すること、及び(ii)構成モデルを用いて構成モデル内の未解決の要素をコンテナ内の変更された文書部品の集合の中の文書部品群と再結合すること、により、複数の異なるレンダリングされた文書を生成する。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して、説明を行う。図面においては、同じ又は類似の要素には同一符号を付した。
【００１２】
本明細書、特許請求の範囲、及び図面において用いる定義及び用語を以下のテーブルに示す。
【表１】
2006172476.tif 000003
【００１３】
Ａ．処理環境
図１は、部品の一意な集まりからなるオブジェクト（もの）を記述する文書をレンダリング（表現）するのに適用される文書管理システム１００の一実施形態を示す。図１に示されるこの実施形態の処理要素の中には、文書部品１０４を部品レジストリ１０３に登録する部品登録サービス１０２、文書部品１０４の集合を格納する部品コンテナ１０６、文書インスタンス（文書の例）１１４をそれぞれレンダリング（表現又は作成）するためのレンダリング・サービス１０８を有する。レンダリング・サービス１０８は、入力として、構成（コンポジション）テンプレート１１０、構成（コンポジション）モデル１１２、及び部品コンテナ１０６をとる。レンダリングされた各々の文書インスタンス１１４は、部品コンテナ１０６内に示された文書部品１０４群に対応するコンテンツを用いて構成される。
【００１４】
図１に示すように、レンダリングされた文書インスタンス(rendered document instance)１１４Ｎは、文書部品１０４の集合から構成され、各部品は部品コンテナ１０６Ｎに格納される（同様に、他の文書インスタンスが、部品コンテナ１０６内の文書部品群を用いてレンダリングされてもよい）。各部品コンテナ１０６は、従って２つの機能を提供する。すなわち、部品コンテナ１０６は、第１に、レンダリングされた文書インスタンス１１４のために利用可能な文書部品群を格納し、第２に、その文書部品群は、未解決の要素を逆参照（デリファレンス:dereferencing）することにより、ルート（根）文書部品１０４からの推移閉包を求めるために、（部分的に又は全体的に）利用される。
【００１５】
部品登録サービス１０２は、１つ又はそれ以上の部品コンテナ１０６に対してサービスを提供するように動作することができ、個々の文書コンテナ１０６を構成する文書部品１０４の集合を生成又は変更するのに適用される。一例では、各部品コンテナ１０６は、それぞれ自分に対応する部品登録サービス１０２を持つ。有利なことに、オブジェクト１１６のための部品群が変化するにつれ、そのオブジェクトの部品に対応する文書部品１０４がそれに対応する部品コンテナ１０６内で更新されると（例えば、古い文書部品は削除され新たな文書部品が追加されるなど）、そのオブジェクトを記述するレンダリングされた文書が新たに生成される。例えば、図１に示す例では、文書部品１０４Ａが部品コンテナ１０６Ａ，１０６Ｂ，及び１０６Ｎに登録されている一方、文書部品１０４Ｂは部品コンテナ１０６Ａ及び１０６Ｎに登録され、文書部品１０４Ｃは部品コンテナ１０６Ｎにだけ登録されている。各文書部品は、レンダリング・サービス１０８により解決される１つ又はそれ以上の未解決の要素を含んでいる。
【００１６】
レンダリング・サービス１０８は、１つの構成テンプレート１１０と１つの構成モデル１１２とを用いて複数のレンダリングされた文書インスタンス１１４Ｎを生成（又は構成）するために用いられる。ここで、レンダリングされた文書インスタンス１１４の各々は、部品コンテナ１０６内の文書部品のカレント（現在）の集合から構築される。構成テンプレート１１０は、少なくとも１つの未解決の要素を含む。構成テンプレート１１０は、部品コンテナ１０６から選択可能な文書部品であり、対応する構成モデル１１２のための最上位すなわちルート文書部品１０４の役割を果たす。後の一つの例でより詳しく述べるが、ルート文書部品の「ヘッダ」（"header"）部の中の「ファミリ」("family")は、それが参照する構成モデル１１２を識別するのに用いてもよい。一つの例では、構成モデル１１２は、構成テンプレートと共に各部品コンテナに格納され、それらコンテナにおいてそれら部品はレンダリングされた文書インスタンス１１４を作成するのに用いられる。更に図１に示すように、オブジェクト１１６Ｎは部品コンテナ１０６Ｎに関連づけてもよく、この場合レンダリングされた文書インスタンス１１４Ｎはオブジェクト１１６Ｎの部品群を記述する。有利なことには、レンダリング・サービス１０８は、複数のオブジェクト１１６に対応する「部品に特化したレンダリングされた文書」１１４を、一つの構成テンプレート１１０とモデル１１２を用いて複数生成するのに用いることができる。ここで、異なる複数の文書インスタンス１１４をレンダリングするのに用いられる様々な文書部品１０４が、それぞれ対応する部品コンテナ１０６内に格納されている。
【００１７】
処理の１つの段階で、レンダリング・サービス１０８は、構成テンプレート１１０（すなわちルート文書部品）から初めて、再帰的な逆参照(de-referencing)を用いて未解決の要素群を解決し、レンダリングされた文書インスタンス１１４を構成する。レンダリング・サービス１０８は、文書部品の未解決の要素として現れる他の文書部品への「疎結合（結合の緩い）の参照」を解決することを、構成モデル１１２を用いることで助け、再帰的な逆参照処理を実行する。疎結合の参照は、他の文書部品内の文書部品を、構成モデル１１２を用いて間接的に参照する。すなわち、疎結合の参照を持つ文書部品は、文書部品を直接に参照（例えば名前(by name)又は場所(by location)による参照）することはしない。その代わりに、疎結合の参照を有する文書部品は、他の文書部品を、構成モデル１１２を用いて参照する。有利なことには、文書部品に疎結合参照を用いることにより、疎結合参照を用いて特定されたそれら文書部品群に変更を加える必要無しに、(a)文書部品を他の文書部品により置き換えること、(b)文書部品をいくつかの（下位の）文書部品に分割すること、(c)いくつかの文書部品群を１つの文書部品へと併合すること、が可能になる。
【００１８】
ここに示される文書処理システムの様々な実施形態は、集中型及び分散型のどちらでもよい。集中型環境では、利用可能な文書部品は、集中化した部品登録サービス１０２に対し、登録されるか或いは自らを登録する。この集中化した部品登録サービス１０２は、部品のインタフェースをコピーすることを行ってもよく、このインタフェースは、一例では、部品レジストリ１０３内の、文書部品のヘッダ部に示される。更に、レンダリング・サービス１０８により実行される未解決の要素の逆参照は、集中型環境で実行してもよい。またその代わりに、分散型環境では、個々の物理的なオブジェクト１１６に関連づけられた各部品コンテナが登録サービス１０２及びレンダリング・サービス１０８のうちの少なくとも一方についての個別のインスタンスを含んでいてもよい。更に別の例では、レンダリング・サービス１０８は、登録機能を組み込むか、又は（レンダリング処理中に起こるであろう性能劣化と引き替えにして）前から登録されているいくつかの文書部品を利用せずに動作するか、或いはその両方の方法により、登録サーバ１０２無しで処理を行うようにしてもよい。
【００１９】
Ｂ．構成モデル
文書管理システムの１つの特徴に関連して、構成モデル１１２は、オブジェクト１１６の異なる複数の構成（コンフィギュレーション）においてあり得る全ての構成部品を構成するためのモデルを記述する。構成モデル１１２は、用語（ターミノロジー）と構造（ストラクチャー）を特定する。構成モデル１１２において用いられる用語は、オブジェクト１１６においてあり得るファセット（"facet"：面）（例えばオブジェクトの構成部品の名前）を画定（定義）する。構成モデル１１２の構造は、オブジェクト１１６のあり得るファセット同士の間の関係を特定する。
【００２０】
図２は、図１（又はその一部）に示された構成モデル１１２の一例を示し、これはオーディオシステムのファセット群を規定している。図２に示される例では、構成モデル２０２は、有効非循環グラフを用いて階層構造（ただし、必ずしも階層構造である必要はない）を規定している。有効非循環グラフの最も単純な形はツリー（木）である。構成モデル２０２の各ノードは、それぞれオーディオシステムの１つのファセットを示し、基数セット(cardinal set)と関連づけられている。ノード間のリンクは、ノード同士の関係を示し、各ノードの基数セットは、あり得る全てのコンフィギュレーションについての、許されるファセットのユニット数を示す（例えば、"１"は１つのユニットが必要であることを意味し、"［０，１］"は０又は１ユニットが許されることを意味し、"［２，Ｎ］"は２又はそれ以上（２〜Ｎ個）のユニットが許されることを意味する）。
【００２１】
一つの例では、図２に示されたグラフのファセット群は、「所有(…を有する）」関係で関係づけられている。「所有」関係の基数は、ファセット群の異なる複数のコンフィギュレーションを表している（例えば、オーディオシステムは０個又は１個のＣＤと、１つのラジオと、２個以上のスピーカと、０個又は１個のテープとを有している）。別の例では、図２に示される構成モデルを拡張するために、「利用（…を使う）」、「制御（…を制御する）」、又は「置換（…の代わりになる）」などといった別の関係を追加することもできる。
【００２２】
Ｃ．文書部品
上で図１を参照して説明したように、１つ又は複数の部品コンテナ１０６の一部を成す文書部品１０４は、１又は複数の未解決の要素を含んでいてもよい。それら未解決の要素は、レンダリング・サービス１０８により、最上位の文書部品（すなわち構成テンプレート１１０）から始まる再帰的な逆参照を用いて解決される。各文書部品は、１つのオブジェクト１１６を記述することができ、また、複数オブジェクト１１６からなる１つのファミリー（例えばオーディオシステム）を記述することができる。
【００２３】
図３は、文書部品３０２の例を示しており、この例はヘッダ部とボディ部を含んでいる。ヘッダ部は、インタフェース記述を有しており、ＸＭＬで表された以下の要素を１又は複数含むことができる。すなわち、含みうる要素の一例は、(a)部品、又は複数部品からなるファミリーを構成する１つ又は数個のパーツを参照する（指す）「ファミリー（"family"）」（例えば"AudioPro#System"として参照されるシステムのファミリーがその一例である）である。また別の例として、(b)当該部品のタイトルが例えば何であるかを特定する「タイトル("title")」（例えば"System Five Audio"）がある。ここで、「タイトル」は、当該部品がルート部品として選択されたときに生成される、レンダリングされた文書(rendered document)のタイトルとなってもよい。更に別の例として、(c)構成モデル１１２のファセットを記述する「条項("provision")」のリスト、がある。更に別の例として、(d)文書部品のうちの選ばれた部分への参照を示す「アンカー("amchor")」又はアンカー・ポイントのリストがある（例えば、概要("summary")、詳細な説明("detailed specification")など）。また更に別の例として、当該部品を要約する「一行見出し("one-liner")」がある。また更に別の例として、(f)文書部品に記述された条項("provision")の質を示す「属性("attributes")」の集合もある。ルート文書部品すなわち構成テンプレート１１０のヘッダ部に規定された「ファミリー("family")」要素は、どの構成モデル１１２が構成テンプレート１１０により参照されるのかを判定するのに用いられる。構成テンプレートがその構成モデル（例えば図２のオーディオシステム）のファミリーのルート要素を参照しない場合には、構成テンプレートのヘッダ部に規定された１又は複数の「条項("provision")」要素は、構成モデル中のファセット群の部分集合のうちのどれを適用すべきかを識別するのに用いられる。
【００２４】
図３に示した文書部品３０２の例において、文書部品のボディ部は、"AudioPro#System"製品ファミリーに特化したものであり、このファミリーは"audio system"(オーディオシステム）という条項に関連している。この実施形態の一側面では、構成モデル１１２におけるファセット"audio system"が部品レジストリ１０３に登録された文書部品の条項("provision")に該当した場合に、テンプレート登録サービスが文書部品３０２を識別する。また、この実施形態の別の側面では、文書部品のヘッダ部内の定義された"family"要素"AudioPro#System"は、文書部品３０２がルート文書部品として用いられるときに、構成モデル１１２を識別するのに用いてもよい。
【００２５】
更に、文書部品３０２の例において、ヘッダ部のリストに列挙されボディ部に存在する"overview"(概要)及び"SystemParts"（システム・パーツ）というアンカーは、レンダリング・サービス１０８が受け取った参照情報を解決するために利用される。各アンカーにより、文書部品のボディ部内の選択された（或いは詳細に示された(delinaet)された）部分がレンダリングされることが可能になる。後で詳細に述べるように、１つの未解決の要素を解決することにより、解決すべき１つ又は複数の更なる要素が導かれる場合もある（例えば、図３に"[unresolved element]"(未解決の要素)として示している）。レンダリングされた文書の中でいったん全ての未解決要素が解決されると、構成テンプレート１１０は、それ自身が（直接的な指定に従って、又は参照された文書部品からの間接的な指定に従って）参照している全ての文書部品から事実上「逆参照」される。未解決の要素は、オブジェクト又はメソッドなどのように、いくつもの異なった形をとる。オブジェクトは、他の部品からコンテント（内容）を指定する。これに対しメソッドは、インライン・メソッド(in-line method)（すなわちこの場合、レンダリング・サービスは関数を未定義とみなす）と定義済みメソッド（すなわちこの場合、レンダリング・サービスは関数がすでに定義済みであると見なす）のどちらかである。
【００２６】
Ｄ．文書レンダリング
１つの処理例では、レンダリング・サービス１０８は、１つ又はそれ以上の文書部品と疎結合（緩やかに結合）された、レンダリングされた文書１１４を生成する。ここで、文書部品群は未解決の要素を介して互いを参照している。未解決要素の逆参照は、ルックアップ関数を用いて実行される。ルックアップ関数は、部品レジストリ１０３を用いることにより、又はレンダリングされた文書１１４のインスタンスのための部品群を指定する部品コンテナ１０６に直接にアクセスすることにより、文書部品群を識別する。これにより、文書部品間の疎結合の概念を維持する。実質的に、各文書部品１０４は、１つ又はそれ以上の構成モデルにおけるファセット群に対応する条項"provision"群を宣言する。
【００２７】
更に詳しくは、レンダリング・サービス１０８は、構成テンプレート１１０（すなわちルート文書部品１０４）内の未解決要素群（これは、後で詳しく説明するように、"transclude"（トランスクルード：包摂的引用）演算を用いて指定される参照関数を含んでいてもよく、アンカー"anchor"を用いて指定されるコンテント・セクション識別子を含んでいてもよい）に対し、その部品のヘッダ部にエクスポーとされそれに関連づけられた構成モデル１１２の子孫のファセット群を満足する条項"provision"群を用いて、（選択された部品コンテナ１０６からの）文書部品１０４の位置を指定する異なる複数のルックアップ関数を実行することにより、逆参照処理を行う。
【００２８】
図４は、レンダリング・サービス１０８の処理の詳細を示す。この処理は、構成テンプレート１１０（これは文書１１４Ｎをレンダリングする際にルート要素すなわちルート文書部品としての役割を果たす）内で識別される未解決要素群を再帰的に分析する逆参照サービスを含む。未解決要素を除いて、構成テンプレートのコンテント（内容）は、レンダリングされた文書１１４Ｎの最初の繰り返し（イタレーション）を規定するのに用いることができる。未解決の要素が処理されるにつれて、新たな未解決の要素が導かれては再帰的に処理される。未解決要素についてのこの再帰的な逆参照は、処理すべき残りがなくなるまで（又は、所定の繰り返しレベル数に達するまで）続く。未解決の要素の解決が失敗すると、結果として未定義の要素ができて無視されるか、又は警告メッセージ又は例えばその未解決の要素を指定する文書部品にて定義される一連のアクションが生成されることになる。
【００２９】
大略的には、サービス１０８が実行する文書レンダリング機能（関数）は、以下のように要約することができる。まず、利用可能な文書部品が登録サービス１０２を用いて登録され、部品レジストリ１０３に登録された部品の集合を形成する。レンダリングすべき構成テンプレート１１０（あるいはこれが格納される部品コンテナ１０６Ｎ）がいったん受け取られると、レンダリング・サービス１０８はその構成テンプレート１１０を処理する。構成テンプレートの処理中に未解決の要素が見つかると、レンダリング・サービスは、部品レジストリ１０３を用いて、構成テンプレート１１０と構成モデル１１２とを満足する文書部品をそのコンテナ１０６の中から探す。
【００３０】
ある例では、対応する部品コンテナ１０６内で文書部品を探索するルックアップ・サービスが、構成モデルにアクセスして構成モデル１１２のファセットのすべての子孫を識別する。そして、ファセットの子孫達に対応する文書部品１０４群が、部品レジストリ１０３内で探索される。（対応する部品コンテナ内に文書部品が存在することが登録されていることは、オブジェクト内にファセットが存在することを示す）。ルックアップ・サービスはレンダリング・サービスの一部を構成するものであってもよいし、登録サービス１０２の一部を構成するものであってもよい。図３に示されるオーディオシステム構成モデルの例では、構成モデルの第１レベルの子孫（例えば「ＣＤ」、「ラジオ」、「スピーカ」、「テープ」」）を示す未解決の要素が部品レジストリ１０３の探索処理を呼び出し、対応する部品コンテナ１０６の一部を成す構成モデル１１２のそれらファセット群を識別する。上述のように、別の実施例では、部品コンテナ１０６の一部を成す文書部品群は、部品レジストリ１０３に前もって登録されてはいない。したがって、ルックアップ・サービスは、指定された部品コンテナを直接に探索して構成モデル内のファセット群に適合する文書部品を求める必要がある。
【００３１】
構成テンプレートと構成モデルとを満足する文書部品にアクセスが行われると、部品テンプレートの未解決要素を処理するために、必要な情報が文書部品群から検索される。レンダリング・サービス１０８は、他の未解決の要素群の解決により未解決の要素群が追加されるにつれて、未解決の要素群の逆参照を再帰的に続ける。レンダリング・サービスにより全ての未解決の要素の処理されてしまうと、レンダリングされた構成テンプレート１１０に対応する文書コンテナ１０６の一部を成す文書部品群の中の要素群を併合した、レンダリングされた文書が生成される。
【００３２】
図５は、図１に示された文書管理システムにより実行される処理の一例を示すフローチャートである。まず、初期化フェーズ（５０２）において、文書部品１０４群が定義されサービス１０２を用いて部品レジストリ１０３に登録される（５０４）。それら部品は、ルートとして選ばれた文書部品である構成テンプレート１１０を用いて記述された異なる複数のオブジェクトの１つ又は複数のインスタンスを記述する１つ又は複数のコンテナ１０６の一部を成してもよい（５０６）。更に、初期化フェーズの中で、構成テンプレート内の未解決の部品を処理するのに用いられる構成モデルが（例えばルート文書部品のヘッダの"family"要素を用いて）画定又は識別される（５０７）。
【００３３】
初期化フェーズに続く実行フェーズでは、文書インスタンス１１４を記述するレンダリングされた文書にアクセスするためのリクエストを待つ（５０８）。このアクセスは、例えば、文書インスタンスに対し指示されたその文書インスタンスへのアクセスを要求するユーザ指定の処理（例えば、印刷、閲覧、送信、及び格納）により開始されてもよい。文書インスタンスは、構成テンプレート、構成モデル、及び文書部品１０４群のコンテナ１０６（それはその文書インスタンスに関連づけられた構成テンプレートと構成モデルとを格納していてもよい）を用いて記述される。（文書インスタンス１１４を記述するレンダリングされた文書は、コンテナ１０６内の文書部品１０４の集合に変更が加えられたときに、変化する。）レンダリングされた文書のインスタンスが存在すれば（５１０）、文書インスタンスを記述するコンテナの一部を構成するいずれかの文書部品が更新されたか否かが判定される（５１２）。コンテナ内の文書部品が更新されると（すなわち、追加、削除、変更のうちの一以上の処理が行われると）、レンダリングされた文書の既存のインスタンスが削除される（５１４）。
【００３４】
インスタンスがない場合（５１０）、現在のインスタンスが削除された場合（５１４）、又はレンダリングされた文書内に未解決の要素が残っている場合（５１８）のいずれかの場合は、構成テンプレート内の未解決の要素が、構成テンプレートに関連づけられたコンテナ内の文書部品群を未解決の要素群に関連づけるバインディング（結合）演算により処理される（５１６）。そのようなバインディング演算によれば、構成モデル１１２により疎結合された未解決の要素群を再帰的に逆参照した後に導かれる文書部品１０４から、未解決の要素群が追加される。いったん、全ての未解決の要素が再帰的に逆参照されると（５１８）、構成テンプレート及び構成モデルのインスタンスが、指定されたコンテナ内に示されたコンテント（内容）を用いてレンダリングされる。レンダリングされた文書のインスタンスは、格納され（５２０）、レンダリングされた文書インスタンスを画定するために出力される（５２０）。
【００３５】
必須ではないが、文書をレンダリング（５２０）する前に、文書インスタンスのテキスト内容を言語処理して綴りの誤り、文法的な誤り、前方照応の誤り(anaphoric errors）、意味的な矛盾の少なくとも１つを識別して修正したり、警告を発するようにしてもよい（この処理についての可能な実施例の詳細については、米国特許出願シリアル番号１１／０１３，３６６、"Smart String Replacement"（スマートな文字列置換）を参照）。
【００３６】
Ｅ．詳細な実施例
一例では、文書は、文書マークアップ言語（例えばＸＭＬ）を用いてレンダリング（表現）される。この例ではまた、メソッド（或いは参照関数）がインタープリト（翻訳）される、対話型の、オブジェクト指向のプログラミング言語（例えばＰｙｔｈｏｎ）を用いて表現される。当業者には理解できるであろうが、この例に示すメソッド群及びシンタックス（文法）は、選択されたホスト文書マークアップ言語（例えばＸＭＬ）又はプログラミング言語（例えばＰｙｔｈｏｎ）とは独立して動作するものであり、ここに開示した文書管理システムの機能と特徴を実現するのに、どのようなマークアップ言語やプログラミング言語をいくつ用いてもよい。
【００３７】
更にこの例では、図９〜１５に示される文書部品を規定するのに用いられるマークアップ言語はＸＭＬである。ＸＭＬでは、参照関数は、タグ名<transclude>で示され、ＣＤＡＴＡ部に記述される。更にこの例では、その参照関数は、Ｐｙｔｈｏｎプログラミング言語を用いた実行環境で実行される。そのような参照関数の構造の例が以下の表２〜表４に規定される。これらは、他のプログラミング言語を用いて別の形で規定してもかまわない。
【００３８】
【表２】
2006172476.tif 000004
【００３９】
【表３】
2006172476.tif 000005
【００４０】
【表４】
2006172476.tif 000006
【００４１】
表２〜４に上げた構造の例は以下の通りである。
・構造“theStructure.offsprings('radio',1)”は、システム・ファセットのリストを返す。この例では、図２に示した構成モデルの例における"radio"（ラジオ）の下の最初のレベルにあるファセット群（"tuner"と"amplifier"）を返す。
・構造 “theDocuments.lookup('provisions',['radio', 'speaker'])”は、theDocumentsの中から"provision"（条項）のリストに示される"radio"又は"speaker"を持つ文書部品のリストを返す。
・構造 “theDocuments.lookup('provisions', theStructure.offsprings ('audio system',2))”は、子孫メソッドから返された結果に対しlookupメソッドを適用する。offspringメソッドは、この例では、図２に示された"audio system"(オーディオ・システム)ファセットから１又は２レベル下のファセット群を記述する文書部品の集合を返す。
・構造 “for component in theDocuments.lookup('provisions', theStructure.offsprings ('audio system',1)): insertTxt('<li>' +  component.title + '</li>')”は、構成モデルの最初のレベルの全てのファセット（例えば図２に示される「ＣＤ」、「ラジオ」、「スピーカー」、「テープ」）を記述するコンテントのリストを、各リスト要素が、各ファセットに合致する文書部品のヘッダに定義された<title>を用いて指定されるように、レンダリングされた文書に対して挿入する。
・構造 “for component in theDocuments.lookup('provisions', theStructure.offsprings('audio system',1)): insertTxt (component.getAnchor ('overview'))は、構成モデルの最初のレベルの全てのファセット（例えば図２に示される「ＣＤ」、「ラジオ」、「スピーカー」、「テープ」）を記述するコンテントのリストを、各リスト要素が、各ファセットに対応する文書コンテナに定義された"overview"<anchor>部を用いて指定されるように、レンダリングされた文書に対して挿入する。
【００４２】
これらの構造の例は、ここに示す文書管理システムの様々な特徴と利点を例示している。すなわち、構成部品間の疎結合、文脈を意識した文書の集まり(context aware document collection)、参照をレンダリングされたコンテントへと（例えば再帰的な処理を用いて）変形する逆参照演算、繰り返しを認める制御構造、及び可変のコンテント（内容）、を含んでいる。より詳細には、その構造の例は、文書管理システムの以下に示すような利点と特徴を示している。
・システム・パーツ同士の間の疎結合が、"lookup"と"offspring"という構造の組み合わせにより表現されている。
・文脈を意識した文書の集まり（コレクション）が、集まり"theDocuments"（これは当該実行環境により提供され、カレントのコンテナ内で利用可能な文書群への参照を含む）により表現される。
・逆参照が、"insertText"関数と文書部品の要素（例えばアンカー）へアクセスする能力との組み合わせにより表現される。
・"for"構造のような制御構造が、構成モデルに記述されたファセット群に亘って繰り返し、ファセットがレンダリングされる文書の一部を構成するのかを判定するに利用される。
・可変コンテントが、１つの文書部品において、１つ又はそれ以上の<anchor>文を用いて表現される。<anchor>文は、文書部品内のファセットを記述するコンテントのうちの全て又は選択された部分を画定するのに用いることができる（例えば図８には、自動車の"all"（すべて）、"overview"（概略）及び"SystemParts"（システム・パーツ）が定義されている）。
【００４３】
図６〜１６は、上述の構造を用いた詳細な例を示す。図１に示された構成テンプレート１１０と構成モデル１１２とのコンテンツ（内容）が、この例では図８と図１６とにそれぞれ例示されている。物理的なオブジェクト１１６を記述する初期部品コンテナ１０６のコンテンツが、この例では、図９，１１，１３及び１５（各図はそれぞれ１つの文書部品を表す）の文書部品を用いて画定されている。図８に示される構成テンプレートの例（ルート部品"car"(自動車)について）と、図１６に示される（自動車についての）構成モデルの例と、図９（部品"engine"（エンジン）について）、図１１（部品"audio system"について）、図１３（部品"speaker"（スピーカー）について）、及び図１５（部品"amplifier"（アンプ）について）の文書部品により画定される部品コンテナと、を処理する際に、レンダリング・サービス１０８（図１参照）は、オーディオシステム（スピーカーとアンプを備える）を含む部品群とＧＰＬエンジンを備えた、図６に示されるレンダリングされた文書を生成する。
【００４４】
図６〜１６の例について続けると、初期部品コンテナのコンテンツは、更新された部品コンテナを画定するように変更される。（図９，１１，１３及び１５に示した部品を含む）部品コンテナのコンテンツは、人手により、又は半自動で、又は自動で、オブジェクト（この例では、図６に示されたレンダリングされた文書が記述する自動車））に対して加えられた変化を反映するように変更される。この例での１つのインスタンスでは、初期部品コンテナは、図９に示された"engine"（エンジン）文書部品を図１０に示された"engine"（エンジン）文書部品に置き換えることにより、更新された部品コンテナを画定するべく変更される。これは、"car"オブジェクトにおいて"GPL Engine"（ＧＰＬエンジン）を"Diesel Engine"（ディーゼルエンジン）に置き換えることに対応する。更に、例えば、図１２に示される"radio"（ラジオ）文書部品と図１４に示される"cd-player"（ＣＤプレーヤー）文書部品とが、初期部品コンテナに追加され、これにより更新された部品コンテナが画定される。これは、"car"オブジェクトのオーディオシステムに対しラジオとＣＤプレーヤーを追加することに対応する。部品コンテナに対する変化を検出した際、又は図６に示されるレンダリングされた文書へのアクセスが要求された際、レンダリング・サービス１０８（図１に示される）は、図７に示されるようなレンダリングされた文書を生成する。生成される文書は、オーディオシステム（既に含まれているスピーカーとアンプ）に加え、ラジオ・チューナーとＣＤプレーヤーを含む部品を備え、更にディーゼルエンジン（これはＧＰＬエンジンを置き換えたものである）を備える。
【００４５】
図６及び７のレンダリングされた文書に示したように、図１に示される文書管理システム１００は、文書部品を用いて記述されたオブジェクト（例えば自動車）に対して加えられた変更を反映した新たなドキュメンテーション（文書）の生成を助ける。図６及び７に示したレンダリングされた文書の例では、ラジオチューナーとＣＤプレーヤーとを記述した図７のレンダリングされた文書へのコンテントの追加は、ラジオチューナー（図１２に示される）とＣＤプレーヤー（図１４に示される）とを記述する文書部品群を、当該オブジェクトを記述するのに用いられる構成テンプレート及び構成モデルに関連づけられたコンテナへと追加することにより達成される。更に、図６及び７に例示されたレンダリングされた文書の例では、ディーゼルエンジンを記述したレンダリングされた文書７にコンテンツを導入することは、当該オブジェクトを記述するのに用いられる構成テンプレート及び構成モデルに関連づけられたコンテナにおいて、ＧＰＬエンジンを記述した文書部品（図９に示される）に代えてディーセルエンジンを記述した文書部品（図１０に示される）を用いること、により達成される。
【００４６】
Ｆ．動的文書管理
再び図１を参照すると、システム１００は、任意の数の交換可能な部品から構成される物理的なオブジェクト（例えば自動車、システム、部品など）のドキュメンテーションの動的管理に用いることができる。オブジェクトを画定する部品の組み合わせ（及びそれら各部品が持つことができる特徴群）は、そのオブジェクトの寿命（ライフ）の中で変化してもよく、したがってドキュメンテーションはそのオブジェクトの新たな構成を正確に反映するように更新される必要がある。オブジェクトの例には、多くの構成（コンフィギュレーション）に従って製造される工業製品（例えば自動車、プリンタ、ホーム・エンターテイメント・システムなど）が含まれる。別の例には、製造プラントを構成する部品の数と種類が変わり得る１つの包括的な仕様により規定することができるような製造プラントを挙げることができる。
【００４７】
１つの実施例では、ＲＦＩＤタグ又はスマートカード（Smartcard）技術によるスマートタグをオブジェクトに取り付ける。このようなスマートタグ（例えば、図１におけるオブジェクト１１６Ｎ上のタグ１１８）は、オブジェクト１１６Ｎの部品群を記述する文書１１４Ｎをレンダリングするのに必要な文書要素（すなわち構成テンプレート、構成モデル、コンテナ、及びオブジェクトに対応するレンダリング・サービス）が記録されている。文書要素群は、そのスマートタグ１１８に完全に格納されていてもよいし、部分的に格納されていてもよい（例えばネットワーク上の離れた場所に格納された情報を参照するなどの形である）。更に、スマートタグに記録された文書要素は、オブジェクト１１６を記述するコンテナ１０６に記憶された文書部品１０４群を更新することによりオブジェクトの新たな部品が変更されるか又は追加されるかするにつれて、動的に修正される。
【００４８】
コンテナに加えられる更新は、電子タグリーダにより識別可能なスマートタグ又は数値タグ(numeric tag)を検出することにより、手動でも自動でも半自動でも実行できる。１つの例では、電子タグは、文書部品１０４のプロパティとコンテント（内容）とがレンダリング・サービス１０８に把握できるようにするための識別子を含む。タグ付き文書を識別しトラッキングするためのシステムの例は、米国特許第6,542,083号、第6,340,931号、 第6,422,474号、第6,342,830号、第6,573,916号、第6,446,208号に示される。この代わりに、部品に対しスキャン可能な識別子でマーク付け（例えばバーコードやグリフ技術を用いるなど）を行ってもよい。更に、グリフ技術は、文書部品のコンテントをコード化するのに用いることもでき、そのコンテントはオブジェクト１１６Ｎに対応するコンテナ１０６Ｎからスキャンされ、またそのコンテナに記録される。
【００４９】
図６〜１６に詳しく例示したように、自動車の寿命の間、そのエンジンをガソリンからディーゼルに変更したり、ラジオチューナー及びＣＤプレーヤーをそのオーディオシステムに追加したり、その両方を行ったりするなどの、保守や拡張が起こり得る。文書管理システム１００に関連して、文書コンテナ１０６Ｎは、最初は図９，１１，１３及び１５に示される、自動車の最初のインスタンス（例えば、ガソリンエンジンを有し、ラジオチューナーとＣＤプレーヤは持たない））を記述する文書部品群を格納している。エンジンを変更した後では、図９に示される文書部品は図１０に示される文書部品に置き換えられる。そして、ラジオチューナーとＣＤプレーヤーとが追加された後では、図１２及び１４に示される文書部品が追加される。その更新がなされた後で自動車についての構成テンプレート１１０にアクセスが行われると、新たな文書がレンダリングされ、図７に示されるレンダリングされた文書１１４Ｎが生成される。この新たな文書は、図６に示された古くなった文書レンダリングに取って代わる。
【００５０】
別の例では、スマートタグ１１８が、１つ又はそれ以上の部品の利用又は性能又はその両方に関係するデータを追跡するのにも用いられる。例えば、スマートタグ１１８は、部品の継続使用時間と、使用時刻と、使用中に作用したパワー又は加速との中の１つ又は複数を追跡するのに用いることができる。そのようなタグ１１８は、更なる例では、記録した使用状態に関するデータに基づき、機能不全や迫り来る寿命切れを示す信号を発してもよい。この代わりに、そのようなタグ１１８を、部品群又は部品群が埋め込まれたオブジェクトに対して衝撃が生じたときの場所や時刻を記録し追跡するのに用いることもできる（例えば衝撃を測定するために加速度計を用いたり、位置を測定するためにＧＰＳ(Glovbal Positioning System)を用いたり、時間を計測するのに時計を用いたりするなど）。そのようなシステムは、オブジェクトの出荷において、オブジェクトが輸送中に不合理な衝撃を受けないように保証するのに用いることができ、もしそのようなことが起きたときは輸送中のどこでいつその衝撃が生じたのかを知るのに用いることができる。更に、記録された衝撃の回数や程度は、オブジェクトの出荷時に用いられた包装（例えば出荷箱）の状態が、後の出荷に再利用できるかどうかを評価するのに用いることもできる。部品についての追跡される情報のいくつか又は全部は、オブジェクトを記述するレンダリングされた文書を構築するのに用いられる部品コンテナの一部を構成する文書部品の中に記録してもよい。
【００５１】
まとめると、スマートタグ又は電子タグ又はマーキング（印刷など）された識別子又はそれらのうちの２以上を利用することで、動的な文書管理が可能となる。この動的な文書管理では、コンテナ内の文書部品はオブジェクト自身の変化を反映して更新される。有利なことには、オブジェクトに関係する文書は、ある使用期間の後又はあるメンテナンス行為が行われた後にあるパーツが追加されたり変更されたという事実を反映するために、文書部品に対する更新がコンテナに対してなされるにつれて、動的にレンダリングされる。
【００５２】
Ｇ．その他
ここに示した文書処理システムの各要素を実装するには、例えば汎用コンピュータを用いることができる。そのような汎用コンピュータは、例えば、ハードウエア（例えばプロセッサ）とソフトウエア（例えばオペレーティングシステム）とを備える。
【図面の簡単な説明】
【００５３】
【図１】部品の一意な集まりからなるオブジェクトを記述する文書のインスタンスをレンダリングするために用いられる文書管理システムを例示する図である。
【図２】構成モデルの例を示す図である。
【図３】文書部品の例を示す図である。
【図４】図１に示したレンダリング・サービスの処理の詳細を例示する図である。
【図５】図１に示した文書管理システムにより実行される処理シーケンスの一例を示すフローチャートである。
【図６】図９，１１，１３及び１５に示された文書部品を用いてレンダリングされる文書を例示する図である。
【図７】図１０，１１，１２，１３，１４及び１５に示された文書部品を用いてレンダリングされる文書を例示する図である。
【図８】図６及び図７に示される文書をレンダリングするのに用いられる構成テンプレートの例を示す図である。
【図９】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１０】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１１】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１２】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１３】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１４】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１５】コンテナに対して追加又は削除される文書部品の例を示す図である。
【図１６】図６及び図７に示される文書をレンダリングするために、図８に示される構成テンプレートにより参照される構成モデルの例を示す図である。
【符号の説明】
【００５４】
１００  文書管理システム、１０２  部品登録サービス、１０３  部品レジストリ、１０４  文書部品（未解決要素を含んでいる場合がある）、１０６  コンテナ群、１０６Ａ  部品コンテナ１、１０６Ｂ  部品コンテナ２、１０６Ｎ  部品コンテナＮ、１０８  レンダリング・サービス、１１０  未解決要素を含む構成テンプレート、１１２  構成モデル、１１４Ｎ  部品インスタンスＮを記述するレンダリングされた文書、１１６Ｎ  部品インスタンスＮに従う部品を備えるオブジェクト。
【図１】
2006172476.tif 000007
【図２】
2006172476.tif 000008
【図３】
2006172476.tif 000009
【図４】
2006172476.tif 000010
【図５】
2006172476.tif 000011
【図６】
2006172476.tif 000012
【図７】
2006172476.tif 000013
【図８】
2006172476.tif 000014
【図９】
2006172476.tif 000015
【図１０】
2006172476.tif 000016
【図１１】
2006172476.tif 000017
【図１２】
2006172476.tif 000018
【図１３】
2006172476.tif 000019
【図１４】
2006172476.tif 000020
【図１５】
2006172476.tif 000021
【図１６】
2006172476.tif 000022