JP2011510372A - データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム) - Google Patents

データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム) Download PDF

Info

Publication number
JP2011510372A
JP2011510372A JP2010541777A JP2010541777A JP2011510372A JP 2011510372 A JP2011510372 A JP 2011510372A JP 2010541777 A JP2010541777 A JP 2010541777A JP 2010541777 A JP2010541777 A JP 2010541777A JP 2011510372 A JP2011510372 A JP 2011510372A
Authority
JP
Japan
Prior art keywords
data structure
schema
expression
elements
path
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.)
Granted
Application number
JP2010541777A
Other languages
English (en)
Other versions
JP5385919B2 (ja
Inventor
コールマン、アンドリュー、ジョン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2011510372A publication Critical patent/JP2011510372A/ja
Application granted granted Critical
Publication of JP5385919B2 publication Critical patent/JP5385919B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Abstract

【課題】 データ構造のナビゲーションのための方法およびシステムを提供する。
【解決手段】 この方法は、ランタイム時にデータ構造(101)内で1つまたは複数の要素(110)を見つけるために、データ構造(101)の照会のための入力パス式(104)を受信することを含む。入力パス式(104)は1つまたは複数のパス・ステップを含む。この方法は、データ構造(101)のスキーマ(103)にアクセスすること、および、1つまたは複数の要素(110)に関する情報を取得することを含む。パス式(104)は、パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数のパス・ステップにおけるインデックスを指定するように修正される。一実施形態では、さらにパス式(104)は、任意のワイルドカード文字を拡張して、要素(110)の1つまたは複数の全パスを指定し、2つまたはそれ以上の全パスが存在する場合、それらは合併演算子によって組み合わせられ、修正されたパス式は、ランタイム時にデータ構造(101)を照会(111)するために使用される。
【選択図】 図1

Description

本発明は、データ構造のナビゲーションの分野に関する。具体的に言えば、データ構造を照会するためにパス式(path expression)を使用するナビゲーションに関する。
データ構造は、パス式を使用して照会することができる。たとえばXPath(XML Path Language)の何らかの変形などのパス言語を使用した、XML(拡張マークアップ言語)データの格納および照会が可能な、多くのデータベース・システムが存在する。XPathは、ツリー・データ構造を照会するW3C標準方法である。XPathは、パス式に基づいてXMLデータを照会可能にするものである。本明細書はXPath式および照会について言及するが、他のパス言語で作成された他の形のパス式を含むものと解釈されるべきである。パス式とは、XMLドキュメントの階層構造へのパスを指定する任意の式のことである。パス式によって識別されるXMLドキュメントの一部は、パス式に一致する任意のパスの終わりにあるXMLドキュメントの構造内に常駐する部分である。
XMLドキュメントは、しばしば、ドキュメント・オブジェクト・モデル(DOM)構造またはツリーとして表される。パス照会は、これらの構造をトラバースすることによって評価されるため、照会最適化の要件は、トラバースされるノードの数を効率的に減らすことである。
XMLスキーマは、XMLドキュメントの精密な構造形式を定義する。このスキーマはランタイム時に使用できない可能性がある。
ドキュメントのスキーマにアクセスできないパス・ランタイム・エンジンを考えてみると、解釈済みのDOMツリーのみを照会している。ユーザが自由形式パス式を入力する(すなわちパス・ビルダを介さない)オーサリング・ツールは、スキーマにアクセスできない。
カリフォルニア大学デービス校、コンピュータ・サイエンス学部、April KwongおよびMichael Gertzによる「Schema-basedOptimization of XPath Expression」
ユーザが、XMLドキュメント内の任意の要素を、そこまでの全パスを指定する必要なく、名前で見つけられるようにするために、下位(descendant)(//)パスを使用することが有益であろう。しかしながら、下位軸は、この要素のすべての出現を見つけるためにDOMツリー全体をトラバースする必要があるため、ランタイム・エンジンにとって非常に効率が悪い。
カリフォルニア大学デービス校、コンピュータ・サイエンス学部、April KwongおよびMichaelGertzによる「Schema-based Optimization of XPathExpression」では、スキーマから生成されたパス等価クラスを使用するXPath式の最適化を開示している。この最適化方法は、XPath式におけるワイルドカードの拡張を含む。
本発明の第1の態様によれば、ランタイム時にデータ構造内で1つまたは複数の要素を見つけるために、データ構造の照会のための入力パス式を受信することであって、入力パス式は1つまたは複数のパス・ステップを含む、受信すること、データ構造のスキーマにアクセスし、1つまたは複数の要素に関する情報を取得すること、パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数のパス・ステップにおけるインデックスを指定するようにパス式を修正すること、および、ランタイム時にデータ構造を照会するために修正されたパス式を使用することを含む、データ構造のナビゲーションのための方法が提供される。
本発明の第2の態様によれば、ランタイム時にデータ構造内で1つまたは複数の要素を見つけるために、データ構造の照会のための入力パス式を受信するための手段であって、入力パス式は1つまたは複数のパス・ステップを含む、受信するための手段と、データ構造のスキーマにアクセスし、1つまたは複数の要素に関する情報を取得するための手段と、パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数のパス・ステップにおけるインデックスを指定するようにパス式を修正するための手段と、データ構造を照会するためにランタイム時に使用するように修正されたパス式を出力するための手段とを備える、データ構造のナビゲーションのためのシステムが提供される。
本発明の第3の態様によれば、ランタイム時にデータ構造内で1つまたは複数の要素を見つけるために、データ構造の照会のための入力パス式を受信するステップであって、入力パス式は1つまたは複数のパス・ステップを含む、受信するステップと、データ構造のスキーマにアクセスし、1つまたは複数の要素に関する情報を取得するステップと、パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数のパス・ステップにおけるインデックスを指定するようにパス式を修正するステップと、ランタイム時にデータ構造を照会するために修正されたパス式を使用するステップとを実行するための、コンピュータ読み取り可能プログラム・コード手段を備える、コンピュータ読み取り可能ストレージ・メディア上に格納されたコンピュータ・プログラム製品が提供される。
好ましくは、費用のかかるメモリ・データ構造の基本テーブルおよび構造体の完全スキャンを招くことなく、XMLドキュメントからデータを取り出すための、パス・ベースの照会に関する方法を提供することによって、パス・ベースの照会の処理時間を改善するソリューションが提供される。好ましくは、照会における要素の反復に関する情報を取得および使用するソリューションが提供される。
記載された方法およびシステムは、データ構造内の要素が反復可能であり、反復が存在するかどうか、および反復がどれだけあるかを知ることによって、データ構造のナビゲーションを最適化することが可能である、基礎となるモデルを有するデータ構造の照会を実行可能にするものである。
本発明は、好ましくはオリジナルのパス式を採用し、スキーマを使用して、これをランタイム・エンジンによってより効率的に処理可能な形に変換する。スキーマは、任意の要素をドキュメント・ルートまで遡って追跡するために必要な情報を含むため、要素への全パスを生成することができる。これによって好ましくは、ランタイム・エンジンが、要素を「検索する」のではなく、直接それへとナビゲートすることが可能になる。
次に、本発明の諸実施形態について、添付の図面を参照しながら単なる例として説明する。
本発明の一実施形態に従ったシステムを示す概略図である。 本発明の一実施形態に従ったシステムを示す概略図である。 本発明の一実施形態を内部に実装可能なコンピュータ・システムを示すブロック図である。 本発明の一実施形態に従ったドキュメント構造を示す概略図である。 本発明の一実施形態に従った汎用プロセスを示す流れ図である。 本発明の一実施形態に従ったプロセス例を示す流れ図である。
図1を参照すると、データ構造101内の1つまたは複数の要素110を見つけるために、ランタイム・エンジン102によってデータ構造101が照会される、システム100の概略図が示されている。
データ構造101は、たとえば、ドキュメント・オブジェクト・モデル(DOM)ツリーとして表されるXMLドキュメントとすることができる。他の例では、データ構造101は、同様のツリー・データ構造に解析される非XMLデータである。一実施形態では、データ構造101はメッセージ・ブローカによって照会されるメッセージである。データ構造101は、関連付けられたスキーマ103を有する。
パス式104は、1つまたは複数の要素110を見つけるためにパス式104の出現に関してデータ構造101を検索するランタイム・エンジン102へ、照会111として入力される。
ツールキット105は、ランタイム・エンジン102へと配置される照会111を構築するために使用される。記載されたシステム100では、ツールキット105はパス式104を修正するためにスキーマ103にアクセスする。
照会されているデータ構造101のスキーマ103からの情報を使用して、パス式104は、照会されている要素110への全パスおよび他の情報を含むように修正される。これは、要素110に関する検索よりもむしろ要素110の追跡に役立ち、ランタイム・エンジン102の効率を上げる。またスキーマ103が、照会されている要素110の出現数を示す場合、ランタイム・エンジン102は、その特定の要素110の一定の出現数が見つけられた後、停止することができる。
図2を参照すると、パス式104が入力されたツールキット105の詳細図が示されている。スキーマは、スキーマ情報120を取得するために参照される。修正子121は、照会出力122を提供するために、スキーマ情報120を使用してパス式104を修正する。照会出力122は、データ構造を照会するためにランタイム・エンジンによって使用される。たとえばスキーマを使用して、照会されている要素の出現数を決定することが可能であり、次にこの情報は、照会出力122に述語(predicate)を追加するために、修正子121によって使用される。
図3を参照すると、ツールキット105を実装するための例示的システムは、バス・システム203を介してメモリ要素に直接または間接的に結合された少なくとも1つのプロセッサ201を含む、プログラム・コードの格納あるいは実行またはその両方に好適な、処理システム200を含む。メモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、および、実行中にコードを大容量ストレージから取り出さなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時ストレージを提供するキャッシュ・メモリを、含むことができる。
メモリ要素は、読み取り専用メモリ(ROM)204およびランダム・アクセス・メモリ(RAM)205の形の、システム・メモリ202を含むことができる。基本入力/出力システム(BIOS)206は、ROM204に格納可能である。システム・ソフトウェア207は、オペレーティング・システム・ソフトウェア208を含み、RAM205内に格納可能である。ソフトウェア・アプリケーション210もRAM205内に格納可能である。
システム200は、磁気ハード・ディスク・ドライブなどの1次ストレージ手段211、ならびに、磁気ディスク・ドライブおよび光ディスク・ドライブなどの2次ストレージ手段212も、含むことができる。ドライブおよびそれらの関連付けられたコンピュータ読み取り可能メディアは、コンピュータ実行可能命令、データ構造、プログラム・モジュール、およびシステム200に関する他のデータの、不揮発性ストレージを提供する。ソフトウェア・アプリケーションは、1次および2次のストレージ手段211、212、ならびにシステム・メモリ202上に格納可能である。
コンピューティング・システム200は、ネットワーク・アダプタ216を介した1つまたは複数のリモート・コンピュータへの論理接続を使用する、ネットワーク化環境内で動作可能である。
入力/出力デバイス213は、直接、または介在するI/Oコントローラを介して、システムに結合することができる。ユーザは、キーボード、ポインティング・デバイス、または他の入力デバイス(たとえば、マイクロフォン、ジョイ・スティック、ゲーム・パッド、衛星用アンテナ、スキャナなど)などの入力デバイスを介して、コマンドおよび情報をシステム200に入力することができる。出力デバイスは、スピーカ、プリンタなどを含むことができる。ディスプレイ・デバイス214も、ビデオ・アダプタ215などのインターフェースを介してシステム・バス203に接続される。
パス言語は、データ構造(XMLドキュメントなど)のツリー表現に基づくものであり、ツリー周辺をナビゲートし、様々な基準によってノードを選択する機能を提供する。パス式は、1つのノード、現在の「コンテキスト・ノード」から、他のノードまたはノード・セットへと取得するための、一連のステップとして作成される。このステップは、「/」(すなわちパス)文字によって分離される。各ステップは、軸指定子、ノード・テスト、および述語という、3つのコンポーネントを有する。
最も単純なパスは、
Figure 2011510372

の形を取り、これは、データ構造の最も外側の要素を形成するA要素の子であるB要素の子であるC要素を選択する。
より複雑な式は、デフォルトの「子」軸以外の軸、単純名以外のノード・テスト、または述語を指定することによって、構築可能であり、これは任意のステップ後に角括弧で作成することができる。たとえば、式
Figure 2011510372

は、それ自体が子、または他の、現在のコンテキスト・ノードの子であるA要素のより深い下位(「//」)である、B要素の子(「/」)である、第1の要素(「[1]」)を、その名前(「」)であれば何でも、選択する(この式は「/」で始まっていない)。ドキュメント内にいくつかの好適なB要素が存在する場合、これは実際には、それらのすべての第1の子のセットを戻す。軸指定子は、データ構造のツリー表現内のナビゲーション方向を示す。
いかなる複雑さの式も、述語として角括弧内に指定可能であり、これは、パス式によって先行ノードが一致することになる前に満たされなければならない。ステップ内の述語数には制限が無く、パス内の最終ステップに限定される必要がない。それらは任意の深さまでネストすることができる。述語内に指定されたパスは、現在のステップの(すなわち、直前のノード・テストの)コンテキストで開始され、そのコンテキストを変更しない。すべての述語は、一致の出現に関して満たされなければならない。述語の順序は有意であり、各述語はロケーション・ステップの選択されたノード・セットを順にフィルタリングする。
XMLスキーマは、あるタイプのXMLドキュメントの記述であり、通常は、XML自体によって課せられる基本構文制約に加えて、そのタイプのドキュメントの構造およびコンテンツへの制約に関して表される。XMLスキーマは、比較的高レベルの抽象でのドキュメント・タイプの観点を提供する。スキーマは、非XMLデータ構造に関連して使用することもできる。たとえば、XMLスキーマを使用してドキュメント構造をモデル化した後、XSD(XMLスキーマ定義)注釈を使用することによって、各要素の物理フォーマットを記述する。
XMLスキーマを表すために特別に開発された言語がある。XML仕様固有のドキュメント・タイプ定義(DTD)言語は、比較的機能が制限されているが、スキーマの表現とは別にXMLにおける他の用途も有する、スキーマ言語である。2つの他の非常に普及している、より表現的なXMLスキーマ言語は、XMLスキーマ(W3C)およびRELAX NG(REgular LAnguage for XML Next Generation)である。XMLドキュメントをスキーマと関連付けるためのメカニズムは、スキーマ言語に応じて変化する。関連付けは、XMLドキュメント自体の中のマークアップを介して、または何らかの外部手段を介して、達成可能である。
説明されたシステムでは、パス式は以下のような3通りの可能な方法で修正できる。
1.ワイルドカード「」または下位軸「//」の単純な拡張であり、スキーマは1つの可能な解決のみを示唆する。
2.パス合併演算子(unionoperator)「|」と組み合わされた複数のパスを備える式への、ワイルドカード「」または下位軸「//」の拡張であり、スキーマは複数の可能な解決を示唆する。
3.インデックス([1])の挿入であり、スキーマは要素が1回のみ現れることを示唆する。同様に、[position()<=n]の挿入であり、スキーマは要素がn回出現可能であることを示唆し、ここでn>1である。
例示のために、以下のXMLドキュメントを使用して作業例を示す。
Figure 2011510372
このドキュメントは、以下のXMLスキーマ(XSD)によってモデル化することができる。
Figure 2011510372
スキーマは、各要素の最低および最高の出現を含む、XMLドキュメントの許容構造を記述する。スキーマは、図4に示されたドキュメント構造(スキーマ・ツリー)300を表す。
図4に示されたドキュメント構造300は、「document」のルート・ノード311からの2つの分岐310、320を含む。第1の分岐310は、子ノード314「item」を有することが可能な子ノード313「list」を備える、ルート・ノード311の子ノード312「topic」を含む。「item」のノード314、323は、ゼロまたはそれ以上の出現を有することができる。他のノード311、312、313、322は1つの出現のみを含むことができる。
次に図5を参照すると、流れ図400は、データ構造をナビゲートするための汎用プロセスを示す。パス式は、データ構造内の1つまたは複数の要素を見つけるために入力される(401)。データ構造に関するスキーマにアクセスし(402)、パス式の要素に関する情報が取得される。要素に関する最大出現がスキーマから参照され(403)、出現を制限する必要があれば、述語がパス式に添付される。1つまたは複数の全パス式が取得され(404)、2つまたはそれ以上ある場合は組み合わされる。
パス式は、要素に関する取得された情報を参照しながら修正される。修正されたパス式は、データ構造内の1つまたは複数の要素を見つけるためにランタイム・エンジンへと出力される(405)。
この作業例では、XPath式「//item」が与えられた場合、下位軸「//」を拡張するため、および「最初の1つのみを選択する」述語「[1]」を追加するために、図6の流れ図に示されるような以下のステップが実施される。
1.初期の最適化された式「/item」を作成するために、「/」文字のうちの1つを除去する(501)。
2.「item」という名前の要素を検索する「深さ優先(depth first)」様式で、スキーマ・ツリーをトラバースする(502)。
3.要素が見つかったかどうかを判別し(503)、見つかった場合は続行し、見つからなかった場合、プロセスは終了する(504)。
4.見つかった要素が第1の要素であるかどうかを判別する(505)。第1の要素である場合は続行し、第1の要素でない場合は、合併演算子を使用して以前の式に添付する(506)。
5.「item」要素が見つかった場合、スキーマ内の「maxOccurs」属性に注目する(507)。この属性が「1」(この属性が存在しない場合のデフォルトである)であるかどうかを判別し(508)、「1」である場合は、要素名に述語「[1]」を添付する(510)。「1」より大きいかまたは「未制限」の場合、述語を添付しない(509)。
6.スキーマ・ツリー内の現在の要素の親に進む(511)。
7.親がルート・ノードであるかどうかを判別する(512)。ルート・ノードである場合、別の「item」の検索に進む(502)。
8.親がルート・ノードでない場合、スキーマから名前を抽出し(513)、分離文字「/」によって分離された以前のステップの前にこれを挿入する。
9.ステップ507へと折り返して、必要に応じて要素名に述語を添付し、次の親に進む。「ルート」要素に達するまで続行する。
10.他の「item」要素が見つかった場合、ツリーのこの分岐について他の最適化されたパス式を作成する。これを、合併演算子「|」によって分離された以前の式に添付する(506)。スキーム・ツリー内にそれ以上の「item」の出現が見つからなくなるまで、トラバースを続行する。
以下に、前述のステップに続くような、最適化された式の構築を示す(オリジナルの式「//item」は、各ステップでの変更が下線で示される)。
Figure 2011510372
さらに汎用ケースでは、一般的な原理は、XPath式を1回に1要素ステップずつ進み、ワイルドカード「」があれば要素名に置き換え、下位軸「//」があれば完全修飾されたパスに置き換えることである。複数の要素がワイルドカードに一致する場合、それぞれが順番に考慮される。後続のステップでは、ある特定の一致が有効なパスへと至ることができず、そのような場合、その一致は廃棄される旨を示すことができる。複数の一致が可能な場合、各式は組み合わされ、XPath合併演算子「|」によって分離される。
/topic//item」の式について考えてみる。
1.「スキーマ・カーソル」をスキーマ・ツリーのルートに設定し、「XPathカーソル」をオリジナルXPath式の第1のステップに設定する。
2.スキーマ・ツリーを、スキーマ・カーソル位置から深さ優先でトラバースする。
3.スキーマ・ツリー内のカーソル要素がXPathステップに一致する(ワイルドカードがいずれかの要素に一致する)場合、
a.要素名(ワイルドカードの場合はスキーマ・ツリーから)を最適化されたXPath式に添付する。
b.スキーマ内の「maxOccurs」属性に注目する。この属性が「1」(この属性が存在しない場合のデフォルトである)である場合、要素名に述語「[1]」を添付する。「1」より大きいかまたは「未制限」の場合、述語を添付しない。
c.XPathカーソルがオリジナルXPath式内の最終ステップである場合、反復を停止し、このステージで構築された新しい式を部分リストに追加して、第2ステージからトラバースを続行する。
d.XPathカーソルを、オリジナルXPath式内の次のステップに移動する。次のステップが下位軸「//」によって分離されている場合、
i.以前に記述されたアルゴリズムを使用して、これを拡張する(拡張アルゴリズム内の「ルート」要素を、ここでは「//」の前の要素であるものと定義する)。
ii.拡張の結果、合併演算子「|」によって分離された複数のパスが生じた場合、これまでに最適化された式を複製し、各部分の初めに添付する必要がある。各部分は、このアルゴリズムの剰余に対して別々に扱われなければならない。(たとえば、「/document//item」は、拡張前に「/document[1]//item」を生成することになる。このカーソル位置から「//item」を拡張すると、「/topic[1]/list[1]/item|/index[1]/item」を生成することになる。このステップの後、2つの部分は、/document[1]/topic[1]/list[1]/itemおよび/document[1]/index[1]/itemとなり、各部分は別々に扱われるものとする。)
e.スキーマ・カーソルのそれぞれの子について、次に、スキーマ・カーソルを子に設定する。ステージ3に再帰する。(このステージで、各子は最適化された式における別々の部分を表すことになり、そのほとんどが、おそらくはデッドエンドであり、破棄されることになる。アルゴリズムの終わりで、合併演算子[|]を使用してすべての剰余部分が組み合せられる。)
一致しない場合、
a.アルゴリズムのステージ2以降に構築されたパスのこの部分を破棄する。スキーマ・カーソルおよびXPathカーソルを、以前ステージ2の際にそれらがいた場所に再設定する。ステージ2からトラバースを続行する。
4.合併演算子「|」によって分離された部分リストを組み合わせて、最終式を生成する。
以下に、前述のステップに続くような、最適化された式の構築を示す(オリジナルの式「/topic//item」は、各ステップでの変更が下線で示される)。
Figure 2011510372
「//item」などの式が入力された場合、このいずれかの出現を見つけるために、データ構造全体をトラバースしなければならない。しかしながらこれは、スキーマを参照することによって取得された全パス式「/document/topic/list/item」を指定することによって、ランタイム・エンジンがitemを直接ナビゲートできるような形に変換することができる。
スキーマが、itemが反復しないように指定した場合、各パス・ステップ上に明示的indexを配置し、第1の一致、たとえば「/document[1]/topic[1]/list[1]/item」を見つけた場合、検索を停止できる旨を、ランタイム・エンジンに伝えることができる。「item」は反復要素であるが、その上位(ancestor)要素は反復要素でないことに留意されたい。
データ構造の異なる部分に名前付き要素「item」が現われた場合、それらは合併演算子「|」を使用して組み合わせることができる。たとえば、「/document[1]/topic[1]/list[1]/item|/document[1]/index[1]/item」となる。この最後の式は、所与のスキーマに関するオリジナルの「//item」と等価であるが、そのスキーマにアクセスできないランタイム・エンジンによってより効率的に処理可能な形である。
スキーマは、要素が所与の回数だけ、たとえば2回出現するように指定することが可能である。XPathステップ「/element[2]」は、第1の2つの要素ではなく第2の要素を戻すことになる。正しい結果を得るために、[position()<=2]を添付すべきである。従来のシステムでは、ユーザは、ツリーをナビゲートするためのランタイム・エンジンを望むことを示し、すべての一致要素を戻すために、「/aaa/bbb」を指定する。しかしながら、時折、戻す要素が1つしかない場合があり、XPathパーザ(parser)は、従来、完全なツリーを解析しなければならないため、多くの不必要な処理を実行しなければならない。ユーザは、たとえば第1番目などの、ある数の要素のみを希望する場合があり、これを示すため、照会内に、たとえば「aaa/bbb[1]」などと断定することができる。以前には、パーザは依然として完全なリストに戻すが、その後、ユーザが必要とする数を戻すように、そのセットを絞り込むものであった。
説明されたシステムでは、ツールキットは、照会されている要素の出現数を決定するために使用される、データ構造スキーマにアクセスする。次に、この情報を使用して、各照会に述語が追加される。したがって、2つの「aaa/bbb」要素のみが存在し、ユーザはこうした要素のすべてについて照会していることが判別された場合、最初の2つの要素のみを探した後、解析を停止すべきであることを、パーザに示すように、照会を修正することができる。
説明された方法およびシステムは、ESB(Enterprise Service Bus)、および、メッセージを照会するメッセージ・ブローカの形のランタイム・エンジンを含むXML処理製品で、適用可能である。
この方法は、照会として使用するように修正されたパス式を改善するために、ネットワークを介したクライアントへのサービスとして提供することも可能である。
本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態、または、ハードウェアおよびソフトウェアの両方の要素を含む実施形態の形を取ることができる。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されない、ソフトウェア内に実装される。
本発明は、コンピュータまたは任意の命令実行システムによって、あるいはそれらに関して使用するためのプログラム・コードを提供する、コンピュータ使用可能メディアまたはコンピュータ読み取り可能メディアからのアクセスが可能な、コンピュータ・プログラム製品の形を取ることができる。説明の目的で、コンピュータ使用可能メディアまたはコンピュータ読み取り可能メディアは、命令実行システム、装置、またはデバイスによって、あるいはそれらに関して使用するためのプログラムの含有、格納、通信、伝搬、または移送が可能な、任意の装置とすることができる。
メディアは、電子、磁気、光、電磁、赤外線、または半導体のシステム(あるいは装置またはデバイス)、あるいは伝搬メディアとすることができる。コンピュータ読み取り可能メディアの例には、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、剛性磁気ディスク、および光ディスクが含まれる。光ディスクの現行例には、コンパクト・ディスク読み取り専用メモリ(CD−ROM)、コンパクト・ディスク読み取り/書き込み(CD−R/W)、およびDVDが含まれる。
本発明の範囲を逸脱することなく、前述の内容に対する改良および修正を実行することが可能である。

Claims (19)

  1. ランタイム時にデータ構造(101)内で1つまたは複数の要素(110)を見つけるために、データ構造(101)の照会のための入力パス式(104)を受信するステップであって、前記入力パス式(104)は1つまたは複数のパス・ステップを含む、受信するステップと、
    前記データ構造(101)のスキーマ(103)にアクセスするステップ、および、前記1つまたは複数の要素(110)に関する情報を取得するステップと、
    パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数のパス・ステップにおけるインデックスを指定するように前記入力パス式(104)を修正するステップと、
    ランタイム時に前記データ構造(101)を照会(111)するために前記修正されたパス式を使用するステップと、
    を含む、データ構造(101)のナビゲーションのための方法。
  2. 前記入力パス式(104)が、ワイルドカード文字または下位軸のうちの1つまたは複数を含む、請求項1に記載の方法。
  3. 前記入力パス式(104)を修正するステップが前記要素(110)の1つまたは複数の全パスを指定し、2つまたはそれ以上の全パスが合併演算子によって組み合わせられる、請求項1または2に記載の方法。
  4. 前記パス・ステップのうちの1つまたは複数でインデックスを指定するステップが、前記パス要素名に前記インデックスの述語を添付する、請求項1から3のいずれか一項に記載の方法。
  5. 情報を取得するステップが、前記スキーマ(103)内での属性の最大出現に注目するステップと、これが存在しないかまたは1である場合、1の前記述語を前記パス要素名に添付するステップとを含む、前記請求項のいずれか一項に記載の方法。
  6. 前記スキーマ(103)が、前記データ構造(101)の要素(110)をそのルートまで追跡するための情報を含む、前記請求項のいずれか一項に記載の方法。
  7. 前記入力パス式(104)がXPath式であり、前記データ構造(101)が関連付けられたスキーマ(103)を備えたドキュメント・オブジェクト・モデル構造である、前記請求項のいずれか一項に記載の方法。
  8. ランタイム時にデータ構造(101)内で1つまたは複数の要素(110)を見つけるために、データ構造(101)の照会のための入力パス式(104)を受信するための手段であって、前記入力パス式(104)は1つまたは複数のパス・ステップを含む、受信するための手段と、
    前記データ構造(101)のスキーマ(103)にアクセスし、前記1つまたは複数の要素(110)に関する情報を取得するための手段と、
    パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数の前記パス・ステップにおけるインデックスを指定するように前記入力パス式(104)を修正するための手段と、
    前記データ構造(101)を照会(111)するためにランタイム時に使用するように修正された前記パス式を出力するための手段と、
    を備える、データ構造(101)のナビゲーションのためのシステム。
  9. 前記入力パス式(104)が、ワイルドカード文字または下位軸のうちの1つまたは複数を含む、請求項8に記載のシステム。
  10. 前記入力パス式(104)を修正するための手段が前記要素(110)の1つまたは複数の全パスを指定し、2つまたはそれ以上の全パスが合併演算子によって組み合わせられる、請求項8または9に記載のシステム。
  11. 前記パス・ステップのうちの1つまたは複数でインデックスを指定することが、前記パス要素名に前記インデックスの述語を添付する、請求項8から10のいずれか一項に記載のシステム。
  12. 情報を取得するステップが、前記スキーマ(103)内での属性の最大出現に注目するための手段と、これが存在しないかまたは1である場合、1の前記述語を前記パス要素名に添付するための手段とを含む、請求項8から11のいずれか一項に記載のシステム。
  13. 前記スキーマ(103)が、前記データ構造(101)の要素(110)をそのルートまで追跡するための情報を含む、請求項8から12のいずれか一項に記載のシステム。
  14. 前記入力パス式(104)がXPath式であり、前記データ構造(101)が関連付けられたスキーマ(103)を備えたドキュメント・オブジェクト・モデル構造である、請求項8から13のいずれか一項に記載のシステム。
  15. 前記システムが、ランタイム時に配置されることになる照会を構築するためのツールキット(105)である、請求項8から14のいずれか一項に記載のシステム。
  16. 前記スキーマ(103)へアクセスしないランタイム・エンジン(102)を含み、前記ランタイム・エンジン(102)が、データ構造(101)内で1つまたは複数の要素(110)を見つけるために前記修正されたパス式を使用する、請求項8から15のいずれか一項に記載のシステム。
  17. 前記ランタイム・エンジン(102)がメッセージ・ブローカであり、前記データ構造(101)がメッセージである、請求項16に記載のシステム。
  18. ランタイム時にデータ構造(101)内で1つまたは複数の要素(110)を見つけるために、データ構造(101)の照会のための入力パス式(104)を受信するステップであって、前記入力パス式(104)は1つまたは複数のパス・ステップを含む、受信するステップと、
    前記データ構造(101)のスキーマ(103)にアクセスするステップ、および、前記1つまたは複数の要素(110)に関する情報を取得するステップと、
    パス・ステップ内で見つかった要素の出現数を制限するために、1つまたは複数の前記パス・ステップにおけるインデックスを指定するように前記入力パス式(104)を修正するステップと、
    ランタイム時に前記データ構造(101)を照会(111)するために前記修正されたパス式を使用するステップと、
    を実行するための、コンピュータ読み取り可能プログラム・コード手段を備える、コンピュータ読み取り可能ストレージ・メディア上に格納されたコンピュータ・プログラム。
  19. 前記プログラムがコンピュータ上で実行された場合、請求項1から7のいずれか一項に記載の方法を実行するように適合されたプログラム・コード手段を備える、コンピュータ・プログラム。
JP2010541777A 2008-01-15 2009-01-07 データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム) Expired - Fee Related JP5385919B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP08150284.1 2008-01-15
EP08150284 2008-01-15
PCT/EP2009/050120 WO2009090130A1 (en) 2008-01-15 2009-01-07 Method and system for navigation of a data structure

Publications (2)

Publication Number Publication Date
JP2011510372A true JP2011510372A (ja) 2011-03-31
JP5385919B2 JP5385919B2 (ja) 2014-01-08

Family

ID=40494930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010541777A Expired - Fee Related JP5385919B2 (ja) 2008-01-15 2009-01-07 データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム)

Country Status (6)

Country Link
US (1) US8171040B2 (ja)
EP (1) EP2240875A1 (ja)
JP (1) JP5385919B2 (ja)
KR (1) KR101221306B1 (ja)
CN (1) CN101965565A (ja)
WO (1) WO2009090130A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102033885B (zh) 2009-09-29 2013-10-02 国际商业机器公司 用于XML数据存储库中的XPath执行的方法和系统
US8983990B2 (en) 2010-08-17 2015-03-17 International Business Machines Corporation Enforcing query policies over resource description framework data
US20120072824A1 (en) * 2010-09-20 2012-03-22 Research In Motion Limited Content acquisition documents, methods, and systems
US8566702B2 (en) * 2010-09-20 2013-10-22 Blackberry Limited Methods and systems of outputting content of interest
US10606814B2 (en) * 2017-01-18 2020-03-31 Microsoft Technology Licensing, Llc Computer-aided tracking of physical entities

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034619A (ja) * 1999-07-16 2001-02-09 Fujitsu Ltd Xmlデータの格納/検索方法およびxmlデータ検索システム
US20050055355A1 (en) * 2003-09-05 2005-03-10 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
JP2007310617A (ja) * 2006-05-18 2007-11-29 Nec Corp 構造化文書処理システム、構造化文書処理方法およびプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831655B2 (en) * 2001-10-18 2010-11-09 Bea Systems, Inc. System and method for implementing a service adapter
US7426522B2 (en) * 2003-09-23 2008-09-16 International Business Machines Corporation Object oriented query path expression to relational outer join translator method, system, article of manufacture, and computer program product
US20080059439A1 (en) 2006-08-30 2008-03-06 Lucent Technologies Inc. Query Translation from XPath to SQL in the Presence of Recursive DTDs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034619A (ja) * 1999-07-16 2001-02-09 Fujitsu Ltd Xmlデータの格納/検索方法およびxmlデータ検索システム
US20050055355A1 (en) * 2003-09-05 2005-03-10 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
JP2007310617A (ja) * 2006-05-18 2007-11-29 Nec Corp 構造化文書処理システム、構造化文書処理方法およびプログラム

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
CSNG200100097037; 金政 泰彦 他: 'XML問い合わせ処理システム(xQues)のデータ格納処理' 情報処理学会研究報告 Vol.99,No.61(99-DBS-119-41), 19990723, PP.243-248., 情報処理学会 *
CSNG200500663001; 中尾 伸章 他: '部分圧縮を用いた大規模XMLデータ処理方式の提案' 電子情報通信学会技術研究報告 Vol.104,No.102(DE2004-1), 20040531, PP.1-6., 電子情報通信学会 *
CSNG200501025001; 春日 史郎 他: 'リレーショナルデータベースを用いたXQuery処理システムの実現' 電子情報通信学会研究技術報告 Vol.104,No.177(DE2004-48), 20040707, PP.1-6., 電子情報通信学会 *
CSNG200900289025; 池末 修也 他: 'パスプルーニングと決定性有限オートマトンを用いた大規模かつ高速なXQuery処理システムの実装' DEWS2006論文集 Vol.DEWS2006,No.1C-i6, 20060630, PP.1-7., 電子情報通信学会工学研究専門委員会 *
JPN6013012743; 池末 修也 他: 'パスプルーニングと決定性有限オートマトンを用いた大規模かつ高速なXQuery処理システムの実装' DEWS2006論文集 Vol.DEWS2006,No.1C-i6, 20060630, PP.1-7., 電子情報通信学会工学研究専門委員会 *
JPN6013012744; 中尾 伸章 他: '部分圧縮を用いた大規模XMLデータ処理方式の提案' 電子情報通信学会技術研究報告 Vol.104,No.102(DE2004-1), 20040531, PP.1-6., 電子情報通信学会 *
JPN6013012745; 金政 泰彦 他: 'XML問い合わせ処理システム(xQues)のデータ格納処理' 情報処理学会研究報告 Vol.99,No.61(99-DBS-119-41), 19990723, PP.243-248., 情報処理学会 *
JPN6013012746; 春日 史郎 他: 'リレーショナルデータベースを用いたXQuery処理システムの実現' 電子情報通信学会研究技術報告 Vol.104,No.177(DE2004-48), 20040707, PP.1-6., 電子情報通信学会 *

Also Published As

Publication number Publication date
US8171040B2 (en) 2012-05-01
CN101965565A (zh) 2011-02-02
JP5385919B2 (ja) 2014-01-08
KR101221306B1 (ko) 2013-01-11
WO2009090130A1 (en) 2009-07-23
KR20100107463A (ko) 2010-10-05
EP2240875A1 (en) 2010-10-20
US20090182722A1 (en) 2009-07-16

Similar Documents

Publication Publication Date Title
US8868620B2 (en) Techniques for composing data queries
US9152735B2 (en) Method and apparatus for composing XSL transformations with XML publishing views
JP4189416B2 (ja) 構造化文書管理システム及びプログラム
US20070208769A1 (en) System and method for generating an XPath expression
US20040044659A1 (en) Apparatus and method for searching and retrieving structured, semi-structured and unstructured content
US20020116371A1 (en) System and method for the storage, indexing and retrieval of XML documents using relation databases
US20130138629A1 (en) Index-based evaluation of path-based queries
JP5113764B2 (ja) データベースと電子ドキュメントとの間での階層データの転送および表示
JPH07319917A (ja) 文書データべース管理装置および文書データべースシステム
JP2001147933A (ja) 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム
US20070016605A1 (en) Mechanism for computing structural summaries of XML document collections in a database system
JP2007034827A (ja) 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム
JP5385919B2 (ja) データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム)
US20080306928A1 (en) Method and apparatus for the searching of information resources
US7877400B1 (en) Optimizations of XPaths
JP2008084070A (ja) 構造化文書検索装置およびプログラム
US7805424B2 (en) Querying nested documents embedded in compound XML documents
JP4649339B2 (ja) XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体
Sudarsan et al. Metamodel search: Using XPath to search domain-specific models
Vidra et al. Next Step in Online Querying and Visualization of Word-Formation Networks
JP2009251845A (ja) 検索結果評価装置及び検索結果評価方法
Tian et al. VACXENE: a user-friendly visual synthetic XML generator
JP2002049636A (ja) メタデータ変換装置、メタデータ変換方法および記録媒体
Ullman DBMS</title
JP2001344267A (ja) Xml文書問い合わせ言語処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111017

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131004

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees