(57)【要約】【課題】  ドキュメントのサイズを低減させること。【解決手段】  ＥＸＩスキーマドキュメントにおける単純型要素のサイズを減少させる方法は、各単純型要素から、１つ以上のファセットを削除することによって、ＸＳＤ（ＸＭＬスキーマ定義）ドキュメントの単純型要素を修正するステップを有してもよい。本方法は、開始および終了タグで、ＸＳＤ単純型要素から、エンコードされたビットのシーケンスとして表されたＥＸＩ単純型要素に、ＸＳＤドキュメントの各修正された単純型要素を変換することによって、ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードするステップを有してもよい。【選択図】図５Ａ
2014021990.tif 000002
【特許請求の範囲】
【請求項１】
ＥＸＩ（Efficient  XML（Extensible  Markup  Language）  Interchange）スキーマドキュメントにおける単純型要素（simpleType  element）のサイズを減少させる方法であって：
各単純型要素から、１つ以上のファセットを削除することによって、ＸＳＤ（XML  Schema  Definition）ドキュメントの各単純型要素を修正するステップと；
開始および終了タグで、ＸＳＤ単純型要素から、エンコードされたビットのシーケンスとして表されたＥＸＩ単純型要素に、前記ＸＳＤドキュメントの各修正された単純型要素を変換することによって、ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードするステップと；
を有する方法。
【請求項２】
ＸＭＬバリデーション以外のタスクにおいて、前記エンコードされたＥＸＩスキーマドキュメントを用いるステップ、を更に有する請求項１記載の方法。
【請求項３】
ＸＭＬドキュメントをＥＸＩドキュメントにエンコードするタスクにおいて、エンコードされたＥＸＩスキーマドキュメントを利用するステップ、を更に有する、請求項１記載の方法。
【請求項４】
ＸＭＬドキュメントをＥＸＩドキュメントからデコードするタスクにおいて、エンコードされたＥＸＩスキーマドキュメントを利用するステップ、を更に有する請求項１記載の方法。
【請求項５】
ＸＭＬドキュメントを、カンマ分離値（ＣＳＶ）ドキュメント、フラットファイルドキュメント、又はJavaScriptオブジェクトノーテーション（ＪＳＯＮ）ドキュメント、にエンコードするタスクにおいて、エンコードされたＥＸＩスキーマドキュメントを利用するステップ、を更に有する請求項１記載の方法。
【請求項６】
ＸＭＬドキュメントを、カンマ分離値（ＣＳＶ）ドキュメント、フラットファイルドキュメント、又はJavaScriptオブジェクトノーテーション（ＪＳＯＮ）ドキュメント、からデコードするタスクに、エンコードされたＥＸＩスキーマを、利用するステップ、を更に有する請求項１記載の方法。
【請求項７】
前記削除された１つ以上のファセットは、全ての種類の単純型要素に対する、文字数（length）、最小長（minLenghth）、最大長（maxLenght）、正規表現（pattern）、値を含む最大値（maxInclusive）、値を含まない最大値（maxExclusive）、値を含まない最小値（minExclusive）、桁数の最大値（totalDigits）、及び少数部の桁数の最大値（fractionDigits）を含み、
前記削除された１つ以上のファセットは、境界型整数である単純型要素の整数アトミックの種類以外の各単純型要素に対する、値を含む最小値（minInclusive）を更に含み、
前記削除された１つ以上のファセットは、単純型要素の文字列アトミックの種類以外の各単純型要素に対するホワイトスペースを更に含む、
請求項１記載の方法。
【請求項８】
請求項１記載の方法を、コンピュータに実行させるプログラム。
【請求項９】
ＥＸＩ（Efficient  XML（Extensible  Markup  Language）  Interchange）スキーマドキュメントにおける単純型要素（simpleType  element）のサイズを減少させる方法であって：
ＸＳＤ（XML  Schema  Definition）ドキュメントの各単純型要素を特定するステップと；
開始および終了タグで、ＸＳＤ単純型要素から、エンコードされたビットのシーケンスとして表されたＥＸＩ単純型要素に、ＸＳＤドキュメントの各特定された単純型要素を変換することによって、ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードするステップであって、前記エンコードするステップは、各特定された単純型要素に対して：
ユニオン又はリストの種類の単純型要素に対する種類フィールド；
ブールアトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、及びパターン存在フィールド；
文字列アトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、ホワイトスペースフィールド、及び制限された文字列フィールド；
整数アトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、整数幅フィールド、及び値を含む最小値（minInclusive）ポインタフィールド；又は
その他のアトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、及び祖先識別フィールド；
を単一の固定長付加フィールドにエンコードする、ステップと；
を有する方法。
【請求項１０】
前記単一の固定長付加フィールドの長さは、４バイトである、請求項９記載の方法。
【請求項１１】
各種類フィールド及び各ホワイトスペースフィールドは、２ビットの長さを有し；
各一覧存在フィールド及び各パターン存在フィールドは、１ビットの長さを有し；
各祖先識別フィールドは、５ビットの長さを有し；
各制限された文字列フィールドは、８ビットの長さを有し；
各整数幅フィールドは、８ビットの長さを有し；
各値を含む最小値（minInclusive）ポインタフィールドは、１６ビットの長さを有する；
請求項１０記載の方法。
【請求項１２】
前記エンコードされたＥＸＩスキーマドキュメントを、ＸＭＬバリデーション以外のタスクにおいて利用するステップ、を更に有する請求項９記載の方法。
【請求項１３】
ＸＭＬドキュメントを、ＥＸＩドキュメント、カンマ分離値（ＣＳＶ）ドキュメント、フラットファイルドキュメント、又はJavaScriptオブジェクトノーテーション（ＪＳＯＮ）ドキュメント、にエンコードするタスクにおいて、前記エンコードされたＥＸＩスキーマドキュメントを利用するステップ、を更に有する請求項１２記載の方法。
【請求項１４】
ＸＭＬドキュメントを、ＥＸＩドキュメント、カンマ分離値（ＣＳＶ）ドキュメント、フラットファイルドキュメント、又はJavaScriptオブジェクトノーテーション（ＪＳＯＮ）ドキュメント、からデコードするタスクに、前記エンコードされたＥＸＩスキーマを利用するステップ、を更に有する請求項１２記載の方法。
【請求項１５】
前記ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードする前に、前記ＸＳＤドキュメントの各特定された単純型要素から、１つ以上のファセットを削除するステップ、を更に有する請求項１２記載の方法。
【請求項１６】
削除された１つ以上のファセットは、全ての種類の単純型要素に対する、文字数（length）、最小長（minLenghth）、最大長（maxLenght）、正規表現（pattern）、値を含む最大値（maxInclusive）、値を含まない最大値（maxExclusive）、値を含まない最小値（minExclusive）、桁数の最大値（totalDigits）、及び少数部の桁数の最大値（fractionDigits）を含み、
前記削除された１つ以上のファセットは、境界型整数である整数アトミックの種類の単純型要素以外の各単純型要素に対する値を含む最小値（minInclusive）を更に含み、
前記削除された１つ以上のファセットは、文字列アトミックの種類の単純型要素以外の各単純型要素に対するホワイトスペースを更に含む、
請求項１４記載の方法。
【請求項１７】
請求項９記載の方法を、コンピュータに実行させるプログラム。
【請求項１８】
ＥＸＩ（Efficient  XML（Extensible  Markup  Language）  Interchange）スキーマドキュメントにおける単純型要素（simpleType  element）のサイズを減少させる方法をコンピュータに実行させるプログラムを実行するプロセッサを含むＥＸＩエンコーダを含むシステムであって、前記方法は、：
各単純型要素から、１つ以上のファセットを削除することによって、ＸＳＤ（XML  Schema  Definition）ドキュメントの各単純型要素を修正するステップと；
開始および終了タグで、ＸＳＤ単純型要素から、エンコードされたビットのシーケンスとして表されたＥＸＩ単純型要素に、前記ＸＳＤドキュメントの各修正された単純型要素を変換することによって、ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードするステップであって、前記エンコードするステップは、各修正された単純型要素に対して：
ユニオン又はリストの種類の単純型要素に対する種類フィールド；
ブールアトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、及びパターン存在フィールド；
文字列アトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、ホワイトスペースフィールド、及び制限された文字列フィールド；
整数アトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、祖先識別フィールド、整数幅フィールド、及び値を含む最小値（minInclusive）ポインタフィールド；又は
その他のアトミックの種類の単純型要素に対する、種類フィールド、一覧存在フィールド、及び祖先識別フィールド；
を単一の固定長付加フィールドにエンコードする、ステップと；
を有する、
システム。
【請求項１９】
削除された１つ以上のファセットは、全ての種類の単純型要素に対する、文字数（length）、最小長（minLenghth）、最大長（maxLenght）、正規表現（pattern）、値を含む最大値（maxInclusive）、値を含まない最大値（maxExclusive）、値を含まない最小値（minExclusive）、桁数の最大値（totalDigits）、及び少数部の桁数の最大値（fractionDigits）を含み、
前記削除された１つ以上のファセットは、境界型整数である整数アトミックの種類の単純型要素以外の各単純型要素に対する値を含む最小値（minInclusive）を更に含み、
前記削除された１つ以上のファセットは、文字列アトミックの種類の単純型要素以外の各単純型要素に対するホワイトスペースを更に含む、
請求項１８記載のシステム。
【請求項２０】
前記付加フィールドは、４バイトの長さを含み：
ユニオン又はリストの種類の単純型要素に対する２ビット種類フィールド；
ブールアトミックの種類の単純型要素に対する、２ビット種類フィールド、１ビット一覧存在フィールド、５ビット祖先識別フィールド、及び１ビットパターン存在フィールド；
文字列アトミックの種類の単純型要素に対する、２ビット種類フィールド、１ビット一覧存在フィールド、５ビット祖先識別フィールド、２ビットホワイトスペースフィールド、及び８ビットの制限された文字列フィールド；
整数アトミックの種類の単純型要素に対する、２ビット種類フィールド、１ビット一覧存在フィールド、５ビット祖先識別フィールド、８ビット整数幅フィールド、及び１６ビットの値を含む最小値（minInclusive）ポインタフィールド；又は
その他の種類の単純型要素に対する、２ビット種類フィールド、１ビット一覧存在フィールド、及び５ビット祖先識別フィールド；
を有する、請求項１８記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願における実施形態は、ＥＸＩ（Efficient  XML（Extensible  Markup  Language）  Interchange）スキーマドキュメントのエンコーディングに関する。
【背景技術】
【０００２】
ＸＭＬ（Extensible  Markup  Language）は、ドキュメントを、人間及び機械可読のプレーンテキストにエンコードする規則の集合を定義するマークアップ言語である。ＸＭＬの１つのバージョンが、Ｗ３Ｃ（World  Wide  Web  Consortium）により２００８年１１月２６日に制定されたＸＭＬ１．０規格に定義されている。この規格の開示を引用することにより、その全てが本明細書に組み込まれる。ＸＭＬ１．０規格は、ＸＭＬドキュメントをテキストとして文法的に正しくかつ有効に定義している。
【０００３】
ＸＭＬスキーマは、ＸＭＬドキュメントのタイプを記述したものであり、具体的には、ＸＭＬ１．０規格による基本的な制約に追加する形で、そのタイプのドキュメントの構造及びコンテンツの制約に関する記述がなされている。これらの制約は、要素の順番を規定する文法的規則、コンテンツに関連するブール属性、要素及びアトリビュートのコンテンツを規定するデータタイプ、並びに特殊性（uniqueness）及び参照整合性制約（referential  integrity  constraints）の組合せによって規定される。よく普及しているスキーマ言語の1つの例として、ＸＳＤ１．０規格として定義されているＸＳＤ（ＸＭＬスキーマ定義：XML  Schema  Definition）がある。この規格は、２０１２年４月５日にＷ３Ｃが制定している。この規格は、本明細書に参照により組み込まれる。
【０００４】
ＸＭＬドキュメントがＸＳＤドキュメントに適合しているかをチェックするプロセスは、バリデーション（validation）と呼ばれる。これは、シンタクスとして文法的に正しいかについてのＸＭＬのコアコンセプトとは異なるものである。全てのＸＭＬドキュメントは、文法的に正しく定義されている。しかしながら、ＸＭＬプロセッサが「バリデーション」するとき、すなわち有効性のチェックをするときは、ＸＭＬドキュメントは、対応するＸＳＤドキュメントに適合しているかがチェックされる。対応するＸＳＤドキュメントの規定を満足する場合にのみ、ＸＭＬドキュメントは、正しいと判断される。
【０００５】
ＸＭＬおよびＸＳＤドキュメントにおいて、人間が読むことができるというプレーンテキストの側面は、多くの場面において有用である。しかしながら、このような、人間が読めるという側面によって、ＸＭＬおよびＸＳＤドキュメントは、サイズが大きくなり、しかも、メモリ又はストレージ容量に制限があるデバイスに適さない。したがって、ＸＭＬおよびＸＳＤドキュメントのサイズを低減させる努力は、このような人間が読むことができるプレーンテキストの側面を犠牲にし、よりコンパクトな二進の表現が好まれることとなる
【０００６】
ＥＸＩ（Efficient  XML（Extensible  Markup  Language）  Interchange）は、二進のＸＭＬフォーマットである。ＥＸＩは、ＸＭＬドキュメントを、プレーンテキストではなく、バイナリにエンコードする、これは、バイナリＸＭＬの努力のうちで、最も著名なものの１つである。一般的に、バイナリＸＭＬフォーマットは、ＸＭＬドキュメントのサイズを低下させ、ＸＭＬドキュメントをパーシングする際の時間と労力の観点からのコストを低減させる。ＥＸＩは、２０１１年３月１０日にＷ３Ｃが制定したＥＸＩフォーマット１．０規格として正式に定義されている。この規格は、参照することにより、その全てはこの明細書に組み込まれる。ＸＭＬドキュメントは、別個のＥＸＩドキュメントとして、ＥＸＩフォーマットにエンコードすることができる。ＸＳＤドキュメントは、別個のＥＸＩスキーマドキュメントにエンコードすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＸＳＤドキュメントは、ＥＸＩスキーマドキュメントにエンコードされ、このＥＸＩスキーマドキュメントは、一般的に、バリデーションのタスクにおいて、様々なエンコードされたデータフィールドに含まれる。なお、このような様々なエンコードされたフィールドを有することによって、ＥＸＩスキーマドキュメントが、比較的大きなサイズになってしまう点が挙げられる。このように、比較的大きなサイズとなることによって、ＥＸＩスキーマドキュメントが、メモリ又はストレージ容量の制限があるデバイスに存在するＥＸＩプロセッサに転送される際に問題が発生する。
【０００８】
本願の請求項に係る発明は、例えば、上述の環境においてのみ動作する場合における欠点を解決するための、本明細書の実施形態に限定されるものではない。むしろ、この背景は、本明細書に記載された幾つかの実施形態の技術分野の１つの例を単に示すために提供されるものである。
【課題を解決するための手段】
【０００９】
実施形態の一側面において、ＥＸＩスキーマドキュメントにおける単純型要素（simpleType  element）のサイズを減少させる方法は、各単純型要素から、１つ以上のファセットを削除することによって、ＸＳＤ（ＸＭＬスキーマ定義：XML  Schema  Definition）ドキュメントの単純型要素を修正するステップを有してもよい。本方法は、開始および終了タグで、ＸＳＤ単純型要素から、エンコードされたビットのシーケンスとして表されたＥＸＩ単純型要素に、ＸＳＤドキュメントの各修正された単純型要素を変換することによって、ＸＳＤドキュメントをＥＸＩスキーマドキュメントにエンコードするステップを有してもよい。
【００１０】
本実施形態の目的及び有利な効果は、少なくとも、請求項に記載された要素、特徴、及び実施形態によって実現される。
【００１１】
上述の一般的記述及び以下の詳細な説明は、例示的及び説明的記載であり、請求項に係る発明を限定するためのものではない点に留意すべきである。
【００１２】
例示的な実施形態は、添付の図面を参照しながら、追加的な特殊性及び詳細な説明によって記載され説明される。
【図面の簡単な説明】
【００１３】
【図１】ＥＸＩ処理システムの例を示すブロック図である。
【００１４】
【図２】少なくとも幾つかの実施形態に従った例示的なＥＸＩスキーマ単純型を示す図である。
【００１５】
【図３】ＥＸＩスキーマ単純型データタイプの従来例を示す図である。
【００１６】
【図４】図２のＥＸＩスキーマデータタイプにおける付加的フィールドの例示的レイアウトを示す図である。
【００１７】
【図５Ａ】ＥＸＩスキーマドキュメントの単純型要素のサイズを減少させる例示的方法を示すフローチャートである。
【００１８】
【図５Ｂ】図５Ａの例示的方法の１ブロックの例の拡張されたフローチャートである。
【００１９】
【図６】ＸＳＤドキュメントの例を示す図である。
【００２０】
【図７】図２のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミックブール単純型要素の例を示す図である。
【００２１】
【図８】図２のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミック整数単純型要素の例を示す図である。
【００２２】
【図９】図２のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミック文字列単純型要素の例を示す図である。
【００２３】
【図１０Ａ】図３の従来のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミック文字列要素の例を示す図である。
【図１０Ｂ】図３の従来のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミック文字列要素の例を示す図である。
【図１０Ｃ】図３の従来のＥＸＩスキーマデータタイプの例に従ってエンコードされた図６のＸＳＤドキュメントのアトミック文字列要素の例を示す図である。
【発明を実施するための形態】
【００２４】
本明細書における幾つかの実施形態は、ＥＸＩスキーマドキュメントの単純型要素のサイズを減少させる方法を含む。例えば、本明細書における幾つかの実施形態は、バリデーションでない（non-validation）タスクにターゲットをあてたＥＸＩスキーマドキュメントにおけるＥＸＩスキーマドキュメントの単純型要素のサイズを減少させる方法を含む。バリデーションタスクは、バリデーション特有の単純型要素のデータフィールドを採用しているため、ＥＸＩスキーマドキュメントタイプ要素のサイズは、これらのバリデーション特有のデータフィールドを削除することによって、減少させることができる。
【００２５】
本明細書において「ドキュメント」とは、いかなる電子的ドキュメント、ストリーム、又はファイルをも意味する。したがって、本明細書において「ＥＸＩスキーマドキュメント」は、「ＥＸＩスキーマストリーム」又は「ＥＸＩスキーマファイル」と同義である。
【００２６】
本発明の実施形態について、図面を参照しながら説明する。
【００２７】
図１は、ＥＸＩ処理システム１００の例を示すブロック図である。ＥＸＩ処理システム１００は、ＥＸＩスキーマエンコーダ１０２及びＥＸＩプロセッサ１０４を含む。ＥＸＩスキーマエンコーダの例、及びＥＸＩプロセッサの例は、SourceForge.netが主催するOpenEXIプロジェクトに含まれている。本願の出願時におけるOpenEXIプロジェクトのソースコード及びドキュメントを引用することにより、その全てが本明細書に組み込まれる。ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６を入力として受け取るよう構成されており、かつ、ＸＳＤドキュメント１０６をＥＸＩスキーマドキュメント１０８にエンコードする。例えば、OpenEXIのEXISchemaFactoryプロジェクトは、ＥＸＩスキーマエンコーダ１０２として採用することができる。ＥＸＩスキーマドキュメント１０８は、ＥＸＩプロセッサ１０４の入力として受け取られる。そして、これは、関連するＸＭＬドキュメント１１０とその対応するＥＸＩドキュメント１１２との間の変換に用いられる。このＥＸＩプロセッサ１０４は、制限されたメモリ又はストレージを有するデバイスにおいて用いられてもよい。
【００２８】
図２は、本明細書における幾つかの実施形態に従ったＥＸＩスキーマ単純型のデータタイプ２００の例を示している。ＥＸＩスキーマデータタイプ２００は、ＸＳＤドキュメント１０６をＥＸＩスキーマドキュメント１０８にエンコードするときに、図１のＥＸＩスキーマエンコーダ１０２によって用いられ得る。図示した実施形態において、ＥＸＩスキーマデータタイプ２００は、８つのフィールドを有する。フィールドの各々は、メモリにおいて４バイトを占める。したがって、ＥＸＩスキーマデータタイプ２００は、幾つかの実施形態において、メモリ上で３２ビットを占める（すなわち、８フィールド×４バイト＝３２バイト）。ＥＸＩスキーマデータタイプ２００の例における具体的なフィールドの数は、図２に示す他の実施形態の数とは異なり得る点に留意すべきである。更に、ＥＸＩスキーマデータタイプ２００の例において、各フィールドが占めるメモリのバイトの数は、図２に示す他の実施形態の数とは異なり得る点に留意すべきである。
【００２９】
図３は、従来技術のＥＸＩスキーマ単純型のデータタイプ３００を示している。この従来技術のＥＸＩスキーマ単純型のデータタイプ３００は、２３フィールドを含み、その各々は、メモリ上で４バイトを占める。したがって、従来技術のスキーマ単純型のデータタイプ３００は、メモリ上で９２バイトを占めることになる（すなわち、２３フィールド×４バイト＝９２バイト）。したがって、ＥＸＩスキーマ単純型のデータタイプ２００の例は、従来技術のＥＸＩスキーマ単純型のデータタイプ３００の例よりも６５％メモリを少なく占有することとなる（すなわち、１００％−３２バイト／９２バイト＝６５％）。ＥＸＩスキーマ単純型のデータタイプ２００の例による低減は、エンコードされたＥＸＩスキーマにおける単純型要素のサイズを減少させる。このメモリの量の減少は、もっぱら各単純型要素から、様々なバリデーション特有のファセットを削除することによって達成される。本明細書において「ファセット」の語は、ＥＸＩフォーマット１．０規格で定義されたファセットを意味する。
【００３０】
例えば、ＥＸＩスキーマ単純型のデータタイプ２００の例と、従来技術のＥＸＩスキーマ単純型のデータタイプ３００との比較をすれば、ＸＳＤドキュメントの各単純型要素から、様々なファセットが削除できることが分かる。そして、ＸＳＤドキュメントがＥＸＩスキーマドキュメントにエンコードされた場合、これらのファセットの以前の削除によって、ＥＸＩスキーマドキュメントの各シングルタイプ要素のサイズの削減が達成される。エンコードされたＥＸＩスキーマドキュメントは、ＸＭＬバリデーション以外のタスクに利用することができる。バリデーションでないタスクの例としては、これに限られるものではないが、ＸＭＬドキュメントをＥＸＩドキュメントにエンコードすること、ＸＭＬドキュメントをＥＸＩドキュメントからデコードすること、ＸＭＬドキュメントをカンマスペース値（ＣＳＶ）ドキュメント、フラットファイルドキュメント、又はJavaScript(登録商標)オブジェクトノーテーション（ＪＳＯＮ）ドキュメントにエンコードすること、及びＸＭＬドキュメントをＣＳＶドキュメントに、ＣＳＶドキュメント、フラットファイルドキュメント、又はＪＳＯＮドキュメントからデコードすることが含まれる。
【００３１】
ＥＸＩスキーマ単純型のデータタイプ２００の例と、従来技術のＥＸＩスキーマ単純型のデータタイプ３００との比較で述べたように、削除されたファセットは、文字数（length）、最小長（minLenght）、最大長（maxLenght）、正規表現（pattern）、値を含む最大値（maxInclusive）、値を含まない最大値（maxExclusive）、値を含まない最小値（minExclusive）、桁数の最大値（totalDigits）及び少数部の桁数の最大値（fractionDigits）が含まれる。加えて、削除されたファセットは、更に、境界型整数である整数アトミックの種類である単純型要素以外の各単純型要素に対する値を含む最小値（minInclusive）が更に含まれる。更に、削除されたファセットは、文字列アトミックの種類である単純型要素以外の各単純型要素に対するホワイトスペース（whitespace）を含む。
【００３２】
特定のファセットを完全に削除する代わりに、むしろファセットのサイズを減少させ、かつ、コンポジット付加的フィールド（composite  auxiliary  field）に他のファセットと結合させることができる。これによって、ファセットの部分を維持し、対応する単純型要素のサイズを全体的に減少させる目的を達成することができる。図４は、ＥＸＩスキーマ単純型のデータタイプ２００の例におけるSIMPLE_TYPE_AUXフィールドのレイアウト４００の例を示している。レイアウト４００の例示は、３２ビットを含んでおり、単純型要素の種類に従って、対応するデータ値にエンコードする様々なデータフィールドとして利用される。例えば、レイアウト４００の例のデータフィールドは、少なくとも様々なファセット値の少なくとも一部をエンコードするために用いられる。これによって、全てのファセット値は格納しないことによって、使用されるメモリの量を減少させることができる。
【００３３】
例えば、レイアウト４００の例は、全ての単純型要素の種類（varieties）に対して、２ビットの様々なフィールドを含む。この例としては、リスト、ユニオン、及びアトミックの種類を含む。単純型要素が、アトミックのいずれかの種類である場合、レイアウト４００の例は、１ビットの一覧存在フィールド（enumeration  presence  field）と５ビットの祖先識別フィールド（ancestry  identifier  field）単純型要素が、ブールアトミックの種類である場合、レイアウト４００の例は、１ビットのパターン存在フィールド（pattern  presence  field）を更に含む。単純型要素が、文字列アトミックの種類である場合、レイアウト４００の例は、２ビットのホワイトスペースフィールド（whitespace  field）及び８ビットの制限された文字列フィールド（restricted  characters  field）を含む。単純型要素が、整数アトミックの種類である場合、レイアウト４００の例は、８ビットの整数幅フィールド（integer  width  field）及び１６ビットの値を含む最小値ポインタフィールド（minInclusive  pointer  field）を更に含むレイアウト４００の例における各フィールドの具体的なビットの数は、図４に示す数とは異なってもよい。
【００３４】
図５Ａは、本明細書に記載された少なくとも幾つかの実施形態に従って構成された、ＥＸＩスキーマドキュメントにおける単純型要素のサイズを減少させる方法５００の例のフローチャートを示している。幾つかの実施形態において、図１のＥＸＩ処理システム１００等のＥＸＩ処理システムによって、方法５００はインプリメントされ得る。例えば、図１のＥＸＩ処理システム１００のＥＸＩスキーマエンコーダ１０２は、コンピュータ命令を実行するよう構成することができる。この命令によって、単純型要素のサイズを、ＸＳＤドキュメント１０６から減少させる。この処理は、単純型要素をＥＸＩスキーマドキュメント１０８にエンコードする際に行われる。この処理は、方法５００のブロック５０２、５０４、５０６、及び／又は、５５０の１つ以上のブロックによって示されている。この図では、別個のブロックとして記載されているが、様々なブロックは、追加的なブロックに分割され得る。また、これらは、より少ないブロックに統合され得る。また、削除されてもよい。なお、この点は、方法のインプリメンテーションに依存する。図５Ａ及び図１を参照しながら、方法５００を説明する。
【００３５】
方法５００は、ブロック５０２から開始される。ここで、ＸＳＤドキュメントにおける単純型要素が特定される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６をパーシングし、ＸＳＤドキュメント１０６における各単純型要素を特定する。
【００３６】
オプショナルブロック５０４において、ＸＳＤドキュメントの各単純型要素は、ＸＳＤドキュメントの各単純型要素から１つ以上のファセットを削除することによって修正される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメントの各単純型要素から１つ以上のファセットを削除することができる。上述のように、少なくとも幾つかの実施形態において、これらの削除されたファセットは、各単純型要素からのバリデーション特有のファセットを含む。これについては、既にその例をリストとして示した。
【００３７】
ブロック５０６で、ＸＳＤドキュメントの各修正された単純型要素は、ＸＳＤ単純型要素から、エンコードされたＥＸＩ単純型要素に変換される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６のスタート及びエンドタグで各修正された単純型要素を、エンコードされたＥＸＩスキーマドキュメント１０８のビットのシーケンスとして、エンコードされたＥＸＩ単純型要素に変換する。
【００３８】
オプショナルブロック５５０で、ＸＳＤドキュメントの各単純型要素の１つ以上のフィールドは、エンコードされたＥＸＩ単純型要素の１つの固定長付加フィールド（auxiliary  field）にエンコードされる。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の各単純型要素の１つ以上のフィールドを、エンコードされたＥＸＩスキーマドキュメント１０８の対応するエンコードされたＥＸＩ単純型要素の固定長付加フィールドにエンコードすることができる。固定長付加フィールドは、図４のレイアウト４００の例のSIMPLE_TYPE_AUXフィールドである。
【００３９】
図５Ｂは、図５Ａの方法５００の例のブロック５５０の例示的方法（以下、「方法５５０」と言う）の拡張されたフローチャートである。方法５５０は、図５Ｂ、図１、及び図４を参照しながら以下に説明する。
【００４０】
方法５５０は、ブロック５５２から開始する。ここにおいて、単純型要素の種々の値が保存される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の単純型要素の種々の値を保存することができる。これは、ＥＸＩスキーマドキュメント１０８のレイアウト４００の例の２ビットの種類のフィールドに格納される。
【００４１】
判断ブロック５５４で、単純型要素が、ユニオン、リスト、又はアトミックの種類であるかが判断される。単純型要素が、ユニオン又はリストの種類（判断ブロック５０４における「ユニオン又はリスト」）である場合、方法５００は終了する。単純型要素が、アトミックの種類（判断ブロック５０４における「アトミック」）である場合、方法５５０は、ブロック５５６に進む。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の単純型要素の種類を検査し、これによって、単純型要素が、ユニオン、リスト、又はアトミックの種類であるか否かを判断する。
【００４２】
ブロック５５６で、単純型要素の一覧存在値（enumeration  presence  value）及び祖先識別値（ancestry  identifier  value）が保存される。例えば、ＥＸＩスキーマエンコーダ１０２は、単純型要素の一覧存在値を、ＥＸＩスキーマドキュメント１０８のレイアウト４００の例の、１ビット一覧存在フィールドに保存し、単純型要素の祖先識別値を、５ビット祖先識別フィールドに保存する。
【００４３】
判断ブロック５５８において、単純型要素がブールアトミックの種類であるか否かが判断される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の単純型要素の種類を検査し、これによって、単純型要素がブールアトミックの種類であるか否かを判断する。これが肯定的である場合（判断ブロック５５８で「はい」）、方法５５０は、ブロック５６０に進む、ここで、パターン存在値（pattern  presence  value）が保存される。例えば、ＥＸＩスキーマエンコーダ１０２は、単純型要素のこのパターン存在値を、ＥＸＩスキーマドキュメント１０８のレイアウト４００の例の１ビットのパターン存在フィールドに保存することができる。これが否定的である場合（判断ブロック５５８で「いいえ」）、方法５５０は、判断ブロック５６２に進む。
【００４４】
判断ブロック５６２において、単純型要素が文字列アトミックの種類であるか否かが判断される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の単純型要素の種類を検査し、これによって、単純型要素が文字列アトミックの種類であるか否かが判断される。これが肯定的である場合（判断ブロック５６２で、「はい」）、方法５５０は、ブロック５６４に進む。ここで、ホワイトスペース値及び制限された文字列の値が保存される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＥＸＩスキーマドキュメント１０８のレイアウト４００の例の、２ビットのホワイトスペースフィールドに、単純型要素のホワイトスペース値を格納し、８ビットの制限された文字列フィールドに、単純型要素の制限された文字列の値を保存する。これが否定的である場合（判断ブロック５６２で、「いいえ」）、方法５５０は、判断ブロック５６６に進む。
【００４５】
判断ブロック５６６で、単純型要素が整数アトミックの種類であるか否かが判断される。例えば、ＥＸＩスキーマエンコーダ１０２は、ＸＳＤドキュメント１０６の単純型要素の種類を検査することができる。これによって、単純型要素が整数アトミックの種類であるか否かが判断される。これが肯定的である場合（判断ブロック５６６で、「はい」）、方法５５０は、ブロック５６８に進む。ここで、整数幅の値及び値を含む最小値（minInclusive）ポインタ値が保存される。例えば、ＥＸＩスキーマエンコーダ１０２は、単純型要素の整数幅の値を、ＥＸＩスキーマドキュメント１０８のレイアウト４００の例の、８ビットのフィールドに保存し、単純型要素の値を含む最小値（minInclusive）ポインタ値を、１６ビットの制限された文字列フィールドに保存する。もし否定的であれば（判断ブロック５６６で、「いいえ」）、方法５５０は、終了する。
【００４６】
図６は、ＸＭＬスキーマ定義（ＸＳＤ）ドキュメント６００を示している。ＸＳＤドキュメント６００の例は、アトミックブール単純型要素６０２、アトミック整数単純型要素６０４、及びアトミック文字列単純型要素６０６を定義している。単純型要素６０２、６０４、及び６０６の各々は、開始終了「xsd:simpleType」タグを含んでいる。このＸＳＤドキュメント６００は、ＡＳＣＩＩテキストのプレーンテキストで人間が読めるドキュメントである。ここで、ＡＳＣＩＩキャラクタは、メモリにおいて１バイトを占める。したがって、図１のＥＸＩスキーマドキュメント１０８等の、ＥＸＩスキーマドキュメントがエンコードされる前に、ＸＳＤドキュメント６００は、メモリにおいて６５０バイトを占めている。これに含まれる単純型要素６０２、６０４、及び６０６の各々は、１６０バイト以上をメモリにおいて占有している。
【００４７】
図７は、図６のＸＳＤドキュメント６００のアトミックブール単純型要素６０２の例を示している。これは、図２のＥＸＩスキーマデータタイプ２００の例に従ってエンコードされた単純型要素７００として示されている。図８は、図６のＸＳＤドキュメント６００のアトミック整数単純型要素６０４の例を示している。これは、図２のＥＸＩスキーマデータタイプ２００の例に従ってエンコードされた単純型要素８００として示されている。図９は、図６のＸＳＤドキュメント６００のアトミック文字列単純型要素６０６の例を示している。これは、図２のＥＸＩスキーマデータタイプ２００の例に従ってエンコードされた単純型要素９００として示されている。
【００４８】
図７、８、及び９に示されるように、図１の例えばＥＸＩスキーマドキュメント１０８のように、ＥＸＩスキーマドキュメントにエンコードされると、エンコードされた単純型要素７００、８００、及び９００は、わずか３２ビットを占める。したがって、図６のＸＳＤドキュメント６００のエンコードされていない単純型要素６０２、６０４、及び６０６（上述のようにこれらは、メモリにおいて、それぞれ１６０バイト以上を占める）と比較して、エンコードされた単純型要素７００、８００、及び９００の各々は、メモリ上で８０％少ないスペースしか占めない（すなわち、１００％−３２バイト／１６０バイト＝８０％）。
【００４９】
図１０Ａないし図１０Ｃは、図３の従来技術のＥＸＩスキーマデータタイプに従って、エンコードされた単純型要素１０００として、図６のＸＳＤドキュメントのアトミック文字列単純型要素６０６の例を示している。図１０Ａないし図１０Ｃに示されるように、ＥＸＩスキーマドキュメントにエンコードされると、エンコードされた単純型要素１０００は、８８バイトを占めることとなる。したがって、例示的実施形態に従ってエンコードされた図９のエンコードされた単純型要素９００と比して、従来技術の図１０Ａないし図１０Ｃのエンコードされた単純型要素１０００は、２．７５倍のスペースをメモリ上で占めることとなる。
【００５０】
したがって、本明細書において開示された実施形態は、ＥＸＩスキーマドキュメントがバリデーションでないタスクをターゲットにしたＥＸＩスキーマドキュメントにおける単純型要素のサイズを減少させる方法を含んでいる。バリデーションタスクは、単純型要素のバリデーション特有のデータフィールドを導入しているため、ＥＸＩスキーマドキュメントがバリデーションでないタスクをターゲットにしている場合、バリデーション特有のデータフィールドを削除することによって、ＥＸＩスキーマドキュメントにおける単純型要素のサイズを減少させることができる。したがって、本明細書に開示された実施形態は、より効率的なスキーマ情報の交換を行うことができる。これは、特にメモリ又はストレージ容量が限られたデバイスに対して効果をもたらす。
【００５１】
本明細書において開示された実施形態は、専用又は汎用のコンピュータを含む。例えば、以下に詳述する様々なコンピュータハードウエア又はソフトウエアモジュールが含まれる。
【００５２】
本明細書に記載された実施形態は、コンピュータが実行可能な命令又はデータ構造を格納するコンピュータ可読の媒体にインプリメントすることができる。このようなコンピュータ可読の媒体は、汎用的又は特定用途のコンピュータがアクセスできるいかなる利用可能な媒体であってもよい。非制限的な例を示せば以下の通りである。コンピュータ可読の媒体としては、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気ストレージデバイス、又はその他のストレージ媒体を含む、非一時的なコンピュータ可読のストレージ媒体が含まれる。この媒体は、目的のプログラムコードをコンピュータ可読命令又はデータ構造の形式で保存し、汎用又は専用コンピュータによりアクセスできるよう用いられるストレージ媒体のいかなるものもこれらに含まれる。上述の媒体の複合も、コンピュータ可読媒体の範囲に包含される。
【００５３】
コンピュータが実行可能な命令は、例えば、汎用コンピュータ又は専用コンピュータ、専用処理デバイスを特定の機能または機能のグループを実行させる命令を含む。発明の主題は、構造の特徴、及び／又は、方法の手順によって明記したが、添付の請求項に係る発明の技術的範囲は、上述の特定の特徴又は手順に限定されるものでない点に留意すべきである。むしろ、上述の特定の特徴及び手順は、請求項をインプリメントする形態の例を示したものである。
【００５４】
ここで用いられているように、「モジュール」又は「コンポーネント」は、コンピューティングシステムを実行させるソフトウエアオブジェクト又はルーチンを示すものである。ここに記載されている異なるコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムを実行させるオブジェクト又はプロセスとして（例えば、異なるスレッドとして）インプリメントすることができる。ここに記載されているシステム及び方法は、好ましくはソフトウエアによってインプリメントされ得るが、ハードウエアによるインプリメンテーション、又はソフトウエアとハードウエアとの組合せによるインプリメンテーションも、もちろん可能であり、そのようにしてもよい。本記述において、「コンピューティングエンティティ」は、本明細書において定義された、いかなるコンピューティングシステムであってもよい。また、コンピュータシステムにおいて実行される、いかなるモジュール、又はモジュールの組合せであってもよい。
【００５５】
本明細書における、全ての実施形態、及び限定的な表現は、説明を目的とするものであり、この明細書を読む者に対して発明及び発明者が技術を発展させるためにもたらされたコンセプトの理解を助けるためのものである。しかも、このような実施形態及び条件は、限定することを目的とするものと解してはならない。以上のように、実施形態を詳述したが、これらに対して、発明の技術的範囲及び精神を逸脱しない範囲で、変形、置換、及び変更がなされ得ることを理解すべきである。
【図１】
2014021990.tif 000003
【図２】
2014021990.tif 000004
【図３】
2014021990.tif 000005
【図４】
2014021990.tif 000006
【図５Ａ】
2014021990.tif 000007
【図５Ｂ】
2014021990.tif 000008
【図６】
2014021990.tif 000009
【図７】
2014021990.tif 000010
【図８】
2014021990.tif 000011
【図９】
2014021990.tif 000012
【図１０Ａ】
2014021990.tif 000013
【図１０Ｂ】
2014021990.tif 000014
【図１０Ｃ】
2014021990.tif 000015