JP2023510104A - 階層データ - Google Patents

階層データ Download PDF

Info

Publication number
JP2023510104A
JP2023510104A JP2022537263A JP2022537263A JP2023510104A JP 2023510104 A JP2023510104 A JP 2023510104A JP 2022537263 A JP2022537263 A JP 2022537263A JP 2022537263 A JP2022537263 A JP 2022537263A JP 2023510104 A JP2023510104 A JP 2023510104A
Authority
JP
Japan
Prior art keywords
ast
query
parent
parent node
computer program
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
JP2022537263A
Other languages
English (en)
Other versions
JP7546674B2 (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 JP2023510104A publication Critical patent/JP2023510104A/ja
Application granted granted Critical
Publication of JP7546674B2 publication Critical patent/JP7546674B2/ja
Active 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2448Query languages for particular applications; for extensibility, e.g. user defined types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Separation By Low-Temperature Treatments (AREA)
  • Debugging And Monitoring (AREA)
  • Circuits Of Receivers In General (AREA)

Abstract

関連付けられた抽象構文木を有するクエリを使用して処理するために構成された階層データにおける祖先オブジェクトを識別するための、コンピュータ実装方法、システムおよびコンピュータ・プログラム製品を提供する。抽象構文木は、クエリの親ノードを識別するように構成された親識別子を含む増強した抽象構文木を生成するように処理可能である。このようにして、データを事前構文解析する必要をなくすことができる。その代わりに、クエリの親ノードの識別情報がクエリの抽象構文木に符号化可能である。

Description

本発明の実施形態は、一般には階層データに関し、より具体的には、階層データにおける祖先オブジェクトを識別するための着想に関する。本発明の実施形態は、クエリ言語によるクエリを使用する階層データの処理のための着想にも関する。このような着想はコンピュータ実装可能である。
また、本発明の実施形態は、システムのプロセッサ、またはネットワークの複数のプロセッサがそのような方法を実施することができるようにする、コンピュータ可読プログラム・コードを含むコンピュータ・プログラム製品にも関する。
さらに、本発明の実施形態は、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するためのシステムにも関する。本発明の実施形態は、さらに、クエリ言語によるクエリを使用する階層データの処理のためのシステムに関する。
XPath(拡張マークアップ言語(XML)クエリ言語)などの構造化データ・クエリ言語は、ユーザがデータ構造内の任意の他の要素の「親」要素を見つけることができるようにする構文を含む。これは、入力データ(たとえばXPathを使用する場合のXML)が、構文解析された入力構造における完全相互接続された関係情報を含むように特別に構文解析されていることになるために可能である。したがって、親要素が要求される場合、クエリ・エンジンは構文解析された構造を単純に走査するだけで済む。
上記の手法は、データが関係情報を含むように事前処理されていることに依拠する。入力データの事前処理は、クエリ評価に追加のCPUオーバーヘッドを加える。また、追加の関係メタデータを有するデータのコピーの作成は、きわめてより多くのメモリを消費し、クエリの呼出しのたびに行う必要がある。
関係情報、たとえば、JSON(JavaScript(R)オブジェクト表記)データをネイティブに表現するJavaScript(R)オブジェクト構造を含めるようにデータが修正されない場合、(関係情報が利用可能でないため)クエリ・エンジンはデータ構造内の任意のデータの「親」を識別することができない。
本発明の実施形態は、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別する方法を提供することを目的とする。
本発明の実施形態は、クエリ言語によるクエリを使用する階層データの処理方法であって、クエリは関連付けられた抽象構文木ASTを有する方法を提供することも目的とする。
本発明の実施形態は、処理ユニットによって実行されると提案の方法を実施するためのコンピュータ・プログラム・コードを含むコンピュータ・プログラム製品を提供することをさらに目的とする。本発明の実施形態は、このコンピュータ・プログラム・コードを実行するようになされた処理システムを提供することも目的とする。
本発明の実施形態は、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先データを識別するためのシステムを提供することをさらに目的とする。また、本発明の実施形態は、クエリ言語によるクエリを使用する階層データを処理するためのシステムを提供することを目的とする。
本発明の一実施形態によると、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するコンピュータ実装方法であって、クエリが関連付けられた抽象構文木ASTを有する方法が提供される。この方法は、クエリに関連するASTの親ノードを判定するために、クエリに関連付けられたASTを処理することを含む。この方法は、増強したASTを生成するために、判定された親ノードを識別するように構成された親識別子によってASTを増強することとも含む。
提案の着想は、階層情報(たとえば親関係情報)がデータ自体に符号化される必要なしに、階層データ構造内の任意のデータ項目の親または任意のより上位の祖先を判定するためのクエリ言語を提供することができる。それどころか、実施形態は、クエリ言語自体の解析木が後処理され、適切な情報で増強されることを提案する。
したがって、提案の実施形態は、クエリのASTの処理がクエリ・コンパイルの一部として実施可能であり、したがって一度行われるだけでよく、一方、コンパイルされたクエリの評価は何度も行うことができるという利点を提供することができる。実施形態は、クエリの処理がデータ・サイズによって影響されないという利点も有することができる。
実施形態は、クエリに関連付けられたASTをクエリの親ノードを識別する情報で増強することによって、入力データを事前構文解析する必要をなくすことができる。言い換えると、実施形態は、1つまたは複数の親オブジェクトの識別情報をクエリ言語のASTに符号化することによって、関係情報を含めるために入力データを事前処理する必要を軽減することができる。
実施形態によっては、クエリに関連するASTの親ノードを判定するためのクエリに関連付けられたASTの処理は、クエリの親ノードを表すASTのノードを判定するためにASTを走査することを含み得る。このようにして、計算効率の高い方式で親ノードを識別するためにASTのパスをたどる単純なプロセスを採用することができる。
親識別子は、親ノードへの参照を保存するようクエリ・プロセッサに指示するように構成可能である。このようにして、一実施形態は、後で祖先が実際に要求されたときにクエリで利用することができるように、要求された親への参照を適切な記憶機構に保存するようクエリ・プロセッサに指示するように構成されてもよい。
一実施形態では、増強したASTを生成するためにASTを判定済みの親ノードを識別するように構成された親識別子で増強することは、ASTの親ノードに祖先属性を付加することを含んでもよい。(すべての値がその親オブジェクトへの隠れ後方参照を記憶する必要があるため)高い計算コストまたは記憶コストあるいはその両方を生じさせる可能性がある関係情報でデータを増強するのではなく、実施形態は、該当部分にメタデータを付加するためにASTを前処理することができる。
たとえば、ASTの親ノードに祖先属性を付加することは、祖先属性の値を所定の値に設定することを含んでもよい。たとえば、所定の値はカウンタ値に基づいてもよく、カウンタ値は識別される親ノードごとにインクリメントされる。カウンタ値の使用は、たとえば、多層祖先を有する階層内の対応する親ノードを識別する単純なカウント方法をサポートしてもよい。
実施形態によっては、クエリを構文解析することによってASTを生成する先行ステップをさらに含み得る。したがって、実施形態はASTを生成することを含んでもよく、他の実施形態は既存のAST(たとえば別個のシステム/方法によって事前に生成されたAST)を処理するように構成されてもよいことが理解される。
提案の実施形態は、増強したASTを記憶することと、記憶された増強したASTと階層データを関連付けることとをさらに含み得る。このようにして、実施形態は、後でクエリが(場合によっては多数回)評価されるときに利用可能なクエリ資源を提供するように構成可能である。したがって、クエリは提案の着想によれば1回だけ処理されるだけで済むが、そのクエリは多数回評価可能である。
階層データはJSONデータを含んでもよく、その場合、クエリ言語はJSONataクエリ言語(JSONクエリおよび変換言語)であってもよい。したがって、実施形態は従来の言語およびオブジェクト構造とともに採用可能である。
本発明の別の実施形態によると、クエリが、関連付けられた抽象構文木ASTを有する、クエリ言語によるクエリを使用する階層データを処理するコンピュータ実装方法が提供される。この方法は、提案の一実施形態により、階層データにおける祖先オブジェクトを識別することを含む。この方法は、次に、階層データと対照して増強したASTを処理することによってクエリを評価することを含み得る。
本発明の別の実施形態によると、コンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、プログラム命令が実現されたコンピュータ可読記憶媒体を含み、プログラム命令は、処理ユニットに提案の一実施形態による方法を行わせるように処理ユニットによって実行可能である。
本発明の別の実施形態によると、少なくとも1つのプロセッサと、一実施形態によるコンピュータ・プログラム製品とを含むコンピュータ・システムが提供される。少なくとも1つのプロセッサは、前記コンピュータ・プログラム製品のコンピュータ・プログラム・コードを実行するようになされる。
本発明の別の実施形態によると、クエリが関連付けられたASTを有する、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するためのシステムが提供される。システムは、クエリに関連するASTの親ノードを判定するためにクエリに関連付けられたASTを処理するように構成された処理ユニットを含む。システムは、増強したASTを生成するために、判定された親ノードを識別するように構成された親識別子によってASTを増強するように構成された増強コンポーネントも含む。
本発明の別の実施形態によると、クエリが関連付けられたASTを有する、クエリ言語によるクエリを使用して階層データを処理するためのシステムが提供される。システムは、提案の一実施形態により階層データにおける祖先オブジェクトを識別するためのシステムを含む。システムは、階層データと対照して増強したASTを処理することによってクエリを評価するように構成されたプロセッサ構成も含む。
上記は、以下の本発明の詳細な説明がよりよくわかるようにするために、本発明の1つまたは複数の実施形態の特徴および技術的利点をやや一般的に概説したものである。本発明の特許請求の範囲の主題を形成し得る本発明のその他の特徴および利点については、以下で説明する。
以下の詳細な説明を以下の図面とともに検討すれば、本発明をよりよく理解することができる。
本発明の一実施形態により、例示の実施形態の態様を実装可能な例示の分散システムを示す図である。 本発明の一実施形態による、階層データにおける祖先オブジェクトを識別するための提案のシステムを示す概略図である。 本発明の一実施形態による、階層データにおける祖先オブジェクトを識別するコンピュータ実装方法を示す流れ図である。 本発明の一実施形態による、クエリを使用する階層データの処理のコンピュータ実装方法を示す流れ図である。 本発明の別の実施形態によるシステムを示す図である。
図面は概略図に過ぎず、一律の縮尺では描かれていないことを理解されたい。また、同一または類似の部分を示すために、図面全体を通して同じ参照番号が使用されていることも理解されたい。
本出願の文脈では、本発明の実施形態が方法を構成する場合、そのような方法はコンピュータによる実行のためのプロセスとすることができ、すなわちコンピュータ実装方法とすることができることを理解されたい。したがって、方法の様々なステップは、コンピュータ・プログラムの様々な部分、たとえば1つまたは複数のアルゴリズムの様々な部分を反映し得る。
また、本出願の文脈では、システムは、本発明の方法の1つまたは複数の実施形態を実行するようになされた単一のデバイスまたは分散デバイスの集合であってもよい。たとえば、システムは、パーソナル・コンピュータ(PC)、サーバ、または、本発明の方法の少なくとも1つの実施形態を協調して実行するようにローカル・エリア・ネットワーク、インターネットなどのネットワークを介して接続されたPCまたはサーバあるいはその両方の集合であってもよい。さらに、コンポーネントは1つまたは複数の処理ユニットによって実行される統合フローであってよい。
クエリを使用して処理するために構成された階層データにおける祖先(たとえば親)オブジェクトを識別するための着想が提案される。このような着想は、クエリの親ノードを識別するように構成された親識別子を含む増強したASTを生成するために、クエリに関連付けられたASTを処理することができる。このようにして、データを事前解析する必要を軽減することができる。その代わりに、クエリの親ノードの識別情報がクエリのASTに符号化可能である。
たとえば、データを階層関係に関する情報で増強する(これは、すべての値がその親オブジェクトの隠れ後方参照を記憶しなければならなくなるため計算コストが高いか、または大量のデータ記憶を必要とするか、あるいはその両方の場合がある)のではなく、提案の実施形態は、ASTの該当部分に(クエリの親ノードを識別する)メタデータを付加するようにデータ・クエリのASTを前処理することができる。
「親」と言う場合、クエリにおいて現在参照を有している値を有するプロパティを含む、クエリのオブジェクトを意味するものと解釈されたい。
したがって、実施形態は階層データにおける祖先オブジェクトを見つけるための着想を提供することができる。
図1に、例示の実施形態の態様を実装可能な例示の分散システムの図を示す。分散システム100は、例示の実施形態の態様を実装可能なコンピュータのネットワークを含み得る。分散システム100は、分散データ処理システム100内で互いに接続された様々なデバイスおよびコンピュータ間の通信リンクを提供するために使用される媒体である、少なくとも1つのネットワーク102を含む。ネットワーク102は、有線、無線通信リンクまたは光ファイバ・ケーブルなどの接続を含んでよい。
図の実施例では、第1のサーバ104と第2のサーバ106がストレージ・ユニット108とともにネットワーク102に接続されている。さらに、クライアント110、112および114もネットワーク12に接続されている。クライアント110、112および114は、エッジ・デバイス、たとえばパーソナル・コンピュータ、ネットワーク・コンピュータ、IoTデバイスなどであってもよい。図の実施例では、第1のサーバ104は、ブート・ファイル、オペレーティング・システム・イメージおよびアプリケーションなどのデータをクライアント110、112および114に提供する。クライアント110、112および114は、図の実施例における第1のサーバ104のクライアントである。分散データ処理システム100は、図示されていない追加のサーバ、クライアントおよびその他のデバイスを含んでもよい。
図の実施例では、分散システム100は、ネットワーク102が、互いに通信するために伝送制御プロトコル/インターネット・プロトコル(TCP/IP)のプロトコルのスイートを使用するネットワークとゲートウェイの世界規模の集合を表すインターネットである。インターネットの中核には、データおよびメッセージをルーティングする数千の商用、官営、教育およびその他のコンピュータ・システムからなる、主要ノードまたはホスト・コンピュータ間の高速データ通信回線の基幹回線がある。当然ながら、分散システム100は、たとえばイントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)などの複数の異なる種類のネットワークを含むように実装されてもよい。上述のように、図1は例示を意図しており、本発明の様々な実施形態のアーキテクチャの限定を意図しておらず、したがって図1に示す特定の要素は、本発明の例示の実施形態を実装可能な環境に関する限定とみなされるべきではない。
当業者は、図1のハードウェアは実装形態に応じて異なり得ることがわかるであろう。また、例示の実施形態のプロセスは、本発明の範囲から逸脱することなく、前述のシステム以外のマルチプロセッサ・データ処理システムにも適用可能である。
また、実施形態は、クライアント・コンピューティング・デバイス、サーバ・コンピューティング・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話またはその他の通信デバイス、パーソナル・デジタル・アシスタント(PDA)などを含む複数の異なるデータ処理システムのいずれの形態でもとることができる。一部の例示の実施例では、一実施形態によるシステムは、たとえばオペレーティング・システム・ファイルまたはユーザ生成データあるいはその両方を記憶するための不揮発性メモリを提供するフラッシュ・メモリを備えて構成された携帯型コンピューティング・デバイスであってもよい。したがって、提案の実施形態によるシステムは、基本的に、アーキテクチャの限定なしに任意の知られているデータ処理システムまたは今後開発されるデータ処理システムとすることができる。
上述のように、提案の実施形態は、クエリが関連付けられた抽象構文木ASTを有する、クエリ言語によるクエリを使用する処理のために構成された階層データにおいて祖先オブジェクトを識別するための方法およびシステムを提供する。
さらなる説明として、このようなシステムの提案の一実施形態について、図2を参照しながら説明する。
図2を参照すると、一実施形態による、階層データにおける祖先オブジェクトを識別するための提案システム200の概略図が示されている。階層データはデータベース210(たとえばインターネットを介してアクセス可能なリモート・データ・ストア)に記憶され、クエリ言語によるクエリ215を使用した処理のために構成される。具体的には、この実施例では、階層データはJSON(JavaScript(R)オブジェクト表記)データを含み、クエリ言語はJSONataクエリ言語(JSONクエリおよび変換言語)である。
システム200は、クエリ210を構文解析することによって抽象構文木AST225を生成するように構成されたクエリ・パーサ220を含む。このようにして、システム200は、クエリ210に関連付けられたAST225を生成するように構成される。
システム200は、AST225の親ノードを判定するためにクエリ210に関連付けられたAST225を処理するように構成された処理ユニット230も含む。ここで、処理ユニット230は、クエリ215の親ノードを表すAST225のノードを判定するためにAST225を走査するように構成された走査コンポーネント235を含む。
システム200の増強コンポーネント240が、判定された親ノードを識別する親識別子によってAST225を増強するように構成される。親識別子は、親ノードへの参照を保存するようクエリ・プロセッサに指示するように構成される。この例示の実施形態では、増強コンポーネント240は増強したAST245(図2で「*」によって示されている)を生成する。具体的には、増強コンポーネント240は、AST225の親ノードに祖先属性を付加するように構成された属性エディタ250を含む。属性エディタ250は、祖先属性の値を、この実施例では識別される親ノードごとにインクリメントされるカウント値に基づく所定の値に設定する。
システム200は、(たとえば後でシステム200の入力/出力(I/O)インターフェースを介してアクセス/使用するために)増強したASTを記憶するように構成されたストレージ・コンポーネント260をさらに含む。システム200は、記憶増強したAST245と階層データ210を関連付けるように構成された関連付けコンポーネント270も含む。
さらなる例として、クエリがAccount.Order.Product.!OrderIDという式を有してもよい。
上記のクエリ式は、以下の抽象構文木(AST)として構文解析される。
_path_
Account
Order
Product
! (parent)
OrderID
従来の式評価器は、パスをステップごとにたどり、入力ドキュメントに各ステップを適用する。最初のステップは、入力データにおける「Account」プロパティに関連付けられた値を選択する。次に、次のステップに進み、前のステップの結果を入力(コンテキスト)データとして使用して「Order」プロパティに関連付けられた値を選択する。「親を選択」動作を表す「!」トークンに達するまでこれがステップごとに続く。ここで、入力(コンテキスト)データ(すなわちProductプロパティに関連付けられた値)が「Order」値への後方参照を含まないため、問題が生じることになる。
たとえば計算コストが高くなるそのような関係情報で入力データを増強するのではなく、本発明人らは親ノードを識別するための追加情報(たとえばメタデータ)を付加するためにASTを前処理するという着想を提案する。上記の例では、親演算子「!」に遭遇すると、固有名が付けられたラベルが作成され、1ステップだけカウントバックされ、次に「Product」ステップにそのラベルが付けられる。その結果のこの例の増強したASTは、以下のようになる。
_path_
Account
Order
Product (ancestor #0)
! (parent #0)
OrderID
ここで、#0は生成されたラベルである(番号は「!」の他のオカレンスについてインクリメントされる)。
この場合、クエリ評価器が「Product」ステップを処理するときにまずその入力コンテキスト値(Order値である)への参照をラベル「#0」でキー付けされた適切な記憶機構(すなわちハッシュ・テーブル)に記憶するように、クエリ評価器がこの追加情報を認識するように構成される。クエリ評価器が親「!」ステップを処理するとき、そのステップの結果は前にラベル「#0」と対照して記憶された値となる。
上記の例は単純であり、必ずしも親演算子の現実の必要を表していない可能性があることを理解されたい。より実際的な例は以下の通りであり、各Productについて2つのプロパティ(「Name」と「Order」)を有するオブジェクトを作成する。
Account.Order.Product.{
'Name': ProductName,
'Order': !.OrderID
}
出力「Name」プロパティの値は、入力「Product」(コンテキスト)値の「ProductName」プロパティの値となる。出力「Order」プロパティの値は、その「OrderID」値を得るために現在のProductの親を見つけることに依存する。
提案の着想によると、上記の式について以下の増強したASTが生成される。
_path_
Account
Order
Product (ancestor #0)
_object_ {
‘Name’
_path_
ProductName
Order’
_path_
! (parent #0)
OrderID
}
この例における問題は、親「!」演算子がそのサブパスにおける最初のステップであり、したがって直前のステップにラベル付けするほど単純ではないことである。ASTを処理する関数は再帰的であるため、関数が再帰する(そしてスタックを展開する)とき、最初のステップが依然としてその親を探索している場合、探索はプロパティ「seekingParent:label」をASTにおける包含ノード(この場合はオブジェクト・コンストラクタ)に付加することによって探索がスタックの上方に移動される。このプロパティを包含パスにおけるステップであるノードまで進めた後、「ancestor」プロパティでラベル付けするための前のステップを見つける。
提案の実施形態は、任意のレベルの祖先に対応するように構成されてもよい。たとえば、以下のようなクエリ式を考えることができる。
Account.Order.Product.{
'Name': ProductName,
'Order': !.OrderID,
‘Account’:!.!.AccountID
}
前の段落の式は、Productの祖父を選択するように構成された部分式!.!.AccountIDを含む。「seekingParent」プロパティと「level」カウンタを関連付けることも提案され、このカウンタはカウントするステップバックにごとにデクリメントされるが、そのステップが親「!」演算子である場合にはインクリメントされる。カウンタがゼロに達すると、正しい祖先を見つけたことになる。
上記の説明から、提案の実施形態は階層データ記憶および処理システムにおける拡張機能を提供するように構成可能であることがわかるであろう。このような機能は、クエリの親ノードを識別するための情報を含む増強したASTを生成するようにクエリに関連付けられたASTを前処理するという着想を利用することによって推進可能である。
さらなる説明として、階層データにおける祖先オブジェクトを識別する方法の提案の一実施形態について、図3を参照しながら以下に説明する。
図3を参照すると、クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するコンピュータ実装方法の流れ図が示されている。この実施例では、クエリ言語はXPathクエリ言語である。XPathは、親ノード(および現在のコンテキストノードに先行するその他のノード)を照会する機能を有する。このため、XPathは、XMLドキュメントが、各ノードがその親ノードへのリンクを備えるノードの相互接続木(infoset)を作成するDOMパーサによって構文解析されているものと想定する。
方法は、クエリを構文解析することによってASTを生成するステップ310から開始する。ASTのこのような生成はよく知られており、ステップ310では多くの異なるAST生成プロセスのうちの1つが採用可能である。一例に過ぎないが、クエリのASTは、Prattパーサと呼ばれる、知られているパーサを使用して生成されてもよい。言語の形式文法が与えられるとパーサ・コードを作成するパーサ生成ツールが使用されてもよい。
次に、ステップ320で、クエリに関連するASTの親ノードを判定するために、生成されたASTがクエリに基づいて処理される。具体的には、クエリに関連するASTの親ノードを判定するためのこのような処理は、クエリの親ノードを表すASTのノードを判定するためにASTを走査するステップ325を含む。
ASTは、次にステップ330で親識別子によって増強される。ここで、ASTを親識別子で増強することは、ASTの判定された親ノードに祖先属性を付加するステップ335を含む。これは、祖先属性の値をカウンタ値に基づく値に設定することを含む。カウンタ値は、たとえば識別される親ノードごとにインクリメントされてもよく、これにより複数の判定された親ノードを区別する手段が提供される。このようにして、対応する親ノードへの参照を保存するようにクエリ・プロセッサに指示するために親識別子を使用することができる。
増強したASTは、次にステップ340でデータ記憶コンポーネントに記憶される。そのようなデータ記憶コンポーネントは、ASTを処理し、増強したコンポーネント/システムから(たとえば、インターネットまたは分散通信ネットワークを介して)遠隔に位置していてもよい。最後に、ステップ350で、記憶された増強したASTと階層データとが関連付けられる。
上記に加えて、実施形態は、XPath式を表すASTに適用されてもよい。これにより、XPathプロセッサが、SAXパーサによって構文解析されたXMLドキュメント内の祖先ノードを照会することができるようになり(SAXは、いかなるデータも記憶せずにドキュメントが最初から最後までスキャンされるため、イベントを発行するXMLドキュメントを構文解析するためのより高パフォーマンスのAPIである)、一方、データ自体のための追加の構造情報を記憶する必要がない。このような技術は、XPathにおける他のすべての後ろ向きの軸(ancestor、ancestor-or-self、parent、preceding、preceding-sibling)に適用するように拡張することも可能である。
さらなる説明として、次に、JSONataクエリ言語を例として使用して、提案の方法がどのようにして実装可能であるかを説明する。JSONataは、JSONデータの照会と変換のために設計されているJavaScript(R)ライブラリである。これは、XMLデータのためのXPath構文と性質が類似したJSON構造をナビゲートするためのロケーション・パス構文を有する。以下の例を考えることができる。
入力データ:
{
"Account": {
"Account Name":"Firefly",
"Order": [
{
"OrderID":"order103",
"Product": [
{
"ProductName": "Bowler Hat",
"SKU":"0406654608",
"Price": 34.45,
"Quantity": 2
},
{
"ProductName": "Trilby hat",
"SKU":"0406634348",
"Price": 21.67,
"Quantity": 1
}
]
},
{
"OrderID":"order104",
"Product": [
{
"ProductName": "Bowler Hat",
"SKU":"040657863",
"Price": 34.45,
"Quantity": 4
},
{
"ProductName":"Cloak",
"SKU":"0406654603",
"Price": 107.99,
"Quantity": 1
}
]
}
]
}
}
次に、JSONataクエリ式の一例は次のように考えられる。
Account.Order.Product.{
'Name': ProductName,
'Order': !.OrderID
}
ここで、ドット演算子「.」は、左辺(コンテキスト)に一致する各項目について、右辺に一致するすべての項目を選択することを指定する(関数マッピング演算)。「!」記号は、このコンテキストの親オブジェクトを選択する要求を表す。この場合、サブパス「!.OrderID」は、Productコンテキスト・オブジェクトの親(包含オブジェクト)である「Order」オブジェクトのOrderIDプロパティを求めている。
上記の例示の入力データに対するこの式の評価の目的の結果は、以下の通りである。
[
{ "Name": "Bowler Hat", "Order": "order103" },
{ "Name": "Trilby hat", "Order": "order103" },
{ "Name": "Bowler Hat", "Order": "order104" },
{ "Name": "Cloak","Order": "order104" }
]
入力データを親参照を含むように変更せずにこれを実現するため、構文解析されたクエリ式のASTが、親オブジェクトと一致するクエリの部分を表すASTノードを識別するために走査される。
提案の着想によると、上記のJASONataクエリ式の増強したASTは以下の通りである。
type: path
steps:
- value: Account
type: name
- value: Order
type: name
- value: Product <- 「ancestor」属性で装飾されたASTノード。
type: name
ancestor: 0
tuple: true
- type: unary
value: "{"
seekingParent: 0 <- ASTを上方に走査しているときに使用される一時的属性
lhs:
- - value: Name
type: string
- type: path
steps:
- value: ProductName
type: name
- - value: Order
type: string
- type: path
steps:
- type: parent <- 「!」トークンを表すASTノード
slot: 0
- value: OrderID
type: name
seekingParent: 0 <- ASTを上方に走査しているときに使用される一時的属性。
クエリ評価エンジンは、入力データと対照してこの増強したASTを処理するときに、「ancestor」属性で装飾されたASTノードを識別し、その入力コンテキスト項目(すなわち現在の「Order」値)を、累積クエリ結果と任意の一時的数値変数束縛とを含むタプル・ストリームとして記憶する。この記憶された値は次に、後で「!」トークンを表すASTノードが処理されるときに利用可能であり、固有「スロット」番号を使用して検索される。
親ASTノードを見つけるために使用されるアルゴリズムは以下の通りである。
(i)親演算子はパス配列内の「parent」タイプ・ステップである。
(ii)最初のステップである場合、パスに「seekingParent」=<number>のようにラベル付けし、パスに入るまでノードに「seekingParent」とラベル付けしてASTを上にたどる。これを繰り返す。
(iii)ステップインデックスが>=1である(すなわち最初のステップではない)場合、前のステップを調べる。
(iv)前のステップのタイプは「name」または「wildcard」か。
(v)肯定の場合:このステップにparent=<number>とラベル付けし、中断(完了)。
(vi)前のステップは「block」タイプか。
(vii)肯定の場合:ブロック内の最後の式を調べる。最初から繰り返す。
(viii)それ以外の場合は、エラーを投げる。親を判定することができない。
上記の説明から、図3の実施形態はクエリを使用して階層データを処理するために利用可能であることがわかるであろう。一例として、クエリ言語によるクエリを使用して階層データを処理する提案実施形態について、図4を参照しながら以下に説明する。
図4を参照すると、クエリ言語によるクエリを使用して階層データを処理するコンピュータ実装方法400の流れ図が示されている。方法400は、第1に、図3の実施形態により階層データ内の祖先オブジェクトを識別する方法300を実行することを含む。次に、ステップ410で、階層データと対照して増強したASTを処理することによってクエリが評価される。
実施形態は、図5に示すネットワーク・システム7の一部を形成することができるコンピュータ・システム70を含み得る。たとえば、一実施形態による増強コンポーネントは、コンピュータ・システム70において(たとえば処理ユニット71として)実装されてもよい。コンピュータ・システム/サーバ70のコンポーネントには、たとえばプロセッサまたは処理ユニット71と、システム・メモリ74と、システム・メモリ74を含む様々なシステム・コンポーネントを処理ユニット71に結合するバス90とを含む、1つまたは複数の処理機構が含まれ得るが、これには限定されない。
システム・メモリ74は、ランダム・アクセス・メモリ(RAM)75またはキャッシュ・メモリ76あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ70は、他の取り外し可能/取り外し不能型の揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含んでもよい。そのような場合、それぞれが1つまたは複数のデータ・メディア・インターフェースによってバス90に接続可能である。メモリ74は、提案の実施形態の機能を実施するように構成された1組の(たとえば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。たとえば、メモリ74は、入力/出力(I/O)インターフェース72に提案の一実施形態によるpub/subメッセージング・システムのミドルウェア・システムのための方法を実行させる処理ユニット71によって実行可能なプログラムを有する、コンピュータ・プログラム製品を含み得る。1組の(少なくとも1つの)プログラム・モジュール79を有するプログラム/ユーティリティ78がメモリ74に記憶されてもよい。プログラム・モジュール79は、pub/subメッセージング・システムのために提案の実施形態の機能または方法あるいはその両方を全般的に実施する。
コンピュータ・システム/サーバ70は、キーボード、ポインティング・デバイス、ディスプレイ85などの1つまたは複数の外部デバイス80、ユーザがコンピュータ・システム/サーバ70と対話することができるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ70が1つまたは複数の他のコンピューティング・デバイスと通信することができるようにする任意のデバイス(たとえばネットワーク・カード、モデムなど)、あるいはこれらの組合せとも通信可能である。このような通信は、入力/出力(I/O)インターフェース72を介して行うことができる。さらに、コンピュータ・システム/サーバ70は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(たとえばインターネット)あるいはこれらの組合せなどの1つまたは複数のネットワークと、ネットワーク・アダプタ73を介して(たとえば、分散ネットワークのエッジ・デバイスに、DFWFの決定された最適値を伝達するために)通信することができる。
本出願の文脈では、本発明の実施形態が方法を構成する場合、そのような方法はコンピュータによる実行のためのプロセスであり、すなわちコンピュータ実装方法であることを理解されたい。したがって、方法のステップは、コンピュータ・プログラムの様々な部分、たとえば1つまたは複数のアルゴリズムの部分を反映する。
本発明は、統合の任意の可能な技術的詳細度のシステム、方法、またはコンピュータ・プログラム製品あるいはこれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が記憶されたコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、たとえば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学式ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、可搬コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、可搬コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、およびこれらの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(たとえば光ファイバ・ケーブルを通る光パルス)、またはワイヤを介して伝送される電気信号などの、一過性の信号自体であると解釈すべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含んでもよい。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語、または同様のプログラム言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上でまたは一部がユーザのコンピュータ上で、または一部がユーザのコンピュータ上で一部がリモート・コンピュータ上で、または全体がリモート・コンピュータまたはサーバ上で実行されてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。実施形態によっては、本発明の態様を実行するために、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様について、本明細書では、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の図の各ブロックおよび、フローチャート図またはブロック図あるいはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることを理解されたい。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作を実装する手段を形成するようなマシンを実現するように、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサに供給することができる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに対して特定の方式で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置またはその他のデバイス上で実行される命令がフローチャートまたはブロック図あるいはその両方のブロックで指定されている機能/動作を実装するように、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップが実行されてコンピュータ実装プロセスを実現するようにするために、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされてもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、指定されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。一部の別の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。たとえば、連続して示されている2つのブロックは、関与する機能に応じて、実際には、1つのステップとして行われてもよく、部分的または全体が時間的に重なり合って並行して実行されてもよく、実質的に並行して実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の図の各ブロック、およびブロック図またはフローチャート図あるいはその両方の図のブロックの組合せは、指定されている機能または動作を実行する専用ハードウェア・ベースのシステムによって実装可能であるか、または専用ハードウェアとコンピュータ命令との組合せを実施することができることも理解されたい。
本発明の様々な実施形態の説明は例示のために示したものであり、網羅的であること、または開示されている実施形態に限定することを意図したものではない。記載されている実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明かであろう。本明細書で使用されている用語は、実施形態の原理、実際の適用、または市場に見られる技術に対する技術的改良を最もよく説明するために、または当業者が本明細書で開示されている実施形態を理解することができるように選定された。

Claims (25)

  1. クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するコンピュータ実装方法であって、前記クエリは関連付けられた抽象構文木ASTを有し、前記方法は、
    前記クエリに関連する前記ASTの親ノードを判定するために、前記クエリに関連付けられた前記ASTを処理することと、
    増強したASTを生成するために、判定された前記親ノードを識別するように構成された親識別子によって前記ASTを増強することとを含む、方法。
  2. 前記クエリに関連する前記ASTの前記親ノードを判定するための前記クエリに関連付けられた前記ASTの前記処理は、
    前記クエリの親ノードを表す前記ASTのノードを判定するために前記ASTを走査することを含む、請求項1に記載の方法。
  3. 前記親識別子は、前記親ノードへの参照を保存するようクエリ・プロセッサに指示するように構成される、請求項1に記載の方法。
  4. 前記増強したASTを生成するための、判定された前記親ノードを識別するように構成された前記親識別子による前記ASTの前記増強は、
    前記ASTの前記親ノードに祖先属性を付加することを含む、請求項1に記載の方法。
  5. 前記ASTの前記親ノードへの前記祖先属性の前記付加は、
    前記祖先属性の値を所定の値に設定することを含む、請求項4に記載の方法。
  6. 前記所定の値はカウンタ値に基づき、前記カウンタ値は識別される親ノードごとにインクリメントされる、請求項5に記載の方法。
  7. 前記クエリを構文解析することによって前記抽象構文木を生成することをさらに含む、請求項1に記載の方法。
  8. 前記増強したASTを記憶することと、
    記憶された前記増強したASTと前記階層データを関連付けることとをさらに含む、請求項1に記載の方法。
  9. 前記階層データはJSONデータを含み、前記クエリ言語はJSONataクエリ言語である、請求項1に記載の方法。
  10. クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するためのコンピュータ・プログラム製品であって、前記クエリは関連付けられた抽象構文木ASTを有し、前記コンピュータ・プログラム製品は、プログラム・コードが実現された1つまたは複数のコンピュータ可読記憶媒体を含み、前記プログラム・コードは、
    前記クエリに関連する前記ASTの親ノードを判定するために前記クエリに関連付けられた前記ASTを処理し、
    増強したASTを生成するために、判定された前記親ノードを識別するように構成された親識別子で前記ASTを増強するための、プログラミング命令を含む、コンピュータ・プログラム製品。
  11. 前記クエリに関連する前記ASTの前記親ノードを判定するための前記クエリに関連付けられた前記ASTの前記処理は、前記クエリの親ノードを表す前記ASTのノードを判定するために前記ASTを走査するためのプログラミング命令を含む、請求項10に記載のコンピュータ・プログラム製品。
  12. 前記親識別子は、前記親ノードへの参照を保存するようクエリ・プロセッサに指示するように構成される、請求項10に記載のコンピュータ・プログラム製品。
  13. 前記増強したASTを生成するために、判定された前記親ノードを識別するように構成された前記親識別子による前記ASTの前記増強は、前記ASTの前記親ノードに祖先属性を付加するためのプログラミング命令を含む、請求項10に記載のコンピュータ・プログラム製品。
  14. 前記ASTの前記親ノードへの前記祖先属性の前記付加は、前記祖先属性の値を所定の値に設定するためのプログラミング命令を含む、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記所定の値はカウンタ値に基づき、前記カウンタ値は識別される親ノードごとにインクリメントされる、請求項14に記載のコンピュータ・プログラム製品。
  16. 前記プログラム・コードは、前記クエリを構文解析することによって前記抽象構文木を生成するためのプログラミング命令をさらに含む、請求項10に記載のコンピュータ・プログラム製品。
  17. 前記プログラム・コードは、
    前記増強したASTを記憶し、
    記憶された前記増強したASTと前記階層データを関連付けるためのプログラミング命令をさらに含む、請求項10に記載のコンピュータ・プログラム製品。
  18. クエリ言語によるクエリを使用する処理のために構成された階層データにおける祖先オブジェクトを識別するためのコンピュータ・プログラムを記憶するメモリであって、前記クエリが、関連付けられた抽象構文木ASTを有する、前記メモリと、
    前記メモリに接続され、前記コンピュータ・プログラムのプログラム命令を実行するように構成されたプロセッサとを含むシステムであって
    前記プログラム命令は、
    前記クエリに関連する前記ASTの親ノードを判定するために、前記クエリに関連付けられた前記ASTを処理することと、
    増強したASTを生成するために、判定された前記親ノードを識別するように構成された親識別子によって前記ASTを増強することとを含む、システム。
  19. 前記クエリに関連する前記ASTの前記親ノードを判定するための前記クエリに関連付けられた前記ASTの前記処理は、
    前記クエリの親ノードを表す前記ASTのノードを判定するために前記ASTを走査することを含む、請求項18に記載のシステム。
  20. 前記親識別子は、前記親ノードへの参照を保存するようクエリ・プロセッサに指示するように構成される、請求項18に記載のシステム。
  21. 前記増強したASTを生成するための、判定された前記親ノードを識別するように構成された前記親識別子による前記ASTの前記増強は、前記ASTの前記親ノードに祖先属性を付加することを含む、請求項18に記載のシステム。
  22. 前記ASTの前記親ノードへの前記祖先属性の前記付加は、前記祖先属性の値を所定の値に設定することを含む、請求項21に記載のシステム。
  23. 前記所定の値はカウンタ値に基づき、前記カウンタ値は識別される親ノードごとにインクリメントされる、請求項22に記載のシステム。
  24. 前記コンピュータ・プログラムの前記プログラム命令は、前記クエリを構文解析することによって前記抽象構文木を生成することをさらに含む、請求項18に記載のシステム。
  25. 前記コンピュータ・プログラムの前記プログラム命令は、
    前記増強したASTを記憶することと、
    記憶された前記増強したASTと前記階層データを関連付けることとをさらに含む、請求項18に記載のシステム。
JP2022537263A 2020-01-17 2021-01-12 階層データ Active JP7546674B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/745,582 US11960507B2 (en) 2020-01-17 2020-01-17 Hierarchical data
US16/745,582 2020-01-17
PCT/IB2021/050191 WO2021144689A1 (en) 2020-01-17 2021-01-12 Hierarchical data

Publications (2)

Publication Number Publication Date
JP2023510104A true JP2023510104A (ja) 2023-03-13
JP7546674B2 JP7546674B2 (ja) 2024-09-06

Family

ID=76857034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022537263A Active JP7546674B2 (ja) 2020-01-17 2021-01-12 階層データ

Country Status (10)

Country Link
US (2) US11960507B2 (ja)
JP (1) JP7546674B2 (ja)
KR (1) KR20220092942A (ja)
CN (1) CN114981802A (ja)
AU (1) AU2021208982A1 (ja)
CA (1) CA3163038A1 (ja)
DE (1) DE112021000573T5 (ja)
GB (1) GB2607518A (ja)
IL (1) IL294561A (ja)
WO (1) WO2021144689A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240330571A1 (en) * 2023-03-28 2024-10-03 International Business Machines Corporation Generating Target Schema Based on Source Schema and Query Expression

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392239B2 (en) 2003-04-14 2008-06-24 International Business Machines Corporation System and method for querying XML streams
US20070244865A1 (en) * 2006-04-17 2007-10-18 International Business Machines Corporation Method and system for data retrieval using a product information search engine
JP2008084028A (ja) 2006-09-27 2008-04-10 Toshiba Corp データベース検索システムおよびデータベース検索方法
GB0619147D0 (en) 2006-09-28 2006-11-08 Ibm A method, apparatus or software for managing software component version identifications in a componentised software system
US20090089268A1 (en) 2007-09-28 2009-04-02 Benedikt Michael A XML Update Facility for an XQuery Processor
US8065293B2 (en) * 2007-10-24 2011-11-22 Microsoft Corporation Self-compacting pattern indexer: storing, indexing and accessing information in a graph-like data structure
JP5125662B2 (ja) 2008-03-24 2013-01-23 富士通株式会社 クエリ変換方法および検索装置
US8260784B2 (en) 2009-02-13 2012-09-04 International Business Machines Corporation Indexing and searching JSON objects
CN101667190B (zh) 2009-09-29 2011-07-27 天津大学 基于XQuery的查询引擎系统
US10089367B2 (en) * 2013-01-04 2018-10-02 PlaceIQ, Inc. Expediting pattern matching queries against time series data
US9230040B2 (en) 2013-03-14 2016-01-05 Microsoft Technology Licensing, Llc Scalable, schemaless document query model
US9405915B2 (en) 2013-03-14 2016-08-02 Whitehat Security, Inc. Techniques for correlating vulnerabilities across an evolving codebase
US9317260B2 (en) * 2013-08-09 2016-04-19 Vmware, Inc. Query-by-example in large-scale code repositories
US9659045B2 (en) 2013-11-08 2017-05-23 Oracle International Corporation Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data
US20160124723A1 (en) * 2014-10-31 2016-05-05 Weixi Ma Graphically building abstract syntax trees
US10275305B2 (en) * 2014-11-25 2019-04-30 Datavore Labs, Inc. Expert system and data analysis tool utilizing data as a concept
US10467243B2 (en) 2015-08-26 2019-11-05 Oracle International Corporation Efficient in-memory DB query processing over any semi-structured data formats
US10803083B2 (en) 2015-08-27 2020-10-13 Infosys Limited System and method of generating platform-agnostic abstract syntax tree
US10440447B2 (en) 2015-10-07 2019-10-08 Lg Electronics Inc. Broadcast signal transmission/reception device and method
KR20240025698A (ko) 2015-11-25 2024-02-27 소니그룹주식회사 수신 장치, 송신 장치, 및 데이터 처리 방법
US10855696B2 (en) * 2016-03-02 2020-12-01 Shape Security, Inc. Variable runtime transpilation
US10162603B2 (en) * 2016-09-10 2018-12-25 Sap Se Loading data for iterative evaluation through SIMD registers
GB2555087A (en) * 2016-10-11 2018-04-25 Sage South Africa Pty Ltd System and method for retrieving data from server computers
US20180232404A1 (en) * 2017-02-15 2018-08-16 Ca, Inc. Self-recomposing program to transform data between schemas
US20180365201A1 (en) * 2017-06-14 2018-12-20 Clause, Inc. System and method for compound data-driven contracts and documentation
US11475004B2 (en) 2017-09-12 2022-10-18 Sap Se Optimizing database queries
US10606570B2 (en) * 2018-03-08 2020-03-31 Fujitsu Limited Representing software with an abstract code graph
US10416972B1 (en) * 2018-03-16 2019-09-17 Capital One Services, Llc Generating closures from abstract representation of source code
CN110443059A (zh) * 2018-05-02 2019-11-12 中兴通讯股份有限公司 数据保护方法及装置
US10922430B2 (en) 2018-07-16 2021-02-16 Beijing Didi Infinity Technology And Development Co., Ltd. System and method for data security grading
US11061716B2 (en) * 2018-08-20 2021-07-13 Salesforce.Com, Inc. Attribute-based access control using a dynamic expression engine
US11256696B2 (en) * 2018-10-15 2022-02-22 Ocient Holdings LLC Data set compression within a database system
US11356440B2 (en) * 2018-11-30 2022-06-07 International Business Machines Corporation Automated IoT device registration
US10846083B2 (en) * 2018-12-12 2020-11-24 Sap Se Semantic-aware and self-corrective re-architecting system
US11294645B2 (en) * 2019-04-02 2022-04-05 Gavriel Loria Visual virtual programming machine for real-time interactive creation, playback, execution, inspection and manipulation of programming elements

Also Published As

Publication number Publication date
US20210224295A1 (en) 2021-07-22
JP7546674B2 (ja) 2024-09-06
DE112021000573T5 (de) 2022-12-15
US20210224294A1 (en) 2021-07-22
US11960507B2 (en) 2024-04-16
CA3163038A1 (en) 2021-07-22
WO2021144689A1 (en) 2021-07-22
AU2021208982A1 (en) 2022-06-09
KR20220092942A (ko) 2022-07-04
GB202211979D0 (en) 2022-09-28
GB2607518A (en) 2022-12-07
CN114981802A (zh) 2022-08-30
IL294561A (en) 2022-09-01

Similar Documents

Publication Publication Date Title
US11146286B2 (en) Compression of JavaScript object notation data using structure information
US6938204B1 (en) Array-based extensible document storage format
US6941511B1 (en) High-performance extensible document transformation
US6665662B1 (en) Query translation system for retrieving business vocabulary terms
US7941417B2 (en) Processing structured electronic document streams using look-ahead automata
US8103705B2 (en) System and method for storing text annotations with associated type information in a structured data store
US8346737B2 (en) Encoding of hierarchically organized data for efficient storage and processing
US6658624B1 (en) Method and system for processing documents controlled by active documents with embedded instructions
US8181105B2 (en) Apparatus, method, and program that performs syntax parsing on a structured document in the form of electronic data
US8397157B2 (en) Context-free grammar
JP2003036255A (ja) CONTENTBASEDROUTINGネットワークでのXML(extensiblemarkuplanguage)文書の効率的な処理
US8073843B2 (en) Mechanism for deferred rewrite of multiple XPath evaluations over binary XML
US7404186B2 (en) Signature serialization
US20150074633A1 (en) Systems and methods for generating, linking, and presenting computer code representations from diverse sources
WO2023103339A1 (zh) 一种数据转换方法及装置
US6904562B1 (en) Machine-oriented extensible document representation and interchange notation
US20050138542A1 (en) Efficient small footprint XML parsing
JP2002215403A (ja) 構造化文書をプログラム言語の構造体データへマッピングするシステム及び方法及びプログラム
JP2023510104A (ja) 階層データ
WO2023164294A1 (en) Query splitter for an inverted index datastore
US8407209B2 (en) Utilizing path IDs for name and namespace searches
CN113515285B (zh) 生成实时计算逻辑数据的方法和装置
CN112988778A (zh) 一种处理数据库查询脚本的方法和装置
Nenadić et al. Extending JSON-LD Framing Capabilities
Lee et al. Formal models and algorithms for XML data interoperability

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221223

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240730

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: 20240806

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240827

R150 Certificate of patent or registration of utility model

Ref document number: 7546674

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150