JP2004505379A - Xmlロボット - Google Patents
Xmlロボット Download PDFInfo
- Publication number
- JP2004505379A JP2004505379A JP2002515629A JP2002515629A JP2004505379A JP 2004505379 A JP2004505379 A JP 2004505379A JP 2002515629 A JP2002515629 A JP 2002515629A JP 2002515629 A JP2002515629 A JP 2002515629A JP 2004505379 A JP2004505379 A JP 2004505379A
- Authority
- JP
- Japan
- Prior art keywords
- xml
- document
- state
- robot
- dtd
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Document Processing Apparatus (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Toys (AREA)
- Numerical Control (AREA)
- Spray Control Apparatus (AREA)
- Massaging Devices (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】本発明は、XML文書、書類型定義(DTD)、又は構造ツリーとしての、それらの表現を、テキスト又はグラフィカル・フローチャートで装飾することによってXML文書を直接実行する方法、システム、及び装置に関する。XML文書のデータ構造は、データを処理するコードのために再使用され、それと統合される。
【選択図】図4
Description
(発明の分野及び背景)
本発明は、請求項1及び7から9によるXML文書を直接実行する方法、システム、及び装置に関する。
【0002】
(XMLの基礎)
XMLはSGMLフォーマットのサブセットとして定義されてきた。つまり、XMLは、いわゆるタグによって構造化された文書のフォーマットを定義することを可能にする。XMLは、文書の物理構造及び論理構造の双方を定義するが、本発明の関連では、論理構造に焦点が当てられる。しかし、提供された手段を、物理構造のために再使用する。物理構造から抽出して、XMLは、文書型定義(DTD)及びXML文書の双方を与えるために使用される。特定のDTD Tは、Tに関して有効な文書及びTに関して有効でない文書として、XML文書を分類するために使用される。簡単に言えば、Tに関して有効な文書はDTD Tの文書である。DTDの論理様相は、要素及び属性を定義する。そのような型(DTDによって与えられる)の各々の文書は、定義された要素のインスタンスのみを含まなければならず、要素の属性及び組成はDTDにマッチしなければならない。例として、従属要素X、Y、及びZ、並びに要素Aの属性b及びcの組成を有して要素Aを定義するDTD Tは、XMLでは次のように書かれる。
【0003】
【数2】
【0004】
ここで、#PCDATAは属性b及びcに許容されるデータの種類を定義している。前記のDTD Tの文書は、現在要素Aのインスタンスを含む。要素Aのインスタンスは、開始タグ<A...>及び終了タグ</A>を含む。開始タグの中で、属性の値が与えられ、開始タグと終了タグとの間で、組成要素のインスタンスが与えられなければならない。従って、型Tの文書は、次のように見えるAのインスタンスを含む。
【0005】
【数3】
【0006】
ここで、X、Y、及びZインスタンスの正確な形状は、DTD Tの中の対応する要素定義によって与えられる。
【0007】
XMLの力は、部分的には、要素組成の定義が再帰を許される事実から生じる。例示のため、幾つかの組成可能性を導入し、前記の例を完結するために使用する。既に使用されたシーケンス(X,Y,Z)は、前記の例で示されるように、X要素の次にY要素が続き、Y要素の次にZ要素が続くことを示す。他の重要な組成演算子は、X、Y、又はZ要素の間の選択を示す選択(X|Y|Z)である。他の演算子は、構成部分の繰り返しを示す+及び*演算子であろう。しかし、それらは例では使用されない。
【0008】
Y及びZが組成(<!ELEMENT Y>,<!ELEMENT Z>)を有しないと仮定すると、DTD AはXの定義で完了する。ここで、要素Aへの選択組成及び再帰、即ち、<!ELEMENT X(Y|A)>が使用される。従って、XはY又はAである。型Aの可能な文書は、現在次の通りである。
【0009】
【数4】
【0010】
更に任意に<Y></Y>を繰り返すことができる。簡単にするため、前記の繰り返しで、+及び*のような特別の組成演算子は使用されなかった。ショートカットとして、<Y></Y>を<Y/>で置換することができる。
【0011】
XMLは、長い標準過程の成果であり、広く使用及び受容されている。従来技術に従った既存のアプリケーションは、2つの異なった基本タイプ、即ち、データ交換及び文書公開に分類されてよい。データ交換アプリケーションでは、2つのプログラムの間で複雑なデータを交換するためのデータ・フォーマットを定義するために、XMLが使用される。更に、リレーショナル・データベースシステムに存在するデータの交換フォーマットとして、XMLが使用される。そのようなフォーマットの例は、XMLーdata(マイクロソフト)、MCF(ネットスケープ)、及びRDF(W3C)である。文書公開アプリケーションでは、XMLは、全ての種類の文書をマークアップするための理想的データ言語である。主なアイデアは、文書の論理内容をXML文書として与えること、及び、レイアウト情報を、一般的にDTDのために与えることである。そのような一般的レイアウト言語の例は、CSS又はXSLである。生成されたレイアウトの出力は、HTTP、SPDL、又はPostscriptである。
【0012】
(XML処理)
現存するソフトウェア及びアプリケーションは、データ及び文書を表すためにXMLを使用している。次に、これらのデータ及び文書は、汎用プログラミング言語によって処理される。XML文書を処理する既存の提案は、アプリケーションがデータ交換の領域にあるか文書公開の領域にあるかを問わず、イベント駆動手法及びツリー操作手法に分けられる。イベント駆動アプローチにおいて、文書は厳密なシーケンスで処理される。データ・ストリームの中の各々の要素は、イベント・トリガと考えられる。イベント・トリガは、アプリケーションの側で特別のアクションを促進してよい。SAXアプリケーション・プログラマ・インタフェース(API)は、現存するプログラミング言語の中でイベント駆動アプローチを実現するために使用される。ツリー・アプローチは、構造ツリーの形式をした全体の文書へアクセスすることができる。基本的に、XML文書の要素はツリーのノードであり、各々の要素の構成部分は、ノードのシブリングである。そのようなツリーにアクセスするため普通に使用されるAPIは、DOMである。APIを使用する不利点は、汎用プログラミングの全ての複雑性、特に広範及び複雑なソフトウェアを生じるシステム及びプラットフォーム依存性、信頼性、並びにセキュリティが作用することである。幾つかのXMLツールは、データ交換又は文書公開アプリケーションのために特別なコードを生成することによって、この複雑性を隠そうと試みる。それらのツールは、伝統的プログラミング言語の中でプログラム・パターンを容易に生成することを助けるかも知れないが、処理されなければならない文書をナビゲートするため、明白なプログラミングを使用することから完全に抽象化しない。
【0013】
(伝統的プログラミングに対するXML)
重要な問題は、伝統的な構成方法及びオブジェクト指向プログラミング方法の概念に関する。双方の方法は、プログラムの構造を定義するXML又はBNF規則における要素定義のように、データの構造が作成規則によって与えられないという意味で、非構造化データ・ソースを使用する。そのようなデータ・ソースは、伝統的プログラミングの場合、構造化されているが独立的なプログラムと連結して使用される。他方では、オブジェクト指向プログラミング方法は、構造化及びセグメント化されたコードをデータ・オブジェクトと組み合わせるが、オブジェクト空間(データ)は、前述した意味で構造化されない。もちろん、これらの方法と連結して構造化データ・モデルを使用することは可能だが、いずれの場合も、プログラム構造はデータ構造から独立しており、従って、前述したような複雑な処理が必要になる。実際に、XML文書を処理する現在の事情は、2つの独立した構造、即ち、1つはXML文書構造、他の1つは、それを処理するプログラム構造を暗黙に必要とする。このアプローチは、特に2つの基本的不利点を有する。即ち、(a)もしプログラマがDTDのインスタンスの完全な構造を、信頼性をもって処理しようとすれば、そのようなコードは、対応するXML文書の多様性、及びそのようなタスクの複雑性に起因して、失敗するかも知れないこと、及び(b)XML文書を処理するプログラムは、典型的にはDTDの全ての文書を処理するように設計され、従って、プログラムの複雑性は、コードの固有汎用性によって増加することである。
【0014】
(発明の目的)
本発明の目的は、データ及びソフトウェアが統合された構造の中に組み込まれて、データ処理における基本的プログラミング知識の複雑性及び/又は必要性を低減又は回避するようにXML文書の処理を改善し、XML文書の既存の構造を再使用する方法、システム、及び装置を作り出すことである。
【0015】
本発明の他の目的は、XML文書のために、そのように統合されたデータ及びソフトウェア構造を生成する新規で一般的な方法、システム、及び装置を提供することである。更に、本発明の目的は、標準的文書構造、即ち、XML文書を直接実行する新規な方法、システム、及び装置を提供することである。
【0016】
(発明の概要)
これらの目的は、クレイム1及び7から9までに指定される発明によって解決される。
【0017】
発明的アイデアは、実行可能なソフトウェア及びデータを、協調及び統合された構造の中で使用する新規な方法/システムに基づく。本発明は、アプリケーションとして考えられてよいが、前記のカテゴリー、即ち、データ交換アプリケーション又は文書公開アプリケーションのいずれにも入らない。そのような既存のアプリケーションとは対照的に、本発明は、XML文書を直接実行(又は処理)する方法及び装置を提供する。
【0018】
本発明は、XML文書の既存の構造を再使用し、前記文書を処理しなければならないプログラムの新しい構造及び概念を回避する。従って、発明的アプローチは、各々の文書のために1つのプログラムを定義する(各々のDTDのために1つのプログラムを定義することと対照的に)。従って、処理の複雑性は明白に低減される。
【0019】
XML文書を直接実行するこのような能力は、各々のタグのために、又は各々のノードでローカルな振る舞い及び処理を定義する実行可能命令で、所与のXML文書及び/又はその文書型定義(DTD)を装飾することによって達成される。
【0020】
これは、順次又は並行制御及びデータフローを指定するテキスト形式及び/又は図形チャートへプログラム命令を組み込むことによって達成される。具体的には、これは、XMLロボットの命令のインスタンス化が特定のXML文書へ適用され、その結果、前記XML文書の完全な実行振る舞いを含む実行可能XML文書を生じるような様式で行なわれる。
【0021】
本発明の好ましい実施形態は、XMLロボットのモジュールのために使用されるモジュール構造を指定する独特及び一般的DTDを使用する。特定のXML文書は、そのようなXMLロボットの中で与えられた手順及び仕様をXML文書へ適用することによって処理されてよい。従って、XMLロボットのモジュールは、XML文書の実行が直接実行されるような様式で、前記XML文書の構造の中に組み込まれる。実行は、所与のXML文書のアクセス方法及び変更方法を定義する少数の関数(プリミティブ)に依存する。更に、特別及び独特のフローチャートが、XML文書の前記実行処理を完全に定義する。これらの基本的な発明的定義は、XMLロボットの所与の例が、本発明に従った直接実行へ導かれるという意味で、完全なものである。
【0022】
本発明の他の好ましい実施形態は、グラフィカル・フローチャート(GFC)によって所与のXML文書の要素の各々の種類のために完全な情報を提供する。このGFCは、要素及び構成部分をそれぞれを通る制御フロー、及びどのようなアクションがその制御フローの間に実行されるかを定義する。データフローは、GFCの或る状態に達したときに実行されたアクションによって提供される。GFCの例は、フローチャート、有限状態機械、状態図、UML状態機械、全ての種類のペトリネット、UMLアクションダイアグラム、及び他の種類の計算モデルである。XML文書を構造ツリーとして表現することによって、この実施形態は、純粋な図形様式で定義及び説明されることができる。これは、XMLロボットのために先進的ビジュアル統合開発環境を可能にする。他方では、状態の上でアクションを実行しているシーケンシャルGFCモデル(フローチャート、有限状態機械)のために、この図形的実施形態は、テキスト形式を使用する実施形態の中へ直接マップされることができる。更に、テキスト表現を使用する実施形態は、この実施形態の全てのバリエーションが、グラフィカル・フローチャートを使用する実施形態の中へマップされることができるように、同時アクション(即ち、多数のアクションの並行実行を可能にする)及び矢印上のアクション(即ち、有限状態機械の遷移の上のアクション)を可能にするモデルへ一般化されることができる。
【0023】
双方の実施形態はモジュラ構造によって特徴づけられる。ここで、各々のモジュールは、特定のタグ、例えば<A...>の全ての要素のために実行振る舞いを定義し、同時にそのような要素の構成部分のために実行振る舞いを付け加え、更に、他のタグ、例えば<B...>を有する要素の全てのインスタンスのために実行振る舞いを付け加える。モジュール内の全ての情報は、テキストであれ図形であれ、自己要素と呼ばれる要素の説明された種類(A<...>)のインスタンスに関連している。双方の実施形態において、外部関数を呼び出して文書/ツリーの構造をナビゲートするため、プリミティブが提供される。ナビゲートは、或る種の要素(<A...>)の全てのインスタンスをカバーし、文書/ツリーの追加的属性を定義する。その定義は、純粋に機能的なスタイルで与えられる。もし実行されるXML文書のためにDTDが存在すれば、このDTDは、どのような要素の種類が存在するか、どのような構成部分が、それらの種類のために存在するかの情報を明示的に提供する。従って、そのようなDTDは、XMLロボット仕様を書くための構造及びガイダンスを提供する。双方の実施形態は、明白なDTDなしに働くが、DTDは、後に説明される第1の実施形態の定義及び仕様のために使用される。更に、注意すべきは、DTDを有しないXML文書から簡単なDTDを引き出せることである。
【0024】
好ましい実施形態において、構造ツリーの文書要素/ノードの属性を動的に作成及び再定義することによって、中間結果が記憶される。他のイベント・ベース及び純粋機能/宣言モデルが、同様に可能である。しかし、動的処理情報は、好ましくは、現存する文書/ツリー構造によって与えられる。現存する処理モデルと対比して、文書、又はXML文書の構造ツリーは、XML文書の実行振る舞いの定義であるGFC(又は対応するテキスト形式)の基礎として直接使用されることを理解することが重要である。従って、そのようなXMLロボットは、XML技術を応用してXML文書を処理する新規な基本的方法である。
【0025】
本発明は、特定のプラットフォーム又は処理の具体的な実現形態、例えば、SAX及びDOMのような現存のAPIに制限されないので、ここで与えられる仕様は、そのような具体的な形式から抽象化されなければならない。しかし、使用されるプリミティブは、実現可能に定義される。更に、本発明は、フローチャート又は他の構造的実現形態、例えば、中間形式/結果が生成されるかどうか、又はXML文書がコンパイラ及びインタープリタ又はそれらの組み合わせによって実行されるかどうかなど、実現する特定のプログラミング言語に制限されない。
【0026】
(好適実施形態の説明)
本発明の好ましい実施形態が、これから図面を参照して説明される。
【0027】
本発明は、XML文書の直接実行を実現する。次の実施形態は、方法、システム、及び装置の図形的及びテキスト的実現を説明する。以下の例は、所与及び既知のDTDのXML文書に関連するが、本発明は、或る欠点、例えば、定義されない結果を考慮に入れて、既知のDTDを有しないXML文書の実行を可能にすることを理解しなければならない。いずれにせよ、DTD(もし前もって知られていれば)又はXML文書は、XMLロボット仕様を直接組み込まれる(DTD又はXML文書の「装飾」)。本発明は、前述したように、具体的な実現形態(プラットフォーム、プログラム言語、構造形式、例えば、記憶及び処理)から基本的に独立している。しかし、適用可能である場合、特定の実現形態を使用する好ましい実施形態が、これから説明される。
【0028】
図1から図8を参照して、本発明の第1の図形的実施形態が説明される。
【0029】
図1は、3つの構成部分を含む要素クエリーを有するサンプルDTDを示す。2つの構成部分は型アクションであり、オプションの構成部分は型クエリーである。要素クエリーの属性リストは、単一の属性質問から構成される。属性質問は、必須の文字データ属性である。要素アクションは、要素セットポイント又はクエリーのいずれかを含む。要素セットポイントは、構成部分を含まず、単一の属性ポイントを有する。
【0030】
図2は、図1のサンプルDTDに関して有効な文書を表す。この文書は、図1で与えられたDTD「query.dtd」を参照する。この例は、これから更に説明されるサンプル文書として使用される。
【0031】
図3は、属性構造ツリー(AST)に対する図2の文書の対応する可能なマッピングを示す。そのようなASTは、XML文書の構造の代替図形的表現である。番号1及び3のノードは、要素クエリーのインスタンスである。それらは、S1アクション及びS2アクションとしてアクセス可能な2つの必須のアクションシブリングを有し、オプションのクエリーシブリングは存在しない。もしクエリーシブリングが存在すれば、それはSクエリーとしてアクセス可能である。ノード2、4、及び5は、シブリングを有しない要素セットポイントのインスタンスである。属性及びそれらの値は、ボックスの中にビジュアル化される。
【0032】
図4は、DTDの実行仕様と、DTDのインスタンスの実行方法との関係を示す。仕様は、純粋なDTD定義、及び好ましくはグラフィカル・フローチャート(GFC)並びにチャートの或る状態に達したときトリガされるアクションから構成される。左側のボックスは、純粋なDTD構成部分、グラフィカル・フローチャート(GFC)の定義(ビジュアル記述)、及び遷移規則の中に構造化されるDTDの実行仕様を表す。遷移規則は、制御がチャートを流れる間に起動される。代替として、DTDを有しないXML文書の要素インスタンスのために、同じ仕様を与えることができる。
【0033】
右側のボックスは、この構造が、どのようにXML文書の直接実行を暗黙に意味するかを示す。DTDは、もし存在すれば、XML文書の有効性を検証するために使用される。属性構造ツリー(AST)が構成される。GFCは、ASTを装飾するために使用され、従って、解析されたXML文書に対応するグローバル・フローチャートを生じる。文書は、GFCを実行することによって実行される。例えば、それは、GFCの或る状態に関連したアクションをトリガし、GFC内で条件に従って制御フローを処理することによって実行される。
【0034】
完全な実行仕様が、仕様モジュールの中へ構造化される。各々の仕様モジュールは、その要素の実行振る舞い、及び、その要素の構成部分並びに他の要素の種類のインスタンスの追加的実行振る舞いを記述する要素宣言に対応する。
【0035】
図5は、図1に従ったクエリー要素の仕様モジュールが、どのように見えるかの例を与える。仕様モジュールの最上部分は、関連する要素及び属性の定義を含む。中間部分は、要素クエリーのインスタンスのために実行振る舞いを指定するGFCフラグメントを与える。GFCフラグメントは、図形的表現の好ましい方法を使用して与えられる。最後に、遷移規則が図5の底部に示される。
【0036】
図4及び図5を参照して、図1のサンプルDTDの図形的表現を使用する好ましい方法を、これから詳細に説明する。示された例は、有限状態機械、状態図、古典的フローチャート、又はUML状態機械に匹敵するシーケンシャル制御を有するGFCを表す。手順は、分散されたGFCのためにペトリネット、又はUML活動チャートの変形と類似の様式で働く。この実施形態において、XML文書の実行振る舞いは、アクションと関連した状態を有するシーケンシャル・グラフィカル・フローチャートによって与えられる。代替の実施形態において、GFCの矢印は、アクションと関連づけられてよい。現在の例示的実施形態において、GFCの任意の状態では、対応するアクションが起動され、その後に、次の状態への状態遷移が続く。他の状態ベースの形式(例えば、ハレルの状態図)におけるように、現在のGFCでは、制御のフローを決定するブール述語で制御矢印にラベルを付けることができる。それによって、ラベルは省略されてよい。ラベルなしの制御矢印は、デフォルトの振る舞いを有する。例えば、もしもそのソースから生じる他の矢印が真へ評価されるラベルを有しないならば、ラベルのない矢印がアクティブになる。
【0037】
図4の左側で示されるように、DTDの振る舞いの仕様は、3つの部分、即ち、DTD定義それ自身、GFCを指定するビジュアル表記、及びアクションの仕様から構成される。更に、実行前に追加の属性を計算する仕様が存在してよい。この仕様は、好ましくは、DTD及び追加の派生属性の仕様によって定義される属性に依存して、機能依存性及びセキュリティ条件によって与えられる。DTDは、パーサを生成するために使用され、次に、解析されたXML文書は、ASTの中へ標準様式でマップされる。仕様の第2の部分は、GFCにおける状態遷移に関して制御フローを記述する。ビジュアル記述は、DTDの各々の要素宣言に関連づけられ、ローカルGFCを定義し、また、このGFCが、ASTの帰納的装飾を介してグローバルGFCへプラグインされることができる方法を指定する。この目的のために、ASTの各々のノードは、その図形的表現によって与えられたGFCフラグメントのコピーで装飾される。ノードの子孫への参照は、グローバルGFCの実行に関連して後で説明するように(図7及び図8を参照)、グローバルGFCの帰納的構成を定義する。最後の部分は、文書の実行中に起動されるアクションを指定する遷移規則から構成される。GFCの任意の状態は、この状態に達したときに起動される遷移規則と関連づけられてよい。GFC内の遷移は条件付きであって、条件はASTのノードの属性から組み立てられる。
【0038】
図5のGFCは、「質問する(ask)」と呼ばれる状態を表す丸いノードを含む。もしもその状態に達すると、モジュールの最下部にある対応するアクションがトリガされる。従って、制御は、フローの矢印にラベルが付いた条件に依存して、S1アクションとラベルを付けられたボックス、又はS2アクションとラベルを付けられたボックスへ流れる。ボックスは、ラベルによって参照されるシブリングに対応するGFCを表す。I及びTの矢印は、制御フローの入口点及び出口点を表す。
【0039】
第1の実施形態において、後で説明するように、I及びTは、「初期」及び「終期」と呼ばれる正規状態のように処理される。IからTへの矢印は、「初期」から「終期」への遷移として明白に与えられなければならない。更に、ボックスへの矢印は、ボックスの「初期」状態への矢印として明白に与えられなければならず、ボックスから出る矢印は、ボックスの「終期」状態から出る矢印として与えられなければならない。この対応は、以下の説明で、GFCをテキスト形式で示す図1から図8に関連して容易に理解されてよい。
【0040】
図6は、図1のサンプルDTDの仕様モジュールアクション及びセットポイントを示す。アクションは、セットポイントとクエリーとの間の選択であり、従って、それはこれらの要素定義のGFC定義を継承し、セットポイント要素モジュールは、1つの状態から構成される平凡なGFCを導入する。その対応するアクションは、属性ポイントによって与えられた数だけポイント・カウンタの値を増加している。
【0041】
前述したように、各々の仕様モジュール内のビジュアル表記は、仕様モジュールに対応するASTの各々のノードに関連したローカルGFCに関する情報、及び入力文書に対応するグローバルGFCの中へローカルGFCを埋め込むために必要な情報を含む。
【0042】
図7は、図形的表現の各々からの図形フラグメントが、例示の文書に対応するASTのノードとどのように関連するかを示し、それによって、グローバルGFCが、図5及び図6に従ったGFCをASTの対応するノードとマッチさせることによって、どのようにASTから得られるかを例示する。GFCフラグメントの2つのインスタンスがモジュールクエリーによって与えられ(図5を参照)、平凡なGFCフラグメントの3つのインスタンスがモジュールセットポイントによって与えられる(図6を参照)ことが分かる。再び、この図は、図形的表現が到達するAST内の各々のノードの装飾を示す。そのような図形の装飾は、好ましい様式で制御フローを達成してよい。しかし、本発明は、テキストのプログラム命令又は他の手段が、ここではグラフィカル・フローチャートで達成されるアクションの制御フロー及びトリガと取って代わる解決法を使用してよいことを理解すべきである。
【0043】
図8は、これらのフラグメントの帰納的ネストから生じる階層GFCを示す。図7のGFCフラグメントは、シブリングを参照するボックスを含む。ネストは、これらの参照を解決することによって行なわれる。
【0044】
制御フローについて、ここで使用されるビジュアル表記の詳細な理解は、以下の仕様によって与えられる。仕様モジュールの中で使用される図形的表記の意味は、以下で説明される。
【0045】
2種類のノード、即ち、楕円とボックスが存在する。楕円はGFCの通常の状態を表す。それらは、更に、アクション名をラベルづけされている。アクション(遷移規則を使用して指定される)は、状態に達したとき起動される。ボックスは、GFC自身である上位状態に対応する。更に、ボックスは、ASTのノードに対応する。GFCにおける上位状態と、ASTにおけるノードとの、この直接的1対1の対応は、ASTの構造と実行振る舞いの構造との識別の詳細な実施形態である。もちろん、ボックス、構成部分へのボックスの参照、及び構造の1対1の対応を説明されたように使用することは、GFC、フロー条件、及びアクションの特定の形式から独立である。
【0046】
ボックスは、要素定義の右側にある構成部分に対応するGFCである。これらのGFCの定義は、それぞれの要素に対応する仕様モジュールの中で与えられる。矢印は、生成されたGFCの階層状態遷移図の中のエッジに対応する。矢印のソース及びターゲットは、ボックス又は楕円のいずれかである。これに加えて、2つの矢印が存在する。1つの矢印は、そのソースをI(初期)としてマークされ、そのターゲットをボックス又は楕円としてマークされる。他の矢印は、そのターゲットをT(終期)とマークされ、そのソースをボックス又は楕円としてマークされる。Iでマークされた矢印は、ローカルGFCへの入口を示し、Tでマークされた矢印は、そこからの出口を示す。GFCの上位状態への遷移は、この上位状態を構成するGFCの第1の状態(I矢印でマークされる)へ入ることである。各々の仕様モジュールにおけるビジュアル記述の中のボックスは、対応するGFCへの参照である。図7に示された装飾サンプル文書について、これらの参照を解決すると、図8に示されるGFCになる。この生成された階層GFCは、XML文書の実行振る舞いを与え、階層GFCの直接実行が可能であり、XML文書の直接実行が可能になる。XML文書を直接実行する能力は、好ましい実施形態の中に示されたGFCの特別の種類に依存せず、直接実行されるGFCの任意の形式が適合している。
【0047】
GFCの例示形式では、状態図と同じように、I矢印で示される初期状態から階層状態へ入る。もし最終状態(出発するT矢印でマークされる)に達すると、階層の中で1レベル上の状態へ遷移する。
【0048】
従って、図8の階層GFCの実行は、次のように働く。制御は、構造ツリーのルート、即ち、ノード1に入る。対応するGFCの初期状態は、ノード1の中のask(質問する)状態である。このノードの質問属性は、「パリはフランスの首都ですか?」である。askアクションをトリガした後、返答属性は「イエス」か「ノー」に設定されなければならない。もし返答が「イエス」に等しければ、制御は、ask状態を出て上方の制御矢印をたどり、上位状態2へ入る。上位状態2の初期及び終期状態は、設定(set)アクションである。設定アクションを実行して上位状態2を離れた後、(オプションであり、実際には存在しない)Sクエリーシブリングに遷移する。これは何のアクションもトリガせず、上位状態1を離れる。もし上位状態1のask状態における質問への返答が「ノー」であったならば、上位状態3が入られ、上位状態3の初期状態askも遷移する。今度は、質問「確実ですか?」が質問される。もし返答が依然としてイエスであれば、ポイント・カウンタは0だけ増加され、そうでなければ1だけ増加される(上位状態4及び5)。
【0049】
本発明の好ましい実施形態において、前記状態は、データ立方体によって処理される。アクションの遷移規則は、そのようなデータ立方体の内容を点別に再定義する。これは、命令的プログラミング・システムの単純モデルを仮定することによって、より良好に理解される。システムの状態は、多次元データベースによって与えられる。データベースは、n次元の立方体から構成される。n次元の立方体fの内容は、項f(t1;:::;tn)によって読み出されることができる。ここで、t1:::tnは、データベースの立方体の上に構築された項である。通常の変数は0次元立方体に対応するが、アレイ及びレコードは、1次元立方体でモデル化されることができる。
【0050】
立方体の中に記憶される可能な値は、通常のデータ型、例えば、整数、実数、ブール値、又は特定のアプリケーション、例えば、構造ツリーのノード、又は動的生成オブジェクトに必要な値のレンジであってよい。構造ツリーのノードの属性は、1次元立方体によってモデル化され、ノードnの属性aの値は、項a(n)によって検索されることができる。便宜上、属性文法及びオブジェクト指向プログラミングで使用されるドット表記、例えば、a(n)に代わるn.aが、同様に使用される。
【0051】
例えば、基本的更新規則は、形式f(t1;:::;tn):=vである。ここで、(t1;:::;tn)及びvは、システム内の立方体の上に構築された項である。そのような規則の意味は、所与の座標位置における立方体fをvへ更新することである。規則は、順次様式又は並列様式で構成されることができ、従って、対応する更新は全て一度で実行される。前記の基本的遷移規則とは別に、他の遷移規則が存在してよい。例えば、評価されたブール条件項に起動が依存する条件付き規則、或る種類の全ての要素に同じ規則を起動することを許す全体適用規則、或る種類の1つの要素を選択することを許す選択規則、及び最後に、新しい要素の導入に使用される拡張規則が存在してよい。遷移規則は、これらの規則から再帰的に作り上げられる。
【0052】
引き続いて図8を参照しながら、遷移規則を実行するプロセスを、より詳細に説明する。図5及び図6の図形的表現で与えられたアクション規則を使用してサンプルプログラムの実行をたどることが可能である。初期状態は、アクションaskのラベルを付けられた簡単な状態である。この状態への入口は、ASTのルートノードに付属した図形フラグメントの中のI矢印によってマークされる。askアクションは、前述したクエリーモジュール(図3を参照)の中で指定され、属性質問で利用可能な質問「パリはフランスの首都ですか?」のプリントを生じる。次に、ユーザ入力が得られ(例えば、get(stdin))、属性返答が、提供された入力へ設定される。このアクション規則が実行された後、この状態からの出発矢印の上の条件が評価される。2つの矢印がask状態から出る。1つは条件返答=「イエス」のラベルを付けられ、他の1つは条件返答=「ノー」のラベルを付けられる。返答の値に依存して、対応する矢印がたどられ、上位状態ノード2又は上位状態ノード3へ導かれる。返答が「ノー」であったと仮定すると、下方の矢印をたどり、上位状態3へ入るであろう。これは上位状態であるから、それは、この上位状態を構成するフローチャートの状態を通る遷移のシーケンスへ導かれる。この場合、この上位状態の内部の初期状態は、再び、楕円で示される単純状態である。この楕円は再びアクションaskのラベルを付けられている。今度は、質問属性は「確実ですか?」へプリントされる。ユーザの返答に依存して、次にノード4又はノード5がたどられる。これらのノードは、上位状態であり、アクションsetのラベルを付けられた1つの状態を含む。このアクションは、ポイント属性で指定された数のポイントを0次元立方体へ加える。その結果、最初の質問へ「イエス」と返答したユーザは、10ポイントを獲得し、「ノー」と返答して次に「イエス」と返答したユーザは0ポイントを獲得し、最初の質問に「ノー」と返答して第2の質問に「ノー」と返答したユーザは1ポイントを獲得する。生成されたGFCの構造によって、最初の質問に「イエス」と返答したユーザは、第2の質問を決して質問されない。
【0053】
更に要約すると、XML文書は、前述したそのGFCを生成し、次にそのルート要素の初期状態(又は、並行実行の場合は複数の状態)からスタートすることによって実行される。初期状態は、文書のルートに対応する上位状態に入り、I矢印をたどることによって発見される。もしI矢印が正規の状態へ導かれるならば、この状態へ入り、そうでなければ、I矢印は再帰的にたどられる。もし初期状態に入ると、そのアクションがトリガされる。次に、出発制御矢印の上の条件が評価され、満足された条件を有する矢印(又は、並行の場合は幾つかの矢印)が選択される。もし矢印が正規状態へ導かれるならば、この状態が実行され、手順が繰り返される。もし矢印が上位状態へ導かれるならば、I矢印が繰り返してたどられ、次の状態が決定されて実行され、手順が繰り返される。もし矢印がT矢印であれば、上位状態から出て、満足する条件を有する上位状態の出発矢印の1つが選択される。この矢印は、前述したように再びたどられる。
【0054】
従って、XML要素定義のアクションの組成は、図形及び/又はテキスト、順次又は並行制御及び/又はデータ・フローチャートによって表現される。特別のテキスト及び/又は図形手段が、XML要素定義の構成部分を参照するために提供される。これは、各々の要素定義の中の構成部分によって与えられる文書構造が、構成部分のアクションのトリガによって与えられる実行構造の中で直接再使用される構成部分のアクションの同期及び/又は非同期実行を可能にする。更に、アクション組成の順次又は並行実行の順序を定義する特別の図形及び/又はテキスト手段が、指定された順序の或る実行パスを防護する条件と一緒に提供されてよい。これらの特別の図形及び/又はテキスト手段は、アクションの組み合わせが定義されるノードを参照するため、及びその構成部分を参照するため、及びXML属性定義によって与えられるその属性を参照するため、条件及びアクションの定義の中に含まれてよい。
【0055】
これから、図9から図18を参照して、本発明の第2のテキスト実施形態を説明する。
【0056】
図9は、本発明によるXML文書の実行振る舞いを表すXMLロボットモジュールの独特な一般的DTDを示す。今後、図9以降を参照して、本発明のテキスト実現を使用する実施形態を詳細に説明する。図9以降を説明するため、必要なシンタックス及びプリミティブ関数が、最初に定義及び説明される。次の定義は、テキスト(テキスト・ベース)の実現に焦点を置いている。
【0057】
実行されるXML文書は、「doc.xml」と名前を付けられ、XMLロボットは、もし要素名がXであれば、ファイル名「moduleX.xml」を与えられた文書によって定義される。更に、全てのそれらのファイルは、doc.xmlの実行を説明する図10以降に示されるフローチャートによって自由に変更されてよいと仮定する。実行の状態は、言及された文書、及び11のグローバル変数、ここでは、cur、mod、state、derived、subcur、submod、curstate、action、trans、src、及びtrgの値から構成される。実行は、属性を作成及び再定義し、モジュールの状態要素を文書「doc.xml」の中へ貼り付けることによって、前記所与の文書を変更する。更に、グローバル変数の値は、実行の間に再定義(更新)される。例えば、もし変数curが、実行の現在の状態で値v1を有するならば、更新されたcur:=v2の実行は、変数curが値v2を有する新しい状態を生じる。現在の定義において、グローバル変数の値は、XML文書の内部の参照であるか、定数undefである。
【0058】
処理されるXML文書は、前述した標準構造を使用する。この構造は、形式<A...>...</A>の開始及び終了タグを有する要素を含む。要素への参照は、文書の中のポインタである。参照を実現するためには、(a)テキスト位置を使用するか(もし更なるテキストが文書の内部に貼り付けられるならば、それらの更新が強制される)、(b)XMLリンク定義の中の既存の参照メカニズムを使用するか、(c)XML構造ツリー、例えばDOM、又はGFCを使用して実施形態の中で説明されたツリーのオブジェクト・モデルの中のオブジェクトへのポインタを使用する。
【0059】
実行プロセスを、より良好に理解するため、前記要素の属性へ焦点が設定されてよい。例として、値「13」を有する要素Aの属性aaは、<A aa=“13”>...</A>のように与えられる。属性の値を読み出すため、関数evalAttr(_,_)が提供される。この関数は、2つの引き数、即ち、要素への参照及び属性名を取り、属性の値を返す。doc.xmlが前記要素Aを含み、rがその要素への参照であると仮定すれば、項evalAttr(r,“aa”)は「13」へ評価される。シンタックス「r.evalAttr(“aa”)」はevalAttr(r,“aa”)に等しい。他のアクションの類似のシンタックスが、便宜的に図10以降の説明で使用される。
【0060】
以下のパラグラフで説明されるXML文書の実行は、属性が動的に更新及び/又は作成されることを必要とする。従って、3つの引き数を取る手順setAttr(_,_,_)が提供される。即ち、第1の引き数は要素への参照であり、第2の引き数は属性名への参照であり、第3の引き数は、更新(作成)される属性の新しい(初期)値である。例えば、アクションr.setAttr(“aa”,“15”)は、文書doc.xmlを変形し、rによって参照される前記要素Aが形式<A aa=“15”>...</A>になるようにする。アクションr.setAttr(“bb”,“7”)は、文書doc.xmlを変換して、rによって参照される要素が形式<A aa=“13” bb=“7”>...</A>を有するようにする。もし双方のアクションが、いずれかの順序でトリガされると、rによって参照される要素の結果の形式は、<A aa=“15” bb=“7”>...</A>になる。この実施形態において、参照された要素は、物理文書、例えば、doc.xmlの一部分であり、前記要素の変換は、XML文書の破壊的な非可逆変化を生じる。
【0061】
更に、XMLの中に存在する標準値v、例えば文字列及び数字に加えて、属性は、例えば、前記の例における参照rのように、文書内の(他の)要素への参照である値へ設定されてよい。前述したように、そのような参照は、アクションr1.setAttr(a,v)によって項r1.evalAttr(a)がvへ評価される限り、他のアクションr1.setAttr(a,v’)が、異なった値v’を使用して同じ要素r1、及び同じ属性aへトリガされるまで、様々な方法で実現されてよい。
【0062】
アクション「PasteInside」は、テキストをXML文書の中へ貼り付けるために使用される。アクションは2つの引き数を有する。第1の引き数は要素への参照であり、第2の引き数は貼り付けられるテキストである。テキストは、参照される要素の開始タグの直後に貼り付けられる。再び、参照rを与えられると、アクションr.pastInside(“textsample”)は、doc.xmlの内部の参照された要素Aを、<A aa=“13”>textsample...</A>の中へ変換する。
【0063】
アクション「Copy」は、参照から文字列を作成するために使用される。再び、doc.xml内の要素Aを指す参照rの前記の例を与えると、項r.copyは、文字列「<A aa=13>...</A>」へ評価される。この文字列は、参照された要素と構文的に同じであるが物理的に異なる。もし要素がコピーされると、要素の属性は同じままであるが、コピーされた要素への参照は、コピーが取られた文書のみを指したままである。
【0064】
前記のアクション「PasteInside」及び「Copy」は、1つの文書から他の文書へ部分をコピーするために使用される。
【0065】
2つの文書が与えられ、
【数5】
【数6】
【0066】
参照r1はdoc1.XMLの要素Bを指し、r2はdoc2.XMLの内部要素Cを指すとすれば、アクションr1.pasteInside(r2.copy)は、変換された次のdoc1.XMLを生じる。
【0067】
【数7】
ここで、doc2.XMLは不変のままである。r2によって参照される要素Cの属性は、コピーされるが、doc2.XMLへの参照は変更されない。
【0068】
物理文書、例えば、ファイルdoc.xml(又は、moduleXYZ.xmlファイルの1つ)を与えられたとすれば、項getRef(“doc.xml”)は、文書のルート、例えば、最も外側の開始/終了タグのカップルへの参照へ評価される。更に、項r.getLabelはrによって参照される要素の名前を評価する。doc1.XML及びdoc2.XMLを有する前記の例では、r1.getLabelは「B」と評価し、r2.getLabelは「C」と評価する。
【0069】
XML文書を通るナビゲーションは、関数getFirst(_,_)、getNext(_)、及びparent(_)を使用して行なわれる。3つの全ての関数の最初の引き数は、XML文書の内部の要素への参照である。参照rが与えられると、r.getFirst(“A”)はrの開始及び終了タグの内部で最初の要素Aへの直接の参照を評価する。ネストされたインスタンスは考慮されない。doc1.XML及びdoc2.XMLを有する例において、参照r1は項getRef(“doc1.XML”)によって得られ、参照r2は項getRef(“doc2.XML”)によって得られる。
【0070】
もし要求された名前を有する要素が存在しなければ、getFirstは定数undefと評価する。更に、getRefはネストされた要素を参照しない。前記の例を参照すると、getRef(doc1.XML).getFirst(“A”)は内部のA要素への参照と評価せず、undefと評価する。内部のA要素への参照を得るためには、getRef(doc1.XML).getFirst(“B”).getFirst(“A”)を使用しなければならない。
【0071】
getFirstの定義の結果として、任意の参照r及びラベル“I”について、r.getFirst(“I”).getLabel=“I”であるか、r.getFirst(“I”)=undefである。
【0072】
関数getNext(_,_)は、もし存在すれば、同じラベルを有する次の要素への参照を返す。そうでなければ、undefを返す。次のXMLフラグメントへの参照rが与えられると、
【0073】
【数8】
【0074】
参照r.getFirst(“B”)はx =“1”を有するB要素を参照し、参照r.getFirst(“B”).getNextはx=“2”を有するB要素を参照し、参照r.getFirst(“B”).getNext.getNextはx=“4”を有するB要素を参照する。X=“3”を有するB要素を参照するためには、r.getFirst(“B”).getNext.getFirst(“B”)と書く必要がある。
【0075】
関数parentは、要素への参照を、最小の閉止要素への参照へマップする。doc1.XM及びdoc2.XMLを有する例では、r1.parent=getRef(“doc1.XML”)であり、r2.parent.parent=getRef(“doc2.XML”)である。
【0076】
関数CopyList(_,_)は、最初の引き数として参照を取り、第2の引き数として要素名を取る。r.CopyList(a)は、(ネストされていない)rの中の全ての要素Aを直接連結することによって文字列を組み立てる。従って、前記のgetNextパラグラフの中の例が与えられると、r.CopyListは、文字列「<B x=“1”></B>B x=“2”><B x=“3”></B></B><Bx=“4”></B>」を生じる。これは3つのB要素を含み、2番目のB要素は他のネストされたB要素を同時に含む。
【0077】
最後に、関数traverseが提供される。ルートへの参照からスタートして、traverseは、或る順序で文書内の全ての要素を数える。
【0078】
ここで図9では、モジュールのDTDが定義される。このDTDの要素は、これから順序を追って説明される。典型的には、モジュールは別々のモジュールファイルとして与えられる。もちろん、DTDは、独特のルート要素で完了しなければならない。しかし、全てのモジュールのリストを有する完全な言語が、1つのDTDの中に含まれてよい。最も上方のモジュール要素は、これらのモジュールファイルのルートである。
【0079】
モジュールの構成部分は、派生属性のリスト、オプションの式、状態のリスト、及びモジュール(サブモジュール)のリストである。名前属性は、モジュールを適用できる要素を示す。定義は、実行される文書の中に要素「X」が存在すること、module要素であるルート要素を有する「moduleX.xml」と呼ばれるXML文書が存在すること、前記ルート要素が値「X」を有するname属性を有することである。
【0080】
【数9】
【0081】
派生属性のリストは、他の属性定義からの関数依存によって与えられる属性定義を含む。オプションの式はセキュリティ条件を与え、セキュリティ条件は、そのような要素の各々のインスタンスによって充足されなければならない。状態は、そのような要素の各々のインスタンスの(ネストされない)状態である。最後に、モジュールのリストは要素の構成部分を参照する。構成部分の各々のために、サブモジュールが状態及び更なるサブモジュールを含んでよい。サブモジュールのために、番号属性が、どのインスタンスを参照するかを示す。もしそれが最初のインスタンスを参照すれば、番号は値「1」等を有する。以下同様である。もしそれが全てのインスタンスを参照すれば、番号は値allを有してよい。
【0082】
【数10】
【0083】
派生属性の定義は2つの構成部分を有する。即ち、定義で利用可能な引き数、及び式として与えられる実際の定義である。名前属性は派生属性の名前を与える。派生属性は、引き数の値を設定し、定義している式を評価することによって評価される。
【0084】
状態の構成部分は、状態に達したときにトリガされるアクションのリスト、及び状態から出発する遷移のリストである。状態の名前は、何らかの遷移のターゲットとしてそれを参照するために使用される。
【0085】
【数11】
【0086】
遷移の2つの構成部分は、遷移を防護する式、及び遷移のターゲットを表記するパスである。派生関数の全ての式、パス、アクション、及び定義は、それらの原点、即ち、モジュールのルート、実行されるXML文書の中のそのインスタンスに依存する。
【0087】
【数12】
【0088】
パスは、オプションの構成部分、及び属性状態から構成される。状態は、パスが指し示す状態の名前を示す。典型的な状態は、初期状態の「初期」、及び最終状態の「終期」である。構成部分は、ネストされた構成部分を参照し、属性番号は、再び、選択されたインスタンスを示す。もし番号の値がallであれば、パスは、全てのインスタンスへのパスのファミリーに対応する。
【0089】
【数13】
【0090】
式は、様々な場所で使用され、次のように定義される。
【0091】
【数14】
【0092】
式として使用されるパスは、対応する要素を評価し、パスによって参照される状態を評価しない。selfは、それが使用される定義を含むモジュールのインスタンスである要素を評価する。srcは、アクションの中で使用された場合は、最後に実行された状態を含む要素を評価し、遷移の中で使用された場合は、遷移のソースを含む要素を評価する。trgは、遷移のターゲットを含む要素を評価する。evalattr、getfirst、getnext、及びparentは、前述した対応するプリミティブ関数を評価する。rootは、実行される文書のルートへ評価される。applyは、組み込まれた2項及び単項演算子、例えば、算術演算子(+、−、*、...)、ブール演算子(and、or、not、...)、及び文字列演算子(append、concatenate、...)のために使用される。externalは、任意のプログラミング言語で書かれた外部関数を呼び出すために使用される。最後に、constantは、定数、例えば、数字、即ち、ブール値、及び文字列を示すために使用される。
【0093】
フローチャートにおいて、抽象関数evaluate(_)は、式の要素を評価するために使用される。
【0094】
アクションは、もし、ある状態に到達すればトリガされ、次の構造を有する。
【0095】
【数15】
【0096】
setAttrアクションは、前述したsetAttrプリミティブに対応する。ifthenは、或る条件のもとでのみ或るアクションを実行するために使用され、forallは、文書内の或る要素の全てのインスタンスのためのアクションを実行するために使用される。External構文は、再び、外部関数を呼び出すために使用される。
【0097】
フローチャートにおいて、抽象手順execute(_)は、アクション要素を実行するために使用される。
【0098】
定義は、式及びアクション文法の具体的選択から独立して有効でなければならないから、図9に従ったDTDは、要素<!element src EMPTY>を有する行19でスタートする残りの規則で完了する。
【0099】
図10から図16を参照して、所与のXML文書doc.xmlの実行が、より詳細に説明される。図10から図16は、実行プロセスを指定する6つの固定フローチャートF1、F2、F2、F3、F4、及びF7を示す。第1の実施形態に関連して説明されたGFCとは対照的に、これらのフローチャートは、実行される文書やロボットモジュールに依存せず、任意の文書及び任意のロボットモジュールのために固定される。各々のフローチャートは、実行される所与のXML文書doc.xmlの実行の論理ブロックを参照する。モジュールは、各々の要素名Xのために別々のファイルmoduleX.xmlとして提供される。各々のフローチャートFyの状態は、[Fx.Sy]として参照される。ここでxはフローチャートの番号を表し、yは対応するフローチャートの中の状態番号を表す。
【0100】
本発明によれば、XML文書(又は、他の実施形態では、DTD)が最初に通過され、モジュールからの全ての状態及び遷移がXML文書の中にコピーされる。続いて、XML文書がスタンドアローンで実行される。コピー・プロセスの間に、各々の状態の「原点」属性が現在通過された要素、例えば、コピー・アクションがトリガされた要素へ設定される。従って、原点属性の値はdoc.xmlの要素への参照である。
【0101】
図10に示される実行の初期状態は、[F1.S1]である。グローバル変数curの値は、文書「doc.xml」のルートへの参照へ設定される。次に、制御は状態[F1.S2]へ渡される。これは、グローバル変数modの値を、ルートの実行振る舞いを記述する「module」要素、例えば、curのラベルに対応する名前を有するモジュールへの参照となるように設定する。次に、制御は、フローチャートF2の状態[F2.S1]へ渡される。F2の目的は、全ての「状態」及び「派生」要素を、モジュールmodから要素curへコピーすることである。これは、全ての状態及び派生の属性「原点」をcurへ設定する。F2の最後の状態[F2.S99]から、制御はF3の最初の状態[F3.S1]へ渡される。F3の目的は、モジュールmodのサブモジュールの「状態」及び「派生」要素を、要素curの対応する構成部分の中へコピーすることである。これは、依然として全ての「状態」及び「派生」要素の属性「原点」をcurへ設定する。F3の最後の状態[F3.S99]から、制御は[F1.S3]へ渡される。これは、curをcur.traverseへ更新する。次に、決定[F1.D1]がcur=undefの条件で分岐する。もし条件が真であると評価されると、通過は終了し、制御は[F5]へ渡される。そうでなければ、制御は[F1.S2]へ戻される。
【0102】
モジュールF5は、ネストされたモジュールの中にネストされたモジュールを処理し、セキュリティ条件をチェックする補助的手順を含んでよい。特別の実施形態のみで使用されるこれらの手順は、標準処理構造を使用して実現されてよい。[F5]から、制御は[F6]へ渡される。再び、モジュールF6は、特別の実施形態のみで使用され、異なった方針、例えば、実現される遷移条件などの優先順位に従って再配列される状態、遷移、及び派生属性を含む。[F6]から、制御はF7の最初の状態[F7.S1]へ渡される。
【0103】
注意したように、F2(図11)の目的は、モジュールmodの「状態」及び「派生」要素を要素curへコピーし、それらの要素の「原点」属性をcurへ設定することである。最初に要素をコピーし、次に属性を設定するのではなく、属性はモジュールmodの中で正しい値へ設定され、その後に、「状態」及び「派生」要素がモジュールmodから要素curへコピーされる。グローバル変数stateは、modの中の「状態」要素をカバーするために使用され、グローバル変数derivedは、「派生」要素をカバーするために使用される。最初の状態[F2.S1]は変数stateをmodの中の最初の「状態」へ設定する。次に、制御は[F2.D1]へ渡され、そこから制御は、もしstate=undefであれば[F2.S3]へ渡され、そうでなければ[F2.S4]へ渡される。stateがundefでない場合に到達される[F2.S3]において、stateの属性「原点」がcurへ設定される。そこから、制御は[F2.S3]へ渡される。これは、stateをstate.getNextへ設定する。そこから、制御は再び決定[F2.D1]へ進む。全ての「状態」要素がコピーされた後に到達される[F2.S4]において、グローバル変数derivedは、最初の「派生」要素へ設定される。「状態」要素と同じように、全ての「派生」要素について繰り返すため、derived=undefで分岐する決定[F2.D2]、及びderived::=derived.getNextをトリガする状態[F2.S6]が使用され、[F2.S5]で「原点」属性がcurへ設定される。
【0104】
もし繰り返しが終了すると、制御は[F2.S7]へ渡される。これは、派生の完全なリストをcurの中へ貼り付ける。次に、[F2.S99]において、「状態」要素のリストがmodからコピーされ、curの中へ貼り付けられる。
【0105】
F3(図12)において、modの全てのサブモジュールが、繰り返し変数submodを使用して遷移する。もし繰り返しが終了すれば、例えば、もし決定[F3.D1]がsubmodをundefと評価すれば、制御はF3の最後の状態[F3.S99]へ渡される。そうでなければ、制御は[F3.S2]へ渡される。そこでは、変数subcurは、サブモジュールsubmodのラベルとマッチするラベルを有する最初の構成部分へ設定される。もしサブモジュールsubmodの「番号」属性が「1」又は「all」であれば、subcurは最初のインスタンスへ正しく設定され、制御は決定[F3.D2]からF4の最初の状態[F4.S1]へ渡される。そうでなければ、[F3.S3]でsubcurが次のインスタンスへ設定され、制御は決定[F3.D3]へ渡される。決定[F3.D3]は、subcurがundefであるかどうかをチェックする。もしundefでなければ、第2のインスタンス又はそれらの全てがチェックされなければならない仮定が存在し、制御は、再び、状態[F4.S1]へ渡される。F4の目的は、正確にF2の目的と同じであるが、mod及びcurの代わりに、submod及びsubcurtが使用され、属性「原点」がcurへ設定される。
【0106】
最後の状態[F4.S99]から、制御は決定[F3.D4]へ渡される。もし分岐条件がsubmodの「番号」属性を「all」と評価すれば、制御は[F3.S3]へ渡される。これは正しいラベルを有する全てのインスタンスを通過する。もしもその通過が、決定[F3.D3]を真へトリガすることによって、又は決定[F3.D4]で番号が「all」でないことによって停止すると、全てのサブモジュールの遷移は状態[F3.S4]で継続する。そこでは、submodが「モジュール」要素の次のインスタンスへ設定される。[F3.S4]から、制御は再び決定[F3.D1]へ渡される。これは、前述したように、サブモジュールの遷移を継続するか、制御をF3の最後の状態[F3.S99]へ送る。
【0107】
前述したように、F4(図13)は、正確にF2のように働く。変数state及びderivedは、モジュールsubmodの「状態」要素及び「派生」要素について繰り返すように使用される。これは、それらの「原点」属性を要素curへ設定する。次に、全ての「状態」及び「派生」要素がコピーされ、要素subcurの中へ貼り付けられる。
【0108】
状態[F4.S99]において、全ての「状態」要素及び「派生」要素は、文書doc.xmlの対応する要素の中へコピーされ、モジュールがもはや必要とされないように、「原点」属性が設定される。状態の属性のみを設定する必要があり、全ての「遷移」、「アクション」、及び「派生」要素は変更されないで残るので、代替方法は、「状態」要素及び「派生」要素の最も外側部分のみをコピーし、残りの部分についてはモジュールへの参照を使用することであろう。
【0109】
図14に示されるフローチャートF7の最初の状態[F7.S1]は、実際の実行フェーズの始まりを示す。F7において、現在の状態curstateにマッチする全ての状態のアクションがトリガされる。
【0110】
[F7.S1]は、curを文書doc.xmlのルートへ戻す。次に、制御は[F7.S2]へ進む。そこでは、グローバル変数curstateが「初期」へ設定される。curstateの目的は、現在の要素curの中で現在の状態を示すことである。[F7.S3]、[F7.D1]、及び[F7.S9]において、変数stateは現在の要素curの全ての「状態」要素について繰り返される。[F7.S3]は繰り返しを初期化し、[F7.D1]は終了規準であり、もしそれが終了すれば、制御を[F8.S1]へ送る。[F7.S9]は、stateを「状態」要素の次のインスタンスへ設定する実際の繰り返し手段である。繰り返しの内部では、決定[F7.D2]は、stateの「名前」属性が現在の状態curstateとマッチするかどうかをチェックする。もしマッチすれば、[F7.S4]に次に遷移する。これは、変数curをstateの属性「原点」の値へ設定する。この更新の目的は、正しい環境のアクションを評価することである。[F7.S5]、[F7.D3]、及び[F7.S7]において、変数actionが、stateの内部の全てのアクションについて繰り返され、それらの全てが[F7.S6]で実行される。その繰り返しが終了したとき、制御は[F7.S8]へ渡される。そこでは、curの値がその元の値へ再設定される。そこから、再び、状態についての繰り返しへ入り、終了した後に[F8.S1]へ導かれる。
【0111】
最後に、図15で示されるF8において、遷移がトリガされる。これは、現在の要素cur及び現在の状態curstateを更新する。遷移条件の評価は、それらの定義の原点、遷移のソース要素src、及び遷移のターゲット要素trgに依存する。条件を示す「式」要素において、それらの3つの要素は、<self />、<src/>、及び<trg/>としてアクセスされることができる。フローチャートF8において、2つのネストされた繰り返しが、「状態」要素及びそれらの「遷移」要素について起こる。最初の状態[F8.S1]は、srcを現在の要素curへ設定する。次に、[F8.S2]、[F8.D1]、及び[F8.S9]は、現在の要素curの中の全ての状態について変数stateを繰り返す。もし繰り返しが終了すれば、制御は[F7.S3]へ戻される。これは、再び、同じアクションを実行する。そうでなければ、[F8.D2]は、stateの「名前」属性が現在の状態curstateとマッチするかどうかをチェックする。もしマッチすれば、[F8.S4]に入り、curが属性「原点」の値へ設定される。次に、[F8.S5]、[F8.D3]、[F8.S8]が、stateの内部で全ての遷移について変数transを繰り返すために使用される。繰り返しの内部で、[F8.S6]がtrgをパスの評価結果へ設定する。次に、[F8.D4]は、transの式が真へ評価されるかどうかをチェックする。この評価のために、cur、src、及びtrgの正しい設定が必要であることに注意すべきである。もし評価の結果が真であれば、curはtrgへ設定され、curstateはtransのパス構成部分の「状態」属性へ設定される。次に、制御は、新しい現在の要素及び状態のアクションを実行するため[F7.S3]へ渡される。
【0112】
図16、図17、及び図18において、図1以下によるクエリー言語のサンプルモジュールが示される。これらのモジュールは、図11で与えられたDTDに関して有効である。サンプルのXML文書の実行は、図12以降で説明されたプロセスを使用して実行されることができる。前記モジュールは、前述したグラフィカル・フローチャートに従って図形入力から自動的に生成されてよい。他方、それらの図形的表現は、ここで与えられたテキスト形式から生成されることができる。
【0113】
図19aから図19dを参照して、前述したようなXML文書の実行振る舞いを与えるXMLロボット仕様の実現形態が、より詳細に説明される。XMLロボット仕様言語M、例えば、前述したようなビジュアル/テキスト・クエリー言語で書かれたXMLロボット仕様m0、及びm0の文書型定義DTD0に関して有効なXML文書dが与えられると、実行仕様は、dを実行するため抽象プロセスm0Exec(d)が何を行なうかについて全ての情報を与える。抽象プロセスm0Exec(d)を実現するために、既存のコンピュータで実行されることのできるプログラム、例えば、C又はJavaのようなプログラミング言語で書かれたプログラムが必要である。前記プログラムを実現する基本的方法として、4つの方法がある。
【0114】
図19aから図19dにおいて、プロセスはボックスとしてビジュアル化され、文書は通常の様式、即ち、屈曲した上方部分を有するボックスでビジュアル化され、実行可能な文書、例えば、プログラムは、文書及びプロセス、例えば、プログラムの実行との組み合わせとしてビジュアル化される。各々のプロセスは、文書形式の入力、及び文書形式の出力を有してよく、他のプロセスをスタートしてよい。実計算機で実行可能な具体的プロセスは、連続線を有するボックスとして示され、抽象的プロセス、例えば、プロセスm0Exec(d)は、点線を有するボックスとして示される。前述したXMLロボットを実現するには、コンパイラ及びインタープリタ技術の異なった組み合わせから可能である。技術のいずれの1つも、メタ形式M及び形式DTD0のために使用されることができる。従って、典型的に、コンパイラの次にインタープリタ(図19a)、コンパイラの次にコンパイラ(図19b)、インタープリタの次にインタープリタ(図19c)、及びインタープリタの次にコンパイラ(図19d)という、4つの組み合わせが存在する。
【0115】
図19aは、XML仕様m0からインタープリタIntDTD0を生成することによる実現形態を示す。インタープリタIntDTD0は入力としてXML文書dを取り、それがDTD0に関して有効かどうかをチェックする。続いて、それは、前述した抽象プロセスm0Exec(d)とプロセスが等しくなるような様式で、そのような文書dを実行するプロセスを開始する。実現形態は実行可能な文書IGによって与えられる。文書IGの実行は、入力としてXMLロボット実行仕様m0を取り、出力として実行可能文書IntDTD0、即ち、前記インタープリタを生成する。
【0116】
図19bは、XML仕様m0からコンパイラCompDTD0を生成する実行可能文書CGによって与えられるコンパイラジェネレータを提供することによって、次の可能性をビジュアル化する。コンパイラCompDTD0は、入力として受け取られた文書dを、実行可能文書d’へ変換する。実行可能文書d’の実行は、抽象プロセスm0Exec(d)と等しくなければならない。
【0117】
図19cは、m0の解釈プロセスをスタートする仕様言語MのインタープリタIntMtolntを示す。インタープリタIntMtolntは、入力としてXMLロボット仕様m0を取り、プロセスIntDTD0をスタートする。プロセスIntDTD0は、入力としてXML文書dを取る。プロセスIntDTD0は、直ちに文書dを実行する後続のプロセスをスタートする。文書dのプロセスは、抽象プロセスm0Exec(d)と等しくなければならない。
【0118】
最後の可能性として、図19dは、仕様言語MのインタープリタIntMtoCompを示す。インタープリタIntMtoCompは、入力としてXMLロボット仕様m0を取るが、前述したインタープリタIntMtolntとは対照的に、コンパイラプロセスCompDTD0をスタートする。コンパイラプロセスCompDTD0は、入力としてXML文書dを取り、出力として実行可能文書d’を生成する。実行可能文書d’の実行は、再び、抽象プロセスm0Exec(d)の実行と等しくなければならない。
【0119】
前述した可能性の各々は、特定の利点及び欠点を有することが容易に分かるであろう。既知のように、インタープリタ技術を使用する利点は実行の即時利用性であり、より複雑なコンパイラ技術の利点は、より良好なパフォーマンス、及びXMLロボット仕様m0から独立して別々に再使用できるように生成される実行可能文書の利用可能性である。
【0120】
図20において、ウェブベースXMLロボットの好ましい実施形態が示される。典型的には強力なウェブサーバであるサーバ21は、データベース22、及び1つ又は複数の機能ライブラリ23へ接続される。ネットワーク接続、特にインターネットによって、典型的には、遠隔システムの上で走るブラウザを用いた1つ又は複数のクライアント25.1及び25.2は、前記サーバ21にアクセスしてよい。これらのクライアント25.1及び25.2の能力は、多かれ少なかれ制約され、典型的には、Java仮想計算機のように制約された抽象機械を走らせる。
【0121】
サーバ21は、前述したようなXMLロボット仕様に従ってXML文書を実行するサービスを提供する。XMLロボット仕様におけるアクションは、サーバ21の上で実行されるアクション、例えば、サーバ・データベース22へのアクセス、又はサーバの機能ライブラリ23への呼び出しである。更に、eメール、ウェブページ、WAP、SMSなどを介して結果を公開するために利用可能なアクション、及び可能性としての追加機器27が存在する。これらは、アクセス権を管理し、根底にあるデータベース及びソフトウェアシステムのアーキテクチャを管理する。XMLロボット仕様は、サーバ21の上でのみ実行されてよいが、それはクライアントへ提供されるサービスのドキュメンテーションとして使用されてよい。
【0122】
状況は、アプリケーションがサーバの上で走り、全ての種類のクライアントがアプリケーションにアクセスできるアプリケーション・サービスプロバイダ(ASP)モデルに匹敵する。本発明は、全ての計算がサーバの上で行なわれるASPの利点を共有し、従って、クライアントはインターネット機器のような非常に小さな装置であることができる。更に、本発明は、有限のXMLロボット仕様が、対応するDTDとマッチする無限に多くの異なったXML文書を実行できるという利点を有する。
【0123】
実行サービスプロバイダアプローチのアプリケーションは、既存のアプリケーションの入力/制御から新しいアプリケーションの仕様又はプログラミングまでをカバーする。入力/制御アプリケーションは、アプリケーションを制御するためXML文書を使用する。XMLロボット仕様は、制御されるアプリケーションのために、文書をインタラクティブな入力/制御シーケンスへ簡単に変換するであろう。新しいアプリケーションの仕様/プログラミングの場合、XML文書はプログラムのシンタックスツリーに対応し、XMLロボット仕様は実行振る舞いを与える。例えば、プログラミング言語Cのためにシンタックスツリーを表すDTDを有するXMLロボット仕様が与えられると、シンタックスツリーの実行振る舞いを与えるXMLロボットは、任意のCプログラムをサーバへ送り、それらのプログラムをサーバで実行させることができるであろう。
【0124】
実行サービスプロバイダを有する前記実施形態と対照的に、他の好ましい実施形態がLangLets(小さなXMLロボット仕様)及びモバイル言語を提供してよい。ここで、サーバ21は、先ずXMLロボット仕様を送り、次に仕様に従って実行されるXML文書を送ることによって、クライアント25.1及び25.2へサービスを提供する。この実施形態は、XML文書を実行するため、XMLロボット仕様からインタープリタ/コンパイラを生成することのできるクライアント25.1及び25.2を必要とする。従って、XMLロボット仕様のアクションはクライアント25.1及び25.2の上で実行される。このアプローチは、広い意味では、Javaコードをクライアントへ送り、続いてクライアントがこのコードを実行することに匹敵する。しかし、XMLロボット仕様によって与えられる実行振る舞いは、完全Javaよりも、はるかに容易で表現が少ない。しかし、Javaのような言語は、XMLロボット仕様のアクションをプログラムするために使用されてよい。従って、そのようなXMLロボット仕様に従って実行される全てのXML文書(無限に多い)の実行振る舞いは、XMLロボット仕様における有限数の固定された(しかし、パラメータ化された)Javaアクションに限定される。
【0125】
本発明の重要な利点は、有限XMLロボット仕様のセキュリティ特性が検査されてよいことである。従って、これらの特性は、クライアント25.1及び25.2の上で実行されることを意図される無限数の異なったXML文書のために、保証又はチェックされてよい。例えば、もし或る重要なセキュリティ・アクションがXMLロボット仕様のアクションの中に含まれないならば、このアクションは、そのXMLロボット仕様に従って実行されるXML文書のために実行されないことが保証されてよい(定義に直接基づいて)。又は、もし他の重要なセキュリティ・アクションが、或る条件によって防護される状態によってのみトリガされるのであれば、この条件が充足される場合にのみ、このアクションがトリガされることを保証することができる。
【0126】
再び、ソース・コードがネットを介して送られるモバイル・コードを考えることが助けとなるかも知れない。しかし、それと対照的に、ここでは、モバイル言語/DTDの実行振る舞いを与えるXMLロボット仕様が先ず送られ、次に、プログラム/XML文書が転送される。従って、モバイル言語は、所与のネットワークを介して提供される。モバイル言語がモバイル・コードよりも優れている利点は、繰り返しの計算がXMLロボット仕様の中に一般的様式で埋め込まれており、計算の実際のインスタンスを記述するXML文書の複雑性が少ないことである。
【0127】
発明的XMLロボットのそのような使用は、新しい言語の定義を可能にし、対応するコンパイラ及び/又はインタープリタを生成した後、前記言語で書かれたコードを実行することができる。更に、エディタ、デバッガ、及び解析ツールを作成することが可能である。説明されたデータとコードの協力作用によって、そのような文書の構造ツリーを明示的にパース及び分析する別個のプログラムを書くことなく、有効なXML文書の実行又は他の処理を直接定義することができる。
【0128】
本発明は、ネットワーク環境、特にインターネットの中で使用されてよい装置25.1及び25.2、特にインターネット機器を提供する。この装置は、遠隔コンピュータとの間でデータを送受信する手段を含む。装置は、前記遠隔コンピュータから送られているデータ(XML文書)を記憶及びアクセスする手段を提供する。装置は、好ましくは、前記遠隔コンピュータから受け取られたデータを検査し、もし適用可能であれば、そのようなデータが有効及び/又は許容されるXMLロボット仕様であるかどうかを検証できる手段を含む。更に、装置は、XMLロボット仕様をXML文書と統合する手段を含む。従って、XML文書のインストラクションは、XML文書の命令を実行する装置、好ましくは処理ユニットによって実行される。例えば、XML文書を実行する処理ユニットが、この装置の送信/受信動作の機能を提供してよいように、この装置に含まれる手段は一体であってもよいことを当業者は容易に理解するであろう。更に、装置は、典型的には、もし所望すれば、XML文書又はXMLロボット仕様の実行及び解析をアニメ化する手段を提供するユーザ・インタフェースを含む。しかし、それはネットワーク内でサービスステーションとしてのみ使用されてよい。
【0129】
更に、本発明は、先進的ビジュアル統合開発環境において、例えば、図3以降を参照して説明されたようにXMLロボット仕様を図形で表示する手段を含む装置を提供する。これまでの説明に従って、この図形的表現は、前記XMLロボット仕様を表すXML文書を生成するために使用される。
【0130】
更に、本発明は、XML文書の分散実行を提供することができる。従って、文書の構造が、同時に、文書を処理するアプリケーションの構造である事実に起因して、XML文書の計算を分散するため多数のXMLロボットが使用される。従って、XML文書の一部分は、異なったサイトに置かれるXMLロボットの異なったインスタンスの上で容易に実行されることができる。同様に、特別のアプリケーションは、文書の一部分がサーバの上で実行され、文書の一部分がクライアント側で実行されることを要求してよい。
【図面の簡単な説明】
【図1】「クエリー」という名前のDTDの例を示す。
【図2】図1によるDTDの例に関して有効なXML文書を示す。
【図3】図1で与えられたDTD「クエリー」によって暗示される図2のXML文書のツリー構造を示す。
【図4】図1によるDTDの図形的仕様及び対応するインスタンス化を示す。
【図5】要素定義「クエリー」のために図4の左側の情報をカプセル化した仕様モジュールを示す。
【図6】要素「セットポイント」及び「アクション」のための仕様モジュールを示す。
【図7】各々の要素定義のローカルGFCが、そのような要素の各々のインスタンスのために、構造ツリーの中で、どのようにインスタンス化されるかを示す。
【図8】ローカルGFCのインスタンスが、どのようにグローバルな階層GFCへ接続されるかを示す。
【図9】モジュール構造を定義する独特のDTDを示す。
【図10】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図11】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図12】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図13】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図14】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図15】DTD XML−robot.dtdに関して有効なモジュールを使用して所与のXML文書の実行を定義するフローチャートを示す。
【図16】図1以降による例のモジュールのテキスト表現を示す。
【図17】図1以降による例のモジュールのテキスト表現を示す。
【図18】図1以降による例のモジュールのテキスト表現を示す。
【図19a】特定のXMLロボット仕様を実現する方法の例を示す。
【図19b】特定のXMLロボット仕様を実現する方法の例を示す。
【図19c】特定のXMLロボット仕様を実現する方法の例を示す。
【図19d】特定のXMLロボット仕様を実現する方法の例を示す。
【図20】好ましい実施形態のウェブベースXMLロボット記述の実施形態の概観を示す。
【符号の説明】
21 サーバ
22 データベース
23 ライブラリ
25.1、25.2 クライアント
27 追加の機器
Claims (10)
- XML文書を直接実行する方法であって、XML文書の各々の要素のためにローカルの振る舞い及び処理を定義し、実行可能命令を文書型定義(DTD)、XML文書、又は構造ツリーとしてのその表現と統合し、要素の属性を動的に作成及び再定義することによって中間状態を記憶することを特徴とする方法。
- (a)各々のXML要素定義及びそのインスタンスのために、簡単な実行可能アクションによって構成されるアクション、要素の構成部分の1つのために定義されるアクション又は他の要素のために定義されるアクションへの参照であるアクションを定義することによって実行可能命令を統合し、
(b)そのルートのために定義されたアクションを実行することによってXML文書を実行する
ステップを更に含む、請求項1に記載の方法。 - 順次又は並行制御及び/又はデータフローを表すグラフィカル・フローチャートによって、少なくとも1つのXML要素定義又はインスタンスのためにアクションの組成を定義することを特徴とする、請求項1又は2に記載の方法。
- 少なくとも1つのXML要素定義又はインスタンスのために、順次又は並行制御及び/又はデータフローを表すテキスト形式でアクションの組成を定義することを特徴とする、請求項1〜3のいずれか一項に記載の方法。
- n次元データ立方体に関してシステム状態を表すこと、及び他のプログラミング及び/又はデータベースシステムのためにn次元データ立方体を読み出し及び書き込み可能にし、他のプログラミング及びデータベースシステムのデータ構造及び機能を記述されたシステムの中からアクセス可能にすることによって、システムへのインタフェースをオープンにすること、を特徴とする、請求項1〜4のいずれか一項に記載の方法。
- クライアントからサーバへ送られたXMLロボット仕様に従ってXML文書の少なくとも一部分を実行することによって少なくとも1つのクライアントへサービスを提供するサーバ、又はXMLロボット仕様及びXML文書をクライアントへ送ることによって少なくとも1つのクライアントへサービスを提供するサーバであって、送られたXMLロボット仕様に従って、送られた文書の少なくとも一部分をクライアント上で実行することによって前記サービスが提供されるようにするサーバを特徴とする、請求項1〜6のいずれか一項に記載の方法を使用するシステム。
- 遠隔のコンピュータとの間でデータを送信及び受信する手段と、XML文書を記憶及びアクセスする手段と、XMLロボット仕様をXML文書と統合する手段と、統合された文書を実行する手段と、を含む請求項1〜5のいずれか一項に記載の方法を使用する装置。
- 先進的ビジュアル統合開発環境の中でXMLロボット仕様を図形的に表示する手段と、前記XMLロボット仕様を表すXML文書を生成する手段とを含む請求項1〜7のいずれか一項に記載の方法を使用する装置。
- 更に、XML文書又はXMLロボット仕様を検査、検証、又はアニメ化する手段を含む、請求項8又は9に記載の装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2000/001087 WO2002010975A1 (en) | 2000-08-02 | 2000-08-02 | Xml-robot |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004505379A true JP2004505379A (ja) | 2004-02-19 |
Family
ID=11003957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002515629A Pending JP2004505379A (ja) | 2000-08-02 | 2000-08-02 | Xmlロボット |
Country Status (10)
Country | Link |
---|---|
US (1) | US7340728B2 (ja) |
EP (1) | EP1307828B1 (ja) |
JP (1) | JP2004505379A (ja) |
CN (1) | CN1195278C (ja) |
AT (1) | ATE268921T1 (ja) |
AU (1) | AU2000260103A1 (ja) |
CA (1) | CA2417752A1 (ja) |
DE (1) | DE60011479T2 (ja) |
HK (1) | HK1060410A1 (ja) |
WO (1) | WO2002010975A1 (ja) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPQ950400A0 (en) * | 2000-08-17 | 2000-09-07 | Peruch, Stephen Sebastian | Computer implemented system and method of transforming a source file into transformed file using a set of trigger instructions |
US7225467B2 (en) * | 2000-11-15 | 2007-05-29 | Lockheed Martin Corporation | Active intrusion resistant environment of layered object and compartment keys (airelock) |
US7213265B2 (en) * | 2000-11-15 | 2007-05-01 | Lockheed Martin Corporation | Real time active network compartmentalization |
US7107582B2 (en) * | 2001-11-15 | 2006-09-12 | International Business Machines Corporation | System and method for source-driven form-independent dynamic content resolution |
US7111062B2 (en) * | 2001-12-06 | 2006-09-19 | International Business Machines Corporation | Apparatus and method of generating an XML document to represent network protocol packet exchanges |
US20030110279A1 (en) * | 2001-12-06 | 2003-06-12 | International Business Machines Corporation | Apparatus and method of generating an XML schema to validate an XML document used to describe network protocol packet exchanges |
US7769876B2 (en) * | 2001-12-06 | 2010-08-03 | International Business Machines Corporation | Apparatus and method of using XML documents to perform network protocol simulation |
EP1502196A4 (en) * | 2002-05-02 | 2008-04-02 | Sarvega Inc | SYSTEM AND METHOD FOR TRANSFORMING XML DOCUMENTS USING STYLE SHEETS |
US20080313282A1 (en) | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
US7146643B2 (en) * | 2002-10-29 | 2006-12-05 | Lockheed Martin Corporation | Intrusion detection accelerator |
US20070061884A1 (en) * | 2002-10-29 | 2007-03-15 | Dapp Michael C | Intrusion detection accelerator |
US20040083466A1 (en) * | 2002-10-29 | 2004-04-29 | Dapp Michael C. | Hardware parser accelerator |
US7080094B2 (en) * | 2002-10-29 | 2006-07-18 | Lockheed Martin Corporation | Hardware accelerated validating parser |
AU2003277247A1 (en) * | 2003-02-28 | 2004-09-28 | Lockheed Martin Corporation | Hardware accelerator state table compiler |
US20040210914A1 (en) * | 2003-04-17 | 2004-10-21 | Kinner Jason A. | Method of generating a remote communication interface for resource description framework (RDF) based information |
US20040210881A1 (en) * | 2003-04-17 | 2004-10-21 | Richard Friedman | Method of generating an application program interface for resource description framwork (RDF) based information |
US7873636B2 (en) | 2003-05-01 | 2011-01-18 | International Business Machines Corporation | Method, system and program product for matching a network document with a set of filters |
US7194733B2 (en) * | 2003-06-11 | 2007-03-20 | Microsoft Corporation | Transformation of an asynchronous transactional messaging language into a web services compatible language |
US7225411B1 (en) * | 2003-06-30 | 2007-05-29 | Tibco Software Inc. | Efficient transformation of information between a source schema and a target schema |
US7519574B2 (en) * | 2003-08-25 | 2009-04-14 | International Business Machines Corporation | Associating information related to components in structured documents stored in their native format in a database |
US8150818B2 (en) * | 2003-08-25 | 2012-04-03 | International Business Machines Corporation | Method and system for storing structured documents in their native format in a database |
US7792866B2 (en) * | 2003-08-25 | 2010-09-07 | International Business Machines Corporation | Method and system for querying structured documents stored in their native format in a database |
US8250093B2 (en) | 2003-08-25 | 2012-08-21 | International Business Machines Corporation | Method and system for utilizing a cache for path-level access control to structured documents stored in a database |
US8775468B2 (en) | 2003-08-29 | 2014-07-08 | International Business Machines Corporation | Method and system for providing path-level access control for structured documents stored in a database |
CN100442278C (zh) * | 2003-09-18 | 2008-12-10 | 富士通株式会社 | 网页信息块提取方法和装置 |
CN1314225C (zh) * | 2003-10-24 | 2007-05-02 | 中兴通讯股份有限公司 | 一种基于xml文档实现开放电信业务的方法 |
US7454469B2 (en) * | 2003-12-22 | 2008-11-18 | International Business Machines Corporation | Method and system for instant messaging Bots specification using state transition methodology and XML |
EP1594060A1 (en) * | 2004-05-07 | 2005-11-09 | Hewlett-Packard Development Company, L.P. | Web application for supporting transaction processing |
EP1594279A1 (en) * | 2004-05-07 | 2005-11-09 | Hewlett-Packard Development Company, L.P. | Access control in a web application using event filtering |
KR100607141B1 (ko) * | 2004-05-12 | 2006-08-01 | 한국생산기술연구원 | 개방형 분산처리구조의 로봇 제어 시스템 |
US20070006130A1 (en) * | 2005-06-02 | 2007-01-04 | Arnold Stamler | Model oriented method of automatically detecting alterations in the design of a software system |
US7617448B2 (en) * | 2005-09-06 | 2009-11-10 | Cisco Technology, Inc. | Method and system for validation of structured documents |
WO2007028226A1 (en) * | 2005-09-09 | 2007-03-15 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for state machine translation |
US7676488B2 (en) * | 2005-10-31 | 2010-03-09 | Sap Ag | Conditional formatted reporting using syntax checking |
US9460064B2 (en) * | 2006-05-18 | 2016-10-04 | Oracle International Corporation | Efficient piece-wise updates of binary encoded XML data |
US7657434B2 (en) * | 2006-05-30 | 2010-02-02 | Motorola, Inc. | Frame goals for dialog system |
US7797672B2 (en) * | 2006-05-30 | 2010-09-14 | Motorola, Inc. | Statechart generation using frames |
US7505951B2 (en) * | 2006-05-30 | 2009-03-17 | Motorola, Inc. | Hierarchical state machine generation for interaction management using goal specifications |
US20070292833A1 (en) * | 2006-06-02 | 2007-12-20 | International Business Machines Corporation | System and Method for Creating, Executing and Searching through a form of Active Web-Based Content |
US7882429B2 (en) * | 2006-06-05 | 2011-02-01 | International Business Machines Corporation | High-level virtual machine for fast XML parsing and validation |
US7991799B2 (en) * | 2006-06-05 | 2011-08-02 | International Business Machines Corporation | Schema specific parser generation |
ITRM20060474A1 (it) | 2006-09-08 | 2008-03-09 | Univ Cattolica Sacro Cuore | Giuda neurale |
US8578350B2 (en) | 2006-11-30 | 2013-11-05 | Ncr Corporation | System and method for interpreting a specification language file to implement a business system |
US20080147364A1 (en) * | 2006-12-15 | 2008-06-19 | Motorola, Inc. | Method and apparatus for generating harel statecharts using forms specifications |
ITRM20070161A1 (it) * | 2007-03-27 | 2008-09-28 | Uni Del Salento | Metodo e formalismo per inviare istruzioni a database distribuiti realizzato mediante programma per computer |
US8504913B2 (en) * | 2007-06-08 | 2013-08-06 | Apple Inc. | Client-side components |
US7680832B1 (en) | 2007-06-29 | 2010-03-16 | Emc Corporation | Techniques for managing configuration information among different physical devices |
US10007739B1 (en) * | 2007-07-03 | 2018-06-26 | Valassis Direct Mail, Inc. | Address database reconciliation |
US8291310B2 (en) * | 2007-08-29 | 2012-10-16 | Oracle International Corporation | Delta-saving in XML-based documents |
KR101525220B1 (ko) * | 2007-09-28 | 2015-06-10 | 엑세리온 악티에볼라그 | 네트워크 오퍼레이팅 시스템 |
US7831540B2 (en) * | 2007-10-25 | 2010-11-09 | Oracle International Corporation | Efficient update of binary XML content in a database system |
US8397216B2 (en) * | 2008-02-29 | 2013-03-12 | International Business Machines Corporation | Compiler for a declarative event-driven programming model |
US8627299B2 (en) * | 2008-02-29 | 2014-01-07 | International Business Machines Corporation | Virtual machine and programming language for event processing |
US8365149B2 (en) * | 2008-02-29 | 2013-01-29 | International Business Machines Corporation | Debugger for a declarative event-driven programming model |
US8341608B2 (en) * | 2008-11-13 | 2012-12-25 | Visicom Media, Inc. | Cross-browser toolbar and method thereof for facilitating cross-browser interoperability |
US8863101B2 (en) | 2008-12-10 | 2014-10-14 | International Business Machines Corporation | Compiler generator |
US8630997B1 (en) * | 2009-03-05 | 2014-01-14 | Cisco Technology, Inc. | Streaming event procesing |
US8751284B2 (en) | 2009-04-30 | 2014-06-10 | United Parcel Service Of America, Inc. | Systems and methods for a real-time workflow platform using Petri net model mappings |
US8332811B2 (en) | 2009-04-30 | 2012-12-11 | United Parcel Service Of America, Inc. | Systems and methods for generating source code for workflow platform |
US8255372B2 (en) | 2010-01-18 | 2012-08-28 | Oracle International Corporation | Efficient validation of binary XML data |
US20110246962A1 (en) * | 2010-04-05 | 2011-10-06 | Microsoft Corporation | State machine expressions in database operators |
US10756759B2 (en) | 2011-09-02 | 2020-08-25 | Oracle International Corporation | Column domain dictionary compression |
US10013266B2 (en) * | 2012-07-12 | 2018-07-03 | TRACLabs, Inc. | System and method for executing operations specified in a procedure language |
US8812523B2 (en) | 2012-09-28 | 2014-08-19 | Oracle International Corporation | Predicate result cache |
US8914778B2 (en) | 2012-11-05 | 2014-12-16 | International Business Machines Corporation | Data placement for execution of an executable |
US8863099B2 (en) * | 2012-11-05 | 2014-10-14 | International Business Machines Corporation | Compilation and placement of instructions in a memory system |
US9910680B2 (en) * | 2014-04-22 | 2018-03-06 | Oracle International Corporation | Decomposing a generic class into layers |
CN105808597A (zh) * | 2014-12-31 | 2016-07-27 | 北京航天测控技术有限公司 | 一种工艺流程数据呈现方法及装置 |
US9733905B1 (en) * | 2016-03-21 | 2017-08-15 | International Business Machines Corporation | Embedded location awareness in UML modeling for mobile and IoT development |
CN111708525B (zh) * | 2020-06-24 | 2021-07-30 | 华中科技大学 | 一种基于xml工业机器人图形化编程系统解释器 |
CN112464033A (zh) * | 2020-10-19 | 2021-03-09 | 北京四方继保工程技术有限公司 | 一种面向对象的电力数据分类与通信的方法 |
CN115935012B (zh) * | 2023-02-21 | 2023-06-23 | 云筑信息科技(成都)有限公司 | 一种基于xml的流程可视化标记语言的业务处理方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370552B1 (en) * | 1997-05-14 | 2002-04-09 | Citrix Systems, Inc. | Apparatus and method for displaying application output in an HTML document |
US5835712A (en) * | 1996-05-03 | 1998-11-10 | Webmate Technologies, Inc. | Client-server system using embedded hypertext tags for application and database development |
US6188401B1 (en) * | 1998-03-25 | 2001-02-13 | Microsoft Corporation | Script-based user interface implementation defining components using a text markup language |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US20030187925A1 (en) * | 1998-12-08 | 2003-10-02 | Inala Suman Kumar | Software engine for enabling proxy chat-room interaction |
US6725425B1 (en) * | 1998-12-08 | 2004-04-20 | Yodlee.Com | Method and apparatus for retrieving information from semi-structured, web-based data sources |
US6505343B1 (en) * | 1998-12-31 | 2003-01-07 | Intel Corporation | Document/view application development architecture applied to ActiveX technology for web based application delivery |
US6901431B1 (en) * | 1999-09-03 | 2005-05-31 | Cisco Technology, Inc. | Application server providing personalized voice enabled web application services using extensible markup language documents |
US6671854B1 (en) * | 1999-11-05 | 2003-12-30 | International Business Machines Corporation | Dynamic web object row count in hyper text markup language |
US20040034833A1 (en) * | 1999-11-12 | 2004-02-19 | Panagiotis Kougiouris | Dynamic interaction manager for markup language graphical user interface |
US6964034B1 (en) * | 2000-04-20 | 2005-11-08 | International Business Machines Corporation | Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment |
-
2000
- 2000-08-02 AU AU2000260103A patent/AU2000260103A1/en not_active Abandoned
- 2000-08-02 JP JP2002515629A patent/JP2004505379A/ja active Pending
- 2000-08-02 DE DE60011479T patent/DE60011479T2/de not_active Expired - Lifetime
- 2000-08-02 WO PCT/IB2000/001087 patent/WO2002010975A1/en active IP Right Grant
- 2000-08-02 CA CA002417752A patent/CA2417752A1/en not_active Abandoned
- 2000-08-02 EP EP00946233A patent/EP1307828B1/en not_active Expired - Lifetime
- 2000-08-02 HK HK04102868A patent/HK1060410A1/xx not_active IP Right Cessation
- 2000-08-02 AT AT00946233T patent/ATE268921T1/de active
- 2000-08-02 CN CNB008197415A patent/CN1195278C/zh not_active Expired - Fee Related
-
2001
- 2001-08-01 US US09/921,298 patent/US7340728B2/en not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
JPN7010002662, Triphathi,A.R., et al, "Implementing Distributed Workflow Systems from XML Specifications", Technical Report, The Ajanta Project, Computer Science Dept., Univ. of Minnesota, 200005 * |
Also Published As
Publication number | Publication date |
---|---|
CN1195278C (zh) | 2005-03-30 |
CA2417752A1 (en) | 2002-02-07 |
AU2000260103A1 (en) | 2002-02-13 |
EP1307828B1 (en) | 2004-06-09 |
DE60011479D1 (de) | 2004-07-15 |
ATE268921T1 (de) | 2004-06-15 |
US20020111965A1 (en) | 2002-08-15 |
DE60011479T2 (de) | 2005-06-09 |
US7340728B2 (en) | 2008-03-04 |
HK1060410A1 (en) | 2004-08-06 |
WO2002010975A1 (en) | 2002-02-07 |
CN1454357A (zh) | 2003-11-05 |
EP1307828A1 (en) | 2003-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004505379A (ja) | Xmlロボット | |
Beazley | Automated scientific software scripting with SWIG | |
US6269475B1 (en) | Interface for object oriented programming language | |
Engels et al. | Building integrated software development environments. Part I: tool specification | |
Gu et al. | XSLT transformation from UML models to LQN performance models | |
JP4482563B2 (ja) | ダイアグラミング環境言語のための単純化データ信号サポート | |
Dolog et al. | Using UML and XMI for generating adaptive navigation sequences in web-based systems | |
Kong et al. | A graph grammar approach to software architecture verification and transformation | |
Lausdahl et al. | Semantics of the VDM real-time dialect | |
Küster et al. | Comparing two model transformation approaches | |
Lellmann | Combining monotone and normal modal logic in nested sequents–with countermodels | |
Dijkstra et al. | Building javascript applications with haskell | |
Björklund et al. | Towards efficient code synthesis from statecharts | |
Izquierdo et al. | Gra2MoL: A domain specific transformation language for bridging grammarware to modelware in software modernization | |
Nakano et al. | Deriving event-based document transformers from tree-based specifications | |
Amann et al. | BIM programming | |
JP5600301B2 (ja) | システム表現およびハンドリング技術 | |
Oda et al. | Specifying abstract user interface in VDM-SL | |
Carrasquel et al. | Prosega/CPN: an extension of CPN Tools for automata-based analysis and system verification | |
Masiero et al. | Development and instantiation of a generic application generator | |
Nupponen | The design and implementation of a graph rewrite engine for model transformations | |
Feng et al. | Scalable models using model transformation | |
Cruz et al. | Constructing program animations using a pattern based approach | |
Wernli | Design and implementation of a code generator for the CAL actor language | |
Pereira et al. | Visualization/animation of programs based on abstract representations and formal mappings |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070730 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100824 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20101109 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101116 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110419 |