(57)【要約】      （修正有）【課題】ＸＭＬ文書をＥＸＩストリームに符号化し又はＥＸＩストリームから復号化する。【解決手段】複数の文法は、ＥＸＩ（efficient  XML  interchange）ストリームへの及びＥＸＩストリームからのＸＳＤに基づくＸＭＬ（extensible  markup  language）文書の符号化及び復号化に関連付けられる。複数の文法の各々は、複数の要素のうちの１つの要素に対応する。複数の文法の各々は、シングルトン空コンテンツ文法を有する。ＸＭＬ文書をＥＸＩストリームに符号化し又はＥＸＩストリームから復号化するよう構成される装置は、複数の文法の各々がシングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするより少ないリソースをコミットする。【選択図】図２
2017151951.tif 000002
【特許請求の範囲】
【請求項１】
それぞれコンプレックスタイプ定義を有する複数の要素を含むＸＳＤ（extensible  markup  language  schema  definition）を受信するステップと、
前記複数の要素の間で共有されるべきシングルトンコンテンツ文法を生成するステップと、
前記ＸＳＤに基づき複数の文法を生成するステップであって、前記複数の文法は、前記ＸＳＤに基づくＸＭＬ（extensible  markup  language）文書のＥＸＩ（efficient  XML  interchange）ストリームへの符号化及びＥＸＩストリームからの復号化に関連付けられ、前記複数の文法の各々は、前記複数の要素のうちの１つの要素に対応し、前記複数の文法の各々は、シングルトンコンテンツ文法を含み、前記ＸＭＬ文書を前記ＥＸＩストリームに符号化し又は前記ＥＸＩストリームから復号化するよう構成される装置が、前記複数の文法の各々が前記シングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするよりも少ないリソースを、前記ＥＸＩストリームの符号化又は復号化にコミットするようにする、ステップと、
を有する方法。
【請求項２】
前記ＸＳＤに基づき前記ＸＭＬ文書から第１のＥＸＩストリームを符号化するステップ、を更に有する請求項１に記載の方法。
【請求項３】
前記複数の文法の各々は、前記文法に対応する前記複数の要素のうちの前記要素に関連する属性定義から導出される属性文法を更に有する、請求項１に記載の方法。
【請求項４】
前記複数の文法のうちの各々は、前記属性文法と前記シングルトンコンテンツ文法との連結を有する、請求項３に記載の方法。
【請求項５】
前記複数の要素の各々は、空コンテンツモデルを更に有し、前記シングルトンコンテンツ文法は、シングルトン空コンテンツ文法を有する、請求項１に記載の方法。
【請求項６】
前記シングルトン空コンテンツ文法は、要素終了イベントを有する、請求項５に記載の方法。
【請求項７】
前記複数の要素の各々は、シンプルタイプ定義を更に有し、前記シングルトンコンテンツ文法は、シングルトンシンプルコンテンツ文法を有する、請求項１に記載の方法。
【請求項８】
前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、請求項７に記載の方法。
【請求項９】
ＸＳＤ（extensible  markup  language  schema  definition）コンプレックスタイプを有する複数の要素をフェッチするステップであって、前記複数の要素は、
空コンテンツモデルを更に有する複数の要素と、
シンプルタイプ定義を更に有する複数の要素と、
を含む、ステップと、
前記ＸＳＤコンプレックスタイプ及び前記空コンテンツモデルを有する第１の要素をフェッチすることに応答して、シングルトン空コンテンツ文法を生成するステップと、
前記ＸＳＤコンプレックスタイプ及び前記空コンテンツモデルを有する第２の要素をフェッチすることに応答して、前記シングルトン空コンテンツ文法を利用するステップと、
前記ＸＳＤコンプレックスタイプ及び前記シンプルタイプ定義を有する第３の要素をフェッチすることに応答して、シングルトンシンプルコンテンツ文法を生成するステップと、
前記ＸＳＤコンプレックスタイプ及び前記シンプルタイプ定義を有する第４の要素をフェッチすることに応答して、前記シングルトンシンプルコンテンツ文法を利用するステップであって、前記ＸＳＤに基づきＸＭＬ（extensible  markup  language）文書をＥＸＩ（efficient  XML  interchange）ストリームに符号化し又はＥＸＩストリームから復号化するよう構成される装置が、前記シングルトン空コンテンツ文法ではなく複数の別個の空コンテンツ文法が生成される並びに前記シングルトンシンプルコンテンツ文法ではなく複数の別個のシンプルコンテンツ文法が生成される場合に前記装置がコミットするより少ないリソースを、前記ＥＸＩストリームの符号化又は復号化のためにコミットするようにする、ステップと、
を有する方法。
【請求項１０】
前記シングルトン空コンテンツ文法は、要素終了イベントを有する、請求項９に記載の方法。
【請求項１１】
前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、請求項９に記載の方法。
【請求項１２】
前記第１の要素に関連する第１の文法を生成するステップであって、前記第１の文法は、前記第１の要素に関連する属性定義から導出される属性文法と前記シングルトン空コンテンツ文法との連結である、ステップと、
前記第２の要素に関連する第２の文法を生成するステップであって、前記第２の文法は、前記第２の要素に関連する属性定義から導出される属性文法と前記シングルトン空コンテンツ文法との連結である、ステップと、
前記第３の要素に関連する第３の文法を生成するステップであって、前記第３の文法は、前記第３の要素に関連する属性定義から導出される属性文法と前記シングルトンシンプルコンテンツ文法との連結である、ステップと、
前記第４の要素に関連する第４の文法を生成するステップであって、前記第４の文法は、前記第４の要素に関連する属性定義から導出される属性文法と前記シングルトンシンプルコンテンツ文法との連結である、ステップと、
を更に有する請求項９に記載の方法。
【請求項１３】
非一時的コンピュータ可読媒体であって、工程を実行するためにプロセッサにより実行可能な符号化されたプログラムコードを有し、前記工程は、
それぞれコンプレックスタイプ定義を有する複数の要素を含むＸＳＤ（extensible  markup  language  schema  definition）を受信するステップと、
前記複数の要素の間で共有されるべきシングルトンコンテンツ文法を生成するステップと、
前記ＸＳＤに基づき複数の文法を生成するステップであって、前記複数の文法は、前記ＸＳＤに基づくＸＭＬ（extensible  markup  language）文書のＥＸＩ（efficient  XML  interchange）ストリームへの符号化及びＥＸＩストリームからの復号化に関連付けられ、前記複数の文法の各々は、前記複数の要素のうちの１つの要素に対応し、前記複数の文法の各々は、シングルトンコンテンツ文法を含み、前記ＸＭＬ文書を前記ＥＸＩストリームに符号化し又は前記ＥＸＩストリームから復号化するよう構成される装置が、前記複数の文法の各々が前記シングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするよりも少ない前記非一時的コンピュータ可読媒体のリソースを、前記ＥＸＩストリームの符号化又は復号化にコミットするようにする、ステップと、
を有する非一時的コンピュータ可読媒体。
【請求項１４】
前記ＸＳＤに基づき前記ＸＭＬ文書から第１のＥＸＩストリームを符号化するステップ、を更に有する請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記複数の文法の各々は、前記文法に対応する前記複数の要素のうちの前記要素に関連する属性定義から導出される属性文法を更に有する、請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記複数の文法のうちの各々は、前記属性文法と前記シングルトンコンテンツ文法との連結を有する、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記複数の要素の各々は、空コンテンツモデルを更に有し、前記シングルトンコンテンツ文法は、シングルトン空コンテンツ文法を有する、請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記シングルトン空コンテンツ文法は、要素終了イベントを有する、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記複数の要素の各々は、シンプルタイプ定義を更に有し、前記シングルトンコンテンツ文法は、シングルトンシンプルコンテンツ文法を有する、請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、請求項１９に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で議論される実施形態は、文法生成に関する。
【背景技術】
【０００２】
拡張マークアップ言語（Extensible  markup  language：ＸＭＬ）は、人間に解読可能な及び機械可読の両方であり得る平文フォーマットに文書を符号化するためのルールセットを定めるマークアップ言語である。ＸＭＬの１つのバージョンは、参照することにより全体が本願明細書に組み込まれる、Ｗ３Ｃ（World  Wide  Web  Consortium）により策定された２００８年１１月２６日付けのＸＭＬ  １．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎの中で定められる。
【０００３】
ＸＭＬスキーマは、ＸＭＬ文書の種類の記述であり、ＸＭＬ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ自体により課される基本的な構文の制約に加えて、標準的に該種類の文書の構造及びコンテンツに対する制約の観点で表現される。これらの制約は、概して、要素の順序を制御するルール、コンテンツに関連するブール述部、要素及び属性のコンテンツを制御するデータ型、及び一意性及び参照整合性制約のような更に具体的なルール、の何らかの組合せを用いて表現される。ＸＭＬ文書又はＸＭＬ文書のセットは、関連するＸＭＬスキーマ定義（XML  schema  definition：ＸＳＤ）を含むことがある。ＸＳＤは、概して、ＸＭＬ文書に関連するＸＭＬスキーマを記述しても良い。
【０００４】
効率的なＸＭＬ交換（Efficient  XML  interchange：ＥＸＩ）は、ＸＭＬ文書が平文ではなく２進データフォーマットで符号化される２進ＸＭＬフォーマットである。一般的に、ＥＸＩフォーマットの使用は、ＸＭＬ文書のサイズ及び冗長性を低減でき、ＸＭＬ文書を解析するために費やされる時間及び労力を削減できる。ＥＸＩの正式な定義は、参照により全体が本願明細書に組み込まれる、Ｗ３Ｃにより策定された２０１４年２月１１日付けのＥＸＩ  Ｆｏｒｍａｔ１．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎの中に記載されている。ＸＭＬ文書は、ＥＸＩストリームとしてＥＸＩフォーマットに符号化されても良い。さらに、ＥＸＩストリームは、元のＸＭＬ文書に類似する又はそれと同じＸＭＬ文書を形成するために復号化されても良い。
【０００５】
本願明細書で請求される主題は、上述のような欠点を解決する実施形態や上述のような環境でのみ機能する実施形態に限定されない。むしろ、この背景技術は、単に、本願明細書に記載される複数の実施形態が実施される技術分野の一例を説明するために提供される。
【発明の概要】
【０００６】
一実施形態の一態様によると、拡張可能マークアップ言語スキーマ定義（extensible  markup  language  schema  definition：ＸＳＤ）が受信されても良い。ＸＳＤは、それぞれコンプレックスタイプ定義を有する複数の要素を有しても良い。シングルトンコンテンツ文法が生成されても良い。シングルトンコンテンツ文法は、複数の要素の間で共有されても良い。複数の文法は、ＸＳＤに基づき生成されても良い。複数の文法は、効率的なXMLインターチェンジ（efficient  XML  interchange：ＥＸＩ）ストリームへの及びＥＸＩストリームからのＸＳＤに基づく拡張可能マークアップ言語（extensible  markup  language：ＸＭＬ）文書の符号化及び復号化に関連付けられても良い。複数の文法の各々は、複数の要素のうちの１つの要素に対応しても良い。複数の文法の各々は、シングルトンコンテンツ文法を有しても良い。ＸＭＬ文書をＥＸＩストリームに符号化し又はＥＸＩストリームから復号化するよう構成される装置は、複数の文法の各々がシングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするより少ないリソースをコミットし得る。
【０００７】
実施形態の目的及び利点が理解され、少なくとも特に特許請求の範囲で指摘された要素、特徴及び組合せを用いて達成されるだろう。上述の全体的説明及び以下の詳細な説明の両方は、例示及び説明のためであり、本発明の範囲を限定しない。
【図面の簡単な説明】
【０００８】
例示的な実施形態は、添付の図面を用いて、更なる特異性及び詳細事項と共に記載され説明される。
【図１】例示的なＥＸＩ（efficient  extensible  markup  language  interchange）処理システムの図である。
【図２】図１のシステムにより実施され得る例示的な方法のフローチャートである。
【図３】図１のシステムにより実施され得る別の例示的な方法のフローチャートである。
【図４】図１のシステムにより実施され得る別の例示的な方法のフローチャートである。
【発明を実施するための形態】
【０００９】
ＸＭＬ（extensible  markup  language）文書をＥＸＩ（efficient  XML  interchange）ストリームに符号化する又はＥＸＩストリームをＸＭＬ文書に復号化する前に、関連するＸＭＬスキーマ定義（XML  schema  definition：ＸＳＤ）は、文法（グラマー、grammars）に正規化（ノーマリゼーション、normalize）されても良い。文法は、ＸＭＬ文書の特定のシーケンスを予測するために用いられるルールを含んでも良い。ＸＳＤのための文法の従来の生成のためのアルゴリズムは、ＥＸＩ  Ｆｏｒｍａｔ１．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎに含まれる。
【００１０】
従来、個々のコンテンツの文法は、空コンテンツモデルを有するＸＳＤコンプレックスタイプを含むＸＳＤスキーマの要素の各々について生成され得る。例えば、空コンテンツモデルを有するＸＳＤコンプレックスタイプを含むＸＳＤスキーマの要素の各々について、対応するＥＸＩ文法が生成され得る。これは、以下のようにＴｙｐｅｉにより示される。
【数１】
2017151951.tif 000003
【００１１】
ここで、○の中に＋は、文法連結演算子を表す。さらに、次式は、関連要素について、存在する場合には属性定義から導出される属性文法を表す。
【数２】
2017151951.tif 000004
【００１２】
従来、Ｃｏｎｔｅｎｔｉは、以下を生成することにより得られる。
Ｃｏｎｔｅｎｔｉ：
ＥＥ
したがって、従来、新しいＣｏｎｔｅｎｔｉ文法は、空コンテンツモデルを有するＸＳＤコンプレックスタイプを有する各々の要素について生成され得る。
【００１３】
さらに、従来、個々のコンテンツの文法は、シンプルタイプ定義を有するＸＳＤコンプレックスタイプを含むＸＳＤスキーマの要素の各々について生成され得る。例えば、シンプルタイプ定義を有するＸＳＤコンプレックスタイプを含むＸＳＤスキーマの要素の各々について、対応するＥＸＩ文法が生成され得る。これは、以下のようにＴｙｐｅｉにより示される。
【数３】
2017151951.tif 000005
【００１４】
ここで、○の中に＋は、文法連結演算子を表す。さらに、次式は、関連要素について、存在する場合には属性定義から導出される属性文法を表す。
【数４】
2017151951.tif 000006
【００１５】
従来、Ｃｏｎｔｅｎｔｉは、以下を生成することにより得られる。
Ｃｏｎｔｅｎｔｉ，０：
ＣＨ［ｓｃｈｅｍａ−ｔｙｐｅ  ｖａｌｕｅ］Ｃｏｎｔｅｎｔｉ，１
Ｃｏｎｔｅｎｔｉ，１：
ＥＥ
したがって、従来、新しいＣｏｎｔｅｎｔｉ文法は、シンプルタイプ定義を有するＸＳＤコンプレックスタイプを有する各々の要素について生成され得る。
【００１６】
幾つかの実施形態によると、シングルトン（singleton）文法は、特定のコンプレックス要素タイプの間で共有されても良い。特定のコンプレックス要素タイプの間でシングルトン文法を共有することは、空間最適化を促進できる。空間最適化は、文法の比較的コンパクトなセットを促進できる。幾つかの実施形態では、シングルトンコンテンツ文法は、空コンテンツモデルを有する複数のＸＳＤコンプレックスタイプの間で共有されても良い。代替又は追加で、シングルトンコンテンツ文法は、シンプルコンテンツを有する複数のＸＳＤコンプレックスタイプの間で共有されても良い。
【００１７】
本発明の実施形態を、添付の図面を参照して以下に説明する。
【００１８】
図１は、例示的なＥＸＩ処理システム１００のブロック図である。ＥＸＩ処理システム１００は、正規化装置１０４を有する。正規化装置１０４は、ＸＳＤ１０２を受信し及び正規化１０６を出力するよう構成されても良い。ＸＳＤ１０２の正規化１０６は、例えば、ＸＭＬ文書の符号化及び／又は復号化において使用され得る。
【００１９】
正規化装置１０４は、文法生成処理の１又は複数の工程を実行するよう構成されても良い。本願明細書に記載の幾つかの実施形態によると、正規化装置１０４は、シングルトンコンテンツ文法を生成し、コンプレックスタイプ定義を有する複数の要素の間でシングルトンコンテンツ文法を共有しても良い。したがって、幾つかの場合には、複数の要素を含むＸＳＤ１０２は、比較的少数の生成された文法を含む正規化１０６を生じ得る。これは、文法定義を格納するために使用されるメモリ量を削減できる可能性がある。
【００２０】
正規化１０６は、符号化器／復号化器１０８に通信されても良い。例示的な符号化器／復号化器１０８は、ＳｏｕｒｃｅＦｏｒｇｅ．ｎｅｔにホスティングされるＯｐｅｎＥＸＩプロジェクトに含まれても良い。本願の出願日におけるＯｐｅｎＥＸＩプロジェクトのソースコード及び文書は、それらの全体が参照により本願明細書に組み込まれる。符号化器／復号化器１０８は、ＸＭＬ文書１１０を受信し、ＸＭＬ文書１１０をＥＸＩストリーム１１２として符号化するよう構成されても良い。代替又は追加で、ＥＸＩストリーム１１２も、符号化器／復号化器１０８により受信され、ＸＭＬ文書１１０として復号化されても良い。元のＸＭＬ文書１１０及び符号化器／復号化器１０８により生成されたＸＭＬ文書１１０は、実質的に同一のＸＭＬデータを含んでも良い。しかしながら、余白、コメント、及び／又は処理命令のような特定の種類の人間に解読可能な情報は、符号化器／復号化器１０８の関連する保存設定に依存して、符号化器／復号化器１０８により保存されなくても良い。
【００２１】
正規化装置１０４は、プロセッサ１０３ａ及びメモリ１０５ａを有しても良い。符号化器／復号化器１０８は、プロセッサ１０３ｂ及びメモリ１０５ｂを有しても良い。メモリ１０５ａ及びメモリ１０５ｂは、非一時的コンピュータ可読媒体を含み得る。プロセッサ１０３ａ及びプロセッサ１０３ｂにより実行可能なプログラミングコードのような命令は、それぞれメモリ１０５ａ及びメモリ１０５ｂ内で符号化されても良い。命令がプロセッサ１０３ａ及び／又はプロセッサ１０３ｂにより実行されると、正規化装置１０４及び／又は符号化器／復号化器１０８は、本願明細書に記載の処理に関連する及び／又はそれを含む工程を実行しても良い。
【００２２】
正規化装置１０４及び／又は符号化器／復号化器１０８は、埋め込み型装置及び／又は限られたメモリ容量を有する装置において利用されても良い。埋め込み型装置及び／又は限られたメモリ容量を有する装置の例は、限定ではないが、センサ、マイクロコントローラ、及びエネルギ管理制御装置、自動車のマイクロコントローラ、スマートメータ、等のような機器を含む。装置は、ＩｏＴ（Internet  of  Things）等として機能可能な装置のようなネットワーク接続された装置を含み得る。埋め込み型装置及び／又は限られたメモリ容量を有する装置において利用可能な正規化装置及び／又は符号化器／復号化器を提供することは、このような装置を改良できる。例えば、埋め込み型装置及び／又は限られたメモリ容量を有する装置は、このような装置がなければ利用可能ではない可能性のあるＥＸＩ処理能力を備えられる。
【００２３】
図２は、図１のシステム１００において実施され得る例示的な方法２００のフローチャートである。幾つかの実施形態では、方法２００は、図１の正規化装置１０４により実施されても良い。方法２００は、Ｔｉにより表されるＸＳＤコンプレックスタイプを有する要素をフェッチすることにより、ブロック２０２で開始し得る。複数の要素は、ＸＳＤコンプレックスタイプを有しても良い。したがって、方法２００は繰り返されても良い。
【００２４】
方法２００は、フェッチした要素のコンテンツタイプを決定することにより、ブロック２０４において継続しても良い。コンテンツタイプが空コンテンツモデルを含む場合、方法２００は、ブロック２０６において継続しても良い。コンテンツタイプがシンプルコンテンツタイプを含む場合、方法２００は、ブロック２０８において継続しても良い。幾つかの実施形態では、文法は、特定の他のコンテンツタイプを有する要素について、従来通り生成されても良い。
【００２５】
空コンテンツモデルを有するフェッチした要素に関して、例えば、要素Ａは、空コンテンツモデルを有するコンプレックスタイプを有しても良く、以下のように定めることができる。
【００２６】
<xsd:complexType  name=”A”>
</xsd:complexType>
ブロック２０６において、文法２１０は、空コンテンツモデルを有するフェッチした要素について生成されても良い。文法は、フェッチした要素の属性定義から導出される属性文法２１２と、シングルトンコンテンツ文法２１４と、を有しても良い。空コンテンツモデルを有する要素のシングルトンコンテンツ文法２１４は、本願明細書ではシングルトン空文法として記載され得る。シングルトンコンテンツ文法２１４は、要素終了イベント２１５を有するオートマンの形式を取り得る。方法２００がブロック２０６に到達したとき、シングルトンコンテンツ文法２１４が存在しない場合、シングルトンコンテンツ文法２１４が生成されても良い。シングルトンコンテンツ文法２１４が存在しない場合、前に生成されたシングルトンコンテンツ文法２１４が利用されても良い。
【００２７】
例えば、空コンテンツモデルを有するＸＳＤコンプレックスタイプを含むフェッチした要素の各々について、対応する文法２１０が生成されても良い。これは、以下のようにＴｙｐｅｅｍｐｔｙにより示される。
【数５】
2017151951.tif 000007
【００２８】
ここで、○の中に＋は、文法連結演算子を表す。さらに、次式は、関連要素について、存在する場合には属性定義から導出される属性文法２１２の一例であり得る。
【数６】
2017151951.tif 000008
【００２９】
さらに、Ｃｏｎｔｅｎｔは、シングルトンコンテンツ文法２１４の一例であり得る。言い換えれば、文法Ｃｏｎｔｅｎｔは、空コンテンツモデルを有する全てのＴｉについて生成されなくても良い。幾つかの実施形態では、文法Ｃｏｎｔｅｎｔは、連結演算の末尾のような自身の不変の所与の位置であっても良い。したがって、例えば、単一のＣｏｎｔｅｎｔ文法は、スキーマの中の空コンテンツモデルを有する複数のＸＳＤコンプレックスタイプと共に使用するために生成されても良い。
【００３０】
シングルトンコンテンツ文法２１４を実装することは、文法を格納するための空間要件を低減できる。したがって、例えば、ＥＸＩ実装に関連する負荷は低減され得る。幾つかの実施形態では、ＥＸＩ実装に関連する負荷は埋め込み型装置の場合に特に低減され得る。
【００３１】
例として、空コンテンツモデルの２つのコンプレックスタイプを有するＸＳＤスキーマは、部分的に、次のように定められる。
<xsd:complexType  name="ec１"/>
<xsd:complexType  name="ec２"/>
さらに、これら２つの要素の文法生成は、以下のように定義され得る。
<Grammar><!−−ec１−−>
<Productions>
<EndElement/>
<Productions>
<ContentGrammar>１</ContentGrammar>
<EmptyGrammar>…</EmptyGrammar>
</Grammar>
<Grammar><!−−ec２−−>
<Productions>
<EndElement/>
<Productions>
<ContentGrammar>１</ContentGrammar>
<EmptyGrammar>…</EmptyGrammar>
</Grammar>
これら２つの要素の文法生成のために利用される空間は、２４７バイトであっても良い。比較すると、これら２つの要素の従来の文法生成のために利用される空間は、３６８バイトであっても良い。
【００３２】
したがって、例えば、これら２つの要素の文法空間の削減は、これら２つの要素を表すために使用され得る文法空間と比べて約３２．８％であり得る。言い換えれば、幾つかの実施形態では、空コンテンツモデルを有するコンプレックスタイプを含む要素を表すために利用される文法空間の量は、従来の方法と比べて約３分の１だけ削減できる。
【００３３】
シンプルコンテンツタイプを有するフェッチした要素に関して、例えば、要素Ｂは、シンプルコンテンツタイプを有するコンプレックスタイプを有しても良く、以下のように定めることができる。
<xsd:complexType  name=”B”>
<xsd:simpleContent>
<xsd:extension  base=”xsd:string”>
<xsd:attribute  name=”a”  type=”xsd:string”/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
ブロック２０８において、文法２１６は、シンプルコンテンツタイプを有するフェッチした要素について生成されても良い。文法２１６は、フェッチした要素の属性定義から導出される属性文法２１８と、シングルトンコンテンツ文法２２０と、を有しても良い。シンプルコンテンツタイプを有する要素のシングルトンコンテンツ文法２２０は、本願明細書ではシングルトンシンプルコンテンツ文法として記載され得る。シングルトンコンテンツ文法２２０は、キャラクタイベント２１９及び要素終了イベント２２１を有するオートマンの形式を取り得る。方法２００がブロック２０８に到達したとき、シングルトンコンテンツ文法２２０が存在しない場合、シングルトンコンテンツ文法２２０が生成されても良い。シングルトンコンテンツ文法２２０が存在しない場合、前に生成されたシングルトンコンテンツ文法２２０が利用されても良い。
【００３４】
例えば、シンプルコンテンツを有するＸＳＤコンプレックスタイプを含むフェッチした要素の各々について、対応する文法２１６が生成されても良い。これは、以下のようにＴｙｐｅｓｉｍｐｌｅにより示される。
【数７】
2017151951.tif 000009
【００３５】
ここで、○の中に＋は、文法連結演算子を表す。さらに、次式は、フェッチした要素について、存在する場合には属性定義から導出される属性文法２１８の一例であり得る。
【数８】
2017151951.tif 000010
【００３６】
さらに、Ｃｏｎｔｅｎｔは、シングルトンコンテンツ文法２２０の一例であり得る。言い換えれば、文法Ｃｏｎｔｅｎｔは、シンプルコンテンツを有する全てのＴｉについて生成されなくても良い。幾つかの実施形態では、文法Ｃｏｎｔｅｎｔは、連結演算の末尾のような自身の不変の所与の位置であっても良い。したがって、例えば、単一のＣｏｎｔｅｎｔ文法は、スキーマの中のシンプルコンテンツを有する複数のＸＳＤコンプレックスタイプと共に使用するために生成されても良い。
【００３７】
シングルトンコンテンツ文法２２０を実装することは、文法を格納するための空間要件を低減できる。したがって、例えば、ＥＸＩ実装に関連する負荷は低減され得る。幾つかの実施形態では、ＥＸＩ実装に関連する負荷は埋め込み型装置の場合に特に低減され得る。
【００３８】
例として、コンプレックスタイプのシンプルコンテンツを有するＸＳＤスキーマは、部分的に、次のように定められる。
<xsd:complexType  name="sc１">
<xsd:simpleContent>
<xsd:extension  base="xsd:string">
<xsd:attribute  name="a"  type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexTypename="sc２">
<xsd:simpleContent>
<xsd:extension  base="xsd:string">
<xsd:attribute  name="b"  type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
さらに、この要素の文法生成は、以下のように定義され得る。
<!−−sc１−−>
<Grammar>
<Productions>
<Attribute>０</Attribute>
<Grammar>１３</Grammar>
<CharactersTyped/>
<  Grammar>１</Grammar>
<Productions>
<ContentGrammar>３</ContentGrammar>
<EmptyGrammar>９</EmptyGrammar>
</Grammar>
<Grammar><!−−１３−−>
<Productions>
<CharactersTyped/>
<Grammar>１</Grammar>
<Productions>
<ContentGrammar>３</ContentGrammar>
</Grammar>
<!−−sc２−−>
<Grammar>
<Productions>
<Attribute>０</Attribute>
<Grammar>１３</Grammar>
<CharactersTyped/>
<Grammar>１</Grammar>
<Productions>
<ContentGrammar>３</ContentGrammar>
<EmptyGrammar>９</EmptyGrammar>
</Grammar>
<Grammar><!−−１３−−>
<Productions>
<CharactersTyped/>
<Grammar>１</Grammar>
<Productions>
<ContentGrammar>３</ContentGrammar>
</Grammar>
これらの要素の文法生成のために利用される空間は、５５４バイトであり得る。比較すると、この要素の従来の文法生成において利用される空間は、９２０バイトであり得る。
【００３９】
したがって、例えば、この要素の文法空間の削減は、この要素を表すために使用され得る文法空間と比べて約３９．７％であり得る。言い換えれば、幾つかの実施形態では、空コンテンツモデルを有するコンプレックスタイプを含む要素を表すために利用される文法空間の量は、従来の方法と比べて約１０分の４だけ削減できる。
【００４０】
本願明細書に開示した上述の及び他の処理及び方法について、処理の中で実行される機能は、異なる順序で実施されても良い。さらに、概略の工程は単に例として提供され、幾つかの工程は、開示の実施形態の本質から逸脱することなく、任意であり、より少ない工程に組み合わされ、又は追加工程に拡張されても良い。
【００４１】
図３は、図１のシステムにより実施され得る別の例示的な方法３００のフローチャートである。方法３００は、それぞれコンプレックスタイプ定義を有する要素を含むＸＳＤを受信することにより、ブロック３０２で開始し得る。
【００４２】
方法３００は、要素の間で共有されるべきシングルトンコンテンツ文法を生成することにより、ブロック３０４において継続しても良い。幾つかの実施形態では、要素は、空コンテンツモデルを更に有しても良く、シングルトンコンテンツ文法は、シングルトン空コンテンツ文法を有しても良い。シングルトン空コンテンツ文法は、要素終了イベントを有しても良い。幾つかの実施形態では、要素は、シンプルタイプ定義を更に有しても良く、シングルトンコンテンツ文法は、シングルトンシンプルコンテンツ文法を有しても良い。シングルトン空コンテンツ文法は、キャラクタイベント及び要素終了イベントを有しても良い。
【００４３】
方法３００は、ＸＳＤに基づき文法を生成することにより、ブロック３０６において継続しても良い。文法は、ＥＸＩストリームへの及びＥＸＩストリームからのＸＳＤに基づくＸＭＬ文書の符号化及び復号化に関連付けられても良い。文法の各々は、１つの要素に対応しても良く、文法の各々は、シングルトンコンテンツ文法を有しても良い。幾つかの実施形態では、文法の各々は、文法に対応する要素に関連する属性定義から導出される属性文法を更に有しても良い。
【００４４】
本願明細書に開示した上述の及び他の処理及び方法について、処理の中で実行される機能は、異なる順序で実施されても良い。さらに、概略の工程は単に例として提供され、幾つかの工程は、開示の実施形態の本質から逸脱することなく、任意であり、より少ない工程に組み合わされ、又は追加工程に拡張されても良い。例えば、幾つかの実施形態では、方法３００は、ＸＳＤに基づきＸＭＬ文書から第１のＥＸＩストリームを符号化するステップを更に有しても良い。
【００４５】
図４は、図１のシステムにより実施され得る別の例示的な方法４００のフローチャートである。方法４００は、ＸＳＤコンプレックスタイプを有する要素をフェッチすることにより、ブロック４０２で開始し得る。要素は、空コンテンツモデルを更に有する要素を有しても良い。要素は、シンプルタイプ定義を更に有する要素も有しても良い。
【００４６】
方法４００は、ＸＳＤコンプレックスタイプ及び空コンテンツモデルを有する第１の要素をフェッチすることに応答して、シングルトン空コンテンツ文法を生成することにより、ブロック４０４において継続しても良い。幾つかの実施形態では、シングルトン空コンテンツ文法は、要素終了イベントを有しても良い。
【００４７】
方法４００は、ＸＳＤコンプレックスタイプ及び空コンテンツモデルを有する第２の要素をフェッチすることに応答して、シングルトン空コンテンツ文法を利用することにより、ブロック４０６において継続しても良い。
【００４８】
方法４００は、ＸＳＤコンプレックスタイプ及びシンプルタイプ定義を有する第３の要素をフェッチすることに応答して、シングルトンシンプルコンテンツ文法を生成することにより、ブロック４０８において継続しても良い。幾つかの実施形態では、シングルトンシンプルコンテンツ文法は、キャラクタイベント及び要素終了イベントを有しても良い。
【００４９】
方法４００は、ＸＳＤコンプレックスタイプ及びシンプルタイプ定義を有する第４の要素をフェッチすることに応答して、シングルトンシンプルコンテンツ文法を利用することにより、ブロック４１０において継続しても良い。
【００５０】
本願明細書に開示した上述の及び他の処理及び方法について、処理の中で実行される機能は、異なる順序で実施されても良い。さらに、概略の工程は単に例として提供され、幾つかの工程は、開示の実施形態の本質から逸脱することなく、任意であり、より少ない工程に組み合わされ、又は追加工程に拡張されても良い。
【００５１】
例えば、幾つかの実施形態では、方法４００は、第１の要素に関連する第１の文法を生成するステップを更に有しても良い。第１の文法は、第１の要素に関連する属性定義から導出される属性文法とシングルトン空コンテンツ文法との連結を有しても良い。方法４００は、第２の要素に関連する第２の文法を生成するステップを更に有しても良い。第２の文法は、第２の要素に関連する属性定義から導出される属性文法とシングルトン空コンテンツ文法との連結を有しても良い。方法４００は、第３の要素に関連する第３の文法を生成するステップを更に有しても良い。第３の文法は、第３の要素に関連する属性定義から導出される属性文法とシングルトンシンプルコンテンツ文法との連結を有しても良い。方法４００は、第４の要素に関連する第４の文法を生成するステップを更に有しても良い。第４の文法は、第４の要素に関連する属性定義から導出される属性文法とシングルトンシンプルコンテンツ文法との連結を有しても良い。
【００５２】
本願明細書に記載の実施形態は、特定目的又は汎用目的コンピュータの使用を有しても良い。例えば、図１の正規化装置１０４、図２の方法２００、図３の方法３００、及び／又は図４の方法４００を参照して記載された実施形態は、以下に更に詳述する種々のコンピュータハードウェア又はソフトウェアモジュールを含む特定目的又は汎用目的コンピュータの使用を有しても良い。
【００５３】
本願明細書に記載した実施形態は、コンピュータにより実行可能な命令又はデータ構造を伝える又は格納しているコンピュータ可読媒体を用いて実施され得る。例えば、図２の方法２００、図３の方法３００、及び／又は図４の方法４００を参照して記載されたステップのうちの１又は複数を実行するための命令は、コンピュータ可読媒体に格納されても良い。このようなコンピュータ可読媒体は、汎用又は特定目的コンピュータによりアクセスできる利用可能な媒体であり得る。例として且つ限定ではなく、このようなコンピュータ可読媒体は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read−Only  Memory）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＣＤ−ＲＯＭ（Compact  Disc  Read−Only  Memory）又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、フラッシュメモリ装置（例えば、固体メモリ素子）を含む非一時的コンピュータ可読記憶媒体、又はコンピュータにより実行可能な命令若しくはデータ構造の形式で所望のプログラムコード手段を伝える若しくは格納するために用いられ汎用若しくは特定目的コンピュータによりアクセス可能な他の媒体を有し得る。上述の組合せも、コンピュータ可読媒体の範囲に包含され得る。
【００５４】
コンピュータにより実行可能な命令は、例えば、汎用コンピュータ、特定目的コンピュータ（例えば、１又は複数のプロセッサ）又は特定目的処理装置に特定の機能又は機能グループを実行させる命令及びデータを有しても良い。本発明の主題は構造的特徴及び／又は方法論的動作に特有の言葉で記載されたが、本発明の主題は、特許請求の範囲に定められる上述の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲の実施の例示的形態として開示されたものである。
【００５５】
本願明細書で用いられるように、用語「モジュール」又は「コンポーネント」は、モジュール若しくはコンポーネントの動作を実行するよう構成される特定ハードウェア実装、及び／又はコンピューティングシステムの汎用ハードウェア（例えばコンピュータ可読媒体、処理装置、等）に格納され及び／又はそれらにより実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを表しても良い。したがって、例えば、異なるモジュールが、図２の方法２００、図３の方法３００、及び／又は図４の方法４００の１又は複数のステップを実行しても良い。
【００５６】
例として、受信モジュールは、それぞれ本願明細書に記載のようなコンプレックスタイプ定義を有する複数の要素を含むＸＳＤを受信しても良い。代替又は追加で、文法生成モジュールは、複数の要素の間で共有されるべきシングルトンコンテンツ文法を生成しても良い。代替又は追加で、文法生成モジュールは、ＸＳＤに基づき複数の文法を生成しても良い。複数の文法は、ＥＸＩストリームへの及びＥＸＩストリームからのＸＳＤに基づくＸＭＬ文書の符号化及び復号化に関連付けられても良い。複数の文法の各々は、複数の要素のうちの１つの要素に対応しても良く、複数の文法の各々は、シングルトンコンテンツ文法を有しても良い。代替又は追加もモジュール及び／又はコンポーネントは、本願明細書に記載の他の処理を実行しても良い。
【００５７】
幾つかの実施形態では、本願明細書に記載されたのと異なるコンポーネント、モジュール、エンジン及びサービスは、（例えば、別個のスレッドとして）コンピューティングシステムで実行されるオブジェクト又は処理として実施されても良い。本願明細書に記載のシステム及び方法の幾つかは概して（汎用ハードウェアに格納される及び／又はそれにより実行される）ソフトウェアで実装されるように記載されたが、専用ハードウェアの実装又はソフトウェアと専用ハードウェアの組み合わせの実装も可能であり考えられる。この説明では、「コンピュータエンティティ」は、本願明細書で先に定められたようにコンピューティングシステム、又はコンピューティングシステムで実行されるモジュール若しくはモジュールの組合せであっても良い。
【００５８】
本願明細書に記載された全ての例及び条件文は、教育上の目的で、読者が本発明の原理及び発明者により考案された概念を理解するのを助け、技術を促進させるためであり、これらの特に記載された例及び条件に限定されないものと考えられるべきである。本発明の実施形態が詳細に記載されたが、種々の変更、置換及び修正が本発明の精神及び範囲から逸脱することなく行われうることが理解されるべきである。
【００５９】
以上の実施形態に加え、更に以下の付記を開示する。
（付記１）  それぞれコンプレックスタイプ定義を有する複数の要素を含むＸＳＤ（extensible  markup  language  schema  definition）を受信するステップと、
前記複数の要素の間で共有されるべきシングルトンコンテンツ文法を生成するステップと、
前記ＸＳＤに基づき複数の文法を生成するステップであって、前記複数の文法は、前記ＸＳＤに基づくＸＭＬ（extensible  markup  language）文書のＥＸＩ（efficient  XML  interchange）ストリームへの符号化及びＥＸＩストリームからの復号化に関連付けられ、前記複数の文法の各々は、前記複数の要素のうちの１つの要素に対応し、前記複数の文法の各々は、シングルトンコンテンツ文法を含み、前記ＸＭＬ文書を前記ＥＸＩストリームに符号化し又は前記ＥＸＩストリームから復号化するよう構成される装置が、前記複数の文法の各々が前記シングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするよりも少ないリソースを、前記ＥＸＩストリームの符号化又は復号化にコミットするようにする、ステップと、
を有する方法。
（付記２）  前記ＸＳＤに基づき前記ＸＭＬ文書から第１のＥＸＩストリームを符号化するステップ、を更に有する付記１に記載の方法。
（付記３）  前記複数の文法の各々は、前記文法に対応する前記複数の要素のうちの前記要素に関連する属性定義から導出される属性文法を更に有する、付記１に記載の方法。
（付記４）  前記複数の文法のうちの各々は、前記属性文法と前記シングルトンコンテンツ文法との連結を有する、付記３に記載の方法。
（付記５）  前記複数の要素の各々は、空コンテンツモデルを更に有し、前記シングルトンコンテンツ文法は、シングルトン空コンテンツ文法を有する、付記１に記載の方法。
（付記６）  前記シングルトン空コンテンツ文法は、要素終了イベントを有する、付記５に記載の方法。
（付記７）  前記複数の要素の各々は、シンプルタイプ定義を更に有し、前記シングルトンコンテンツ文法は、シングルトンシンプルコンテンツ文法を有する、付記１に記載の方法。
（付記８）  前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、付記７に記載の方法。
（付記９）  ＸＳＤ（extensible  markup  language  schema  definition）コンプレックスタイプを有する複数の要素をフェッチするステップであって、前記複数の要素は、
空コンテンツモデルを更に有する複数の要素と、
シンプルタイプ定義を更に有する複数の要素と、
を含む、ステップと、
前記ＸＳＤコンプレックスタイプ及び前記空コンテンツモデルを有する第１の要素をフェッチすることに応答して、シングルトン空コンテンツ文法を生成するステップと、
前記ＸＳＤコンプレックスタイプ及び前記空コンテンツモデルを有する第２の要素をフェッチすることに応答して、前記シングルトン空コンテンツ文法を利用するステップと、
前記ＸＳＤコンプレックスタイプ及び前記シンプルタイプ定義を有する第３の要素をフェッチすることに応答して、シングルトンシンプルコンテンツ文法を生成するステップと、
前記ＸＳＤコンプレックスタイプ及び前記シンプルタイプ定義を有する第４の要素をフェッチすることに応答して、前記シングルトンシンプルコンテンツ文法を利用するステップであって、前記ＸＳＤに基づきＸＭＬ（extensible  markup  language）文書をＥＸＩ（efficient  XML  interchange）ストリームに符号化し又はＥＸＩストリームから復号化するよう構成される装置が、前記シングルトン空コンテンツ文法ではなく複数の別個の空コンテンツ文法が生成される並びに前記シングルトンシンプルコンテンツ文法ではなく複数の別個のシンプルコンテンツ文法が生成される場合に前記装置がコミットするより少ないリソースを、前記ＥＸＩストリームの符号化又は復号化のためにコミットするようにする、ステップと、
を有する方法。
（付記１０）  前記シングルトン空コンテンツ文法は、要素終了イベントを有する、付記９に記載の方法。
（付記１１）  前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、付記９に記載の方法。
（付記１２）  前記第１の要素に関連する第１の文法を生成するステップであって、前記第１の文法は、前記第１の要素に関連する属性定義から導出される属性文法と前記シングルトン空コンテンツ文法との連結である、ステップと、
前記第２の要素に関連する第２の文法を生成するステップであって、前記第２の文法は、前記第２の要素に関連する属性定義から導出される属性文法と前記シングルトン空コンテンツ文法との連結である、ステップと、
前記第３の要素に関連する第３の文法を生成するステップであって、前記第３の文法は、前記第３の要素に関連する属性定義から導出される属性文法と前記シングルトンシンプルコンテンツ文法との連結である、ステップと、
前記第４の要素に関連する第４の文法を生成するステップであって、前記第４の文法は、前記第４の要素に関連する属性定義から導出される属性文法と前記シングルトンシンプルコンテンツ文法との連結である、ステップと、
を更に有する付記９に記載の方法。
（付記１３）  非一時的コンピュータ可読媒体であって、工程を実行するためにプロセッサにより実行可能な符号化されたプログラムコードを有し、前記工程は、
それぞれコンプレックスタイプ定義を有する複数の要素を含むＸＳＤ（extensible  markup  language  schema  definition）を受信するステップと、
前記複数の要素の間で共有されるべきシングルトンコンテンツ文法を生成するステップと、
前記ＸＳＤに基づき複数の文法を生成するステップであって、前記複数の文法は、前記ＸＳＤに基づくＸＭＬ（extensible  markup  language）文書のＥＸＩ（efficient  XML  interchange）ストリームへの符号化及びＥＸＩストリームからの復号化に関連付けられ、前記複数の文法の各々は、前記複数の要素のうちの１つの要素に対応し、前記複数の文法の各々は、シングルトンコンテンツ文法を含み、前記ＸＭＬ文書を前記ＥＸＩストリームに符号化し又は前記ＥＸＩストリームから復号化するよう構成される装置が、前記複数の文法の各々が前記シングルトンコンテンツ文法ではなく別個のコンテンツ文法を含む場合に該装置がコミットするよりも少ない前記非一時的コンピュータ可読媒体のリソースを、前記ＥＸＩストリームの符号化又は復号化にコミットするようにする、ステップと、
を有する非一時的コンピュータ可読媒体。
（付記１４）  前記ＸＳＤに基づき前記ＸＭＬ文書から第１のＥＸＩストリームを符号化するステップ、を更に有する付記１３に記載の非一時的コンピュータ可読媒体。
（付記１５）  前記複数の文法の各々は、前記文法に対応する前記複数の要素のうちの前記要素に関連する属性定義から導出される属性文法を更に有する、付記１３に記載の非一時的コンピュータ可読媒体。
（付記１６）  前記複数の文法のうちの各々は、前記属性文法と前記シングルトンコンテンツ文法との連結を有する、付記１５に記載の非一時的コンピュータ可読媒体。
（付記１７）  前記複数の要素の各々は、空コンテンツモデルを更に有し、前記シングルトンコンテンツ文法は、シングルトン空コンテンツ文法を有する、付記１３に記載の非一時的コンピュータ可読媒体。
（付記１８）  前記シングルトン空コンテンツ文法は、要素終了イベントを有する、付記１７に記載の非一時的コンピュータ可読媒体。
（付記１９）  前記複数の要素の各々は、シンプルタイプ定義を更に有し、前記シングルトンコンテンツ文法は、シングルトンシンプルコンテンツ文法を有する、付記１３に記載の非一時的コンピュータ可読媒体。
（付記２０）  前記シングルトンシンプルコンテンツ文法は、キャラクタイベントと要素終了イベントとを有する、付記１９に記載の非一時的コンピュータ可読媒体。
【符号の説明】
【００６０】
１００  システム
１０２  ＸＳＤ
１０３  プロセッサ
１０４  正規化装置
１０５  メモリ
１０６  正規化
１１０  ＸＭＬ文書
１０８  符号化器／復号化器
１１２  ＥＸＩストリーム
【図１】
2017151951.tif 000011
【図２】
2017151951.tif 000012
【図３】
2017151951.tif 000013
【図４】
2017151951.tif 000014