JP4408717B2 - 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム - Google Patents

情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム Download PDF

Info

Publication number
JP4408717B2
JP4408717B2 JP2004043408A JP2004043408A JP4408717B2 JP 4408717 B2 JP4408717 B2 JP 4408717B2 JP 2004043408 A JP2004043408 A JP 2004043408A JP 2004043408 A JP2004043408 A JP 2004043408A JP 4408717 B2 JP4408717 B2 JP 4408717B2
Authority
JP
Japan
Prior art keywords
expression
unit
node
storage device
evaluation
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.)
Expired - Fee Related
Application number
JP2004043408A
Other languages
English (en)
Other versions
JP2005234901A (ja
Inventor
正人 武市
振江 胡
Original Assignee
株式会社ジャストシステム
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 株式会社ジャストシステム filed Critical 株式会社ジャストシステム
Priority to JP2004043408A priority Critical patent/JP4408717B2/ja
Publication of JP2005234901A publication Critical patent/JP2005234901A/ja
Application granted granted Critical
Publication of JP4408717B2 publication Critical patent/JP4408717B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明は、順序木を蓄積する蓄積装置と当該蓄積された順序木を処理する処理装置とからなる情報処理システムにおいて、処理対象となる順序木の通信量を低減するのに好適な情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、これらをコンピュータにて実現するためのプログラムに関する。
従来から、構造化された文書であるXML(eXtensible Markup Language)形式文書を処理する各種の技術が提案されている。また、情報処理の分野では、遅延評価の技術も知られている。
特開2002−182915号公報 R.バード・P.ワドラー共著、武市正人訳、関数プログラミング、近代科学社、146頁〜151頁、1991年4月
[特許文献1]には、XML形式文書をDOM(Document Object Model)技術に基づいて処理する技術が開示されている。DOM技術では、XML文書を順序木構造として扱う。ここで、順序木とは、木構造のうち、共通する親ノードを有する兄弟ノードに順序が付けられているものをいい、DOM技術では、XML文書全体を解析してDOM木としてメモリ上に保存して処理を行う。
[非特許文献1]には、ある式を実際に評価するのはその式の値が必要になるまで遅延し、一旦値が得られた後は、その値を使い続ける、という遅延評価(グラフ簡約)の技術が開示されている。
しかしながら、XML文書が蓄積される蓄積装置と、XML文書が処理される処理装置とがコンピュータ通信網で接続されているときに、データの多いXML文書を処理したい場合には、処理装置にて多くのメモリを消費するほか、通信によってDOM木をやりとりすることとなるため、通信量が極めて多くなり、処理が遅くなってしまうなどの効率上の問題が生ずる。
一方で、できるだけ自然にXML文書の構造内の必要なノードのみをトラバースできるようにしたい、という要望は大きい。
本発明は、上記の課題を解決するもので、順序木を蓄積する蓄積装置と当該蓄積された順序木を処理する処理装置とからなる情報処理システムにおいて、順序木のトラバースを自然に行う一方でできるだけ通信量を低減するのに好適な情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することを目的とする。
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
本発明の第1の観点に係る情報処理システムは、蓄積装置と、処理装置と、を備え、以下のように構成する。
すなわち、蓄積装置は、記憶部と、取得要求受信部と、取得応答送信部と、を備える。
ここで、記憶部は、順序木を記憶する。
一方、取得要求受信部は、処理装置から送信された取得要求を受信する。
さらに、取得応答送信部は、記憶された順序木において、受信された取得情報に指定される位置のノードが、子ノードを有する場合は、当該子ノードの数を、リーフである場合は、当該リーフに付与される内容情報を、それぞれ指定する取得応答を処理装置に送信する。
一方、処理装置は、遅延評価部と、オブジェクト生成部と、評価制御部と、を備える。
ここで、遅延評価部は、式もしくは当該式の評価結果を参照する計算可能オブジェクトを、
(p)当該計算可能オブジェクトが式を参照していれば、これを計算して当該式の評価結果を得て、当該式の評価結果を返し、当該計算可能オブジェクトに、当該式にかえて当該式の評価結果を参照させ、
(q)当該計算可能オブジェクトが式の評価結果を参照していれば、当該式の評価結果を返す。
一方、オブジェクト生成部は、蓄積装置に記憶される順序木の根ノードの位置をパラメータとして与えられた問合せ式を参照する計算可能オブジェクトを生成する。
さらに、評価制御部は、所望のリーフに付与される内容情報が返されるまで、生成された計算可能オブジェクトもしくはこれに参照される評価結果に含まれる計算可能オブジェクトを、遅延評価部に評価させる。
ここで、遅延評価部は、問合せ式を、
(x)パラメータとして与えられるノードの位置を指定する取得要求を蓄積装置に送信し、
(y)蓄積装置から送信された取得応答に、子ノードの数が指定される場合、当該子ノードのそれぞれについて、その位置をパラメータとして与えた問合せ式を含む列を、評価結果とし、
(z)蓄積装置から送信された取得応答に、リーフに付与される内容情報が指定される場合、当該内容情報を評価結果とする
ように評価する。
また、本発明の情報処理システムにおいて、処理装置は、処理生成部と、結果部分木送信部とをさらに備え、蓄積装置は、結果部分木受信部と、置換更新部とをさらに備え、以下のように構成することができる。
まず、処理装置において、処理生成部は、遅延評価部により評価結果として返される列もしくは内容情報から、新たな部分木を生成する。
一方、結果部分木送信部は、生成された部分木を処理結果として蓄積装置に送信する。
そして、処理生成部は、生成される部分木の根ノードに、蓄積装置に蓄積される順序木における当該根ノードの子ノードの位置を指定する位置属性情報を付加する。
一方、蓄積装置において、結果部分木受信部は、処理装置から送信された部分木を受信する。
さらに、置換更新部は、受信された部分木(以下、当該部分木の子ノードを根ノードとする部分木を「置換結果部分木」という。)について、「『当該置換結果部分木の根ノードに付加された位置属性情報に指定される位置』を根ノードとする部分木(以下、「置換対象部分木」という。)」を、当該置換結果部分木に置換して更新する。
本発明のその他の観点に係る蓄積装置は、上記情報処理システムにおける蓄積装置である。
本発明のその他の観点に係る処理装置は、上記情報処理システムにおける処理装置である。
本発明のその他の観点に係る処理方法は、上記の蓄積装置と通信し、遅延評価部と、オブジェクト生成部と、評価制御部と、を備える処理装置において実行され、遅延評価工程と、オブジェクト生成工程と、評価制御工程と、を備え、以下のように構成する。
まず、遅延評価工程では、遅延評価部が、式もしくは当該式の評価結果を参照する計算可能オブジェクトを、
(p)当該計算可能オブジェクトが式を参照していれば、これを計算して当該式の評価結果を得て、当該式の評価結果を返し、当該計算可能オブジェクトに、当該式にかえて当該式の評価結果を参照させ、
(q)当該計算可能オブジェクトが式の評価結果を参照していれば、当該式の評価結果を返す。
一方、オブジェクト生成工程では、オブジェクト生成部が、蓄積装置に記憶される順序木の根ノードの位置をパラメータとして与えられた問合せ式を参照する計算可能オブジェクトを生成する。
さらに、評価制御工程では、評価制御部が、所望のリーフに付与される内容情報が返されるまで、生成された計算可能オブジェクトもしくはこれに参照される評価結果に含まれる計算可能オブジェクトを、遅延評価工程にて評価させる。
そして、遅延評価工程では、問合せ式を、
(x)パラメータとして与えられるノードの位置を指定する取得要求を蓄積装置に送信し、
(y)蓄積装置から送信された取得応答に、子ノードの数が指定される場合、当該子ノードのそれぞれについて、その位置をパラメータとして与えた問合せ式を含む列を、評価結果とし、
(z)蓄積装置から送信された取得応答に、リーフに付与される内容情報が指定される場合、当該内容情報を評価結果とする
ように評価する。
本発明の他の観点に係る置換方法は、上記の処理装置と通信し、記憶部と、取得要求受信部と、取得応答送信部と、を備える蓄積装置において実行され、取得要求受信工程と、取得応答送信工程と、を備え、以下のように構成する。なお、記憶部は、順序木を記憶する。
さて、取得要求受信工程では、取得要求受信部が、処理装置から送信された取得要求を受信する。
一方、取得応答送信工程では、取得応答送信部が、記憶された順序木において、受信された取得情報に指定される位置のノードが、子ノードを有する場合は、当該子ノードの数を、リーフである場合は、当該リーフに付与される内容情報を、それぞれ指定する取得応答を処理装置に送信する。
本発明のその他の観点に係るプログラムは、コンピュータを、上記蓄積装置の各部として機能させるように構成する。
本発明のその他の観点に係るプログラムは、コンピュータを、上記処理装置の各部として機能させるように構成する。
上記のプログラムは、CD−ROM(Compact Disk Read Only Memory)やFD(Flexible Disk)などの各種の記録媒体に記録することができるほか、インターネットなどのコンピュータ通信網を介して配布することができる。
本発明によれば、順序木を蓄積する蓄積装置と当該蓄積された順序木を処理する処理装置とからなる情報処理システムにおいて、順序木のトラバースを自然に行う一方で、できるだけ通信量を低減するのに好適な情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することができる。
以下、添付図面を参照して、本発明の実施の形態について説明する。
図1は、本発明の蓄積装置や処理装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、図1を参照して説明する。
情報処理装置101は、CPU(Central Processing Unit;中央処理ユニット)102によって制御される。情報処理装置101に電源を投入すると、CPU 102は、ROM 103に記憶されたIPL(Initial Program Loader;初期プログラムローダ)を実行する。
IPLは、ハードディスク104、FDドライブ110に装着されたFD、CD−ROMドライブ111に装着されたCD−ROMなどの記録媒体に記憶されたOS(Operating System;オペレーティング・システム)プログラムを読み出して実行するプログラムである。
OSを起動した後、CPU 102は、キーボード105やマウス106などにより入力されたユーザの指示にしたがって、あるいは、ハードディスクなどにあらかじめ記述された設定ファイルの内容にしたがって、ハードディスクなどに記憶されたアプリケーションプログラムを実行する。
当該アプリケーションプログラムを実行することにより、情報処理装置101は、設計支援装置として機能することとなる。
ハードディスク104、FDドライブ110に装着されたFD、CD−ROMドライブ111に装着されたCD−ROMなどの記憶媒体に、各種の情報が記録されることになる。
CPU 102は、このプログラムの実行の際に、RAM 107を一時的な作業用記憶領域として用いる。このほか、一時的な作業用記憶領域として、CPU 102内に設けられたレジスタやキャッシュ(図示せず)が使われる。
プログラムの実行に伴ない、ユーザに不具合レコードを報告したり、途中経過を見せるため、CPU 102は、液晶ディスプレイやCRT(Cathode Ray Tube)などの表示装置108に当該情報を表示することができる。マウス106による指示操作では、マウス106を移動することにより、画面に表示されたカーソルが移動し、マウス106をクリックすることにより、カーソルが指すメニュー項目を選択することができる。
情報処理装置101は、NIC(Network Interface Card)やモデムなどのインターフェース109を介してインターネットなどのコンピュータ通信網と通信を行うことができる。インターフェース109を介して受信した順序木を処理の対象としたり、抽出したパターンをインターフェース109を介して送信したり、インターフェース109を介して受信したプログラムを実行したり、などができる。
(XML形式データと順序木の関係)
図2は、XML形式データの例を示す説明図である。図3は、これに対応する順序木の構造を示す説明図である。以下、これらの図を参照して説明する。
XML形式データは、<?xml version="1.0"?>のようなXML宣言から始まる。XML宣言とは、XML文書の先頭に付き、その文書がXML文書(XML形式データ)であることを示すための文字列である。
XML形式データは「要素」を含む。要素とは、一般には、開始タグと終了タグとに囲まれるデータであり、図2に示す例では、開始タグ<book:book ...>と終了タグ</book:book>とに囲まれている部分が最も大きな要素となる。開始タグのタグ名によって、当該要素を参照することとする。すなわち、上記要素は「book:book要素」ということになる。
図2に示す例では、book:book要素の中に、以下のような要素が含まれている。
book:content要素
book:chapter要素が2つ
また、book:content要素は、テキスト「目次」を含んでいる。
さらに、最初のbook:chapter要素は、book:title要素を含み、当該book:title要素は、テキスト「Ark2」を含んでいる。
このほか、2番目のbook:chapter要素もまた、book:title要素を含み、当該book:title要素は、code要素を含み、当該code要素は、テキスト「getPtree("abc[1]")」を含んでいる。
このように、要素同士には、包含関係を持たせることができる。
さて、これらの要素は、順序木においては、ノードに対応する。そして、要素同士の包含関係は、順序木における親ノードと子ノードとの関係となる。さらに、各要素に含まれるテキストは、順序木のリーフに対応する。また、図2におけるbook:book要素(最も大きい要素)は、図3における順序木の根ノードに対応することになる。また、ある要素は、当該順序木のうち、当該要素に対応付けられるノードを根ノードとする部分木と等価であり、当該部分木から当該要素全体を復元したり、当該要素から当該部分木を構成したりすることができる。
以下、理解を容易にするため、混乱が生じない限り、要素を指す際に、これに対応するノードを用いたり、ノードを指す際に、これに対応する要素を用いたりすることとする。
なお、リーフのことをテキストノードと呼び、テキストノードには、テキストが対応付けられている、と考える。
さて、XML形式データでは、各要素に付加的な情報を付け加えるために、属性を付与することができる。付与される属性は、開始タグ内に「属性名=属性値」の形式で記述される。
図2に示す例では、以下のように属性が付与されている。たとえば、book:book要素には、属性xmlns:bookに値"http://.../book"が、属性xmlnsに値"http://.../haskell"が、属性xmlns:prtに値"http://xmlns.chimaira.org/pruned-tree"が、それぞれ付与されている。
なお、DOMツリーでは、ある要素の属性は、当該要素に対応するノードの子ノード(属性ノード)として考えるのが一般的であるが、本実施形態では、ある要素に付与される属性は、当該要素に対応するノードに付与される属性として考えるものとする。
このほか、2番目のbook:title要素に、属性名prt:refer-toの属性値として、"abc(/book:book/book:chapter[1]/book:title)"が付与されている。ここで用いられている/book:book/book:chapter[1]/book:titleは、「要素のXPath表現」と呼ばれるものである。
XPathは、XML文書の特定の部分(やその位置)を指し示すものであり、根ノードを/で表現する。以下、親ノードから子ノードへ、目的のノードに至るまで、順に要素名を並べていく。また、兄弟ノードに同じ名前の要素がある場合には、そのインデックス値を[と]で囲んで示す。
したがって、上記のXPathは、「book:book要素の中の1番目のbook:chapter要素の中のbook:title要素」の意味である。
このほか、*を用いたXPath表現を用いて、ノードの位置を示すことができる。*を用いたXPath表現では、添字が兄弟ノードにおける順序を表す。たとえば、図2において、*[1]/*[3]/*[1]なるXPath値は、「1番目の要素(book:book要素)に含まれる3番目の要素(2番目のbook:chapter要素)に含まれる1番目の要素(book:title要素)」を意味する。
さて、本実施形態では、属性prt:refer-toを用いて、ある要素が別の要素を参照する参照関係を表現する。したがって、当該属性は、「book:book要素の中の2番目のbook:chapter要素の中のbook:title要素」は、「book:book要素の中の1番目のbook:chapter要素の中のbook:title要素」を参照し、当該参照関係に「abc」という名前を付けた、という意味に解釈される。
そして、「book:book要素の中の2番目のbook:chapter要素の中のbook:title要素」は、code要素を含んでおり、code要素のテキストでは、参照関係abcに添字[1]を付加して用いている。これは、本実施形態では、「参照関係abcによって参照される1番目のノード(本例ではテキストノード「Ark2」)を、関数getPtreeに渡して処理し、その結果を用いる」という意味に解釈される。
したがって、図2に示すXML形式データの一部について処理を行いたい場合、「book:book要素の中の2番目のbook:chapter要素の中のbook:title要素」に対して処理を行う際には、「book:book要素の中の1番目のbook:chapter要素の中のbook:title要素」も必要である、ということになる。
このように、参照関係が定義されているXML形式データに対して各種の処理を行う場合には、必ずしもXML形式データの全体が必要なわけではない。「book:book要素の中の1番目のbook:chapter要素の中のbook:title要素」を処理したい場合には、当該要素のみがあれば十分であるし、「book:book要素の中の2番目のbook:chapter要素の中のbook:title要素」を処理したい場合には、当該要素のほか、「book:book要素の中の1番目のbook:chapter要素の中のbook:title要素」が必要である。
本実施形態は、処理に必要な要素のみを抽出して、これを処理対象とすることにより、XML形式データ全体の受渡しをできるだけ避け、必要なデータのみの受け渡しで済ませることとして、処理を実際に行う処理装置におけるメモリ使用量や、処理装置に対して行う通信量を低減させるものである。以下、抽出された処理対象となる要素(部分木)を、「剪定木」と呼ぶこととする。
以下、このようなXML形式データを蓄積している蓄積装置と、蓄積されたXML形式データ(の一部)に対して処理を行う処理装置と、の間で、剪定木がやりとりされる様子について、さらに詳細に説明する。
(全体の構成)
図4は、本実施形態に係る情報処理システムの概要構成を示す説明図である。本図に示すように、情報処理システム401は、蓄積装置431と、処理装置451と、両者を通信可能に接続する通信経路471と、を備える。
蓄積装置431と、処理装置451と、は、処理対象とするXML形式データ(順序木)の情報を、通信経路471を介してやりとりする。
(蓄積装置)
図5は、蓄積装置431の概要構成を示す模式図である。以下、本図を参照して説明する。
蓄積装置431は、記憶部501と、取得要求受信部502と、取得応答送信部503と、結果部分木受信部504と、置換更新部505と、を備える。
ここで、記憶部501は、図2に示すXML形式データを処理対象の順序木として記憶する。したがって、RAM 107やハードディスク104は、記憶部501として機能する。
一方、取得要求受信部502は、処理装置451から送信される取得要求を受信する。当該取得要求には、後述するように、処理装置451によって、記憶部501に記憶される順序木内のノードの位置を示す情報が指定されている。したがって、CPU 102は、インターフェース109と共働して取得要求受信部502として機能し、受信された取得要求は、RAM 107に一時的に記憶される。
ノードの位置を示す手法としては、前述のXPath表現や、*を用いたXPath表現のほか、これらと等価な表現を採用することができる。以下の説明では、*を用いたXPath表現の添字部分のみを並べて表現することとする。たとえば、*[1]/*[3]/*[1]は、[1,3,1]のように標記するものとし、これを「パス」と呼ぶこととする。
取得要求受信部502が、取得要求を受信すると、応答処理が開始される。図6は、図6は、蓄積装置431にて実行される応答処理の制御の流れを示すフローチャートである。以下、これらの図を参照して説明する。
まず、CPU 102は、記憶部501に記憶されたXML形式データを参照し、指定されたパスに対応するノードについての、以下の情報を取得する(ステップS601)。
(a)ノードの種類の情報。開始タグと終了タグに囲まれる要素に対応する要素ノードであれば、要素ノードである旨を示す情報とその要素の名前。テキストノードであれば、テキストノードである旨を示す情報。コメントノード等、その他のノードであれば、当該ノードの種類を示す情報。
(b)当該ノードがテキストノード(順序木のリーフ)である場合は、当該ノードに対応付けられるテキスト(内容情報)。
(c)当該ノードが要素ノードである場合は、当該要素ノードの子ノードの数。
(d)その他の情報。たとえば、当該ノードが要素ノードである場合に、当該ノードに付与されている属性名とその属性値等。
次に、取得応答送信部503は、取得された情報を指定する取得応答を、処理装置451に送信して(ステップS602)、本処理を終了する。
図2ならびに図3の例について、「取得要求…取得応答」のように対応関係を表すと、以下のようになる。
(イ)[1] …要素ノードbook:book。子ノードは3個。
(ロ)[1,1] …要素ノードbook:content。子ノードは1個。
(ハ)[1,1,1] …テキストノード。テキストは「目次」。
(ニ)[1,2] …要素ノードbook:chapter。子ノードは1個。
(ホ)[1,2,1] …要素ノードbook:title。子ノードは1個。
(ヘ)[1,2,1,1] …テキストノード。テキストは「Ark2」。
(ト)[1,3] …要素ノードbook:chapter。子ノードは1個。
(チ)[1,3,1] …要素ノードbook:title。子ノードは1個。
(リ)[1,3,1,1] …要素ノードcode。子ノードは1個。
(ヌ)[1,3,1,1,1]…テキストノード。テキストは「getPtree("abc[1]")」。
なお、一般に、処理装置451は、処理を開始した時点では、蓄積装置431が記憶しているXML形式データの全体の木構造がどのような形状をしているか、はわからない。
したがって、(ロ)(ニ)(チ)の取得要求を行うためには、それ以前に(イ)の取得要求が行われていなければならない。
(ハ)の取得要求を行うためには、それ以前に(ロ)の取得要求が行われていなければならない。
(ヌ)の取得要求を行うためには、それ以前に、(イ)(ト)(チ)(リ)の取得要求が行われていなければならない。
また、取得要求や取得応答の形式は、上記のような情報が伝達されればいかなる形式でも良いが、これもまたXML形式で構成しても良い。
たとえば、取得要求<get path="[1,1]"/>に対して取得応答<ok kind="element" type="book:content" child="1"/>が返り、取得要求<get path="[1,3,1,1,1]"/>に対して取得応答<ok kind="text">getPtree("abc[1]")</ok>が返る等である。
このような取得要求の依存関係は、実は図3に示す木構造に対応するものであって、親ノードについての取得要求を行い、その応答を見て初めて、当該親ノードが有する子ノードについての取得要求ができるようになるのである。
さて、蓄積装置431において、結果部分木受信部504が、処理装置451から送信された部分木を受信すると、置換更新処理が開始される。当該部分木には、後述するように、処理装置451によってその根ノードの属性として蓄積装置431に記憶される順序木における位置を表わす位置属性情報が追加されている。したがって、CPU 102は、インターフェース109と共働して、結果部分木受信部504として機能する。なお、受信された部分木は、RAM 107に一時的に記憶される。
たとえば、図2に示す例に対して、以下のような部分木が受信された場合を考える。
<put path="[1,3,1,1]">
<code>getPtree("abc[1]")</code>
<result>Hello.</result>
</put>
この場合、「根ノード」はputノードであり、そのpath属性として、蓄積装置431に記憶される順序木における位置[1,3,1,1]が指定されている。
そして、putノードの子ノードは、codeノードとresultノードという2つのノードを根ノードとする2つの部分木である。これを「置換結果部分木」という。
処理装置451は、上記の部分木によって、「位置[1,3,1,1]に配置されるノードを根ノードとする部分木(code要素)を、当該codeノードとresultノードという置換結果部分木に置換せよ」と依頼しているのである。
さて、図7は、置換更新処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
部分木を受信して置換更新処理が開始されると、まず、CPU 102は、当該部分木の根ノードに付与されたpath属性を取得する(ステップS701)。
そして、置換更新部505は、記憶部501に記憶されたXML形式データの取得されたpath属性の位置に、置換結果部分木を書き込んで(ステップS702)、置換・更新を行い、本処理を終了する。
図8は、図3に示す順序木について、上記の部分木が受信されて置換更新された結果を図示する説明図である。
このように、図3では、code要素が配置されていたところに、code要素とresult要素が配置され、順序木の構造が更新されることとなる。
(処理装置)
図9は、処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
処理装置451は、遅延評価部901と、オブジェクト生成部902と、評価制御部903と、処理生成部904と、結果部分木送信部905と、取得要求送信部911と、取得応答受信部912と、を備える。
ここで、遅延評価部901は、式もしくは当該式の評価結果を参照する計算可能オブジェクトを、
(p)当該計算可能オブジェクトが式を参照していれば、これを計算して当該式の評価結果を得て、当該式の評価結果を返し、当該計算可能オブジェクトに、当該式にかえて当該式の評価結果を参照させ、
(q)当該計算可能オブジェクトが式の評価結果を参照していれば、当該式の評価結果を返す。
前述のように、遅延評価部901は、必要に応じて、遅延評価(グラフ簡約)に相当する評価を行うのである。計算可能オブジェクトは、RAM 107内に記憶されているため、CPU 102が、計算可能オブジェクトを参照して必要があれば評価し、当該オブジェクトを書き換えることにより、遅延評価部901として機能する。
一方、オブジェクト生成部902は、蓄積装置431に記憶される順序木の根ノードの位置をパラメータとして与えられた問合せ式を参照する計算可能オブジェクトを生成する。
前述の通り、本実施形態では、ノードの位置は、数値の列にて表現する。したがって、根ノードの位置は、[1]のように表現することができる。
以下では、ノードの位置を整数の列nsで表現したときに、位置nsを指定する取得要求を出してノードの情報を指定する取得応答を得る問合せ式を、g nsのように関数gを引数nsに適用する形式で記載するものとする。
この場合、オブジェクト生成部902が生成する問合せ式はg [1]であり、ここで生成される計算可能オブジェクトは、当該g [1]を参照する。
一般に、問合せ式g nsを評価した場合、以下のような処理が行われる。図10は、問合せ式の評価処理の制御の流れを示すフローチャートである。
まず、遅延評価部901は、nsを指定する取得要求を生成する(ステップS1001)。本実施形態では、nsは、整数の列(リスト)である。
そして、取得要求送信部911は、当該取得要求を、蓄積装置431に送信する(ステップS1002)。すなわち、CPU 102は、インターフェース109と共働して、取得要求送信部911として機能する。
ついで、取得応答受信部912は、蓄積装置431が送信した取得応答を受信する(ステップS1003)。すなわち、CPU 102は、インターフェース109と共働して、取得要求受信部912として機能する。
そして、CPU 102は、当該取得応答に指定される情報の種類を調べる(ステップS1004)。
本実施形態では、取得応答にてテキストノードである旨と、当該テキストがssという文字列である旨とが指定されている場合、これをT ssのように表記する。
また、取得応答にて、要素ノードである旨と、当該要素ノードの名前がesという文字列である旨と、当該要素ノードに子ノードがm個ある旨とが指定されている場合、これをE es mのように表記する。
取得応答に指定される情報がテキストノードT ssである場合(ステップS1004;T ss)、評価結果としてT' ns ssを返して(ステップS1005)、本処理を終了する。ここで、T'は、評価結果がテキストノードである旨を示すためのコンストラクタである。
一方、取得応答に指定される情報が要素ノードE es mである場合、評価結果として、E' ns es [g (ns+[1]),g (ns+[2]),...,g (ns+[m])]を返して(ステップS1006)、本処理を終了する。ここで、E'は、評価結果が要素ノードである旨を示すためのコンストラクタである。また、ns++[i]は、数列nsの末尾にiを追加した数列を意味し、g (ns+[1]),g (ns+[2]),...,g (ns+[m])は、いずれも、nsの子ノードの情報を問い合わせるための問合せ式である。
さて、遅延評価の下では、評価の結果がE' ns es [g (ns+[1]),g (ns+[2]),...,g (ns+[m])]となっていても、g (ns+[1])等、評価結果に含まれる式の評価は直ちには行われない。したがって、必要に応じて処理装置451から蓄積装置431へ問合せ(ステップS1002〜S1003)が行われることになり、通信量の節約ならびに処理装置451におけるメモリの節約を図ることができる。
このように遅延評価される計算可能オブジェクトを用いることにより、評価制御部903は、必要なノードの情報が得られるまで、g [1]の評価結果の中身を順に吟味して、必要に応じて遅延評価部901に評価させるのである。
以下、図2に示す例に対して、遅延評価により、計算可能オブジェクトがどのように変化していくか、を図11を参照しながら説明する。
まず、当初生成される計算可能オブジェクトは、g [1]を参照している(本図(a))。
これについて取得要求−取得応答を行うと、E "book:book" 3が得られるため、評価結果は、E' [1] "book:book" [g [1,1],g [1,2],g [1,3]]となる(本図(b))。
さてここで、ユーザ等が次に調べたいものが2番目のノードであったとする。すると、評価制御部は、評価結果の中のg [1,2]を評価する。
その結果、得られる取得応答はE "book:chapter" 1であるから、評価結果は、E' [1,2] "book:chapter" [g [1,2,1]]となる(本図(c))。
さらに、ユーザ等が次に調べたいものが、ここで得られたものの唯一の子ノードであったとする。すると、評価制御部は、評価結果の中のg [1,2,1]を評価する。
その結果、得られる取得応答は、E "book:title" 1であるから、評価結果は、E' [1,2,1] "book:title" [g [1,2,1,1]]となる(本図(d))。
そして、ユーザ等が次に調べたいものが、ここで得られたものの唯一の子ノードであったとする。すると、評価制御部は、評価結果の中のg [1,2,1,1]を評価する。
その結果、得られる取得応答は、T "Ark2"であるから、評価結果は、T' [1,2,1,1] "Ark2"となる(本図(e))。
このようにして、最初に生成された計算可能オブジェクトから、リーフに割り当てられた文字列「Ark2」に至るまでのトラバースが自然に行えたこととなる。
しかも、このトラバースの際には、トラバースに必要となった問合せのみが生じており、それ以外のノードに関する問合せは生じていない。このように、遅延評価によれば、ノードを伝達するための通信量を必要最小限にした上で、かつ、自然にトラバースを表現することができるのである。
さて、評価結果として必要なリーフやノードの情報が得られた場合、これをユーザの指示等によって変更したい場合がある。たとえば、図2に示す例では、遅延評価によって、
T' [1,3,1,1] "code" [E' [1,3,1,1,1] "getPtree("abc[1]")"]
が得られる。ただし、"は文字列内の二重引用部を意味する。
処理系によっては、これを、ある種のプログラムの断片とみなして、処理を行うことができる。
図12は、このような処理により、元の順序木を更新する処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
本処理は、評価結果をトラバースする際に起動されるように構成することができる。
まず、処理生成部904は、トラバース先が、プログラム断片として実行可能であるか否かを判断する(ステップS1201)。実行可能でない場合(ステップS1201;No)、本処理を終了する。
実行可能である場合(ステップS1201;Yes)、トラバース先から、実行結果を書き込むべき順序木の位置を取得する(ステップS1202)。上記の例の場合、code要素の位置である[1,3,1,1]が実行結果を書き込むべき位置に相当する。
次に、code要素の子ノードであるテキストノードから、プログラム断片を抽出する(ステップS1203)。上記の例の場合、抽出されるプログラム断片は、「getPtree("abc[1]")」である。
そして、抽出されたプログラム断片を実行する(ステップS1204)。実行結果が、「Hello.」という文字列であったものとする。
さらに、実行されたプログラム断片と、実行結果を表す文字列と、これを書き込むべき場所と、を指定する部分木を生成する(ステップS1205)。これは、上述の通り、
<put path="[1,3,1,1]">
<code>getPtree("abc[1]")</code>
<result>Hello.</result>
</put>
である。
そして、生成された部分木を、結果部分木送信部905が、蓄積装置431に送信して(ステップS1206)、本処理を終了する。この後、蓄積装置431は、上述のような処理を行って、順序木を更新するのである。
上記実施形態では、取得応答にて子ノードの数を返すこととし、ノードの位置は*を用いたXPath形式に類似する手法を用いていた。
しかしながら、取得要求が行われるたびに、蓄積装置431側でDOM関数を呼び出して、当該子ノードのそれぞれに重複のない識別子を割り当て、識別子の列を取得応答にて返すこととしても良い。
この場合、当該識別子をパスのかわりに利用することとし、当該列に含まれる識別子の数を子ノードの数として扱うことにより、上記実施形態と同様の処理を実現することができる。
以上説明したように、本発明によれば、本発明によれば、順序木を蓄積する蓄積装置と当該蓄積された順序木を処理する処理装置とからなる情報処理システムにおいて、順序木のトラバースを自然に行う一方で、できるだけ通信量を低減するのに好適な情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、これらをコンピュータにて実現するためのプログラムを提供することができ、通信技術を用いた情報処理に適用することができる。
情報処理装置の概要構成を示す模式図である。 XML形式データの例を示す説明図である。 XML形式データに対応する順序木の例を示す説明図である。 本実施形態に係る情報処理システムの概要構成を示す説明図である。 蓄積装置の概要構成を示す模式図である。 蓄積装置で実行される応答処理の制御の流れを示すフローチャートである。 蓄積装置で実行される置換処理の制御の流れを示すフローチャートである。 更新された順序木の様子を示す説明図である。 本実施形態に係る処理装置の概要構成を示す模式図である。 問合せ式の評価処理の制御の流れを示すフローチャートである。 遅延評価の様子を示す説明図である。 順序木を更新する処理の制御の流れを示すフローチャートである。
符号の説明
101 情報処理装置
102 CPU
103 ROM
104 HD
105 キーボード
106 マウス
107 RAM
108 表示装置
109 インターフェース
110 FDドライブ
111 CD−ROMドライブ
401 情報処理システム
431 蓄積装置
451 処理装置
471 通信経路
501 記憶部
502 取得要求受信部
503 取得応答送信部
504 結果部分木受信部
505 置換更新部
901 遅延評価部
902 オブジェクト生成部
903 評価制御部
904 処理生成部
905 結果部分木送信部
911 取得要求送信部
912 取得応答受信部

Claims (8)

  1. 蓄積装置と、処理装置と、を備える情報処理システムであって、
    (a)前記蓄積装置は、
    順序木を記憶する記憶部と、
    前記処理装置から送信された取得要求を受信する取得要求受信部と、
    前記記憶された順序木において、前記受信された取得情報に指定される位置のノードが、子ノードを有する場合は、当該子ノードの数を、リーフである場合は、当該リーフに付与される内容情報を、それぞれ指定する取得応答を前記処理装置に送信する取得応答送信部と、を備え、
    (b)前記処理装置は、
    式もしくは当該式の評価結果を参照する計算可能オブジェクトを、
    (p)当該計算可能オブジェクトが式を参照していれば、これを計算して当該式の評価結果を得て、当該式の評価結果を返し、当該計算可能オブジェクトに、当該式にかえて当該式の評価結果を参照させ、
    (q)当該計算可能オブジェクトが式の評価結果を参照していれば、当該式の評価結果を返す
    遅延評価部と、
    前記蓄積装置に記憶される順序木の根ノードの位置をパラメータとして与えられた問合せ式を参照する計算可能オブジェクトを生成するオブジェクト生成部と、
    所望のリーフに付与される内容情報が返されるまで、前記生成された計算可能オブジェクトもしくはこれに参照される評価結果に含まれる計算可能オブジェクトを、前記遅延評価部に評価させる評価制御部と、を備え、
    前記遅延評価部は、問合せ式を、
    (x)パラメータとして与えられるノードの位置を指定する取得要求を前記蓄積装置に送信し、
    (y)前記蓄積装置から送信された取得応答に、子ノードの数が指定される場合、当該子ノードのそれぞれについて、その位置をパラメータとして与えた問合せ式を含む列を、評価結果とし、
    (z)前記蓄積装置から送信された取得応答に、リーフに付与される内容情報が指定される場合、当該内容情報を評価結果とする
    ように評価することを特徴とするもの。
  2. 請求項1に記載の情報処理システムであって、
    (c)前記処理装置は、
    前記遅延評価部により評価結果として返される列もしくは内容情報から、新たな部分木を生成する処理生成部と、
    前記生成された部分木を処理結果として前記蓄積装置に送信する結果部分木送信部と、をさらに備え、
    前記処理生成部は、前記生成される部分木の根ノードに、前記蓄積装置に蓄積される順序木における当該根ノードの子ノードの位置を指定する位置属性情報を付加し、
    (d)前記蓄積装置は、
    前記処理装置から送信された部分木を受信する結果部分木受信部と、
    前記受信された部分木(以下、当該部分木の子ノードを根ノードとする部分木を「置換結果部分木」という。)について、「『当該置換結果部分木の根ノードに付加された位置属性情報に指定される位置』を根ノードとする部分木(以下、「置換対象部分木」という。)」を、当該置換結果部分木に置換して更新する置換更新部と、をさらに備える
    ことを特徴とするもの。
  3. 請求項1または2に記載の情報処理システムにおける蓄積装置。
  4. 請求項1または2に記載の情報処理システムにおける処理装置。
  5. 請求項3に記載の蓄積装置と通信し、遅延評価部と、オブジェクト生成部と、評価制御部と、を備える処理装置において実行される処理方法であって、
    前記遅延評価部が、式もしくは当該式の評価結果を参照する計算可能オブジェクトを、
    (p)当該計算可能オブジェクトが式を参照していれば、これを計算して当該式の評価結果を得て、当該式の評価結果を返し、当該計算可能オブジェクトに、当該式にかえて当該式の評価結果を参照させ、
    (q)当該計算可能オブジェクトが式の評価結果を参照していれば、当該式の評価結果を返す
    遅延評価工程と、
    前記オブジェクト生成部が、前記蓄積装置に記憶される順序木の根ノードの位置をパラメータとして与えられた問合せ式を参照する計算可能オブジェクトを生成するオブジェクト生成工程と、
    評価制御部が、所望のリーフに付与される内容情報が返されるまで、前記生成された計算可能オブジェクトもしくはこれに参照される評価結果に含まれる計算可能オブジェクトを、前記遅延評価工程にて評価させる評価制御工程と、を備え、
    前記遅延評価工程では、問合せ式を、
    (x)パラメータとして与えられるノードの位置を指定する取得要求を前記蓄積装置に送信し、
    (y)前記蓄積装置から送信された取得応答に、子ノードの数が指定される場合、当該子ノードのそれぞれについて、その位置をパラメータとして与えた問合せ式を含む列を、評価結果とし、
    (z)前記蓄積装置から送信された取得応答に、リーフに付与される内容情報が指定される場合、当該内容情報を評価結果とする
    ように評価することを特徴とする方法。
  6. 請求項4に記載の処理装置と通信し、記憶部と、取得要求受信部と、取得応答送信部と、を備える蓄積装置において実行される蓄積方法であって、
    前記記憶部は、順序木を記憶し、
    前記取得要求受信部が、前記処理装置から送信された取得要求を受信する取得要求受信工程と、
    前記取得応答送信部が、前記記憶された順序木において、前記受信された取得情報に指定される位置のノードが、子ノードを有する場合は、当該子ノードの数を、リーフである場合は、当該リーフに付与される内容情報を、それぞれ指定する取得応答を前記処理装置に送信する取得応答送信工程と、
    を備えることを特徴とする方法。
  7. コンピュータを、請求項3に記載の蓄積装置の各部として機能させることを特徴とするプログラム。
  8. コンピュータを、請求項4に記載の処理装置の各部として機能させることを特徴とするプログラム。
JP2004043408A 2004-02-19 2004-02-19 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム Expired - Fee Related JP4408717B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004043408A JP4408717B2 (ja) 2004-02-19 2004-02-19 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004043408A JP4408717B2 (ja) 2004-02-19 2004-02-19 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム

Publications (2)

Publication Number Publication Date
JP2005234901A JP2005234901A (ja) 2005-09-02
JP4408717B2 true JP4408717B2 (ja) 2010-02-03

Family

ID=35017798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004043408A Expired - Fee Related JP4408717B2 (ja) 2004-02-19 2004-02-19 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム

Country Status (1)

Country Link
JP (1) JP4408717B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5134989B2 (ja) * 2008-01-31 2013-01-30 株式会社東芝 サーバ、データ転送方法及びプログラム
JP4719243B2 (ja) * 2008-04-16 2011-07-06 株式会社エヌ・ティ・ティ・ドコモ データ同期方法および通信装置

Also Published As

Publication number Publication date
JP2005234901A (ja) 2005-09-02

Similar Documents

Publication Publication Date Title
JP5027411B2 (ja) 文書のインスタンスを生成するための装置
JP4418620B2 (ja) データ処理方法、これを用いた指示情報生成システム及びプログラム
JP4997749B2 (ja) 文書処理方法、プログラム及びシステム
JP4384247B2 (ja) 拡張可能マークアップ言語(xml)のための軽量なアプリケーションプログラムインターフェース(api)
JP4388929B2 (ja) 構造化文書の構造変換装置、構造変換方法、記録媒体
JP2005174340A (ja) ソフトウェアアプリケーションにおけるネーム空間あるいはスキーマライブラリ支援のためのプログラム可能なオブジェクトモデル
JP2004030582A (ja) 構造化文書編集装置、構造化文書編集方法及びプログラム
JP2003067185A (ja) アプリケーション編集装置、データ処理方法及びプログラム
JP2007534045A (ja) マークアップ言語を用いる文書を処理する装置
Kaliszyk et al. Towards knowledge management for HOL Light
US20060271850A1 (en) Method and apparatus for transforming a printer into an XML printer
US7131066B1 (en) XML based system for updating a domain model and generating a formatted output
CA2281346A1 (en) Method and apparatus for amplifying design information into software products
JP4408717B2 (ja) 情報処理システム、蓄積装置、処理装置、蓄積方法、処理方法、ならびに、プログラム
US20070097401A1 (en) Electronic paper file generator
JP5142638B2 (ja) 文書変換装置、文書変換方法
JP2002123418A (ja) データ更新方法及びデータ更新装置並びにプログラムを記録した機械読み取り可能な記録媒体
JP4526833B2 (ja) 情報処理システム、蓄積装置、処理装置、ならびに、情報処理方法
JP6607136B2 (ja) 画面構成制御装置および画面構成制御プログラム
CN101639836A (zh) 数据处理设备和数据处理方法
JP4410005B2 (ja) 構造化文書の構造変換装置、プログラム
JP4220439B2 (ja) 構造化データ変換装置及び方法
JP2007532987A (ja) マークアップ言語を用いたデータ及び文書の処理
JP4786695B2 (ja) 構造化文書の構造変換装置
JP5232748B2 (ja) ワークフロー表示支援装置及びワークフロー表示プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091023

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091110

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees