(57)【要約】      （修正有）【課題】照合において異なる言語でも強い型検査を可能にする。【解決手段】２つの異なる照合間の比較が実行時エラーではなく静的型のエラーを生成するように、データ型を照合情報でパラメータ化する。さらに、照合および通常の型に対して汎用パラメータ化を可能にするために、ローカライズされたデータ型を都合よく扱うことができるようにする。ストリングの文脈において、複数言語のストリングの同時使用を可能する。【選択図】図１
2006065848.tif 000002
【特許請求の範囲】
【請求項１】
データに関連付けられている型を受け取る型受信側コンポーネントと、
データに関連付けられている照合情報を受け取る照合情報受信側コンポーネントと、
受け取った型および照合情報を使用して、型制限および照合制限を含むデータ制約コンポーネントを生成する構造コンポーネントと
を備えたことを特徴とするデータ制約システム。
【請求項２】
前記照合制限は、前記データ型に組み込まれることを特徴とする請求項１に記載のシステム。
【請求項３】
前記型は、前記照合情報によってパラメータ化されることを特徴とする請求項２に記載のシステム。
【請求項４】
前記データ制約コンポーネントは、ｔｙｐｅ＜ｃｏｌｌａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ＞の形式であることを特徴とする請求項３に記載のシステム。
【請求項５】
前記データ制約コンポーネントは、汎用型と共に採用されて構造型を作成することを特徴とする請求項２に記載のシステム。
【請求項６】
前記照合制限は、照合部分型の関係をサポートするために階層的であることを特徴とする請求項１に記載のシステム。
【請求項７】
前記照合制限は、言語制約コンポーネントを含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記照合制限は、文化制限コンポーネントを含むことを特徴とする請求項７に記載のシステム。
【請求項９】
前記照合制限は、時間帯を含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
前記データ制約コンポーネントは、パラメータ化された型であることを特徴とする請求項１に記載のシステム。
【請求項１１】
前記型は、ストリングであり、および前記照合情報は、言語であることを特徴とする請求項１に記載のシステム。
【請求項１２】
前記データ型は、時間に関連し、および前記照合情報は、時間帯であることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記型および照合情報は、弱く型付けされたプログラムから受け取られることを特徴とする請求項１に記載のシステム。
【請求項１４】
データを強く型付けされた言語にマッピングするシステムであって、
データ型を取り出すための手段と、
照合制約を取り出すための手段と、
前記照合制約を前記データ型に組み込み、その静的型の検査を可能にするための手段と
を備えたことを特徴とするシステム。
【請求項１５】
前記データ型は、ストリングであり、および前記照合制約は、言語制約を含むことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記照合制約は、文化制約を含むことを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記照合制約は、データ型パラメータであることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記データ型は、時間に関連し、および前記照合制約は、時間帯であることを特徴とする請求項１４に記載のシステム。
【請求項１９】
データ型を受け取るステップと、
照合データを受け取るステップと、
データ制約を生成するステップであって、前記照合情報は前記データ型に組み込まれるステップと
を備えたことを特徴とするデータ制約方法。
【請求項２０】
前記データ型は、前記照合情報によってパラメータ化されることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記制約は、ｄａｔａ  ｔｙｐｅ＜ｃｏｌｌａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ＞の形式で指定されることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記データ型は、ストリングであり、および前記照合情報は、言語であることを特徴とする請求項２０に記載の方法。
【請求項２３】
前記照合情報は、言語部分型を指定する文化データを含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記データ型は、日時であり、および前記照合情報は、時間帯であることを特徴とする請求項２０に記載の方法。
【請求項２５】
前記生成されたデータ制約を汎用型パラメータとして使用する構造型を生成するステップをさらに備えたことを特徴とする請求項１９に記載の方法。
【請求項２６】
請求項１９に記載の前記コンピュータ実行可能コンポーネントを格納していることを特徴とするコンピュータ読み取り可能な媒体。
【請求項２７】
データ型および組み込まれている照合情報を含む制約コンポーネントおよび前記制約コンポーネントに関連付けられているデータを含むデータ指定コンポーネントを受け取るステップと、
前記データに対して前記データ型を検査するステップと、
前記データに対して前記照合情報を検査するステップと、
すべてまたはいずれかの前記検査が失敗した場合、コンパイル時エラーを生成するステップと
を備えたことを特徴とする型検査方法。
【請求項２８】
２つの前記データ指定コンポーネントを比較して互換性を判別するステップをさらに備えたことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記２つのデータ指定コンポーネントを比較するステップは、
第１のデータ指定コンポーネントを受け取るステップと、
第２のデータ指定コンポーネントを受け取るステップと、
前記第１の指定コンポーネントの前記データ型を前記第２の指定コンポーネントと比較するステップと、
前記第１の指定コンポーネントの前記照合情報を前記第２の指定コンポーネントと比較するステップと
を備えたことを特徴とする請求項２８に記載の方法。
【請求項３０】
前記照合情報は、部分型関係が満たされる場合に互換であることを特徴とする請求項２９に記載の方法。
【請求項３１】
前記データ型は、ストリングであり、および前記照合情報は、言語および文化を含むことを特徴とする請求項２７に記載の方法。
【請求項３２】
前記照合情報は、時間帯を含むことを特徴とする請求項２７に記載の方法。
【請求項３３】
請求項２７に記載のコンピュータ実行可能コンポーネントを格納していることを特徴とするコンピュータ読み取り可能な媒体。
【請求項３４】
プログラミング言語またはシステム間のマッピングを行う方法であって、
弱く型付けされた言語またはシステムからデータ型および照合情報を受け取るステップと、
データ制約コンポーネントを生成するステップであって、前記データ制約コンポーネントは、照合情報によってパラメータ化された前記データ型を含むステップと
を備えたことを特徴とする方法。
【請求項３５】
前記データ制約コンポーネントは、ｄａｔａ  ｔｙｐｅ＜ｃｏｌｌａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ＞の形式で指定されることを特徴とする請求項３４に記載の方法。
【請求項３６】
前記型および照合情報は、データベースから受け取られ、および前記データ制約コンポーネントを使用して強く型付けされたプログラミング言語にマップされることを特徴とする請求項３４に記載の方法。
【請求項３７】
前記強く型付けされたプログラミング言語は、Ｃ＃、Ｊａｖａ（登録商標）、およびＸｑｕｅｒｙの内の１つを含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記データ型は、ストリングであり、および前記照合情報は、言語を含むことを特徴とする請求項３４に記載の方法。
【請求項３９】
前記マッピングは、システム上の複数の言語を同時にサポートするマルチリンガルシステムを提供することを特徴とする請求項３７に記載の方法。
【請求項４０】
請求項３４に記載のコンピュータ実行可能コンポーネントを格納していることを特徴とするコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピュータに関し、より詳細には、コンピュータプログラミング言語および型システムに関する。
【背景技術】
【０００２】
コンピュータソフトウェアの世界規模での利用は、近年大幅に増加している。コンピュータソフトウェアは、特にワードプロセッシングおよび電子メールなどの作業用に個人ユーザによって採用される。企業では、データストレージ、通信、および電子商取引を含むビジネス管理のあらゆる側面にソフトウェアを利用する。基本的に、コンピュータソフトウェアは、至るところに存在するようになっている。したがって、ソフトウェア開発者およびベンダーは、多種多様な顧客ベース、つまり本質的に世界に向けたソフトウェアを設計する必要がある。それゆえ、設計者はもはや、そのシステムの利用に関して、例えば米国内の英語を話すユーザというような、広範な想定をすることはできない。むしろ、設計者は、そのソフトウェアを国際化する必要がある。国際化の一環として、開発者は、言語および場所など、システムのユーザの特性に関心を持つべきである。
【０００３】
世界のソフトウェア消費者は、単一言語に堪能というよりも、むしろマルチリンガルである。したがって、ソフトウェア消費者は、数百もの様々な言語で話し、対話することができる。その上さらに、個人ユーザは、マルチリンガルであって、ある言語よりも別の言語を利用するほうがより快適に感じる場合もある。したがって、ソフトウェアは、無数の異なる言語で容易に操作可能であり、かつ機能する必要がある。少なくとも複数言語の利用によってもたらされる１つの現在のソフトウェア問題は、照合に関するものである。
【０００４】
照合は一般に、データの比較および順序付けに関わっている。実際に、照合はコンピューティングの基本的な側面である。例えば、ユーザは、ストリングを見つけ出し、ストリングを比較し、さらにデータベースレコードをソートすることが必要になる可能性が高い。問題は、照合が均一ではないという点である。これは特に、言語、文化、使用法、および習慣によって異なっている。
【０００５】
2006065848.tif 000003
【０００６】
ソフトウェアの国際化に関する懸念事項としてはさらに、時間があげられる。プログラムが日付と時間を含む場合、そのような日付をどの時間帯で解釈すべきか知ることが必要になる。午後３時に会議が設定されている、あるいはテレビ番組が始まることをプログラムが示す場合、時間帯の指定がなければ、午後３時が何時にあたるのか確かなところは誰にも分からない。会議の要請どおりに、その時間が自分たちのいる時間帯のものであると解釈する者もいれば、その時間を会議要請者の時間帯と見なす者もいる可能性がある。テレビについては、指定されている時間が、視聴者の時間帯あるいは東部標準時（番組の通例の掲載方法であるため）のいずれに関連しているか紛らわしいことになる。さらに、ソフトウェアプログラムにおいて時間照合を書き込みおよび理解することは、時間とそれぞれの時間帯を指定することなくしては、ほとんど不可能であろう。
【０００７】
従来技術では、多種多様な不確実な方法で照合に対処してきた。例えば、一部のデータベースは列単位で照合をサポートする。つまり、照合データは特定の列のエントリに添付することができる。例えば、英語およびドイツ語で名前照合を備えることもできる。ただし、単一の列には、英語ストリングおよびドイツ語ストリングを共に含めることはできない。したがって、データベースユーザに複数の国からの顧客がある場合、それらを別々のテーブルに収めておく必要がある。その上さらに、データベース言語は弱く型付けされた言語であり、安全で信頼できるソフトウェアを作成するには問題が多い。従来技術が照合を提供するもう１つの方法は、スレッド単位で行うものである。ここで、照合情報は、グローバルレベルで指定される。そのため、比較Ｓｔｒｉｎｇ１＞Ｓｔｒｉｎｇ２を解釈するために、グローバル宣言に注意が向けられる。ただし、このシステムでは、弱く型付けされているばかりでなく、一度に単一言語しか使用することができない。照合が従来のシステムによって処理されるさらにもう１つの方法は、インスタンスを介するものである。本質的に、各インスタンスは照合情報を持ち歩く必要がある。例えば、以下のようになる。
【０００８】
【表１】
2006065848.tif 000004
【０００９】
ここで、ｓ１はスペイン語ストリングであり、ｓ２は英語ストリングである。この技法は、少なくとも、各インスタンスの追加情報を持ち歩くことが高価であるため、不利である。さらに、型が同じであるために（すなわちストリング）この比較がコンパイル時に通過するとしても、スペイン語ストリングは英語ストリングと比較することはできないので、これは実行時に失敗することになる。それゆえ、この方法も弱く型付けされており、安全で信頼できるソフトウェアの作成には適していない。
【００１０】
したがって、当技術分野において、効率的で強く型付けされたシステムと照合情報の指定および利用の方法が必要とされている。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明のいくつかの態様について基本的な理解をもたらすために、本発明を簡略に要約して以下に説明する。この要約は、本発明の広範囲にわたる概要ではない。この要約は、本発明の主要／重要な要素を特定すること、あるいは本発明の範囲を明確に示すことを意図してはいない。この要約の唯一の目的は、これ以降に提示される詳細な説明の準備段階として簡略化した形で本発明の概念を一部説明することである。
【００１２】
簡略に説明すると、本発明は、データ制約構造システムおよび方法に関するものである。制約システムは、型制約および照合制約を含んでいる。本発明の１つの態様によれば、照合制約は、データ型制約に組み込むことができ、これにより強い型検査を可能にすることができる。例えば、データ型は、ｄａｔａ  ｔｙｐｅ＜ｃｏｌｌａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ＞の形式で照合情報をパラメータ化することができる。
【００１３】
本発明の１つの態様によれば、データ型はローカルストリングにすることもでき、照合情報は、例えばｓｔｒｉｎｇ＜ｅｎｇ＞のような、ストリングの言語を指定することができる。さらに、照合情報は、階層化して部分型付けをサポートすることができる。例えば、照合制約は、言語制約および文化制約を共に含めることができ、文化制約を利用してＥｎｇｌｉｓｈ−ＵＳ、Ｅｎｇｌｉｓｈ−ＢＲ、またはＥｎｇｌｉｓｈ−ＡＵのような照合制約の部分型付けを定義することができる。
【００１４】
データ型はまた、特に、日時にすることもできるが、日時は時相データを提供する。そのようなシナリオにおいて、時間ごとに関連付けられている時間帯の知識なくしては時間を比較することはできないので、照合制約は時間帯にすることができる。
【００１５】
主題の発明のもう１つの態様によれば、照合制約を含んでいるデータ制約コンポーネントは、汎用型と共に使用して構造型を生成するか、またはさらにこれによって利用されるデータの型を限定することができる。例えば、Ｌｉｓｔ＜Ｔ＞はＬＩＳＴ＜Ｓｔｒｉｎｇ＜ｅｎｇ＞＞にすることができる。
【００１６】
また、本発明のさらにもう１つの態様によれば、主題のデータ制約構造システムおよび方法は、弱く型付けされた言語（例えばＳＱＬ）を強く型付けされた言語またはシステム（例えばＣ＃、Ｊａｖａ（登録商標）、ＣＬＲ（実行時型システムを備えるシステム））にマップするために採用することができる。
【００１７】
前述の目的および関連する目的を達成するため、本明細書において本発明の特定の具体的態様について、以下の説明および付属の図面に関連して説明する。これらの態様は、本発明を実施することのできる様々な方法を示しているが、そのすべては本発明の範囲に適用されることを意図している。本発明の他の利点および新規の特徴は、本発明の以下の詳細な説明を付属の図と併せて検討すれば明らかになろう。
【課題を解決するための手段】
【００１８】
本発明は、付属の図を参照して説明される。ここで、同様の番号は、全体を通じて類似するかまたは対応する要素を示している。ただし、その図および詳細な説明は、開示されている特定の形態に限定することを意図したものではないことを理解されたい。むしろ、本発明の精神および範囲に含まれるすべての変更、等価物、および代替手段を網羅することを意図している。
【００１９】
本出願で使用されているように、「コンポーネント」および「システム」という用語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータ関連のエンティティを指すことを意図している。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータであってもよいが、これらに限定されることはない。例として、サーバ上で実行するアプリケーションおよびサーバはいずれもコンポーネントにすることができる。１つまたは複数のコンポーネントは、プロセスおよび／または実行のスレッド内に常駐することができ、コンポーネントは、１つのコンピュータ上にローカライズすることおよび／または２つまたはそれ以上のコンピュータ間に分散することができる。
【００２０】
さらに、本発明は、標準プログラミングおよび／またはエンジニアリング技法を使用して方法、機器、または製造品として実装し、ソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組合せを製造して、開示される発明を実装するためにコンピュータを制御することができる。本明細書において使用される「製造品」（または代替として「コンピュータプログラム製品」という用語は、任意のコンピュータ読み取り可能な装置、キャリア、または媒体からアクセス可能なコンピュータプログラムを網羅することを意図している。例えば、コンピュータ読み取り可能な媒体には、磁気記憶装置（例えばハードディスク、フロッピー（登録商標）ディスク、磁気ストリップなど）、光ディスク（例えばコンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）など）、スマートカード、およびフラッシュメモリ装置（例えばカード、スティック）を含めることができるが、これらに限定されることはない。さらに、搬送波を採用して、電子メールの送受信の際、またはインターネットまたはローカルエリアネットワーク（ＬＡＮ）などのネットワークにアクセスする際に使用されるようなコンピュータ読み取り可能な電子データを搬送することができることを理解されたい。もちろん、当業者であれば、主題の発明の範囲または精神を逸脱することなく、この構成に多くの変更を加えることができることも理解されよう。
【００２１】
本発明の前述および他の態様と利点は、以下の詳細な説明および以下に簡潔に述べられている付属の図を参照すれば明らかになろう。
【発明を実施するための最良の形態】
【００２２】
最初に図１を参照すると、本発明の一態様にかかるデータ制約構造システム１００が示されている。構造システム１００は、型受信側コンポーネント１１０、照合情報受信側コンポーネント１２０、制約コンストラクタコンポーネント１３０、およびデータ制約コンポーネント１４０を含んでいる。本発明の１つの態様によれば、システム１００は、例えば、ほんの数例をあげるとデータベース言語（ＳＱＬ、ＸＭＬなど）からＸＱｕｅｒｙ、Ｃ＃、またはＪａｖａ（登録商標）などへの、弱く型付けされたプログラミングシステムおよび言語から強く型付けされたシステムおよび言語にマッピングする機構として使用することができる。さらに、構造システム１００は、プログラマが最初から、または補助機能（例えばマクロ）によりコードを作成するために採用することができる。型受信側コンポーネント１１０は、ストリングのような共通のデータ型および日時のようなカスタマイズされた型を含むデータ型を受け取るかまたは取り出す。照合受信側コンポーネント１２０は、言語または時間帯のような照合情報を受け取るかまたは取り出す。一般に、照合情報は、データを正しく比較するために必要とされる任意の情報である。前述のように、型受信側コンポーネント１１０および照合受信側コンポーネント１２０は、例えば、弱く型付けされた言語、デザイナ、またはプログラムからデータを受け取ることができる。制約コンストラクタコンポーネント１３０は、型受信側コンポーネント１１０および照合受信側コンポーネント１２０から型および照合情報を受け取り、データ制約コンポーネント１４０を生成する。
【００２３】
図２に、本発明の一態様にかかるデータ制約コンポーネント１４０を示す。示されているように、データ制約コンポーネント１４０は、型制約コンポーネント２１０および照合制約コンポーネント２２０を含んでいる。データ制約コンポーネント１４０は、関連付けられているデータを制限する機構としての役割を果たす。型制約コンポーネント２１０は、データの型に制限を加える。照合制約コンポーネント２２０は、データの種類にさらに制約を加える。別個に説明されているが、データ制約コンポーネント１４０は、そこに組み込まれている照合情報を備えるデータ型を表すこともできることを理解されたい。データ制約コンポーネント１４０は、本発明のデータ制約が制約コンポーネント１４０に関連付けられているデータの型および種類に対する制限を含めることができることを単に強調するためにそのように説明されているのであって、本発明をいかなる方法によっても制限するものではない。本発明の特定の態様によれば、データ型は照合制約または情報でパラメータ化することができる。例えば、データ制約コンポーネントは、ＤａｔａＴｙｐｅ＜Ｃｏｌｌａｔｉｏｎ  Ｃｏｎｓｔｒａｉｎｔ＞によって表すこともできる。したがって、本発明は、従来技術によって生成される実行時または動的エラーではなく、コンパイル時または静的エラーを生成することができる。例えば、データ型制約がストリングであり、照合制約が言語であると仮定する。さらに、以下の２つのストリングに関与していると仮定する。
【００２４】
【表２】
2006065848.tif 000005
【００２５】
ここで、ｓ１およびｓ２、データプレースホルダ（つまり変数）は、指定されている制約に従って、それぞれ英語ストリングおよびドイツ語ストリングでなければならない。ここで、ｓ１をｓ２と比較すると、コンパイラによって静的エラーが生成される。異なる照合を備えるストリングが比較できないことをコンパイラおよび特に型チェッカが認識するため、コンパイル時エラーが結果として生じる。したがって、型の間の比較は、照合情報をインスタンスではなく型に組み込むことによって、実行時エラーの代わりに静的エラーとなる。これは、信頼性のあるソフトウェアを生成する際に重要である。エラーまたはバグは、検出されるのが早ければ早いほど、修正も容易になる。したがって、開発者は、消費者が実行する時にエラーを引き起こすソフトウェアをリリースするよりも、修正可能なコンパイル時のエラーを生成する方を選ぶ。
【００２６】
図３に、本発明の１つの態様にかかる照合制約コンポーネント２２０を示す。照合制約コンポーネント２２０は、言語制約コンポーネント３１０および文化制約コンポーネント３２０を含む。前述のように、ストリングが同じ言語のストリングと正しく比較できるように、ストリングの言語を知ることは重要である。そのような知識がないと、予想外のエラーおよびセキュリティのバグが発生する可能性がある。したがって、言語制約コンポーネント３１０は、データまたは変数データプレースホルダに関連付けられている言語（例えば英語、ロシア語、ドイツ語、フランス語、中国語など）を指定する。ただし、多くの場合、言語だけでは、ストリングを正しく比較するのに十分な情報は提供されない。場合によっては、言語は文化によって変化する。例えば、米国英語は、オーストラリア英語または南アフリカ英語と異なる場合もあり、英国英語とは異なる可能性もある。したがって、本発明は、言語細分性の追加レベルを提供して、例えばｓｔｒｉｎｇ＜Ｅｎｇｌｉｓｈ−ＵＳ＞またはｓｔｒｉｎｇ＜Ｅｎｇｌｉｓｈ−ＧＢ＞のように言語文化を指定できるようにする。ただし、一般的な言語の宣言が比較には十分である場合もあるので、文化制約はオプションにすることもできることを理解されたい。したがって、文化制約コンポーネント３２０は、追加照合制約にすることができ、必須ではないことを示すため、破線で表されている。さらに、照合制約は階層化できることを理解されたい。
【００２７】
簡単に図４を参照すると、本発明の一態様による例示的な照合制約階層４００が示されている。特に、例示的な照合制約階層４００は、言語の制約に関与している。ここで、親ノード４１０は、単に英語である。子は、米国英語（ｅｎｇ−ｕｓ）４１２、オーストラリア英語（ｅｎｇ−ａｕ）４１４、および英国英語（ｅｎｇ−ｂｒ）４１６を含んでいる。さらに、英国英語ノード４１６は、英国英語の方言（ｅｎｇ−ｘ）４１８を表す自身の子を有している。したがって、ストリングのようなデータ型は、部分型関係を満たすことができる。それゆえ、ｓｔｒｉｎｇ＜ｅｎｇ−ｘ＞は、ｅｎｇ−ｘがｅｎｇの部分型または部分言語であるため、ｓｔｒｉｎｇ＜ｅｎｇ＞と互換性がある。言い換えれば、ｅｎｇ−ｘは一般的な英語と比較できる。ただし、ｓｔｒｉｎｇ＜ｅｎｇ−ｕｓ＞およびｓｔｒｉｎｇ＜ｅｎｇ−ａｕ＞またはｓｔｒｉｎｇ＜ｅｎｇ−ｂｒ＞は、この例において互換性がないかまたは比較できない。
【００２８】
ローカライズされたストリングのようなデータ型を便利に扱うために、本発明では、照合および通常の型に対して汎用パラメータ化を提供する。通常、汎用は、型に対するパラメータ化を可能にするためだけに実装されてきた。例えば、次のような集合の状況を考察する。
【００２９】
【表３】
2006065848.tif 000006
【００３０】
この型は、Ｃｏｌｌｅｃｔｉｏｎ＜ｉｎｔ＞またはＣｏｌｌｅｃｔｉｏｎ＜Ｃｏｌｌｅｃｔｉｏｎ＜ｂｏｏｌ｛｝＞＞のような任意の型の集合にインスタンス化することができる。本発明の一態様によれば、データ型は照合に対してパラメータ化される。ただし、本発明はさらに、以下のような汎用化されたメソッドの定義も可能にする。
【００３１】
【表４】
2006065848.tif 000007
【００３２】
Ｓｏｒｔメソッドの汎用パラメータが型ではなく照合であることに留意されたい。同様に、本発明は、照合および型に対する制約を提供する。したがって、ソートは、例えば単に以下のように宣言することによって、特定の言語ストリングに制限することができる。
【００３３】
【表５】
2006065848.tif 000008
【００３４】
ここで、集合は英語ストリングに限定され、その結果ｓｏｒｔメソッドは英語ストリングのみをソートする。
【００３５】
図５に、本発明の一態様にかかる型検査システム５００を示している。システム５００は、２つのデータ指定コンポーネント５１０および５２０と、型チェッカコンポーネント５３０とを含む。各データ指定コンポーネントは、データ制約コンポーネント１４０およびデータ５１２を含む。制約コンポーネント１４０は、型制約コンポーネント２１０および照合制約コンポーネント２２０を含む。したがって、制約コンポーネント１４０は、データ５１２の型および種類を制限する。型チェッカコンポーネント５３０は、データ指定コンポーネント５１０および５２０の両方を分析して、そのデータ制約が満たされ、コンポーネントが互換であることを確実にする。両方またはいずれか一方の検査が失敗した場合、型チェッカはコンパイル時エラーを生成することができる。例えば、型チェッカコンポーネント５３０は最初に、データの型および種類を判別し、それを制約コンポーネント１４０の制約２１０および２２０とそれぞれ比較することによって、データ指定コンポーネント５１０を分析することができる。次に、型チェッカは、同じ検査をデータ指定コンポーネント５２０で実行する。その後、データ制約コンポーネントは、互換性を判別するために比較することができる。具体的には、データ型制約コンポーネント２１０は、型が同じであるか、または互換であることを確認するために比較することができる。同様に、照合制約コンポーネントは、照合が同じであるかまたは互換であるかどうかを確認するために比較することができる。すべてまたはいずれかの検査が失敗した場合、型チェッカコンポーネント５３０によってコンパイル時エラーを生成することができる。
【００３６】
これまで、主として照合について、ストリングおよび言語情報に関連して説明してきた。ただし、本発明の照合制約がそのように限定されることはないことを理解されたい。例えば、図６に、本発明の一態様にかかる照合制約コンポーネント２２０を示す。照合制約コンポーネント２２０は、時間帯コンポーネント６１０を含む。時間帯コンポーネント６１０は、日時などの型を制約するために使用することができる。日時は、カレンダーに関連して日付および／または時間を表すことができる。ただし、日時の比較が意味をなすのは、インスタンスが同じ時間帯にある場合だけである。したがって、時間帯コンポーネント６１０は、Ｄａｔｅｔｉｍｅ＜Ｔｉｍｅ  Ｚｏｎｅ＞の形式の日時のような型をパラメータ化することができる。
【００３７】
照合は、新しい概念ではないことを理解されたい。ただし、本発明は、照合情報の指定および利用の新規かつ非自明なシステムおよび方法（以下で詳細に説明）を提供する。例えば、従来の属において、型は、他の型だけでパラメータ化される。しかし、本発明では、照合データでパラメータ化される型を導入する。さらに、本発明は、照合情報に関する従来の誤解を特定し克服する。特に、照合について考える場合、当業者は、照合が単にデータを読み取るかまたは利用するユーザの特性に過ぎないという共通の誤解をいだいている。したがって、従来のシステムは、照合情報を、スレッドごと、またはインスタンスごとに、ユーザ環境の一部としてグローバルに定義するように設計されてきた。これに反して、本発明では、従来の理解とまったく対照的に、照合をデータ自体の特性として見ている。
【００３８】
前述の例示的なシステムに照らして、本発明により実装することのできる方法は、図７から図９の流れ図を参照すればよりよく理解されよう。説明の簡略を期すために、方法は一連のブロックとして示し、記述されているが、本発明による一部のブロックは、本明細書に示され記述されている他のブロックと異なる順序および／または同時に発生する場合もあるため、本発明がブロックの順序によって限定されないことを理解されたい。さらに、本発明による方法を実装するために、示されているすべてのブロックが必須であるわけではない。
【００３９】
加えて、以下および本明細書全体を通じて開示される方法は、そのような方法をコンピュータに容易に移植および移転できるように製造品上に格納することができることをさらに理解されたい。本明細書において使用される製造品という用語は、任意のコンピュータ読み取り可能な装置、キャリア、または媒体からアクセス可能なコンピュータプログラムを網羅することを意図している。
【００４０】
図７を参照すると、本発明の一態様にかかるデータ制約方法７００が示されている。ステップ７１０において、データ型が受け取られる。データ型は、ストリングのような共通型または日付のようなカスタム型であってもよい。ステップ７２０において、照合情報が受け取られる。照合情報は、一般にデータを比較および／または順序付けするために必要なデータを含んでいる。例えば、ストリングテキストの言語は、２つのストリングを正しく比較するために必要であり、時間帯は、２つの時間を比較するために必要である。データ型および照合情報は、コンストラクタコンポーネントによって受け取られ、データ制約はステップ７３０において生成される。データ制約は、関連付けられているデータの型および種類を制限する。本発明の一態様によれば、データ制約は、照合情報を組み込むデータ型に対応することができる。例えば、データ制約は、ｄａｔａ  ｔｙｐｅ＜ｌａｎｇｕａｇｅ＞またはより具体的にｓｔｒｉｎｇ＜Ｅｎｇｌｉｓｈ＞のような照合情報によってパラメータ化されたデータ型にすることができる。本制約方法は、弱く型付けされた言語（例えばＳＱＬ）と強く型付けされた言語（例えばＣ＃、Ｊａｖａ（登録商標）など）の間のマッピングを容易にするために使用することができ、型および制約は弱く型付けされた言語から受け取られることも理解されたい。
【００４１】
さらに、生成されたデータ制約は、汎用型と共に使用できることに留意されたい。Ａｒｒａｙ＜Ｔ＞のような汎用型は、インスタンス化されると型Ｔが決まるデータ型である。したがって、Ａｒｒａｙ＜Ｔ＞は、ストリングのリスト、整数のリスト、レコードのリストなどにすることができる。Ａｒｒａｙ＜Ｉｎｔ＞のような固定の型を備える汎用型は、構造型と呼ばれる。本発明の一態様によれば、照合情報およびデータ制約は、汎用型と共に採用して、構造型を生成するか、または使用できる型またはデータをさらに制約することができる。例えば、以下のようになる。
【００４２】
【表６】
2006065848.tif 000009
【００４３】
ここで、Ｔは何らかの照合Ｃのストリングであり、照合は英語である必要がある。この例において、英語ストリングの配列は格納されることができる。
【００４４】
図８は、本発明の１つの態様による型検査方法８００を示している。ステップ８１０において、データ指定コンポーネントが受け取られる。データ指定コンポーネントは、型制約および照合制約を備えるデータ制約コンポーネントおよびデータまたは変数プレースホルダを含んでいる。ステップ８２０において、データが型制約によって指定されている型であるかどうかに関して判別が行われる。例えば、データは指定されたストリングの型であるか、などである。データがデータ制約と同じ型ではない場合、プロセスは、エラーが生成されるステップ８４０に進む。型が同じ場合、プロセスはステップ８３０に進み、データが照合制約を満たすかどうかに関して判別が行われる。例えば、ストリングは求められている英語ストリングであるか、などである。照合制約が満たされる場合、プロセスは終了する。照合制約が満たされない場合、プロセスは、エラーが生成されるステップ８４０に進む。その後、プロセスは終了する。
【００４５】
図９は、本発明の一態様にかかるもう１つの型検査方法９００を示している。個々のデータ指定コンポーネントが型検査されると、それらの間の比較を検査することができる。ステップ９１０において、第１の指定コンポーネントが受け取られる。ステップ９２０において、第２の指定コンポーネントが受け取られる。ステップ９３０において、各指定コンポーネントの型が検査されて、同じであるかまたは比較できるかどうか判別される。例えば、ストリングとストリングとは比較できるが、ストリングと整数とは比較できない。型が比較できない場合には、方法はステップ９５０に進み、エラーが生成される。型が同じかまたは比較できる場合、プロセスはステップ９４０に進み、照合制約が比較できるかどうかに関して判別が行われる。例えば、英語ストリングはドイツ語ストリングと比較できないが、英語ストリングは別の英語ストリングと比較することができる。さらに、照合を定義する言語の場合、例えば一般的な英語と英国英語（例えばｅｎｇとｅｎｇ−ｂｒ）のように、比較することのできる部分型の関係がある場合もある。照合情報が比較できる場合、方法はエラーを生じることなく終了する。ただし、照合情報が非互換または比較できない場合、ステップ９５０においてエラーが生成され、方法は終了する。
【００４６】
本発明の様々な態様の状況を提供するため、図１０および図１１、ならびに以下の説明では、本発明の様々な態様を実装することのできる適切なコンピューティング環境について簡潔な概要を示すことを意図している。本発明については、単数および／または複数のコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能命令の一般的な文脈において上記で説明してきたが、当業者であれば、本発明が他のプログラムモジュールとの組合せにおいても実装できることを理解するであろう。一般に、プログラムモジュールには、特定のタスクを実行および／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などが含まれる。さらに、本発明の方法が、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピューティング装置、メインフレームコンピュータ、およびパーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースまたはプログラマブル家庭用電化製品など、他のコンピュータシステムの構成により実施できることを当業者は理解するであろう。説明されている本発明の態様はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。ただし、本発明の態様のすべてではないとしても、その一部は、スタンドアロンコンピュータにおいて実施することができる。分散コンピューティング環境において、プログラムモジュールは、ローカルおよびリモートのコンピュータ記憶装置に配置することができる。
【００４７】
図１０を参照すると、本発明の様々な態様を実装するための例示的な環境１０１０はコンピュータ１０１２を含んでいる。コンピュータ１０１２は、処理装置１０１４、システムメモリ１０１６、およびシステムバス１０１８を含んでいる。システムバス１０１８は、システムメモリ１０１６を含むシステムコンポーネントを処理装置１０１４に接続しているが、システムメモリに限定されることはない。処理装置１０１４は、様々な使用可能なプロセッサのいずれであってもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理装置１０１４として採用することができる。
【００４８】
システムバス１０１８は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／または１１ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）バス、およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）を含む任意の様々な使用可能なバスアーキテクチャを使用するローカルバスを含む複数のタイプのバス構造のいずれであってもよいが、これらに限定されることはない。
【００４９】
システムメモリ１０１６は、揮発性メモリ１０２０および不揮発性メモリ１０２２を含んでいる。起動時などにコンピュータ１０１２内の構成要素間で情報を転送する基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）は、不揮発性メモリ１０２２に格納される。限定的ではなく例示的に、不揮発性メモリ１０２２は、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができるが、これらに限定されることはない。揮発性メモリ１０２０は、ランダムアクセスメモリ（ＲＡＭ）を含んでいるが、これは外部キャッシュメモリとしての役割を果たす。限定的ではなく例示的に、ＲＡＭは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、およびダイレクトラムバスＲＡＭ（ＤＲＲＡＭ）などの多くの形態で使用可能であるが、これらに限定されることはない。
【００５０】
コンピュータ１０１２は、取り外し可能／固定、揮発性／不揮発性のコンピュータ記憶媒体も含んでいる。図１０は、例えば、ディスクストレージ１０２４を示している。ディスクストレージ１０２４は、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカードまたはメモリスティックなどの装置を含んでいるが、これらに限定されることはない。さらに、ディスクストレージ１０２４は、ストレージ媒体を単独で含めることも、コンパクトディスクＲＯＭ装置（ＣＤ−ＲＯＭ）、追記型ＣＤドライブ（ＣＤ−Ｒドライブ）、再書き込み可能ＣＤドライブ（ＣＤ−ＲＷドライブ）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む他のストレージ媒体との組合せで含めることもできるが、これらに限定されることはない。システムバス１０１８へのディスクストレージ装置１０２４の接続を容易にするため、通常インターフェース１０２６などの取り外し可能または固定インターフェースが使用される。
【００５１】
図１０は、適切なオペレーティング環境１０１０において説明されているユーザおよび基本コンピュータリソース間で仲介としての役割を果たすソフトウェアについて説明していることを理解されたい。そのようなソフトウェアは、オペレーティングシステム１０２８を含んでいる。オペレーティングシステム１０２８は、ディスクストレージ１０２４に格納することができ、コンピュータシステム１０１２のリソースを制御して割り当てるように動作する。システムアプリケーション１０３０は、システムメモリ１０１６またはディスクストレージ１０２４に格納されているプログラムモジュール１０３２およびプログラムデータ１０３４を通じてオペレーティングシステム１０２８によるリソースの管理を利用している。本発明は、様々なオペレーティングシステムまたはオペレーティングシステムの組合せにより実装できることを理解されたい。
【００５２】
ユーザは、入力装置１０３６を通じてコマンドまたは情報をコンピュータ１０１２に入力する。入力装置１０３６は、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、テレビチューナカード、デジタルカメラ、デジタルビデオカメラ、Ｗｅｂカメラなどのポインティングデバイスを含んでいるが、これらに限定されることはない。これらのおよびその他の入力装置は、インターフェースポート１０３８を介してシステムバス１０１８経由で処理装置１０１４に接続している。インターフェースポート１０３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびユニバーサルシリアルバス（ＵＳＢ）を含んでいる。出力装置１０４０は、入力装置１０３６と同じタイプのポートの一部を使用する。したがって、例えばＵＳＢポートは、コンピュータ１０１２への入力を提供し、コンピュータ１０１２から出力装置１０４０に情報を出力するために使用することができる。出力アダプタ１０４２は、他の出力装置１０４０の中でも、特殊なアダプタを必要とするディスプレイ（例えばフラットパネルおよびＣＲＴ）、スピーカ、およびプリンタのような出力装置１０４０があることを示すために提供されている。出力アダプタ１０４２は、限定的ではなく例示的に、出力装置１０４０およびシステムバス１０１８間の接続手段を提供するビデオおよびサウンドカードを含んでいる。他の装置および／または装置のシステムがリモートコンピュータ１０４４のような入力および出力機能を提供することに留意されたい。
【００５３】
コンピュータ１０１２は、リモートコンピュータ１０４４など、１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータ１０４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイスまたはその他の共通ネットワークノードなどであってもよく、通常はコンピュータ１０１２に関連して説明されている要素の多くまたはすべてを含んでいる。簡略を期すために、メモリ記憶装置１０４６のみがリモートコンピュータ１０４４と共に示されている。リモートコンピュータ１０４４は、ネットワークインターフェース１０４８を通じてコンピュータ１０１２に論理的に接続され、次に通信接続１０５０を介して物理的に接続されている。ネットワークインターフェース１０４８は、ローカルエリアネットワーク（ＬＡＮ）およびワイドエリアネットワーク（ＷＡＮ）などの通信ネットワークを含んでいる。ＬＡＮ技術は、Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）、Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＣＤＤＩ）、イーサネット（登録商標）／ＩＥＥＥ  １１０２．３、トークンリング／ＩＥＥＥ  １１０２．５などを含んでいる。ＷＡＮ技術は、二地点間リンク、統合デジタル通信網（ＩＳＤＮ）およびその変種などの回線交換ネットワーク、パケット交換ネットワーク、およびデジタル加入者線（ＤＳＬ）を含んでいるが、これらに限定されることはない。
【００５４】
通信接続１０５０は、ネットワークインターフェース１０４８をバス１０１８に接続するために採用されたハードウェア／ソフトウェアを参照する。通信接続１０５０は、説明を明確にするためにコンピュータ１０１２の内部に示されているが、コンピュータ１０１２の外部に設置することもできる。ネットワークインターフェース１０４８への接続に必要なハードウェア／ソフトウェアは、通常の電話品質のモデム、ケーブルモデム、電力モデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット（登録商標）カードなどの内部および外部技術を含むが、これらは例示的に示したに過ぎない。
【００５５】
図１１は、本発明が対話することのできるサンプルのコンピューティング環境１１００を示す概略ブロック図である。システム１１００は、１つまたは複数のクライアント１１１０を含む。クライアント１１１０は、ハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティング装置）にすることもできる。システム１１００はさらに、１つまたは複数のサーバ１１３０も含む。サーバ１１３０は、ハードウェアおよび／またはソフトウェア（例えばスレッド、プロセス、コンピューティング装置）にすることもできる。サーバ１１３０は、例えば、本発明を採用することによって変換を実行するスレッドを収容することができる。クライアント１１１０およびサーバ１１３０間の１つの可能な通信は、２つまたはそれ以上のコンピュータプロセス間で伝送されるように適合されたデータパケットの形態であってもよい。システム１１００は、クライアント１１１０とサーバ１１３０との間の通信を容易にするために採用することができる通信フレームワーク１１５０を含んでいる。クライアント１１１０は、クライアント１１１０にローカルな情報を格納するために採用することができる１つまたは複数のクライアントデータストア１１６０に操作可能に接続されている。同様に、サーバ１１３０は、サーバ１１３０にローカルな情報を格納するために採用することができる１つまたは複数のサーバデータストア１１４０に操作可能に接続されている。
【００５６】
以上説明してきた内容は、本発明の実施例を含んでいる。本発明を説明するために、すべての考えられるコンポーネントまたは方法の組合せについて説明することはもちろん不可能であるが、本発明のさらに多くの組合せおよび置換が可能であることを当業者であれば理解するであろう。したがって、本発明は、添付の特許請求の精神および範囲内にあるそのようなすべての変更、修正および変形を網羅することを意図している。さらに、「含む（ｉｎｃｌｕｄｅ）」という用語が詳細な説明または特許請求の範囲で使用される限りにおいて、そのような用語は、「備えている（ｃｏｍｐｒｉｓｉｎｇ）」が特許請求の範囲において暫定的な語として採用されたときに解釈される場合の「備えている（ｃｏｍｐｒｉｓｉｎｇ）」と同様の方法で包括的であることが意図されている。
【図面の簡単な説明】
【００５７】
【図１】主題の発明の１つの態様によるデータ制約構造システムを示すブロック図である。
【図２】主題の発明の１つの態様によるデータ制約コンポーネントを示すブロック図である。
【図３】本発明の１つの態様による照合制約コンポーネントを示すブロック図である。
【図４】主題の発明の１つの態様による照合制約階層を示すブロック図である。
【図５】主題の発明の１つの態様による型検査システムを示すブロック図である。
【図６】本発明の１つの態様による照合制約コンポーネントを示すブロック図である。
【図７】主題の発明の１つの態様によるデータ制約方法を示す流れ図である。
【図８】本発明の１つの態様による型検査方法を示す流れ図である。
【図９】主題の発明の１つの態様による型検査方法を示す流れ図である。
【図１０】本発明の１つの態様による適切なオペレーティング環境を示す概略ブロック図である。
【図１１】本発明が対話することのできるサンプルのコンピューティング環境を示す概略ブロック図である。
【符号の説明】
【００５８】
４００    照合制約階層
７００    データ制約方法
８００，９００    型検査方法
１０１０    オペレーティング環境
１０１２    コンピュータシステム
１１００    コンピューティング環境
【図１】
2006065848.tif 000010
【図２】
2006065848.tif 000011
【図３】
2006065848.tif 000012
【図４】
2006065848.tif 000013
【図５】
2006065848.tif 000014
【図６】
2006065848.tif 000015
【図７】
2006065848.tif 000016
【図８】
2006065848.tif 000017
【図９】
2006065848.tif 000018
【図１０】
2006065848.tif 000019
【図１１】
2006065848.tif 000020