(57)【要約】【課題】メタモデリング環境において用いるオントロジー・オブジェクトを提供する方法及びシステムを提供する。【解決手段】本方法は（ａ）１つ又は複数のエンティティ、関係及びセマンティクスを含むメタモデルを作成するフレームワークを提供するステップであって、フレームワークはユーザから入力を受け取り、エンティティ、関係及びセマンティクスを作成するステップ、（ｂ）１つ又は複数のクラスのソースコードを含むオントロジー・オブジェクトを生成するステップであって、１つ又は複数のクラスの各々はエンティティの１つに対応するステップ及び（ｃ）ソースコードをコンパイルするステップを含む。さらに、メタモデルに対する変更を検出するステップ、メタモデルに対する変更を反映するようオントロジー・オブジェクトを更新するステップであって１つ又は複数のクラスの新たなソースコードの生成を含むステップ及び新たなソースコードをコンパイルするステップを含む。【選択図】図４
2008262551.tif 000002
【特許請求の範囲】
【請求項１】
インスタンス・モデルを作成する方法であって、
メタモデルを作成するステップであって、前記メタモデルはエンティティ、前記エンティティ間の関係及びセマンティクスの記述を含む、ステップと、
オントロジー・オブジェクトにアクセスするステップであって、前記オントロジー・オブジェクトは、前記メタモデルが作成されるときに生成され、前記オントロジー・オブジェクトは、前記エンティティに対応し、且つ前記エンティティ間の前記関係を取得する、ステップと、
前記オントロジー・オブジェクトを用いて前記インスタンス・モデルを作成するステップと、
前記インスタンス・モデルをデータ記憶装置に格納するステップとであって、前記記憶装置において、前記インスタンス・モデルをメタモデリング環境で用いるために検索することができる、ステップと、
前記メタモデルを修正するステップと、
前記修正されたエンティティ及び前記エンティティ間の関係に対応するオントロジー・オブジェクトを再生成するステップと
を含む、方法。
【請求項２】
モデリング環境において用いるオントロジー・オブジェクトを提供する方法であって、
フレームワークを提供するステップであって、前記フレームワークは、
メタモデルを作成し、前記メタモデルは１つ又は複数のエンティティ、関係、及びドメインのセマンティクスを含み、前記フレームワークはユーザから入力を受け取って前記エンティティを作成し、且つ、前記フレームワークは、
セマンティクスを指定する１つ又は複数のユーザ定義のメソッドを作成することによって前記メタモデルを拡張し、前記セマンティクスは前記オントロジー・オブジェクトに関して指定される、ステップと、
オントロジー・オブジェクトを生成するステップであって、前記オントロジー・オブジェクトは１つ又は複数のクラスのソースコードを含み、前記１つ又は複数のクラスはそれぞれ、前記エンティティのうちの１つに対応する、ステップと、
必要に応じて前記ソースコードをコンパイルするステップと、
前記メタモデルに対する変更を反映するように前記メタモデルを更新するステップであって、
前記メタモデルへの変更が行われていることを検出するステップと、
前記メタモデルに対する前記変更を反映するように前記オントロジー・オブジェクトを更新するステップであって、１つ又は複数のクラスの新たなソースコードを生成するステップ及び前記オントロジー・オブジェクトに関して前記メタモデルにおける振る舞いを指定するステップを含む、ステップと、
必要に応じて、前記新たなソースコードをコンパイルするステップと
によって、前記メタモデルを更新するステップと
を含む、方法。
【請求項３】
メタモデリング環境であって、
プロセッサと、
プログラムロジックであって、データ記憶媒体に格納されると共に、前記プロセッサによって、
少なくとも１つのメタモデルを作成及び修正するインタフェースを提供するステップであって、前記メタモデルは複数のエンティティ及び前記複数のエンティティ間の関係を含み、前記インタフェースはユーザ入力を受け入れて前記複数のエンティティ及び前記複数のエンティティ間の関係を定義する、ステップ、
複数のオントロジー・オブジェクトを維持するステップであって、該複数のオントロジー・オブジェクトは、前記定義された複数のエンティティに対応し、前記複数のエンティティ間の前記関係を記述する、ステップ、及び
前記複数のオントロジー・オブジェクトを用いて１つ又は複数のインスタンス・モデルを作成するインタフェースを提供するステップ
を実行可能である、プログラムロジックと
を備え、
前記複数のオントロジー・オブジェクトを維持するステップは、新たなエンティティが前記メタモデルに関して定義されるたびにオントロジー・オブジェクトを作成するステップを含み、前記複数のオントロジー・オブジェクトを維持するステップは、エンティティが変更されるたびに前記複数のオントロジー・オブジェクトを更新するステップを含む、メタモデリング環境。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メタモデリングの分野に関し、より詳細には、メタモデルのセマンティクス（意味論、ｓｅｍａｎｔｉｃｓ）を記述するために用いることができる動的なオントロジー・オブジェクトに関する。
【背景技術】
【０００２】
メタモデリング環境は、モデラ−（ｍｏｄｅｌｅｒ）が高レベルのモデリング・ツールで複雑なシナリオをシミュレートすることを可能にする。メタモデリング環境は、ユーザがメタモデルを作成することができる基礎的なツールをユーザに提供する。オントロジーと呼ばれる場合もあるユーザ定義のメタモデルは、メタモデリング環境で処理して、種々のインスタンス・モデルを作成するために用いることができるインタフェースを生成することができる。しばしば、メタモデリング環境はビジュアル（視覚的）言語を提供して、モデルを成す、基礎となるクラスについての低レベルの知識を必要とすることなく、モデラ−が詳細なモデルを作成することを可能にする。
【０００３】
既存のメタモデリング環境は通常、ドメイン固有（領域特化型、ｄｏｍａｉｎ−ｓｐｅｃｉｆｉｃ）モデリング・ツールを作成するために用いることができる。ドメインは、モデルを用いて問題を解決するか又はシナリオをモデリングすることができる特定の領域である。例えば、メタモデリング・ツールは、エンティティ、これらのエンティティ間の関係、並びに、オントロジーを成すこれらのエンティティ及び関係の振る舞い（ｂｅｈａｖｉｏｒ）を好都合に定義する環境を提供することができる。したがって、オントロジーを定義することにより、ユーザはドメイン固有言語を作成してきた。メタモデリング環境は、その後、ドメイン固有言語に従い、且つインスタンス・モデルと呼ばれる場合がある、モデルを作成するために用いることができるツールを作成することができる。
【０００４】
メタモデルは、シンタクスとセマンティクスとを含む。シンタクスは、定義されているプロパティを含む、モデルの法的エンティティ（legal entities）又は構成要素を、これらのエンティティ間の法的な関係（legal relationships）と共に定義する。セマンティクスはエンティティ及びメタモデルの関係の解釈又は振る舞いを指定する。言い換えれば、シンタクスは、基礎的な構成要素（building blocks）及び構築のルールであり、一方でセマンティクスは解釈のルールである。メタモデリング環境は、概して、ユーザがメタモデルのシンタクス（例えば、プロパティ、関係等）を定義することを可能にする。概して、メタモデルのセマンティクスを定義することは、いくらかのプログラミングを必要とする。現状では、このコードは、モデルの基礎となるモデリング・ツールのデータ構造を用いなければならない。これらのデータ構造は標準ではなく、メタモデルを作成しようと考えるいずれのユーザもこれを学ばなければならない。これは、ユーザ作成のモデリング・ツールの障害となる。メタモデリングの目的は、エンドユーザが自身の言語及びサポートツールを作成することを可能にすることである。この目的のために、ユーザが新たなアプリケーション・プログラミング・インタフェース（ＡＰＩ）を習得することをセマンティクスが必要とするのではなく、作成される言語に関してセマンティクスが定義されるべきである。
【０００５】
ユーザ定義のシンタクス及びセマンティクスを含むメタモデルは、コンパイル又は解釈されて、ドメイン固有のモデリング言語及びサポートツールが作成される。また、この言語を用いて、ドメイン固有のインスタンス・モデルを作成することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
残念なことに、メタモデルに対する変更は、新たなコードベース（ｃｏｄｅ  ｂａｓｅ）を元のコードベースと置き換えるという影響をもたらすおそれがある。したがって、元のドメイン固有モデルに基づくインスタンス・モデルは、元のメタモデルの構造と深く関連しているために、無効になるおそれがある。したがって、モデラ−は、基礎を成すメタモデルに変更が起こるたびにインスタンス・モデルを再び作成せざるを得ない。或いは、モデラ−は、インポートツールを作成してインスタンス・モデルを新たなメタモデルにインポートせざるを得ない。
【課題を解決するための手段】
【０００７】
したがって、オントロジー・オブジェクトを用いる、方法及びメタモデリング環境が本明細書に開示される。オントロジー・オブジェクトとは、ソフトウェアのインタフェースのセット、及び、メタモデルのオントロジーをミラーリングすると共にユーザに基礎的なセマンティクスのサポート（例えば、インスタンス・モデルの作成のサポート）を提供するこれらのインタフェースのインプリメンテーション（implementation：実装）である。さらに、オントロジー・オブジェクトを用いて、コードジェネレータ、分析ルーチン、さらには、ドメインに表現されるインスタンス・モデルに問い合わせてインスタンス・モデルと対話する外部プログラムを作成することができる。最も重要なことは、オントロジー・オブジェクトは、メタモデラー（ｍｅｔａｍｏｄｅｌｅｒ）がメタモデルのセマンティクスを定義するために利用可能であることである。なじみのないライブラリのセットに対してコーディングする代わりに、オントロジー自体のエンティティを用いてセマンティクスを定義することができる。
【０００８】
一態様では、インスタンス・モデルを作成する方法が開示される。当該方法は、（ａ）メタモデルを作成するステップであって、当該メタモデルはドメイン固有のエンティティ、エンティティ間の関係、及びドメインのセマンティクスの記述を含む、ステップ、（ｂ）オントロジー・オブジェクトにアクセスするステップであって、当該オントロジー・オブジェクトは、メタモデルが作成されるときに生成され、エンティティに対応し、且つエンティティのプロパティ及び関係を取得する、ステップ、及び（ｃ）オントロジー・オブジェクトを用いてインスタンス・モデルを作成するステップを含む。当該方法は、メタモデルを修正すること、及び必要に応じて対応するオントロジー・オブジェクトを再生成するステップをさらに含むことができる。
【０００９】
別の態様では、モデリング環境において用いるオントロジー・オブジェクトを提供する方法が開示される。当該方法は、（ａ）メタモデルを作成するフレームワークを提供するステップであって、当該メタモデルは１つ又は複数のエンティティ、関係、及びドメインのセマンティクスを含み、当該フレームワークはユーザから入力を受け取ってエンティティ及び関係を作成する、ステップ、（ｂ）オントロジー・オブジェクトを動的に生成するステップであって、当該オントロジー・オブジェクトは１つ又は複数のクラスのソースコードを含み、１つ又は複数のクラスのそれぞれは、エンティティのうちの１つに対応する、ステップ、（ｃ）オントロジー・オブジェクトを用いてセマンティクスの仕様をサポートするステップ、及び（ｄ）ソースコードをコンパイルするステップを含む。さらに、当該方法は、メタモデルへの変更が行われていることを検出するステップ、メタモデルに対する変更を反映するようにオントロジー・オブジェクトを更新するステップであって、１つ又は複数のクラスの新たなソースコードを生成するステップを含む、ステップ、変更されるオントロジー・オブジェクトの構造を参照するユーザ指定のセマンティクスを更新するステップであって、オブジェクトの参照及びメソッド（method）の呼び出しを修正するステップを含む、ステップ、並びに新たなソースコードをコンパイルするステップを含むことができる。
【００１０】
メタモデリング環境は、少なくとも１つのメタモデルを作成及び修正するインタフェースを含むことができ、メタモデルは複数のエンティティ、当該エンティティ間の１つ又は複数の関係、及びドメインのセマンティクスを含む。インタフェースはユーザ入力を受け入れて、複数のエンティティ、当該エンティティ間の１つ又は複数の関係、及びドメインのセマンティクスを定義することができる。メタモデリング環境は、複数のオントロジー・オブジェクトを動的に維持するように実行可能であるプログラムロジックも含むことができ、オントロジー・オブジェクトは、定義されたエンティティ及び当該エンティティ間の関係に対応する。さらに、メタモデリング環境は、オントロジー・オブジェクト上のメソッドを呼び出して、１つ又は複数のインスタンス・モデルを作成するインタフェースを含むことができる。いくつかの実施の形態では、インタフェースは、他のプログラムを書き込むことができるグラフィカル・ユーザ・インタフェース（ＧＵＩ）又はアプリケーション・プログラミング・インタフェース（ＡＰＩ）とすることができる。
【００１１】
オントロジー・オブジェクトは、Ｃ＋＋又はＪａｖａ等のプログラミング言語における複数のオブジェクト指向クラスを含むことができる。それぞれのクラスはユーザ定義のメタモデルからの１つのエンティティに対応する。エンティティはそれぞれ複数のプロパティを有するものとして定義することができ、インスタンス・モデルのデータは全てのインスタンスに関してこれらのプロパティの値を取得することができる。オントロジー・オブジェクトのクラスは、少なくとも１つのメソッドを含むことができる。メソッドを呼び出して、インスタンス・モデルのデータを作成、削除、及び修正することができる。一実施の形態では、インスタンス・モデルのデータはオントロジー・オブジェクトのクラスのインスタンスから成る。別の実施の形態では、インスタンス・モデルのデータはデータ構造内のデータから成る。さらに別の実施の形態では、インスタンス・モデルのデータはデータベース内のデータから成る。
【発明を実施するための最良の形態】
【００１２】
動的なオントロジー・オブジェクトは、ユーザ定義のメタモデルの仕様と一致するセマンティクスを取得及び維持する。実際には、これはユーザがメタモデルを修正するたびにオントロジー・オブジェクトのプログラムコードを生成すること（及び、必要に応じてコンパイルすること）によって達成することができる。したがって、例示的なメタモデリング環境は、メタモデルを作成するツールを提供する。メタモデル環境によって提供されるツールを用いて、エンティティ、エンティティのプロパティ、それらのエンティティ間の関係、及びそれらのエンティティの振る舞いから成るオントロジーを定義することができる。メタモデリング環境は、ユーザ定義のオントロジーを反映するオントロジー・オブジェクトを自動的に作成するメカニズムも提供する。具体的には、ツールは、ユーザ定義のオントロジーを成すエンティティに対応するクラスから成る動的なオントロジー・オブジェクトを作成することができる。これらのクラスは、メタモデルのエンティティのインスタンス・モデルのインスタンスを作成及び初期化するコンストラクタと、インスタンス・モデルからインスタンスを削除して必要なクリーンアップを行うデストラクタとを含むことができる。また、これらのクラスは、プロパティに対応するインスタンス・モデルのデータを作成、削除、及び修正するメソッドを有することができる。さらに、これらのクラスは、ユーザ定義のエンティティ間の関係を取得することもできる。具体的には、クラスは、ユーザ定義のエンティティ間の関係を取得するインスタンス・モデルのデータを作成、削除、及び修正するさらなるメソッドを含むことができる。
【００１３】
図１Ａは、メタモデリング・ツールで作成されるユーザ定義のモデルを示す。モデルは２つのエンティティ、すなわち、「車両（Vehicle）」エンティティ１０２及び「人（Person）」エンティティ１０４を含む。車両エンティティ１０２は、Licence_Plate_Number[String]プロパティも有する。このプロパティは、所与の車両のナンバープレートの番号を表す字、数字、及び／又は記号から成る文字列（ストリング）である。図１Ａは、車両エンティティ１０２と人エンティティ１０４との間の所有（OWNERS）関係１０６も含む。この関係は、或る人を所与の車両の所有者として定義する。
【００１４】
ユーザ定義のメタモデルにおける種々のエンティティ間の関係は、種々のタイプであり得る。例えば、関係は１対１、１対多、多対１、又は多対多の多様性を有するように定義することができる。１対多の関係は、第１のエンティティの１つのインスタンスが、定義された様式で第２のタイプのエンティティの複数のインスタンスに関係付けられ得るが、第２のタイプのエンティティのインスタンスのそれぞれは、第１のタイプのエンティティの単一のインスタンスに関係付けられるだけであり得ることを意味する。１対１の関係は、第１のエンティティの１つのインスタンスが定義された様式で第２のエンティティのただ１つのインスタンスに関係付けられ得ることを意味し、逆も同様である。多対１及び多対多の関係は同様に定義される。例えば、所有者（複数）関係１０６は多対多関係であり、１人の人が複数の車両を有することができ、１台の車両が複数の所有者を有することができることを示す。
【００１５】
メタモデル構造（すなわち、エンティティ１０２、１０４、及び、エンティティ間の関係１０６）を作成することによって、ユーザはメタモデルのシンタクスを定義する。ユーザは、プログラミングコードを書くことによってセマンティクスを定義する。図１Ｂは、オントロジー・オブジェクトを用いずに定義されたセマンティクスの一例を示す。より具体的には、例として、図１Ｂは人エンティティに関するメソッドのための擬似コード１０８（すなわち、セマンティクス）を示す。
【００１６】
擬似コード１０８は、或る特定の人に所有されている全ての車両のナンバープレートの番号を検索するメソッドを定義する。このメソッドのロジックは非常に単純であり、或る人が所有する車両のそれぞれについて繰り返し、それらの車両のナンバープレートの番号を検索する。しかしながら、このメソッドを作成することは、オントロジー・オブジェクトを用いることなく、メタモデルのエンティティ及び関係への全ての参照はメタモデルの言語ではなく、メタモデリング・ツールの言語で定義されているため、それほど単純ではない場合がある。より具体的には、executeNodeMethod及びgetPropertyはメタモデリング・ツールに固有のメソッドであり、ユーザは通常このようなメソッドの知識を有していない。これらのメソッドはメタモデルに対するプログラミングに有用であるため、ユーザがこれらのメソッドにアクセスできることが望ましい。オントロジー・オブジェクトは、このようなメソッドに固有のいかなる知識を必要とすることもなく、これらのメソッドへのアクセスを提供することができる。また、getAllPlateNumbersメソッドは、メタモデリング・ツールの言語において定義されなければならない特定のツール固有のクラス（例えばmetaNode）にも依存することに留意されたい。
【００１７】
オントロジー・オブジェクトは、ユーザが、モデリング・ツールのシンタクス（すなわち、メタモデリング・ツールの言語又はメタモデリング・ツールに固有のメソッド）ではなく、ユーザが作成しているシンタクスを用いてセマンティクスを定義することを可能にすることによって、セマンティクスがシンタクスと同時に作成されることを可能にする。図２に示すように、例示的なメタモデリング・ツールはユーザ定義のメタモデルに対応するオントロジー・オブジェクト２０２を動的に作成することができる。図１Ａと同様に、メタモデルは、車両エンティティ１０２及び人エンティティ１０４、並びに車両エンティティ１０２と人エンティティ１０４との間の所有者（複数）関係１０６を含む。オントロジー・オブジェクト２０２は、メタモデルのシンタクスとセマンティクスとを取得する。その後、オントロジー・オブジェクト２０２を用いて、１つ又は複数のインスタンス・モデルを作成することができる。
【００１８】
オントロジー・オブジェクト２０２はそれぞれ、対応するエンティティがユーザによって作成又は更新されるたびにメタモデリング・ツールによって生成される、クラスの形態を取ることができる。したがって、オントロジー・オブジェクト２０２は、車両クラス２０４及び人クラス２０６を含む。変数は、以下のフォーマット、つまり、変数の名前は大文字で記載され、変数の種類は大括弧内に小文字で記載されるフォーマット（VARIABLE_NAME[variable_type]）を用いて記述される。
【００１９】
クラスは変数及び／又はメソッドとの関係を取得することができる。例えば、所有者（複数）関係１０６は、人クラス２０６のVEHICLES[vehicle_list]変数及び車両クラス２０４のOWNERS[person_list]インスタンス変数によって取得される。これらの変数を定義することによって、多対多の所有者（複数）関係１０６はオントロジー・オブジェクト２０２によって取得される。具体的には、人クラス２０６は、その人が所有する車両のリストを表す変数（例えば、VEHICLES[vehicle_list]）を含むため、多対多の関係が取得される。同様に、車両クラスは、その車両を所有する人を表す変数（例えば、OWNERS[person_list]）を含む。
【００２０】
一態様では、オントロジー・オブジェクトは、例えばこれらのインスタンス変数間の一貫性を維持する基礎的なモデリングセマンティクスを提供するメソッドを含む。例えば、addOwner(Person)メソッドを用いて、車両の新しい所有者を指定することによって、その車両を人オブジェクト上のVEHICLES[vehicle_list]変数に追加し、その人を車両オブジェクト上のOWNERS[person_list]変数に追加する。この機能を促進するために、クラスメソッド２１０が、オントロジー・オブジェクトの或るインタフェースとして生成される。さらに、これらのメソッドの実装は、オントロジー・オブジェクトの構成要素として生成される。
【００２１】
インスタンス・モデルの作成を容易にするオントロジー・オブジェクトのインタフェース及び実装が生成される。これらはクラス２０４及び２０６と関連付けられ、これらのエンティティのための種々の機能を提供することができる。具体的には、インスタンス・モデルのデータへのアクセスを提供し、セマンティクスがオントロジー・オブジェクトに関して定義されることを可能にするメソッドを作成することができる。セマンティクスの例では、メソッドは、変数への参照に用いられるように、以下の、大括弧ではなく小括弧を用いる記述法（classMethod(InputType)）で参照される。
【００２２】
一態様では、インスタンス・モデルのデータを定義、アクセス、及び／又は操作するメソッドを提供することができる。例えば、addOwner(Person)メソッド、removeOwner(Person)メソッド、及びgetOwners()メソッドを、車両クラスのOWNERS[person_list]変数に従って生成することができる。addOwner(Person)メソッド、removeOwner(Person)メソッド、及びgetOwners()メソッドによって、車両クラス２０４の１つのインスタンスに関して、ユーザが車両の１人又は複数人の所有者を指定、削除、及び／又は検索することを可能にすることができる。同様の機能は、LICENSE_PLATE_NUMBER[string]変数のためのsetLicencePlateNumber(String)メソッド及びgetLicensePlateNumber()メソッド、並びに人クラス２０６のVEHICLES[vehicle_list]変数のためのaddVehicle(Vehicle)メソッド、removeVehicle(Vehicle)メソッド、及びgetVehicles()メソッドによって提供することができる。
【００２３】
一態様では、関係又はプロパティから自動的に生成されるメソッドに加えて、ユーザ定義のメソッドをサポートすることができる。ユーザはメソッドをメタモデルのエンティティと関連付けることができる。これらのメソッドは、それらのエンティティに対応するインタフェースに現れる。これらのメソッドの実装は、オントロジー・オブジェクトを用いて定義することができる。図３は、オントロジー・オブジェクト２０２上のユーザ定義のメソッドの擬似コードを示す。具体的には、擬似コード３００は人クラス２０６上のメソッドのためのものである。このメソッドは、或る特定の人に所有されている全ての車両のナンバープレートの番号を返す。このメソッドは、図１Ｂの擬似コードによって定義されるメソッド又はセマンティクスと同様の機能を提供する。しかしながら、擬似コード３００は、メタモデリング・ツールの言語を用いるのではなく、オントロジー・オブジェクトを用いて定義される。より具体的には、getVehicles()メソッド及びgetLicensePlateNumber()メソッドが、executeNoteMethod(...)及びgetProperty(...)の代わりに利用される。getVehicles()メソッド及びgetLicensePlateNumber()メソッドは、それぞれ人クラス及び車両クラス上で定義され、executeNoteMethod(...)及びgetProperty(...)は、メタモデリング・ツール自体に固有である。したがって、新たなメタモデルのセマンティクスを定義するgetAllPlateNumbers()メソッドは、作成されるシンタクスと同時にメタモデルのシンタクスにおいて作成することができる。
【００２４】
一態様では、オントロジー・オブジェクトはメタモデルツールのフレームワークによって用いられて、ユーザが新たなセマンティクスコードを定義するのをサポートして、制限、案内、又は提案をすることができる。これは、統合開発環境の技術分野で既知である、自動補完及び同様のメカニズムを用いて実施することができる。
【００２５】
図４は、オントロジー・オブジェクトを用いてインスタンス・モデルを作成する一例の方法４００を示すフローチャートである。当該方法は、メタモデリング環境内でユーザによって実行することができる。まず、ブロック４０２に示すように、メタモデル又はオントロジーが、エンティティ、エンティティ間の関係、及びセマンティクスを定義することによって作成される。次に、ブロック４０４に示すように、メタモデルが作成されると、メタモデリング環境は、エンティティに対応するオントロジー・オブジェクトを作成し、エンティティ間の関係及びメタモデルのセマンティクスを取得することができる。その後、ブロック４０６に示すように、オントロジー・オブジェクトを用いてインスタンス・モデルを作成することができる。
【００２６】
ブロック４０２において作成されるメタモデルは、ユーザがメタモデリング環境内で作業することによって作成することができる。メタモデリング環境は、メタモデルを成すエンティティ、関係、及び振る舞いをユーザが作成することを可能にするフレームワークを提供する。
【００２７】
ユーザがメタモデルを作成すると、そのメタモデルによって表されるオントロジーを反映するオントロジー・オブジェクトが作成される。より具体的には、ユーザ定義エンティティのそれぞれに関してクラスを生成することができる。これらのクラス上の変数及びメソッドがその後生成される。これらの変数及びメソッドは、（ａ）エンティティ間の関係を取得し、（ｂ）ユーザが生成されたクラスのインスタンスを作成、アクセス、及び操作することを可能にする基礎的なモデリングセマンティクスを取得する。オントロジー・オブジェクトの生成は動的に起こり、このプロセスはモデルを作成するユーザに対してトランスペアレント（透明）になる。オントロジー・オブジェクトは、エンティティごとに、又は所定のイベントに応答して生成することができる。例えば、エンティティがそれぞれ作成されると、対応するクラスも作成することができる。関係が定義されているように、好適なメソッド及び変数を含むようにこれらのクラスを更新することができる。代替的な一例では、オブジェクトは、ユーザがメタモデルを完成しているという指示に応答して作成することができる。オントロジー・オブジェクトが生成された後、それらを用いて、文字の意味コード（textual semantic code）でオントロジーをさらに拡張するか、又は、ブロック４０６によって示すように、インスタンス・モデルのデータを作成及び管理することができる。示されている方法は単一のインスタンス・モデルを作成することに関するが、単一のメタモデルからオントロジー・オブジェクトを用いて多数のインスタンス・モデルを作成することができる。
【００２８】
図５は、インスタンス・モデルを作成するのに用いることができるオントロジー・オブジェクトを作成及び維持する一例の方法５００を示すフローチャートである。図４の方法と同様に、ブロック５０２及び５０４に示すように、メタモデルが作成され、オントロジー・オブジェクトがメタモデルのオントロジーから生成される。その後生成されたオントロジー・オブジェクトを用いて、ブロック５０５に示すように、セマンティクスでオントロジーをさらに拡張するか又はインスタンス・モデルを作成することができる。その後、インスタンス・モデルを作成した後で、ブロック５０６に示すように基礎となるメタモデルに修正が加えられる。メタモデルが修正されると、オントロジーは変更することができる。具体的には、既存のエンティティ、プロパティ、及び関係を修正又は削除することができ、新たなエンティティ、プロパティ、又は関係を追加することができる。
【００２９】
オントロジー・オブジェクトがメタモデルと一致し続けるようにするために、オントロジー・オブジェクトに対する更新を行うことができる。具体的には、セマンティクスは、オントロジー・オブジェクトを成すクラスに関するメソッドを更新することによって更新することができる。したがって、メタモデルが修正されると、ブロック５０８に示すように、修正が更新を必要とするか否かについての判断を行うことができる。更新が必要とされる場合、ブロック５１０に示すように、オントロジー・オブジェクトを更新することができる。オントロジー・オブジェクトのライブラリが更新されたメタモデルと一致している状態を維持するために、新たなクラス、メソッド、及び／若しくは変数を作成するか、且つ／又は、既存のクラス、メソッド、及び／若しくは変数を変更若しくは削除することができる。
【００３０】
変更が起きたときに、メタモデルに対する変更を対応するオントロジー・オブジェクトにおいて反映させることができる。言い換えると、変更が起きたときに、オントロジー・オブジェクトを動的に更新して、その変更を基礎となるメタモデルに反映させる。さらに、オントロジー・オブジェクトが作成されると、必要に応じてオントロジー・オブジェクトはコンパイルされる。基礎となるメタモデルに対して修正が行われると、必要に応じて、メタモデルではなくオントロジー・オブジェクトが再コンパイルされる。このことにより、メタモデルに対する変更が行われるたびにメタモデルを再コンパイルする必要がなくなる。このようなオントロジー・オブジェクトの維持は、メタモデリング環境によって実行することができる。具体的には、メタモデリング環境は、グラフィカルユーザインタフェース（ＧＵＩ）を提供するコンピュータ可読プログラムコードによって提供することができる。代替的に、この環境は、プログラムコードのレベルにおけるＡＰＩを介したオントロジー・オブジェクト（例えば、生成されたＣ＋＋又はＪａｖａのクラスによって表されるオントロジー・オブジェクト）へのアクセスを提供することができる。
【００３１】
一態様では、オントロジー・オブジェクトを、既存のインスタンス・モデルが自身に修正を必要とすることなく機能し続けるように修正することができる。これは、オントロジー・オブジェクトがメタモデリングプロセスに抽象化の層を追加するためである。メタモデルを作成し、その後メタモデルに直接関連するインスタンス・モデルを作成するのではなく、メタモデルをミラーリングするオントロジー・オブジェクトを作成し、これを媒介として用いてメタモデル内の変更を反映する一方で、以前に作成されたインスタンス・モデルと一致する構造を維持する。
【００３２】
図６Ａは、ユーザ定義の一例のメタモデル６００を示す。オントロジー・オブジェクト６０２が、メタモデル６００のシンタクス及びセマンティクスを取得するために作成されている。さらに、インスタンス・モデル６０４がオントロジー・オブジェクト６０２を用いて作成されている。このモデルは、車両と車両の所有者との間の多対１の関係を取得する。この構造は、１人が複数の車両を所有することができるが、車両は１人によってのみ所有されることができるモデルを表す。
【００３３】
オントロジー・オブジェクト６０２はメタモデル６００をミラーリングし、したがって、人エンティティ６１０及び車両エンティティ６１２をそれぞれ取得する人クラス６０６及び車両クラス６０８を含む。所有者（OWNER）関係６１４を取得するために、人クラス６０６はVEHICLES[vehicle_list]変数を含み、また、車両クラスはOWNER[person]インスタンス変数を含む。
【００３４】
インスタンス・モデル６０４は、人クラスのインスタンス６１６、並びに車両クラスの２つのインスタンス６１８及び６２０を含む。ユーザは、人の名前（例えば、ボブ）又は車両のブランド（例えば、ポルシェ（Ｐｏｒｓｃｈｅ）又はユーゴ（Ｙｕｇｏ））等の、それぞれのインスタンスのそれぞれのプロパティの値を定義することができる。インスタンス・モデルを定義して、ボブがポルシェ及びユーゴを所有していることを示す所有者関係を指定することができる。これらの関係を、クラスのインスタンス６１６〜６２０についてのインスタンス変数の値を設定することによって取得することができる。人クラスのインスタンス６１６は、VEHICLES[vehicle_list]の値を車両クラスのインスタンス６１８及び６２０を参照するリスト（ボブがポルシェ及びユーゴを所有していることを示す）として設定する。人クラスのインスタンス６１６は、車両クラスのインスタンス６１８のOWNER[Person]変数の値（ポルシェがボブに所有されていることを示す）として設定する。人クラスのインスタンス６１６は、車両クラスのインスタンス６２０のOWNER[person]変数の値（ユーゴがボブに所有されていることを示す）として設定される。これらの関係は、オントロジー・オブジェクトのメソッドBob.addVehicle(Porsche)及びYugo.setOwner(Bob)を呼び出すことによってメタモデルの言語において取得することができる。
【００３５】
図６Ｂにおいて、人エンティティ６１０と車両エンティティ６１２との間の所有者関係６１４が多対多の所有者（複数）関係６２２であるように修正されるように、メタモデル６００が修正されている。この構造は、１人が複数台の車両を所有することができ、１台の車両が複数人に所有されることができるモデルを表す。多対多の所有者（複数）関係６２２を取得するために、人クラス６０６はVEHICLES[vehicle_list]インスタンス変数を含み、ここで車両クラス６０８は、OWNERS[person_list]変数を含む。より具体的には、OWNERS[person_list]変数は、ここで人クラスの単一のインスタンスではなく、人クラスの複数のインスタンスのリストを参照する。これは、インスタンス・モデルが複数の所有者を有する車両を含むことを可能にすることによって、多対多の所有者（複数）関係を反映する。
【００３６】
オントロジー・オブジェクトのインタフェース及びインプリメンテーションが、概して、関連するエンティティを含む修正されている関係のために、関連するメタモデルのエンティティが修正されるか、又は更新が必要とされるときにのみ更新されることに留意されたい。例えば、以前に生成された、Owner(Person)変数の値を設定するsetOwner(Person)メソッドは、OWNERS[person_list]変数に含まれる車両のリストに人を追加する新たなaddOwner(Person)メソッドと置き換えることができる。したがって、多対多の所有者（複数）関係６２２への変更は、車両クラスを更新することを必要とする。具体的には、車両クラス６０８のOWNER変数は、OWNERS[person_list]変数に変更され、OWNERS[person_list]変数は、単一のインスタンスではなく複数の人インスタンスのリストを表す。概して、新たな属性をメタモデル６００に追加する結果として、Ｊａｖａ又はＣ＋＋のクラス等の好適なオントロジー・オブジェクトに更新が行われ得る（又は、好適なオントロジー・オブジェクトが存在しない場合、好適なオントロジー・オブジェクトの作成が行われる）。例えば、年度（YEAR）プロパティ（図示せず）が車両エンティティ６１２に追加される場合、車両クラス６０８は年度を格納するインスタンス変数を含むように更新される。さらに、メソッドを追加して、クラスの特定のインスタンスの変数を作成、アクセス、及び／又は修正することができる。一方、基礎となるメタモデルへの修正の後、変更を全く必要としないエンティティもいくつかあり得る。例えば、モデルによって人が複数の車両を所有することが既に可能になっているため、人クラス６０６は、多対多の所有者（複数）関係６２２を反映するように変更する必要がない。したがって、車両クラス６０８とは異なり、人クラス６０６は所有者（複数）関係６２２を追加した後に更新されない場合がある。
【００３７】
一態様では、オントロジー・オブジェクトは、ユーザ定義のオントロジーを反映するように生成される実行可能なプログラムコード（例えば、Ｃ＋＋、Ｊａｖａ等）の形態を取ることができる。クラスのコード（例えば、Ｃ＋＋又はＪａｖａのクラス）を、ユーザがエンティティをメタモデルに追加するときにエンティティごとに生成することができる。クラスのコードは、「オンザフライで」生成することができる。一例のメタモデリング環境は、（例えば、連続して又は定期的に）ユーザ定義のメタモデルを監視し、モデルが変化したときにその変化を取得するクラスのコードを生成し、その後コードをコンパイルすることができる。このことによって、最新のオントロジー・オブジェクトが引き続き利用可能になることが保証される。クラスを参照するあらゆるコードが更新を必要とし得ることに留意されたい。ツールがこのコードを知っている場合（例えば、コードがメタモデリング環境で開発されている場合か又はユーザが外部で開発されたコードをメタモデリング環境に登録している場合）、ツールは自身を修復するか又はユーザがそうするように仕向けることができる。
【００３８】
今やインスタンス・モデルを、多対多の所有者（複数）関係を含む新たなオントロジーで作成することができる。さらに、オントロジー・オブジェクトのメソッド内で変更は分離されているため、インスタンス・モデル６０４等の既存のインスタンス・モデルは、存続して機能し続けることができる。これらの変更は、メタモデルにおける追加のセマンティクスを指定するユーザ定義のコードを含む、以前のオントロジー・オブジェクトのメソッドを呼び出すいかなるコードにも影響を与え得る。しかしながら、これらの変更は既知の手段によって管理することができる。例えば、フレームワークは必要な変更を自動的に伝搬するか又はユーザに問題を通知することができる。この状況に対処する１つの方法は、必要に応じて、古いメソッドを廃止し、その振る舞いを変更して他の２つを呼び出すことである。
【００３９】
例示的な実施形態を説明してきたが、当業者は、本発明の範囲及び精神から逸脱することなく変更を行うことができることを理解するであろう。本発明の真の範囲及び精神は、上述の記載に照らして解釈することができる添付の特許請求の範囲によって定義される。
【図面の簡単な説明】
【００４０】
【図１Ａ】一例のメタモデルを示す単純化したブロック図である。
【図１Ｂ】一例のメタモデルのセマンティクスの擬似コードである。
【図２】一例のメタモデル、一例のオントロジー・オブジェクトのセット、及び対応するメソッドを示す単純化したブロック図である。
【図３】オントロジー・オブジェクト上で定義される、メタモデルのセマンティクスの例の擬似コードである。
【図４】オントロジー・オブジェクトを用いてインスタンス・モデルを作成する一例の方法を示すフローチャートである。
【図５】インスタンス・モデルを作成するのに用いることができるオントロジー・オブジェクトを作成及び維持する一例の方法を示すフローチャートである。
【図６Ａ】一例のメタモデル、一例のオントロジー・オブジェクトのセット、及び一例のインスタンス・モデルを示す単純化したブロック図である。
【図６Ｂ】一例のメタモデル、一例のオントロジー・オブジェクトのセット、及び一例のインスタンス・モデルを示す別の単純化したブロック図である。
【図１Ａ】
2008262551.tif 000003
【図１Ｂ】
2008262551.tif 000004
【図２】
2008262551.tif 000005
【図３】
2008262551.tif 000006
【図４】
2008262551.tif 000007
【図５】
2008262551.tif 000008
【図６Ａ】
2008262551.tif 000009
【図６Ｂ】
2008262551.tif 000010
【外国語明細書】
2008262551000001.pdf