JP2014191613A - エンコーダ、エンコード方法及びプログラム - Google Patents

エンコーダ、エンコード方法及びプログラム Download PDF

Info

Publication number
JP2014191613A
JP2014191613A JP2013066955A JP2013066955A JP2014191613A JP 2014191613 A JP2014191613 A JP 2014191613A JP 2013066955 A JP2013066955 A JP 2013066955A JP 2013066955 A JP2013066955 A JP 2013066955A JP 2014191613 A JP2014191613 A JP 2014191613A
Authority
JP
Japan
Prior art keywords
grammar
exi
uri
partition
xml document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
JP2013066955A
Other languages
English (en)
Inventor
Yusuke Doi
裕介 土井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013066955A priority Critical patent/JP2014191613A/ja
Priority to US14/196,004 priority patent/US20140297692A1/en
Publication of JP2014191613A publication Critical patent/JP2014191613A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/88Mark-up to mark-up conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ワイルドカードで定義された拡張要素に対応する拡張スキーマを反映したEXI文法を作成することで、ワイルドカードで定義された拡張要素を含むXML文書の符号化率向上を実現する。
【解決手段】エンコーダは、XML文書の開始箇所から終了箇所に向かってXML文書の符号化を行うとともに、XML文書の開始箇所と終了箇所との間にある拡張要素を検知する符号化部と、基本スキーマに基づき生成される第1EXI(Efficient XML Interchange)文法と、拡張要素の構造を規定する拡張スキーマに基づき生成される第2EXI文法とを合成した第3EXI文法を生成する合成部とを備え、符号化部は、XML文書のうち、開始箇所から拡張要素を検知するまでは第1EXI文法に基づき符号化し、XML文書のうち、拡張要素を検知後は第3EXI文法に基づき符号化する。
【選択図】図1

Description

本発明の実施形態は、エンコーダ、エンコード方法及びプログラムに関する。
効率的、かつ高速なデータ処理のための規格としてEXI(Efficient XML Interchange)が提案されている。
EXIは、XML スキーマを用いて、XML のコンパクトなバイナリ表現を作成する技術であり、非特許文献1で定義されている。
XMLからEXI形式への変換の一手法として、XMLスキーマから生成されるEXI文法(Schema-Informed Grammar)に基づくものがある。尚、XMLスキーマは、よく知られているように、XML文書の構造を規定するものである。EXI文法は、XMLスキーマから既知の方法で、生成される。
XML 文書は、文書全体の構造が基本スキーマにより規定されている。XML文書は、一つ又は複数の拡張要素を含み、拡張要素毎に、拡張スキーマにより構造が規定されていることがある。例えば、XML文書は、ワイルドカードと呼ばれる記法を用いることで、文書開始時点では参照されていなかった拡張スキーマに定義された拡張要素を動的に参照することがある。
従来、XML文書をEXI形式に変換するためのEXI文法は、拡張スキーマを反映することができなかった。したがって、従来、拡張スキーマに対応するXMLの要素(拡張要素)は、拡張スキーマを反映しないEXI文法に基づき変換されていたため、符号化率が低かった。
John Schneider and Takuki Kamiya. Efficient XML Interchange (EXI) Format 1.0. W3C Recommend(EXI) Format 1.0. W3C Recommendation, March 2011. http://www.w3.org/TR/exi/.
本発明の一側面は、ワイルドカードで定義された拡張要素に対応する拡張スキーマを反映したEXI文法を作成することで、ワイルドカードで定義された拡張要素を含むXML文書の符号化率向上を実現する。
本発明の一側面にかかるエンコーダは、XML文書の開始箇所から前記XML文書の終了箇所に向かって前記XML文書の符号化を行うとともに、前記XML文書の開始箇所と前記XML文書の終了箇所との間にある拡張要素を検知する符号化部と、基本スキーマに基づき生成される第1EXI(Efficient XML Interchange)文法と、と前記拡張要素の構造を規定する拡張スキーマに基づき生成される第2EXI文法とを合成した第3EXI文法を生成する合成部とを備え、前記符号化部は、前記XML文書のうち、前記開始箇所から前記拡張要素を検知するまでは前記第1EXI文法に基づき符号化し、前記XML文書のうち、前記拡張要素を検知後は前記第3EXI文法に基づき符号化することを特徴とする。
本発明の実施形態に係るエンコーダ100を示すブロック図。 エンコーダ100の動作を示すフローチャート。 基本スキーマの例を示す図。 拡張スキーマの第1の例を示す図。 拡張スキーマの第2の例を示す図。 XMLの例を示す図。 図3の基本スキーマから導出したEXI文法の文書文法及び型文法の状態遷移図。 図4の拡張スキーマから導出したEXI文法の文書文法及び型文法の状態遷移図。 図3の基本スキーマに由来するEXI文法と図4に示す拡張スキーマに由来するEXI文法を合成した後の文書文法と型文法を示す図。 図3で定義される基本スキーマから生成されるEXI文法の文字列表初期化定義の例を示す図。 図4で定義される拡張スキーマから生成されるEIX文法の文字列表初期化定義の例を示す図。 図3で定義される基本スキーマから生成されるEXI文法と、図4で定義される拡張スキーマから生成されるEXI文法とを合成した際に生成される文字列表初期化定義の例を示す図。 本発明の実施形態の変形例のエンコーダ200を示すブロック図。
以下、本発明の実施の形態について、図面を参照しながら説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
図1は、本発明の実施形態に係るエンコーダ100を示すブロック図である。
エンコーダ100は、EXI符号化部105とスキーマストレージ102とEXI文法コンパイラ103とEXI文法合成部104と実行文法切り替え部105とを備える。
EXI符号化部101は、XML文書の開始箇所から終了箇所に向かってXML文書の符号化を行う。図6にXML文書の例を示す。図6の例では、XML文書の開始箇所は、1行目の <base である。XML文書の終了箇所は、11行目の /base>である。EXI符号化部101は、XML文書の符号化を行う際、開始箇所から拡張要素の前の部分までは、あらかじめ定められたEXI文法に基づき、符号化を行う。例えば、XML文書のうち、開始箇所から拡張要素を検知する(後述する)前までは、あらかじめ定められたEXI文法に基づき、符号化を行う。ここで、あらかじめ定められたEXI文法は、XML文書全体のスキーマである基本スキーマAに基づき生成される。
EXI符号化部105は、XML文書の開始箇所から終了箇所に向かって符号化を行うのと同時に、XML文書内に、基本スキーマAと異なるスキーマにより定義される拡張要素があるか否かを検知する。EXI符号化部105は、拡張要素を検知すると、EXI文法合成部104に対して、当該検知した拡張要素を定義するスキーマから生成されるEXI文法と基本スキーマAから生成されるEXI文法とを合成するように指示を出す。尚、EXI符号化部101は、拡張要素の検知を、XML文書を基本スキーマと対照しながら解釈し、ワイルドカードに対応する要素を発見することによって行う。具体的には、図6において<payload>要素の中身は、図3の <xs:any> のルールにより解釈され、これがワイルドカードに対応する要素であることを検知できる。ここでは、<intKV>要素あるいは<floatKV>要素は、ワイルドカードに対応する要素である。そして、<intKV>要素あるいは<floatKV>要素は、各々 http://example.org/ext あるいは http://example.org/efloat 名前空間で定義されるため、名前空間を手掛かりに拡張要素を参照できる。また、拡張要素に対応するスキーマを、スキーマを特定するスキーマIDを検知することで検知する。EXI符号化部101は、EXI文法合成部104への指示の際、スキーマIDを伝達してもよい。
EXI符号化部105は、拡張要素を検知後、前述した拡張要素を、合成されたEXI文法に基づきEXI符号化を行い、生成したEXI文書を出力する。
EXI符号化部105は、拡張要素のEXI符号化を完了すると、再び、基本スキーマAに基づくXML文書のEXI符号化を再開する。ここで、拡張要素のEXI符号化完了は、例えば、拡張要素の終了タグで検知することができる。図6においては、</intKV>あるいは</floatKV>がこれに対応する。
スキーマストレージ102は、基本スキーマA及び拡張スキーマを記憶する。拡張スキーマは、単数でも良いし複数でも良い。スキーマストレージ102は、拡張スキーマ以外のスキーマも記憶してもよい。スキーマは、あらかじめ記憶しておいてもよいし、XML文書のEXI符号化部101への入力と合わせてスキーマストレージ102に入力されても良い。スキーマストレージ102は、基本スキーマA及び拡張スキーマを、スキーマを特定するスキーマIDと対応付けて記憶してもよい。例えば、スキーマストレージ102が、基本スキーマAと拡張スキーマB〜Dを記憶している場合を考える。この場合、スキーマストレージ102は、スキーマA〜Dと、それぞれのスキーマを特定するスキーマID(A〜D)とを対応付けて記憶する。
EXIコンパイラ104は、スキーマストレージ102に記憶したスキーマを用いて、EXI文法を生成する。尚、EXIコンパイラは、拡張スキーマに対応するEXI文法を生成する場合、EXI符号化部101から、基本スキーマAと、例えば、拡張スキーマBとを合成したEXI文法を生成する指示があった場合に、拡張スキーマBに対応するEXI文法を生成しても良いし、あらかじめ、拡張スキーマBに対応するEXI文法を生成しておいても良い。EXIコンパイラ103は、生成したEXI文法をEXI文法合成部104に渡す。
EXI文法合成部104は、EXI符号化部101から、EXI文法の合成の指示を受けると、基本スキーマAに対応するEXI文法と、拡張要素スキーマに対応するEXI文法との合成を行う。具体的な、合成方法についての詳細は後述する。EXI文法合成部104は、生成したEXI文法を、EXI文法切り替え部105に渡す。
EXI文法切り替え部105は、EXI文法合成部104から、合成したEXI文法を受け取ると、EXI符号化部101に対して、合成したEXI文法に基づき、EXI符号化を行うように指示を出す。
次に、エンコーダ100の動作例を説明する。図2は、エンコーダ100の動作例を示すフローチャートである。なお、これは一例であり、拡張要素内にてさらに拡張要素を許す場合は、同等の処理を再帰的に実施するなどにより実現できる。
XML文書の分割入力を受け付け、S101において、XML文書全体の符号化が完了していない場合(S101 NO)に、S102において、EXI符号化部101は、基本スキーマAに対応するEXI文法により、入力されたXML文書をXMLの開始箇所から終了箇所に向かって順次EXI符号化する。S103において、EXI符号化部101は、入力されたXML文書内に、基本スキーマAと異なるスキーマにより定義される拡張要素があるか否かを検知する。拡張要素の検知は、たとえば、XML文書内に含まれるワイルドカードに対応する要素を発見することで実現できる。拡張要素を検知した場合(S103 YES)、EXI符号化部101が、EXI文法合成部104に、検知した拡張要素に対応するスキーマIDを含む、EXI文法合成指示を行う。EXI合成部104は、EXI文法合成指示に基づき、基本スキーマAに対応するEXI文法と、スキーマIDにより特定される拡張スキーマに対応するEXI文法とを合成する。EXI文法合成部104は、合成したEXI分法をEXI文法切り替え部105に通知し、EXI文法切り替え部105は、EXI符号化部101に、合成したEXI文法でのEXI符号化を指示する。EXI符号化部101は、拡張要素を、合成後のEXI文法に基づき符号化する(S104)。EXI符号化部101は、拡張要素の符号化を完了すると(S105 YES)、基本スキーマに基づくEXI文法に基づくEXI符号化を再開する(S102)。XML文書全体の符号化を完了すると、処理を終了する。
以上の動作により、エンコーダ100は、ワイルドカードで定義された拡張要素に対応する拡張スキーマを反映したEXI文法を作成することで、ワイルドカードで定義された拡張要素を含むXML文書の符号化率向上を実現する。
基本スキーマAに対応するEXI文法と拡張要素のEXI文法とを合成する際に、工夫を入れることで、EXI符号の符号化の際の効率は更に向上できる。以下では、EXI文法の合成時の工夫について説明する。詳細は後述するが、基本スキーマに対応するEXI文法と拡張要素のスキーマに対応するEXI文法との合成後の文法のサイズを小さくする。
尚、以下の説明では、EXI 符号化(エンコード) について記述するが、以下、デコードでも同等である。
(EXI文法の合成について)
以下では、XML 文書のEXI符号化に用いるEXI文法をGeiと表現する。(i は整数である。)ここで、XML文書のEXI符号化開始時点から符号化に利用されるもEXI文法をGe0と表現する。以後、登場する順に、拡張要素の符号化に利用するEXI文法をGe1、Ge2・・・・などと表現する。また、EXI 文書の開始時点で利用する基本スキーマであるXML スキーマを、スキーマA とする。拡張要素に対応するスキーマとしてスキーマB,Cがあるとする。スキーマA、B、C各々に対応するEXI 文法をGA、G、Gとする。
以下では、文書の開始から終了までのEXI文法を説明する。
文書開始時点でのEXI文法は、この文書全体がスキーマA で定義されるものであることから、式1で表せる。
e0 = GA ・・・・・・・・式1) 次に、スキーマB により定義される拡張要素B の開始時点において、EXI文法を切り替える。ここで、実効文法を単純にG に切り替えるのでは、拡張要素B で利用される、スキーマA で定義されている要素の定義が含まれない。したがって、拡張要素Bに対するEXI符号化に用いるEXI文法は、GAとGとを合成したものとなる。拡張要素の符号化に用いるEXI文法をGe1とすると、GA にGを合成したものとして、以下の式2で表記する。
e1 =GA+G・・・・・・・式2)
次に、XML文書内の拡張要素B の終了時点において、EXI文法Ge1から実効文法はGe0に切り替える。
次に、スキーマC による拡張要素C の開始時点において、EXI文法を切り替える。拡張要素Cに対するEXI符号化に用いるEXI文法は、GAとGとを合成したものとなる。拡張要素の符号化に用いるEXI文法をGe2とするとGAとGとを合成したものとして、以下の式3で表記する。
e1 =GA+G・・・・・・・式3)
次に、XML文書内の拡張要素C の終了時点において、EXI文法Ge2から実効文法はGe0に切り替える。
尚、式2と式3では、二つのEXI文法を合成する表記として+と表記したが、この表記は、2つのEXI文法を合成することを示す表記であり、単純な加算を示すものではない。
(EXI文法の定義)
次に、EXI文法の定義を説明する。
EXI文法Ge は、文書文法(Document Grammar):Dと、型文法(Type Grammar):Tと、文字列表(String Table) 初期化定義Iとを備える文法である。EXI文法Geは、以下の式4で表記できる。
e ={D,T,I}・・・・・・・式4)
ここで、文書文法D は、一組の生成文法である。
文字列表初期化定義Iは、EXI により定義されるURI Partition U および、各URI に所属するLocal Name Partition の集合L にわかれる。文字列表初期化定義Iは、以下の式5)で表記できる。
I={U,L}・・・・・・・式5)
以上が、EXI文法Ge の説明である。
(EXI文法の合成時における工夫の説明)
次に、EXI文法の合成時における工夫を説明する。
基本スキーマと拡張要素に対応するスキーマ各々のEXI文法を合成する際に、以下の工夫をすることができる。基本スキーマに由来するEXI 文法をG1、拡張スキーマに由来するEXI文法をG2、合成後の文法をG3とする。また、合成後のEXI文法G3の文書文法をD3、型文法をT3、文字列表(String Table) 初期化定義をI3と表記する。以下に、式6を定義する。
G3=G1+G2={D3,T3,I3}・・・式6)
ここで、+( 加算記号)は便宜上2つの文法の合成することを表記するために用いたものであり、通常の加算とは異なる独自の定義である。
基本スキーマに由来するEXI文法と拡張スキーマに由来するEXI文法の合成における、D3、T3、I3は各々単純に、以下の工夫を行うことで、EXIの符号化における効率向上につながる。
D3、は、拡張スキーマによる拡張要素の文書定義に相当するものである。従って、D3は、拡張要素の文書定義を採用することができる。つまり、D3は、以下の式7で表現できる。
D3=D2・・・・式7)
なお、D3は、D2とD1の要素の和でもよい。
T3は、拡張スキーマにおける型の集合と、基本スキーマにおける型の集合の定義を含める必要がある。従って、T3は、以下の式8で表現できる。つまり、T3は、T1の集合とT2の集合との和集合である。
T3=T1∪T2・・・式8)
尚、前述したように、型文法Tは、型名と、型名に対応する生成文法を持っている。したがって、T1とT2とでは同じ型名を持つ一方で、定義が異なる生成文法を持つ場合もある。この場合、実装のポリシーによって、エラーとしてもよいし、合成後のT3に関して、生成文法の定義としてT2 の定義を採用してもよいし、T1 の定義を採用してもよい。
図7に、図3により定義される基本スキーマから導出した文書文法と型文法を状態遷移図の形で示す。文書文法は Documentからはじまる状態遷移図であり、要素baseの型文法に対応する状態遷移図は、図中右側の base からはじまる状態遷移図である。図8に、図4により定義される拡張スキーマから導出した文書文法と型文法を状態遷移図の形で示す。図9は、図3に由来するEXI文法に、図4に由来する拡張スキーマから導出したEXIを合成した後の文書文法と型文法である。図9は、図8と比べて、文書文法はintKVに置き換えられ、型文法にintKV型が追加されている。つまり、図9の文書文法は、拡張スキーマから導出したEXI文法の文書文法である。また、図9の型文法は、基本スキーマから導出したEXI文法と拡張スキーマから導出したEXI文法各々の型文法の和集合である。文字列表初期化定義Iについては、以下のように合成操作を定義する。
I3=I1+I2={U1,L1}+{U2,L2}={U3,L3}・・・式9)
ここで、Uは先述したように、文字列の順序付き集合となる。U3は、U1とU2との和集合であればなんでも良い。一方で、以下の式10または式11で表す合成操作を実施することで、更なるメモリ実装効率・符号化効率向上を実現できる。
図10に、図3で定義される基本スキーマから生成されるEXI文法の、文字列表初期化定義の例を示す。図11に、図4で定義される拡張スキーマから生成されるEXI文法の文字列表初期化定義の例を示す。図12に、図3で定義されるスキーマから生成される文法に、図4で定義されるスキーマから生成される文法を合成した際に生成される文字列表初期化定義の例を示す。それぞれの文字列表初期化定義には番号が割り付けられ、EXIストリーム中これらの文字列が必要な際は番号で参照される。なお、EXI仕様に定義されているデフォルトのlocal name partitionは簡単のために図示していない(以下同様)。
以上の通り、EXI文法の合成を工夫することで、更なるメモリ実装効率・符号化効率向上を実現できる。
ここで、実際にワイルドカードを含むXML 文書を符号化するためのより詳細な説明をする。
ワイルドカードに対応する拡張要素を符号化する際は、拡張要素に対応する生成規則(例えば、拡張スキーマ)に対応するEXI文法を基本スキーマに対応するEXI文法と合成する必要がある。これは、EXI の仕様で言うところの fidelity option のうち selfContained (SC) と同様の処理となる。selfContained が許可されたXML文書においては、selfContainedに対応する要素を独立性の高い符号化方法で符号化することが可能であり、これを示すための生成規則を文法に追加する(非特許文献1のSection 8.5.4.4.1 参照)。
同様に、合成文法により記述されるEXI 拡張要素に対応する生成規則を、これが許されるEXI文書においては記述することができる。そして、selfContained の処理と同様に、規則から遷移した先のEXI ストリームは、合成文法により符号化・復号することによって、本発明の実施形態の効果を得ることができる。このとき、どの合成文法を選択するかの手掛かりのために、遷移時のEXI 符号にスキーマID(String) を含めてもよい。このスキーマID の解釈は、各々のアプリケーションに任せられる。例えばXMPP の例の場合は、XEP と呼ばれる文書が対応し、これには通番が付与されるため、XEP 番号を利用できる。
また、符号化を行う側がこの拡張スキーマを知っていたとしても、復号側がこのスキーマを知らなかった場合、復号ができない。EXI は性質上、復号できないと読み飛ばすこともできないため、以後の項目が利用できなくなってしまう。一方で、XML は性質上自由な拡張を求めるものであり、例えば通信にEXI を利用する全てのノードで全て同一の拡張スキーマ群を実装することは現実的ではない。そこで、拡張スキーマについては未実装のノードにおいて読み飛ばし処理を実現するために、遷移時のEXI 符号に、拡張要素に対応する部分の符号化長を含めても良い。
なお、EXI においては、String Table と呼ばれる文字列の表を構築することにより、XML 文書中に繰り返し登場する文字列を効率的に符号化できる。具体的には、XMLストリーム中の過去に登場した文字列であれば、その文字列を示す番号により文字列を符号化することができる。
拡張要素の符号化においては、拡張要素の符号化開始時点でString Table を初期化する方法(これは、EXI におけるselfContained と同等) と、String Table を初期化せずに継続利用する方法が考えられる。String Table を継続利用することにより、更なる効率的な符号化が可能になる一方で、符号が文脈依存となる。一方、String Tableを初期化すると、符号が文脈依存とならないという利点がある一方で、継続利用と比べて符号化の効率は低い。したがって、利用方法におうじて、初期化する方法、又は、継続利用する方法を使い分けると良い。例えば、拡張要素を理解しないデコーダ側プロセスが拡張要素を復号せずに、コピーして再度別の受信者に転送する、などといった利用方法をとる場合は、初期化の方法が好ましい。例えばXMPP においては、サーバからクライアントの通信では、拡張要素の符号化においてString Tableを初期化せず再利用することで効率化し、クライアントからサーバへの通信では、String Table を初期化することでサーバから他のサーバ・クライアントへの拡張要素の転送を実現する、といった利用法が良い。本発明の実施形態においては、XML文書中の、拡張要素開始時に、String Table について、初期化をするか継続利用するかを示すフラグを示すこともできる。一方、XML文書中の、拡張要素の文書終了時点にも、拡張要素に含まれる文字列情報により更新されたString Table を継続利用するか、拡張要素の符号化開始時点のString Table を復元するかを示すフラグを追加してもよい。
<変形例>
図13は、本実施形態の変形例を示すエンコーダ200である。エンコーダ200は、エンコーダ100と異なり、EXI文法ストレージ201を備え、スキーマストレージ102とEXI文法コンパイラ103とを備えていない。
エンコーダ200は、基本スキーマに基づくEXI文法と拡張スキーマに基づくEXI文法との入力を受け、EXI文法ストレージ201にEXI文法を記憶しておく。EXI文法ストレージは、スキーマを特定するスキーマIDとEXI文法とを対応付けて記憶してもよい。
以上の説明はエンコード時のものであるが、デコードに対しても同等の処理を逆転させることにより拡張要素を効率的に符号化した符号列を復号できる。具体的には、拡張要素を示す生成規則をストリーム中に発見したら、スキーマID、拡張要素データ長、String Table初期化フラグを読み取り、スキーマIDに対応した文法を読み出し、これを現在の処理文法に合成することで拡張要素を処理する文法を作成する。この合成文法により拡張要素部分の読み出しを行い、拡張要素終了時 (すなわち、拡張要素の開始(SE)に対応する要素終了(EE)イベントが生成されたとき) に文法を元の処理文法に復元することによって、効率的に符号化されたEXI符号の効率的な復号が可能となる。
以上説明した実施形態の効果は、ワイルドカードで定義された拡張要素に対応する拡張スキーマを反映したEXI文法を作成することで、ワイルドカードで定義された拡張要素を含むXML文書の符号化率向上を実現することである。
また、EXI文法の合成の工夫を行うことで、更なるメモリ実装効率・符号化効率向上を実現できる。
また、エンコーダ100は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、EXI符号化部105とスキーマストレージ102とEXI文法コンパイラ103とEXI文法合成部104と実行文法切り替え部105とは、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、EXI符号化部105とスキーマストレージ102とEXI文法コンパイラ103とEXI文法合成部104と実行文法切り替え部105とは、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、スキーマストレージ102は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはCD−R、CD−RW、DVD−RAM、DVD−Rなどの記憶媒体などを適宜利用して実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100、200・・・エンコーダ、101・・・EXI符号化部、102・・・スキーマストレージ、103・・・EXIコンパイラ、104・・・EXI文法合成部、105・・・EXI文法切り替え部105、201・・・EXI文法ストレージ

Claims (13)

  1. XML文書の開始箇所から前記XML文書の終了箇所に向かって前記XML文書の符号化を行うとともに、前記XML文書の開始箇所と前記XML文書の終了箇所との間にある拡張要素を検知する符号化部と、
    基本スキーマに基づき生成される第1EXI(Efficient XML Interchange)文法と、と前記拡張要素の構造を規定する拡張スキーマに基づき生成される第2EXI文法とを合成した第3EXI文法を生成する合成部とを備え、
    前記符号化部は、前記XML文書のうち、前記開始箇所から前記拡張要素を検知するまでは前記第1EXI文法に基づき符号化し、前記XML文書のうち、前記拡張要素を検知後は前記第3EXI文法に基づき符号化することを特徴とするエンコーダ。
  2. 前記第1EXI文法と前記第2EXI文法とを保持する第1記憶部を備えることを特徴とする請求項1記載のエンコーダ。
  3. 前記基本スキーマと、前記拡張スキーマとを保持する第2記憶部と、
    前記基本スキーマに基づき前記第1EXI文法を生成し、前記拡張スキーマに基づき前記第2EXI文法を生成する生成部とを更に備えることを
    特徴とする請求項1、又は2記載のエンコーダ。
  4. 前記符号化部は、前記XML文書に含まれる要素が前記基本スキーマにおけるワイルドカードに対応する要素であることを検知することで、前記拡張要素を検知する請求項1記載のエンコーダ。
  5. 前記第2記憶部は、前記拡張スキーマを含む複数のスキーマを記憶し、
    前記符号化部は、前記拡張要素を検知する際、当該検知した拡張要素を規定する拡張スキーマを特定するスキーマIDを検知し、
    前記合成部は、前記第1EXI文法と、前記記憶部が記憶する複数のスキーマのうち、前記符号化部が検知したスキーマIDにより特定される拡張スキーマに基づき生成された第2EXI文法とに基づき第3EXI文法を生成することを特徴とする
    請求項3記載のエンコーダ。
  6. 前記第1EXI文法は、第1文書文法と、第1型文法と、第1文字列表初期化定義とを備え、
    前記第2EXI文法は、第2文書文法と、第2型文法と、第2文字列表初期化定義とを備え、
    前記合成部は、前記第3EXI文法を生成する際、前記3EXI文法の文書文法を、前記第2文書文法とすることを特徴とする請求項1、又は5記載のエンコーダ。
  7. 前記第1EXI文法は、第1文書文法と、第1型文法と、第1文字列表初期化定義とを備え、
    前記第2EXI文法は、第2文書文法と、第2型文法と、第2文字列表初期化定義とを備え、
    前記合成部は、前記第3EXI文法を合成する際、前記第3EXI文法の型文法を、前記第1型文法と前記第2型文法との和集合とすることを特徴とする請求項1、又は6記載のエンコーダ。
  8. 前記第1EXI文法は、第1文書文法と、第1型文法と、文字列の順序付き集合である第1URI Partitionを含む第1文字列表初期化定義とを備え、
    前記第2EXI文法は、第2文書文法と、第2型文法と、文字列の順序付き集合である第2URI Partitionを含む第2文字列表初期化定義とを備え、
    前記第3文字列表初期化定義は、文字列の順序付き集合である第3URI Partitionを備え、
    前記合成部は、前記第3EXI文法を合成する際、前記第3EXI文法の文字列表初期化定義の第3URI Partionとして、前記第1URI Partitionの文字列の順序つき集合の後に、前記第2URI Partitionの集合のうち前記第1URI Partitionの集合に含まれない元を、前記第2URI Partitionの文字列の順序を保存して結合した集合、又は、前記第2URI Partitionの文字列の順序つき集合の後に、前記第1URI Partitionの集合のうち前記第2URI Partitionの集合に含まれない元を、前記第1URI Partitionの文字列の順序を保存して結合した集合を生成することを特徴とする
    請求項1、又は請求項7記載のエンコーダ。
  9. 前記第1文字列表初期化定義は、更に、前記第1URI Partitionに含まれるURIに属する第1Local Name Partitionを備え、
    前記第2文字列表初期化定義は、更に、前記第2URI Partitionに含まれるURIに属する第2Local Name Partitionを備え、
    前記第3文字列表初期化定義は、更に、前記第3URI Partitionに含まれるURIに属する第3Local Name Partitionを備え、
    前記合成部は、前記第3EXI文法を合成する際、前記第3URI Partitionに含まれるURIに属するLocal Name Partitionとして、前記第3URI Partitionに含まれるURIに対応する第1Local Name Partitionの集合の後に、前記第3URI Partitionに含まれるURIに対応する第2Local Name Partitionの集合のうち、前記第3URI Partitionに含まれるURIに対応する第1Local Name Partitionの集合に含まれない元を、前記第3URI Partitionに含まれるURIに対応する前記第2Local Name Partitionの集合の順序を保存して結合した集合、又は、前記第3URI Partitionに含まれるURIに対応する第2Local Name Partitionの集合の後に、前記第3URI Partitionに含まれるURIに対応する第1Local Name Partitionの集合のうち、前記第3URI Partitionに含まれるURIに対応する第2Local Name Partitionの集合に含まれない元を、前記第3URI Partitionに含まれるURIに対応する前記第1Local Name Partitionの集合の順序を保存して結合した集合を、生成することを特徴とする請求項8記載のエンコーダ。
  10. 前記符号化部は、更に、入力を受けたXML文書に登場した文字列と当該文字列に対応付けた符号化情報とを対応付けたString Tableに基づく符号化を行い、前記XML文書中の、前記拡張要素開始時点で、前記拡張要素の前までに入力を受けたXML文書までに生成されたString Tableを初期化するか継続利用するかを示すフラグを検知することで、String Tableを初期化するか、継続利用するかを制御することを特徴とする請求項1記載のエンコーダ。
  11. 前記符号化部は、更に、前記拡張要素終了時点で、前記拡張要素の内容に基づき更新されたString Tabeを継続利用するか、前記拡張要素開始時点のString tableを復元するかを示すフラグを検知することで、String Tableを継続利用するか、復元するかを制御することを特徴とする請求項10記載エンコーダ。
  12. XML文書の開始箇所から前記XML文書の終了箇所に向かって前記XML文書の符号化を行うとともに、前記XML文書の開始箇所と前記XML文書の終了箇所との間にある拡張要素を検知する符号化機能と、
    基本スキーマに基づき生成される第1EXI(Efficient XML Interchange)文法と、と前記拡張要素の構造を規定する拡張スキーマに基づき生成される第2EXI文法とを合成した第3EXI文法を生成する合成機能とを備え、
    前記符号化機能は、前記XML文書のうち、前記開始箇所から前記拡張要素を検知するまでは前記第1EXI文法に基づき符号化し、前記XML文書のうち、前記拡張要素を検知後は前記第3EXI文法に基づき符号化することを特徴とするプログラム。
  13. XML文書の開始箇所から前記XML文書の終了箇所に向かって前記XML文書の符号化を行うとともに、前記XML文書の開始箇所と前記XML文書の終了箇所との間にある拡張要素を検知する符号化ステップと、
    基本スキーマに基づき生成される第1EXI(Efficient XML Interchange)文法と、と前記拡張要素の構造を規定する拡張スキーマに基づき生成される第2EXI文法とを合成した第3EXI文法を生成する合成ステップとを備え、
    前記符号化ステップは、前記XML文書のうち、前記開始箇所から前記拡張要素を検知するまでは前記第1EXI文法に基づき符号化し、前記XML文書のうち、前記拡張要素を検知後は前記第3EXI文法に基づき符号化することを特徴とするエンコード方法。
JP2013066955A 2013-03-27 2013-03-27 エンコーダ、エンコード方法及びプログラム Abandoned JP2014191613A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013066955A JP2014191613A (ja) 2013-03-27 2013-03-27 エンコーダ、エンコード方法及びプログラム
US14/196,004 US20140297692A1 (en) 2013-03-27 2014-03-04 Encoder, encoding method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013066955A JP2014191613A (ja) 2013-03-27 2013-03-27 エンコーダ、エンコード方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2014191613A true JP2014191613A (ja) 2014-10-06

Family

ID=51621890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013066955A Abandoned JP2014191613A (ja) 2013-03-27 2013-03-27 エンコーダ、エンコード方法及びプログラム

Country Status (2)

Country Link
US (1) US20140297692A1 (ja)
JP (1) JP2014191613A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128912B2 (en) * 2012-07-20 2015-09-08 Fujitsu Limited Efficient XML interchange schema document encoding
US10019418B2 (en) * 2012-07-20 2018-07-10 Fujitsu Limited Efficient XML interchange profile stream decoding
EP3227792A1 (de) * 2015-01-26 2017-10-11 Siemens Aktiengesellschaft Verfahren zur umsetzung eines binären datenstroms
US10311137B2 (en) * 2015-03-05 2019-06-04 Fujitsu Limited Grammar generation for augmented datatypes for efficient extensible markup language interchange
US10282400B2 (en) * 2015-03-05 2019-05-07 Fujitsu Limited Grammar generation for simple datatypes
US11909707B2 (en) * 2022-04-15 2024-02-20 Red Hat, Inc. Message schema migration in messaging systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850309B2 (en) * 2008-03-27 2014-09-30 Canon Kabushiki Kaisha Optimized methods and devices for the analysis, processing and evaluation of expressions of the XPath type on data of the binary XML type
FR2936623B1 (fr) * 2008-09-30 2011-03-04 Canon Kk Procede de codage d'un document structure et de decodage, dispositifs correspondants

Also Published As

Publication number Publication date
US20140297692A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
JP2014191613A (ja) エンコーダ、エンコード方法及びプログラム
RU2419846C2 (ru) Кодирование данных языка разметки
US8949207B2 (en) Method and apparatus for decoding encoded structured data from a bit-stream
CA2578190C (en) Device and method for generating a coded multi-channel signal and device and method for decoding a coded multi-channel signal
CN103677952A (zh) 编解码器生成装置及方法
JP2012203819A (ja) エンコーダコンパイラ、プログラムおよび通信機器
JP2016085731A (ja) Jsonドキュメントを表すexiドキュメントを符号化する方法及びコンピュータ可読媒体
JP5166565B2 (ja) Exiエンコーダおよびプログラム
JP2013089183A (ja) Exiデコーダおよびプログラム
JP5325921B2 (ja) デコーダコンパイラ、プログラムおよび通信機器
CN109076250A (zh) 交互式音频元数据处置
Riedel et al. A model driven internet of things
JP2012098893A (ja) 圧縮命令処理装置及び圧縮命令生成装置
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
JP5881157B2 (ja) 情報処理装置、およびプログラム
JP2014086048A (ja) 検証装置、検査方法およびプログラム
JP2011154495A (ja) 文字コード変換装置、文字コード変換方法、および文字コード変換プログラム
JP2003150377A (ja) 画面出力モジュール開発システム、画面出力モジュール開発方法及びプログラム並びに記録媒体
JP5966801B2 (ja) 言語変換装置、プログラム
JP6000026B2 (ja) 印刷物を作成する方法
JP2009080681A (ja) プログラム構造解析方法及び装置
Moore Get stuffed: Tightly packed abstract protocols in Scheme
CN107209755A (zh) 用于转换二进制数据流的方法
KR100931636B1 (ko) 모바일 플랫폼에서의 BiM 복호기에 스키마 정보를입력하는 방법
KR100857708B1 (ko) 휴대용 단말기의 문서 생성 장치 및 방법

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20150216

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151006

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20160425