(57)【特許請求の範囲】
【請求項１】
スキーマ言語で記述された関数により、オブジェクトを操作する方法において、
前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成工程と、
前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義工程と、
前記要素生成工程と前記結果宣言定義工程とで定義された関数が含まれるデータを保持手段に格納する格納工程と、
前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿ってコンピュータが前記オブジェクトを操作する操作工程と、
を有することを特徴とするオブジェクトの操作方法。
【請求項２】
前記要素生成工程において、前記関数を表す特定の型を用いて前記要素データを生成することを特徴とする請求項１記載の方法。
【請求項３】
少なくとも１つの前記関数がインタフェースの一部を形成することを特徴とする請求項１記載の方法。
【請求項４】
オブジェクトのインタフェースであって、少なくとも１つの前記関数を有するインタフェースをクライアントによって取得する取得工程と、
前記インタフェースを前記スキーマ言語とは異なるプログラミング言語に変換する変換工程とを有することを特徴とする請求項１記載の方法。
【請求項５】
前記スキーマ言語がＸＭＬスキーマ言語であることを特徴とする請求項１記載の方法。
【請求項６】
前記関数の呼び出しは、マークアップ言語によってネットワークを介してなされることを特徴とする請求項１記載の方法。
【請求項７】
スキーマ言語で記述された関数により、オブジェクトを操作する装置において、
前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成手段と、
前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義手段と、
前記要素生成手段と前記結果宣言定義手段とで定義された関数が含まれるデータを保持する保持手段と、
前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿って前記オブジェクトを操作する操作手段と、
を有することを特徴とする装置。
【請求項８】
スキーマ言語で記述された関数により、オブジェクトを操作する方法をコンピュータに実行させるプログラムであって、
前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成手順と、
前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義手順と、
前記要素生成手順と前記結果宣言定義手順とで定義された関数が含まれるデータを保持手段に格納する格納手順と、
前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿ってコンピュータが前記オブジェクトを操作する操作手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
本発明は全体としてコンピュータオブジェクトに適用可能なインタフェースの記述に関する。本発明の第１の見地において、インタフェースの記述はマークアップ言語でなされる。本発明の第２の見地において、インタフェースの記述はマークアップ言語に関するスキーマ言語によってなされる。
【０００２】
オブジェクト指向システムにおいて、コンピュータオブジェクトはデータ（属性としても知られる）及び、パラメータ又は入力引数を用いうる関数又はメソッドを有する。一般に、これらの関数はオブジェクトのデータを操作するためにコール又は呼び出しされる。
【０００３】
インタフェースはオブジェクトに適用可能な関数の集合である。
既知のマークアップ言語は以下でより具体的に検討する。ここでは、マークアップ言語はＸＭＬ(Extended Markup Language)言語である。
この言語はＸＭＬ規格として知られる規格によって定義されており、その説明はインターネット上のアドレス（http://www.w3.org/TR/2000/REC-xml-20001006)で参照することができる。
【０００４】
ＸＭＬ規格は、符号 < と > で区切られたタグ（例えば、<tag>）を用いて文書を構造化することが可能な文法を定義する。これらのタグは開始及び終了タグ（<tag>及び</tag>）のペアによってグループ化される。ＸＭＬタグは、開始タグ、対応する終了タグ及び、これらタグによって区切られる内容全体とから構成される１つの要素である。この内容は他の要素及び／又は純粋なテキストから構成される。内容のないタグは空タグ(empty tag)<tag/>として表すことができる。ＸＭＬ文書は１つの原理要素(principle element)によって構成される。
【０００５】
スキーマ言語はマークアップ言語の記述を可能にする。従って、ＸＭＬスキーマ言語はＸＭＬ言語を記述可能にする。いくつかのＸＭＬスキーマ言語が存在する。ＸＭＬスキーマ言語の一例は２００１年５月２日版がインターネットのアドレス（http://www.w3.org/TR/2001/xmlschema-1）において入手可能な"ＸＭＬスキーマ"規格に記述されている。
【０００６】
ＸＭＬスキーマ言語によって書かれた文書は一般にＸＭＬスキーマと呼ばれる。ＸＭＬスキーマはＸＭＬ文書の集合の構造を記述する。ＸＭＬスキーマはこのＸＭＬ言語に準拠した文書で認められたタグと、その可能なネスティングの記述である。あるＸＭＬスキーマによって定義された構造を表すＸＭＬ文書は、このＸＭＬスキーマに関して有効であると言われる。
【０００７】
この点に関し、本願と同一出願人によって出願されたフランス国特許出願第99 08155号は、コンピュータネットワーク内のコンピュータオブジェクト上の関数を遠隔的に実行する方法を記載している。より具体的には、この文書はオブジェクトのインタフェースをＸＭＬ言語に基づいて記載する方法を提案している。用いられるＸＭＬ言語はこの出願に特有のものであり、関数の入出力パラメータについてありうる型のうち、限られたセットのみを提供している。
【０００８】
さらに、ＷＳＤＬ(Web Services Description Language)と呼ばれる、ＩＢＭ及びマイクロソフト社によって書かれた仕様は、ＸＭＬ記法を用いてサービスを記述する方法を提供する。サービスは、入力として受信する文書の記述と、出力として生成する文書の記述によって特徴付けされる。これらの文書は一般にＸＭＬスキーマで記述可能な構造のＸＭＬ文書である。
【０００９】
ここでは、オブジェクトの概念を用いない点に注意されたい。ＸＭＬスキーマ言語はその既知の関数に従って、すなわちＸＭＬ文書の構造を記述するために用いられる。この仕様において、記述される文書はサービスによって処理及び生成される文書である。
【００１０】
さらに、米国特許第6 125 391号はネットワークを介して提携先との間の取引を実行するための文書利用を記載している。ＷＳＤＬ仕様と似た方法で、やり取りはその入力及び出力文書によって記述される。
ここでも、オブジェクトの概念は用いられず、ＸＭＬスキーマ言語はその既知の関数に従って、すなわちＸＭＬ文書の構造を記述するために用いられる。
【００１１】
本発明はコンピュータオブジェクトに適用可能な関数を記述する方法及び装置を提供することにより、従来技術の欠点を改善することを目的とする。
【００２２】
従って、本発明は、スキーマ言語で記述された関数により、オブジェクトを操作する方法において、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成工程と、前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義工程と、前記要素生成工程と前記結果宣言定義工程とで定義された関数が含まれるデータを保持手段に格納する格納工程と、前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿ってコンピュータが前記オブジェクトを操作する操作工程と、を有することを特徴とするオブジェクトの操作方法を提供する。
【００２３】
また、本発明は、スキーマ言語で記述された関数により、オブジェクトを操作する装置において、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成手段と、前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義手段と、前記要素生成手段と前記結果宣言定義手段とで定義された関数が含まれるデータを保持する保持手段と、前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿って前記オブジェクトを操作する操作手段と、を有することを特徴とする装置を提供する。
【００２４】
また、本発明は、スキーマ言語で記述された関数により、オブジェクトを操作する方法をコンピュータに実行させるプログラムであって、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに用いられる関数名と前記関数の引数とを含む要素データを、前記スキーマ言語とは異なるプログラミング言語で記述されたインタフェースを参照して生成する要素生成手順と、前記インタフェースを参照し、前記関数が結果を生成する場合には、前記スキーマ言語の所定の型または属性を用いて、前記関数の呼び出しに対する結果を生成するための宣言と前記関数名の要素とを関連づけて結果宣言を定義する結果宣言定義手順と、前記要素生成手順と前記結果宣言定義手順とで定義された関数が含まれるデータを保持手段に格納する格納手順と、前記関数の呼び出しに応答して前記保持手段から読み出したデータに含まれる関数の命令に沿ってコンピュータが前記オブジェクトを操作する操作手順と、をコンピュータに実行させるプログラムを提供する。
【００２５】
本発明によって、関数は標準言語であるスキーマ言語を用いて記述され、その結果この言語を取り扱う既存の全てのツールを利用することが可能になる。
インタフェースの設計及びプログラミングが簡単化される。
特に、関数の呼び出しを有効にするための新しい型の要素を定義可能であり、これらの関数は従前実行が困難でなかったとしても複雑であった、例えば画像に対する処理操作の実行を可能にする。
また、関数が結果を生成する場合、その関数の呼び出しを記述する要素の定義は、どの要素がその呼び出しの結果を記述しているのかを示す特定の属性を有するか、スキーマ言語の文書要素によって、その関数の呼び出しを記述する要素とその結果を記述する要素との間の関係が確立される。このようにして、関数の呼び出しとその結果がリンクされる。
【００２６】
好ましい特徴によれば、前記要素記述工程において、前記関数を表す特定の型を用いて前記要素を記述する。
好ましい特徴によれば、少なくとも１つの前記関数がインタフェースの一部を形成する。
【００２７】
好ましい特徴によれば、オブジェクトのインタフェースであって、少なくとも１つの前記関数を有するインタフェースをクライアントによって取得する取得工程と、前記インタフェースを前記スキーマ言語とは異なる所定のプログラミング言語に変換する変換工程とを有する。
【００２８】
好ましい特徴によれば、前記スキーマ言語はＸＭＬスキーマ言語である。
【００２９】
好ましい特徴によれば、前記関数呼び出しは、マークアップ言語によってネットワークを介してなされる。
【００３０】
本発明はさらに、コンピュータ又はマイクロプロセッサによって読み取り可能で、装置に一体化されているかされておらず、リムーバブルであってもよい記憶媒体であって、本発明による方法を実行するプログラムを記憶する記憶媒体に関する。
【００３１】
本発明はさらに、１つ以上の命令列を有し、マイクロプロセッサが読み取り可能なコンピュータプログラムであって、本発明による方法を実行可能なコンピュータプログラムに関する。
【００３２】
図１に示される選択された実施形態によれば、本発明を実施する装置は例えば様々な周辺機器に接続されたマイクロコンピュータ１である。このコンピュータは本発明においてクライアントであってもサーバであっても良い。
【００３３】
装置１は、処理すべきディジタルデータを送信すると共に、逆に装置によって処理されたデータを送信することが可能なネットワーク４に接続されたネットワークカード１０７を有する。装置１はまた、ハードディスク等の記憶手段１０４及び、ディスク２のためのドライブ１０５を有する。このディスク２は例えばディスケット（登録商標）、ＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭであってよい。ハードディスク１０４のようなディスク２は、本発明によって処理されたデータのみならず、本発明を実行する１つ以上のプログラムを格納することが可能であり、このプログラムは装置に読み出されると、ハードディスク１０４に格納されるであろう。変形例によれば、装置に本発明の実施を可能とするプログラムは、読み出し専用メモリ１０２（図ではＲＯＭと記載）に格納することも可能である。第２の変形例においてプログラムは、格納のために通信ネットワーク４を介して上述した方法と同様にして受信することも可能である。
【００３４】
装置１はカード３を読み取り可能なカードリーダ１０６を有する。
装置はまた、モニタ５及び、例えばビデオレコーダや動画カメラ等のビデオ機器６が接続されるグラフィックカード１０８を有する。
装置１は例えばキーボード７、マウス８、カメラ９及びプリンタ１０が接続される入出力カード１０９を有する。
装置１は例えばマイク等のオーディオ機器１１が接続されるオーディオカード１１０を有する。
【００３５】
中央処理ユニット１００（図ではＣＰＵと記載）は、読み出し専用メモリ１０２又は他の記憶手段に記憶された、本発明の実施に関する命令を実行する。起動時、例えばＲＯＭ１０２である不揮発性メモリに記憶された処理プログラムが、ランダムアクセスメモリＲＡＭ１０３へ転送され、これにより本発明の実行可能なコードを含むことになる。のみならず、本発明の実行に必要な変数を格納するレジスタにも転送される。
より大まかに述べれば、コンピュータ又はマイクロプロセッサが読み取り可能であって、装置に一体化されているか、もしくはされておらず、リムーバブルであってもよい情報記憶手段が、本発明による方法を実施するプログラムを記憶する。
【００３６】
通信バス１０１はマイクロコンピュータ１０に含まれるか、接続される様々な要素間の通信を提供する。バス１０１の表現は限定せず、特に、中央処理部１００はマイクロコンピュータ１の任意の構成要素と直接又はマイクロコンピュータ１の他の要素を用いて命令を通信することが可能である。
【００３９】
本発明の第２の見地によれば、装置がサーバ端末内にある場合、当初はスキーマ言語とは異なるプログラミング言語で表現される関数を、コンピュータオブジェクトに適応可能な関数のマークアップ言語に関するスキーマ言語で記述するために、装置は、
関数を記述する要素を、スキーマ言語で定義する手段と、
関数の引数を、スキーマ言語で定義する手段とを有し、
関数が結果を生成する場合には、
関数の結果を記述する要素をスキーマ言語で定義する手段をさらに有する。
【００４０】
本発明の第２の見地によれば、装置がクライアント端末内にある場合には、オブジェクトのインタフェースであって、サーバ端末内の装置によって記述された少なくとも１つの関数を有するインタフェースをクライアント端末によって取得するため、装置は、
インタフェースをスキーマ言語とは異なるプログラミング言語に変換する手段を有する。
【００４１】
本発明に関連するコンピュータの動作は以下に説明される。
本発明は、本発明を実施するように適合されたコンピュータプログラムにも関する。このプログラムは任意のプログラミング言語を使用することができ、ソースコード、オブジェクトコード又は部分的にコンパイルされた形式のようなソースコードとオブジェクトコードの中間形式のような形式や、本発明による方法の実施に望ましい他の任意の形式であってよい、コンピュータプログラムはプログラムを記憶可能な任意のエンティティ又は装置であるデータ媒体内に存在しうる。
【００４２】
図２において、図１で説明したコンピュータと同一構成を有する３台のコンピュータＣ２００、Ｃ２０１及びＣ２０２が、中継を介して、オブジェクトＯ２００、Ｏ２０１、Ｏ２０２、Ｏ２０３及びＯ２０４のサービスを提供する。
オブジェクトに適用可能な関数のリスト及び機能は、インタフェースＩ２００、Ｉ２０１及びＩ２０３によって記述される。オブジェクトは自らに適用可能な関数を記述するインタフェースを参照する。オブジェクトは単独のインタフェースを参照することができ、例えばオブジェクトＯ２００はインタフェースＩ２００のみを参照する。オブジェクトはまたいくつかのインタフェースを参照することもでき、例えばオブジェクトＯ２０１はインタフェースＩ２００及びＩ２０１を参照する。オブジェクトは同じコンピュータ又は離れたコンピュータに存在するインタフェースを参照することができる。
【００４３】
図３において、オブジェクトはマークアップ言語、例えばＸＭＬ言語によって書かれた文書３００によって記述されている。文書３００はここではＸＭＬ文書である。
文書３００はインタフェース３０１を表す文書を参照する。
【００４４】
本発明の第１の見地によれば、文書３０１はマークアップ言語によって書かれるが、引数及び関数の結果の型を定義するため、使用されるマークアップ言語に関するスキーマ言語から得られる型付け(typing)が導入される。
本発明の第２の見地によれば、文書３０１は使用されるマークアップ言語に関するスキーマ言語で書かれる。文書３０１はここではＸＭＬスキーマである。
ＸＭＬ文書３００で表されるオブジェクトに適用可能な関数の呼び出しはＸＭＬ文書３０２で表される。関数の呼び出しが結果を生成する場合には、その結果はＸＭＬ文書３０３によって表される。
【００４５】
本発明の第１の見地によれば、インタフェース記述文書３０１は文書３０２及び３０３を有効化すること、すなわちこれら文書の構造がインタフェースを表すＸＭＬスキーマによって定義された構造に適合しているか検証することが可能である。
関数呼び出しにおいて、検証は特に渡される引数の数が正しいこと、引数の型（整数、文字列、実数等）が正しいこと及び、引数の値に対する制約（値の範囲等）が守られていることの検証を可能にする。
【００４６】
図４ａは本発明の第１の見地において用いられるＸＭＬ文書の例を示す。
文書４００ａはimageと呼ばれるオブジェクトの記述である。オブジェクトは、主要素(image)の属性の形式(interface="http://www.crf.canon.fr/imageInterface.xsd")でそのインタフェースへの参照を含む。この属性の値はインタフェースのＵＲＩ(Universal Resource Identifier)である。
このＵＲＩをオブジェクトの定義から抽出することにより、オブジェクトのインタフェースの記述をインターネットを介した接続によって得ることが可能になる。
【００４７】
オブジェクトに適用可能な関数が複数のインタフェースによって記述されている場合、属性interfaceはその値としてそれらインタフェースのＵＲＩのリストを有するであろう。例えば、
interface="http://www.crf.canon.fr/imageInterface.xsd http://www.crf.canon.fr/printingInterface.xsd")
（ＵＲＩhttp://www.crf.canon.fr/imageInterface.xsdにおいて）オブジェクトによって参照されるインタフェースは、ＸＭＬ文書４１０ａによって記述される。
【００４８】
部分４１１ａ、４１２ａ及び４１３ａは、"getDimension"、"setDimension"及び"rotate"と呼ばれる３つの関数の記述にそれぞれ対応する。
文書４１０ａによって示されるように、インタフェースは"interface"として知られるタグと、
インタフェースの名前を定義するための"name"、及びインタフェースのＵＲＩを定義するための"href"という２つの属性によって定義される。
【００４９】
文書４１０ａの部分４１１ａ、４１２ａ及び４１３ａによって表されるように、関数はタグによって定義される。このタグの名前は関数の名前であり、インタフェースを記述するタグの中に置かれる。
関数の引数は、引数の名前を持ち、関数を記述するタグの内部に存在するタグによって記述される。従って、文書４１０ａの部分４１２ａは引数"dimension"を有する関数"setDimension"を記述し、文書４１０ａの部分４１３ａは引数"angle"を有する関数"rotate"を記述している。
【００５０】
引数がＸＭＬスキーマ言語において定義済みの型を有する場合、この型はこの引数を記述するタグに属性を付加することによって指定される。例えば、文書４１０ａの部分４１３ａにおいて、引数"angle"の型は整数型であり、属性"type="xs:integer""によって指定されている。
さもなければ、型定義が引数を定義するタグ内に付加される。この定義はＸＭＬスキーマ言語の型宣言の一部(part of typing)を形成する。例えば、文書４１０ａの部分４１２ａにおいて、引数"dimension"の型は複合型(complex type)である。
【００５１】
関数が結果を生成する場合、結果は引数と同様にして定義される。結果を定義するタグに、このタグが引数ではなく結果に対応することを示すため、属性""out="true""が付加される。結果が"dimension"である、文書４１０ａの部分４１１ａの関数"getDimension"がこのケースである。
文書４２０ａ及び４３０ａは、文書４１０ａの部分４１１ａで記述される関数"getDimension"の呼び出しと結果に対応する。文書４４０ａはその一部が文書４１０ａの部分４１３ａで記述される関数"rotate"の呼び出しに対応する。
【００５２】
図４ｂは本発明の第２の見地において用いられるＸＭＬ文書の例を示す。
文書４００ｂは、imageと名付けられたオブジェクトの記述である。このオブジェクトはプリンシパル要素(image)の属性の形式でそのインタフェースへの参照(interface="http://www.crf.canon.fr/imageInterface.xsd")を含む。この属性の値はインタフェースのＵＲＩ(Universal Resource Identifier)である。
このＵＲＩをオブジェクトの定義から抽出することにより、インターネット網を介した接続によってオブジェクトインタフェースの記述を得ることが可能である。
【００５３】
オブジェクトに適用可能な関数がいくつかのインタフェースによって記述される場合、属性interfaceの値はこれらインタフェースのＵＲＩのリストとなるであろう。例えば、
interface=http://www.crf.canon.fr/imageInterface.xsd http://www.crf.canon.fr/printingInterface.xsd
【００５４】
（ＵＲＩ：http://www.crf.canon.fr/imageInterface.xsdで）オブジェクトによって参照されるインタフェースは、文書４１０ｂによって記述される。文書４１０ｂはＸＭＬスキーマである。この文書４１０ｂの最初の部分４１１ｂは、全てのインタフェース記述において再生されるべき一般定義に対応する。これら定義を、（要素importによって）全てのインタフェース記述にインポートされる文書へまとめることが可能である。これら定義の役割は、以下に説明する。
【００５５】
部分４１２ｂ、４１３ｂ及び４１４ｂはそれぞれ、"getWidth"、"getDimension"及び"rotate"と呼ばれる３つの関数の記述に対応する。部分４１２ｂ及び４１３ｂは関数の呼び出し及びこの呼び出しの結果の両方の記述を備える。部分４１４ｂは関数呼び出しの記述のみを含み、関数"rotate"は結果を与えない。
関数の呼び出し又は関数の結果はＸＭＬ要素定義を用いて記述される。ＸＭＬスキーマ言語を用いることにより、関数呼び出しの構造（パラメータ及びその型のリスト）又は関数の結果（結果の型）を記述することが可能である。ＸＭＬ要素定義が関数呼び出し又は結果に対応するかを知ること、及び関数呼び出しに対応する結果を知ること、の２つは、この規格を用いて指定することができない。
【００５６】
関数呼び出しを記述する要素は、文書４１０ｂの部分４１１ｂで定義される型"function"由来の型を有する。この型"function"は、文書４１０ｂの中でどのＸＭＬ要素定義が関数呼び出しに対応するかを判断することを可能にする。
さらに、関数呼び出しを記述する要素の定義は、どの要素がこの呼び出しの結果を記述するかを示すための"image:resultType"と名付けられた追加属性を含むことができる。この属性は文書４１０ｂの部分４１１ｂで定義される。この属性がない場合、その関数は結果を与えないことを意味する。従って、関数"getWidth"の結果は要素"width"によって記述されるのに対し、関数"rotate"は結果を与えない。
【００５７】
変形例において、関数呼び出し及び結果はＸＭＬスキーマ言語の文書要素(documentary elements)によってリンクされる。第１の変形例は、どの要素がその結果を記述するかを示すための、関数記述の各々に対する追加文書からなる。
0003768925.tif 000002
【００５８】
第２の変形例は、関数記述及びそれらの起こりうる結果のセットとリンクする文書を、文書４１０ｂに対して追加することからなる。この第２変形例は型"function"の不使用を可能とし、関数を記述する要素は文書を構成するリスト内に特定されることに留意されたい。文書４１０ｂの例において、付加文書は以下のようになる。
0003768925.tif 000003
【００５９】
文書４２０ｂ及び４３０ｂは文書４１０ｂの部分４１３ｂに記述された関数"getDimention"の呼び出し及び結果に対応する。これら２つのＸＭＬ文書は文書４１０ｂによって有効化されることができる。一方、文書４４０ｂは文書４１０ｂの部分４１４ｂで記述された関数"rotate"の呼び出しに対応する。
【００６０】
図５は、サーバコンピュータ、例えばコンピュータＣ２００（図２）のＲＡＭメモリ１０３に格納されるテーブルＴを表す。テーブルＴはオブジェクトとインタフェースとの関連性を収納する。
テーブルＴの最初の列Ｔ５００はオブジェクトが発行されるＵＲＩからなる。２番目の列Ｔ５０１は発行されたオブジェクトへの参照からなる。参照は、コンピュータＣ２００のＲＡＭ１０３内のオブジェクトの内部表現を指している。
【００６１】
３番目の列Ｔ５０２はオブジェクトに適用可能な関数を記述するインタフェースのＵＲＩからなる。
従って、テーブルＴの行は、オブジェクトが発行されるＵＲＩ、発行されたオブジェクトへの参照及びオブジェクトに適用可能な関数を記述するインタフェースのＵＲＩからなる。オブジェクトに適用可能な関数がいくつかのインタフェースで記述される場合には、テーブルＴがこのオブジェクトとそのインタフェースの各々とをそれぞれリンクする数だけの行を有する。
【００６２】
図６はサーバコンピュータ、例えばコンピュータＣ２００（図２）のＲＡＭメモリ１０３に格納されたテーブルＴ’を表す。テーブルＴはインタフェース及びその本発明の第１の見地におけるＸＭＬ言語又は本発明の第２の見地におけるＸＭＬスキーマ言語による表現との関連を含む。
テーブルＴ’の１番目の列Ｔ’５００は、インタフェースが発行されるＵＲＩからなる。ここで、これらＵＲＩがテーブルＴの列Ｔ５０２にも再び現れることに注意されたい。２番目の列Ｔ’５０１は各インタフェースのＸＭＬ言語（第１の見地）又はＸＭＬスキーマ（第２の見地）によるテキストファイル形式での表現からなる。
３番目の列Ｔ’５０２は、例えばＣ又はＣ＋＋言語による、インタフェースの内部表現からなる。
従って、テーブルＴ’の行は、インタフェースが発行されるＵＲＩ、このインタフェースのＸＭＬ（第１の見地）又はＸＭＬスキーマ（第２の見地）による表現及び、インタフェースの内部表現からなる。
【００６３】
図７ａは、本発明の第１の見地における、マークアップ言語によるインタフェースの記述の実施形態を示す。この方法はサーバ内で実施され、ステップＥ１からＥ１２を含む。
方法はその全部又は一部を、マイクロプロセッサと協働可能な任意の情報記憶手段に格納することが可能なアルゴリズムの形式で実施される。この記憶手段は、コンピュータ又はマイクロプロセッサによって読み出し可能である。この記憶手段は装置に組み込まれてるか又は別個であり、取り外し可能であってもよい。この記憶装置は、例えば、磁気テープ、ディスケット（登録商標）又はＣＤ−ＲＯＭ（固定メモリコンパクトディスク）を含みうる。
上述したように、マークアップ言語はとりわけＸＭＬ言語であり、関連するスキーマ言語はＸＭＬスキーマ言語である。
【００６４】
ステップＥ１は記述すべきインタフェースを、例えばメモリを読み出すことによって取得する。インタフェースはコンピュータオブジェクトに適用可能な関数のセットである。インタフェースは予め定められた、ＸＭＬ言語とは異なる既知のプログラミング言語で表現され、このプログラミング言語は任意の言語、例えばＣ又はＣ＋＋言語でよい。
インタフェースの関数を以下順次検討する。
次のステップＥ２は１番目の関数の選択である。
次のステップＥ３は現在の関数の定義"empty"の生成である。この定義はＸＭＬ言語で以下のタグ形式により表現される。
<getWidth>
</getWidth>
タグの名前は現在の関数、例えばここでは関数"getWidth"の名前である。
【００６５】
次のステップＥ４は現在の関数が少なくとも１つの引数を有するか否かを判定する検証である。
応答が肯定であれば現在の関数の第１引数を選択するステップＥ５へ移行する。
次のステップＥ６で、ステップＥ３で生成されたタグ内部の現在の引数の名前を有するタグを付加することにより、現在の引数の定義がＸＭＬスキーマ言語によって生成される。
引数の方がＸＭＬスキーマ言語で事前に定義されている場合、属性
type="..."
が現在の引数を定義するタグに追加され、図８におけるアルゴリズムは使用されない。
そうでない場合、型の定義は以下図８に関して開示されるように構成され、現在の引数を定義するタグに挿入される。
【００６６】
次のステップＥ７は、現在の関数に処理されるべき引数が少なくとも１つ残っているか否かを判定する検証である。応答が肯定であれば、次の引数が検討されるステップＥ８へ移行する。ステップＥ８は上述したステップＥ６へ移行する。ステップＥ７での応答が否定の場合、すなわち検討すべき引数がない場合は、ステップＥ９へ移行する。同様に、ステップＥ４での応答が否定の場合もステップＥ９へ移行する。
【００６７】
ステップＥ９は現在の関数の呼び出しが結果を生成するか否かをチェックする検証である。応答が肯定であれば、ステップＥ１０へ移行し、ここで、現在の関数を定義するタグ内部の結果の名前と同じ名前のタグを追加することにより、結果の定義がＸＭＬスキーマ言語で生成される。このタグに対し、引数ではなく結果に対応することを表す属性"out="true""が追加される。
結果の型がＸＭＬスキーマ言語で事前に定義されている場合、属性
type="..."
が結果を定義するタグに追加され、図８のアルゴリズムは使用されない。そうでない場合、型の定義は以下図８に関して開示されるように構成され、現在の引数を定義するタグに挿入される。
【００６８】
次のステップＥ１１は、処理すべき関数が少なくとも１つ残っているか否かを判定する検証である。応答が肯定の場合、ステップＥ１２へ移行し、次の関数が検討される。ステップＥ１２は上述したステップＥ３へ移行する。
ステップＥ９での応答が否定の場合、すなわち現在の関数の呼び出しがいかなる結果も生成しない場合には、ステップＥ９からステップＥ１１へ移行する。
現在のインタフェースの全関数が処理されると、ステップＥ１１の応答は否定となり、処理は終了する。当然のことながら、インタフェースは上述したテーブルＴ’に格納される。
【００６９】
図７ｂは本発明の第２の見地における、マークアップ言語に関するスキーマ言語によるインタフェースの記述の実施形態を示す。この方法はサーバ内で実施され、ステップＳ１からＳ１２を含む。
方法はその全部又は一部を、マイクロプロセッサと協働可能な任意の情報記憶手段に格納することが可能なアルゴリズムの形式で実施される。この記憶手段は、コンピュータ又はマイクロプロセッサによって読み出し可能である。この記憶手段は装置に組み込まれてるか又は別個であり、取り外し可能であってもよい。この記憶装置は、例えば、磁気テープ、ディスケット（登録商標）又はＣＤ−ＲＯＭ（固定メモリコンパクトディスク）を含みうる。
上述したように、マークアップ言語はとりわけＸＭＬ言語であり、関連するスキーマ言語はＸＭＬスキーマ言語である。
【００７０】
ステップＳ１は記述すべきインタフェースを、例えばメモリを読み出すことによって取得する。インタフェースはコンピュータオブジェクトに適用可能な関数のセットである。インタフェースは予め定められた、ＸＭＬ言語とは異なる既知のプログラミング言語で表現され、このプログラミング言語は任意の言語、例えばＣ又はＣ＋＋言語でよい。
インタフェースの関数を以下順次検討する。
次のステップＳ２は１番目の関数の選択である。
次のステップＳ３は現在の関数を定義する要素の"empty"定義の生成である。
この定義はＸＭＬスキーマ言語で以下のタグ形式により表現される。
0003768925.tif 000004
最初の行は属性"name"の値として挿入される、現在の関数の名前によって完結する。
【００７１】
次のステップＳ４は現在の関数が少なくとも１つの引数を有するか否かを判定する検証である。
応答が肯定であれば現在の関数の第１引数の選択であるステップＳ５へ移行する。
次のステップＳ６で、現在の引数の定義がＸＭＬスキーマ言語で生成され、ステップＳ３で生成された定義に追加される。
ステップＳ６は以下で詳細に説明する。
【００７２】
次のステップＳ７は、現在の関数に処理されるべき引数が少なくとも１つ残っているか否かを判定する検証である。
応答が肯定であれば、次の引数が検討されるステップＳ８へ移行する。ステップＳ８は上述したステップＳ６へ移行する。
ステップＳ７での応答が否定の場合、すなわち検討すべき引数がない場合は、ステップＳ９へ移行する。同様に、ステップＳ４での応答が否定の場合もステップＳ９へ移行する。
ステップＳ９は現在の関数の呼び出しが結果を生成するか否かを確認する検証である。
応答が肯定であれば、ステップＳ１０へ移行し、ここで、結果の定義がＸＭＬスキーマ言語で生成される。
そして、現在の関数の定義の最初の行は、結果を記述する要素
<xsd:element mame="..." image:resultType="...">
の名前を値とする属性"image:resultType"を追加することで完結する。
結果の定義生成はステップＳ６と同様、以下に詳細が説明される。
【００７３】
ステップＳ１０はステップＳ１１へ移行する。ステップＳ１１は、処理すべき関数が少なくとも１つ残っているか否かを判定する検証である。同様に、ステップＳ９での応答が否定の場合、すなわち現在の関数の呼び出しがいかなる結果も生成しない場合には、ステップＳ９からステップＳ１１へ移行する。
ステップＳ１１の応答が肯定である場合、次の関数を検討するためステップＳ１２へ移行する。ステップＳ１２は上述したステップＳ３へ移行する。
現在のインタフェースの全関数が処理されると、ステップＳ１１の応答は否定となり、処理は終了する。当然のことながら、インタフェースは上述したテーブルＴ’に格納される。
【００７４】
新しい型の定義（図７ａ、本発明の第１の見地）を、ステップＥ７０からＥ８１を含むアルゴリズムの形式で、図８ａを参照して詳細に説明する。
以下、引数に関して図を説明するが、ステップは関数の結果を記述する場合でも同一である。
ステップＥ７０は、定義されるべき型が複合型(complex)であるか否かをチェックする検証である。複合型はいくつかのフィールドから構成される。各フィールドは自らの型を有する。
応答が肯定の場合、これは現在の型がいくつかのフィールドを有することを意味し、複合型の定義がＸＭＬスキーマ言語で生成されるステップＥ７１へ移行する。
【００７５】
次のステップＥ７２では現在の型の１番目のフィールドを選択する。
続くステップＥ７３において、フィールドを定義するためのタグがＸＭＬスキーマ言語で生成される。フィールドの型が定義済みの型である場合、それは属性"type="...""によってタグ内に指定される。そうでなければ、型の記述はタグ内部に追加され、図８のアルゴリズムを再度呼び出す。すなわち、後者の場合、ステップＥ７３はステップＥ７０に切り替わる。
【００７６】
次のステップＥ７４は、現在の複合型に処理すべきフィールドが少なくとも１つ残っているか否かを判定する検証である。
応答が肯定である場合、次のフィールドを検討するステップＥ７５へ移行する。ステップＥ７５からは上述したステップＥ７３へ移行する。
現在の複合型の全フィールドがＸＭＬスキーマ言語で記述されると、すなわち、ステップＥ７４での応答が否定である場合には、現在の型に対する処理が終了する。
【００７７】
ステップＥ７０の応答が否定である場合、現在の型は複合型ではない。この場合、型がコレクション(collection)であるか否かを確認する検証であるステップＥ７６へ移行する。コレクションは同じ型の値の集合である。
応答が肯定の場合、ステップＥ７７へ移行し、コレクション型の定義がＸＭＬスキーマ言語で生成される。
【００７８】
次のステップＥ７８において、コレクションの内容を定義するタグがＸＭＬスキーマ言語で生成される。コレクションの内容の型が定義済みの型であれば、属性"type="...""によってタグ内で指定される。さもなくば、型の記述がタグの中に追加され、図８のアルゴリズムを再度呼び出す。すなわち、後者の場合、ステップＥ７８はステップＥ７０に切り替わる。
【００７９】
ステップＥ７６で応答が否定である場合、現在の引数が単純型(simple type)を有するか否か、すなわち属性も下位要素(sub-element)も持たないか否かを判定する検証であるステップＥ７９へ移行する。単純型は例えば整数、１から１０の整数、７文字の文字列である。
応答が肯定である場合、この単純型を有する要素の定義を生成するステップＥ８０へ移行する。
【００８０】
ステップＥ７９で応答が否定である場合、遠隔参照に対応する要素定義を生成するステップＥ８１へ移行する。この要素は参照されたオブジェクトをダウンロード可能なＵＲＩを含んでいる。
【００８１】
変形例として、型の記述は以下のように生成される。
定義済みの型のみがＸＭＬスキーマ言語から取り出される。そして、複合型はこの複合型を有する要素のタグ内部で記述される。このタグ内部において、複合型の各フィールドはフィールドと同じ名前を有するタグによって定義される。フィールドが定義済みの型を有する場合、それは属性"type="...""によって示される。さもなくば、フィールドの型は複合型であり、そのフィールドを定義するタグ内部で再帰的に記述される。
例えば、この変形例によれば、"asThumbnail"と呼ばれる関数は、
0003768925.tif 000005
と記述される。
【００８２】
これは以下のように翻訳される。関数"asThumbnail"は"thumbnail"と呼ばれる複合型の１つの引数を有し、この引数はそれぞれ定義済みの型"xs:integer"、"xs:integer"及び"xs:base64"を有する３つのフィールド"width"、"height"及び"pixels"からなる。
【００８３】
ステップＳ６及びＳ１０（図７ｂ、本発明の第２の見地）を、ステップＳ７０からＳ８１を含むアルゴリズムの形式で、図８ｂを参照して詳細に説明する。
ＸＭＬスキーマ言語による引数又は結果の記述は、その型に従って実行される。以下、引数に関して図を説明するが、ステップは関数の結果を記述する場合でも同一である。
【００８４】
ステップＳ７０は、定義されるべき型が複合型(complex)であるか否かをチェックする検証である。複合型はいくつかのフィールドから構成される。各フィールドは自らの型を有する。
応答が肯定の場合、これは現在の引数がいくつかのフィールドを有することを意味し、複合型に対応する要素定義がＸＭＬスキーマ言語で生成されるステップＳ７１へ移行する。
【００８５】
次のステップＳ７２は現在の引数の１番目のフィールドの選択である。
続くステップＳ７３において、フィールドの定義がＸＭＬスキーマ言語で生成され、現在の型の定義に追加される。
ステップＳ７３はＸＭＬスキーマ言語による型記述アルゴリズムの呼び出しである。すなわち、ステップＳ７３は現在のフィールドをその型に従って取り扱うためにステップＳ７０へリンクする。
【００８６】
次のステップＳ７４は、現在の複合型の引数に処理すべきフィールドが少なくとも１つ残っているか否かを判定する検証である。
応答が肯定である場合、次のフィールドを検討するステップＳ７５へ移行する。ステップＳ７５は上述したステップＳ７３へ移行する。
現在の複合型の引数の全フィールドがＸＭＬスキーマ言語で記述されると、すなわち、ステップＳ７４での応答が否定である場合には、現在の引数に対する処理が終了する。
ステップＳ７０の応答が否定である場合、現在の引数は複合型ではない。この場合、型がコレクション(collection)であるか否かを確認する検証であるステップＳ７６へ移行する。コレクションは同じ型の値の集合である。
【００８７】
応答が肯定の場合、ステップＳ７７へ移行し、このコレクション型に対応する要素の定義がＸＭＬスキーマ言語で生成される。
次のステップＳ７８において、ネストされた要素定義がＸＭＬスキーマ言語で生成され、現在のコレクション型の定義に追加される。
ステップＳ７８はＸＭＬスキーマ言語による型記述アルゴリズムの呼び出しである。すなわち、ステップＳ７８はネストされた要素をその型に従って取り扱うためにステップＳ７０にリンクする。
従って、例えば、整数テーブルは以下の定義によって記述される。
0003768925.tif 000006
【００８８】
ステップＳ７６で応答が否定である場合、現在の引数が既知の単純型(simple type)であるか否か、すなわちＸＭＬスキーマで定義される型に対応するか有するか否かを判定する検証であるステップＳ７９へ移行する。
単純型の要素は属性も下位要素も持たない。既知の単純型は例えば整数、実数及び文字列である。
応答が肯定である場合、この単純型を有する要素定義を生成するステップＳ８０へ移行する。
【００８９】
ステップＳ７９で応答が否定である場合、遠隔参照に対応する要素定義を生成するステップＳ８１へ移行する。この要素は参照されたオブジェクトをダウンロード可能なＵＲＩを含んでいる。
【００９０】
図９は、図６のテーブルＴ’に類似しているが、クライアントコンピュータのＲＡＭメモリ１０３に格納されるテーブルＴｃ’を示す。
テーブルＴｃ’により、クライアントコンピュータは遭遇したインタフェースの記述を保持することが可能である。
インタフェースが本発明の第１の見地におけるＸＭＬ言語の記述形式又は、クライアントコンピュータによってサーバコンピュータから取得された本発明の第２の見地におけるＸＭＬスキーマ言語の記述形式及び内部形式でメモリに格納されるのと同時に、この記述はＸＭＬ言語（第１の見地）又はＸＭＬスキーマ（第２の見地）における記述から再構成される。
【００９１】
図１０は、オブジェクトのインタフェースをクライアントコンピュータによって得る方法を、ステップＳ２０からＳ２９からなるアルゴリズムの形式で示している。この方法の目的はオブジェクトに適用可能な関数を記述するインタフェースのセットを得ることである。
このアルゴリズムはその全部又は一部をマイクロプロセッサと協働可能な任意の情報記憶手段に格納することが可能である。この記憶手段は、コンピュータ又はマイクロプロセッサによって読み出し可能である。この記憶手段は装置に組み込まれてるか又は別個であり、取り外し可能であってもよい。この記憶手段は例えば、磁気テープ、ディスケット（登録商標）又はＣＤ−ＲＯＭ（固定メモリコンパクトディスク）を含みうる。
【００９２】
ステップＳ２０は、例えば要求に対する応答における、ＸＭＬ文書形式のオブジェクトの記述の受信である。クライアントコンピュータは例えば、文書４００ａ（図４ａ、本発明の第１の見地）又は文書４００ｂ（図４ｂ、本発明の第２の見地）を受信する。
続くステップＳ２１はＸＭＬ文書からの第１のインタフェースのＵＲＩ抽出である。例えば、ＵＲＩ
http://www.crf.canon.fr/imageInterface.xsd
が文書４００ａ及び４００ｂから抽出される。
【００９３】
続くステップＳ２２は現在のインタフェースがクライアントコンピュータのＲＡＭメモリに存在するテーブルＴｃ’（図９）内に格納されているか否かを判定する検証である。
応答が否定であれば、ステップＳ２３へ移行し、インタフェースを記述するＸＭＬ文書（本発明の第１の見地）又はインタフェースのＸＭＬスキーマによる記述（本発明の第２の見地）を得るため、既に取得したＵＲＩによって定義されるアドレスへ要求を送信する。
【００９４】
本発明の第１の見地において、続くステップＳ２４はインタフェースを記述するＸＭＬ文書の受信である。例えば、文書４１０ａがクライアントコンピュータによって受信される。
本発明の第２の見地において、続くステップＳ２４はインタフェースのＸＭＬスキーマによる記述の受信である。例えば、文書４１０ｂがクライアントコンピュータによって受信される。
【００９５】
続くステップＳ２５において、現在のインタフェースのＸＭＬ文書（本発明の第１の見地）又はＸＭＬスキーマ（本発明の第２の見地）がテーブルＴｃ’へ格納される。
続くステップＳ２６では、内部記述を得るため、現在のインタフェースのＸＭＬ文書（本発明の第１の見地）又はＸＭＬスキーマ（本発明の第２の見地）を、例えばＣ又はＣ＋＋といった内部言語へ翻訳する。
続くステップＳ２７では、現在のインタフェースの内部記述がテーブルＴｃ’に格納される。
【００９６】
ステップＳ２７からステップＳ２８へ移行し、ここで処理すべきインタフェースが少なくとも１つ残っているか否かが判定される。応答が肯定である場合、ステップＳ２９へ移行し、続くインタフェースのＵＲＩが抽出される。ステップＳ２９は上述したステップＳ２２へ移行する。
ステップＳ２２で応答が否定である場合も、ステップＳ２８へ移行する。
ステップＳ２８で応答が否定である場合、オブジェクトの機能性を記述するインタフェースのセットが、クライアントコンピュータによって取得されたことになる。
もちろん、本発明は説明及び図示された実施形態に決して限定されず、逆に、本技術分野に属する当業者の能力の範囲内で得られる全ての変形物を包含するものである。
【図面の簡単な説明】
【図１】本発明を実施する装置の実施形態を示す図である。
【図２】本発明を実施するコンピュータのネットワークを示す図である。
【図３】本発明による文書間の関係を示す図である。
【図４ａ】本発明の第１の見地によって用いられる文書の例を示す図である。
【図４ｂ】本発明の第２の見地によって用いられる文書の例を示す図である。
【図５】
【図６】本発明に従って、コンピュータサーバのメモリに格納されるテーブルを示す図である。
【図７ａ】本発明の第１の見地による方法の実施形態を表す図である。
【図７ｂ】本発明の第２の見地による方法の実施形態を表す図である。
【図８ａ】本発明の第１の見地に従って、データの型の表現をＸＭＬスキーマ言語で生成する方法の実施形態を示す図である。
【図８ｂ】本発明の第２の見地に従って、データの型の表現をＸＭＬスキーマ言語で生成する方法の実施形態を示す図である。
【図９】本発明に従ってクライアントコンピュータのメモリに格納されるテーブルを示す図である。
【図１０】コンピュータクライアントによってオブジェクトのインタフェースを取得する方法の実施形態を示す図である。
【図１】
0003768925.tif 000007
【図２】
0003768925.tif 000008
【図３】
0003768925.tif 000009
【図４ａ】
0003768925.tif 000010
【図４ｂ】
0003768925.tif 000011
【図５】
0003768925.tif 000012
【図６】
0003768925.tif 000013
【図７ａ】
0003768925.tif 000014
【図７ｂ】
0003768925.tif 000015
【図８ａ】
0003768925.tif 000016
【図８ｂ】
0003768925.tif 000017
【図９】
0003768925.tif 000018
【図１０】
0003768925.tif 000019