(57)【特許請求の範囲】
【請求項１】
階層型のクラスと、クラスの詳細を記述するプロパティとから構成するオントロジに、複数のクラスがグループ化されたパッケージを用いて、あるパッケージに属するクラスと他のパッケージに属するクラスと、クラスのプロパティ間の継承関係、引用関係、または包含関係を用いる場合に、該他のパッケージを更新参照パッケージとして関連付ける更新参照関係を生成する生成部と、
任意の第１クラスまたは該第１クラスのプロパティに更新がある場合、該第１クラスおよび該第１クラスが属する第１パッケージを更新する更新部と、
前記更新参照関係を用いて、更新した前記第１パッケージの更新参照パッケージのうち、更新した前記第１クラスと関連する更新対象パッケージが存在するかどうかを検出する検出部と、
前記更新対象パッケージが存在する場合、前記更新対象パッケージを更新する必要があることを示す更新通知を生成する通知部と、
を具備することを特徴とするオントロジ更新装置。
【請求項２】
前記検出部は、前記更新対象パッケージとして、更新した前記第１パッケージと異なりかつ前記第１クラスの下位層のクラスが属するパッケージ、または、更新した前記第１クラスのプロパティの少なくとも一部を利用する引用関係を有するクラスが属するパッケージ、または、更新した前記第１クラスのプロパティをサブセットとする包含関係を有するクラスが属するパッケージが存在するかどうかを検出することを特徴とする請求項１に記載のオントロジ更新装置。
【請求項３】
前記生成部は、注目したクラスＡが属する注目パッケージＡと、該注目したクラスＡの親クラスＢ、または該注目したクラスＡと引用関係にあるクラスＢ、または該注目したクラスＡと包含関係にあるクラスＢのいずれかが属するパッケージＢと、が異なる場合、前記注目パッケージＡをパッケージＢの更新参照パッケージとして、前記クラスＢが属するパッケージＢに、クラスＡと属するパッケージＡとの更新参照関係を生成することを特徴とする請求項１に記載のオントロジ更新装置。
【請求項４】
階層型のクラスと、クラスの詳細を記述するプロパティとから構成するオントロジに、複数のクラスがグループ化されたパッケージを用いて、あるパッケージに属するクラスと他のパッケージに属するクラスと、クラスのプロパティ間の継承関係、引用関係、または包含関係を用いる場合に、該他のパッケージを更新参照パッケージとして関連付ける更新参照関係を生成し、
任意の第１クラスまたは該第１クラスのプロパティに更新がある場合、該第１クラスおよび該第１クラスが属する第１パッケージを更新し、
前記更新参照関係を用いて、更新した前記第１パッケージの更新参照パッケージのうち、更新した前記第１クラスと関連する更新対象パッケージが存在するかどうかを検出し、
前記更新対象パッケージが存在する場合、前記更新対象パッケージを更新する必要があることを示す更新通知を生成することを具備することを特徴とするオントロジ更新方法。
【請求項５】
サーバと、該サーバにネットワークを介して接続されるアプリケーション装置とを含む更新システムであって、
前記サーバは、
階層型のクラスと、クラスの詳細を記述するプロパティとから構成するオントロジに、複数のクラスがグループ化されたパッケージを用いて、あるパッケージに属するクラスと他のパッケージに属するクラスと、クラスのプロパティ間の継承関係、引用関係、または包含関係を用いる場合に、該他のパッケージを更新参照パッケージとして関連付ける更新参照関係を生成する生成部を具備し、
前記アプリケーション装置は、
複数のパッケージのうちの特定のパッケージ、該特定のパッケージに含まれるクラス、および前記更新参照関係を格納する部分格納部と、
前記特定のパッケージのうち任意の第１クラスまたは該第１クラスのプロパティに更新がある場合は、前記更新参照関係を用いて、前記第１クラスが属する第１パッケージの更新参照パッケージのうち、更新した前記第１クラスと関連する更新対象パッケージが存在するかどうかを検出する検出部と、
前記更新対象パッケージが存在する場合、前記更新対象パッケージを更新する必要があることを示す更新通知を生成する通知部と、
前記第１クラスまたは該第１クラスのプロパティに更新がある場合は、該第１クラスおよび前記第１パッケージを更新し、前記更新通知を受け取った場合は、前記更新対象パッケージを更新する更新部とを具備することを特徴とするオントロジ更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、オントロジ更新装置、方法、およびシステムに関する。
【背景技術】
【０００２】
ＩＥＣ６１９６８／６１９７０、所謂ＣＩＭ（Common Information Model）が、スマートグリットの基本国際規格のひとつとして、電力系統を構成する設備や、発電、送電、変電および配電の情報モデルを定義し、ＥＭＳ（Energy Management System）のＡＰＩ（Application Program Interface）を提供している。ＣＩＭには、電力系統に関連するオブジェクトを定義するクラス、クラス詳細を記述する属性（プロパティ）、データタイプ等の定義がある。また、利用分野によって、ＣＩＭの定義情報のうち相関する情報要素をグループ化しパッケージとして定義する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】ＩＥＣ６１９７０−３０１
【非特許文献２】ＩＥＣ６１９６８
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＣＩＭパッケージは業務分野の密接性から決められるため、パッケージ間にはクラス階層に従う継承関係はない。また、パッケージ間の関係は、ＵＭＬ（Unified Modeling Language）のパッケージ関係の定義に従って定められるため、どの要素（クラス、プロパティなど）によって成立するのかは不明確であり、１つのクラスまたはそのプロパティの変更によって、更新すべきパッケージが不明確である。更に、ＣＩＭ全体はひとつのファイルとして、ひとつのバージョンを付与して管理を行っているため、ＣＩＭ要素に更新があった場合は、更新が不要なパッケージを含めて全体的に更新を行っている。  
しかし、ＣＩＭを用いる各アプリケーションは、複数存在するパッケージのうち、一部のパッケージを利用することが多い。従って、他のパッケージの更新があった場合に、アプリケーションごとに、自身のパッケージを更新するかどうかを判定することはできない。
【０００５】
本開示は、効率的な更新処理を行うことができるオントロジ更新装置、方法、および更新システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本実施形態に係るオントロジ更新装置は、生成部、更新部、検出部、および通知部を含む。生成部は、階層型のクラスおよびクラスの詳細を記述する属性がグループ化されたパッケージを用いて、あるパッケージに属するクラスと他のパッケージに属するクラスとに関係がある場合に、該他のパッケージを更新参照パッケージとして関連付ける更新参照関係を生成する。更新部は任意の第１クラスに更新がある場合、該第１クラスおよび該第１クラスが属する第１パッケージを更新する。検出部は、前記更新参照関係を用いて、更新した前記第１パッケージの更新参照パッケージのうち、更新した前記第１クラスと関連する更新対象パッケージが存在するかどうかを検出する。通知部は、前記更新対象パッケージが存在する場合、前記更新対象パッケージを更新する必要があることを示す更新通知を生成する。
【図面の簡単な説明】
【０００７】
【図１】本実施形態に係るオントロジ更新システムを示す概念図。
【図２】本実施形態に係るオントロジ更新装置を示すブロック図。
【図３】本実施形態に係るアプリケーション装置を示すブロック図。
【図４】本実施形態に係るＣＩＭの概念を示す図。
【図５】本実施形態に係るパッケージの依存関係の一例を示す図。
【図６】パッケージにおけるクラス階層構造の一例を示す図。
【図７】本実施形態におけるクラス構造の一例を示す図。
【図８】本実施形態におけるプロパティ構造の一例を示す図。
【図９】更新参照関係生成部の動作を示すフローチャート。
【図１０】ＣＩＭクラス階層構造による継承関係の一例を示す図。
【図１１】更新参照関係の一例を示す図。
【図１２】更新参照関係生成部の動作の具体例を示すフローチャート。
【図１３】オントロジ更新装置の動作を示すフローチャート。
【図１４】変形例に係るアプリケーション装置を示すブロック図。
【図１５】Ｈａｓ−ａおよびＩｓ−ａの関係の一例を示す図。
【図１６】従来のＵＭＬによるＣＩＭパッケージの依存関係の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら本実施形態に係るオントロジ更新装置、方法、および更新システムについて詳細に説明する。なお、以下の実施形態では、同一の参照符号を付した部分は同様の動作を行うものとして、重複する説明を適宜省略する。  
本実施形態に係るオントロジ更新システムについて図１のブロック図を参照して説明する。  
本実施形態に係るオントロジ更新システム１００は、オントロジ更新装置１０１、アプリケーション装置１０２を含む。また、オントロジ更新装置１０１とアプリケーション装置１０２とは、ネットワーク１０３を介して相互通信が可能である。さらに、アプリケーション装置１０２−１から１０２−４までは、それぞれ異なるパッケージを１つまたは複数ずつ有し、それぞれがネットワーク１０３を介して通信可能である。図１の例では、１つまたは複数のパッケージを有するアプリケーション装置１０２を４つ示しているが、これに限らず、アプリケーション装置１０２の数は１つまたは複数あればよい。さらに、各アプリケーション装置１０２が複数のパッケージを有してもよい。
【０００９】
オントロジ更新装置１０１は、例えばサーバであり、ＣＩＭ（Common Information Model）に基づくクラスおよびその階層関係、属性（プロパティともいう）、データタイプ、パッケージ、および本実施形態で作成されたパッケージ間の更新参照関係を保存する。クラスは、ＣＩＭに基づくオブジェクトを定義したものである。プロパティは、クラスの詳細を記述したものである。パッケージは、目的に合わせてクラスをグループ化した集合である。パッケージの詳細については図４および図５を参照して後述する。更新参照関係は、あるパッケージＡに属するクラスによって、他のパッケージに属するクラス間の継承関係、または引用関係、または包含関係を用いた、他のパッケージとの参照関係を示す。更新参照関係については、図９から図１１までを参照して後述する。
【００１０】
オントロジ更新装置１０１は、クラスまたはプロパティに更新があった場合、クラスが属するパッケージの他に、他のパッケージについても更新するかどうかを判定する。更新する必要がある場合、更新通知を生成する。更新通知は、パッケージを更新する必要があること、および更新に必要な内容を含む通知であり、具体的には例えば、更新するパッケージとその更新内容とを含む。
【００１１】
アプリケーション装置１０２は、オントロジ更新装置１０１から更新通知を受け取り、アプリケーション装置１０２に格納されるパッケージを更新する。
【００１２】
次に、オントロジ更新装置１０１のブロック図について図２を参照して説明する。  
本実施形態に係るオントロジ更新装置１０１は、ＣＩＭ格納部２０１、更新参照関係生成部２０２（単に生成部ともいう）、更新参照関係保存部２０３、パッケージ更新部２０４（単に更新部ともいう）、パッケージ更新検出部２０５（単に検出部ともいう）およびパッケージ更新通知部２０６（単に通知部ともいう）を含む。  
ＣＩＭ格納部２０１は、ＣＩＭ情報、すなわちＣＩＭのクラス、プロパティ、データタイプ、パッケージ等、ＣＩＭ関連情報を格納し、さらに後述する更新参照関係生成部２０２によって生成される更新参照関係を格納する。  
更新参照関係生成部２０２は、ＣＩＭ格納部２０１からクラスおよびその関係、プロパティ、パッケージを受け取り、クラスの階層構造を用いて更新参照関係を生成する。更新参照関係の生成については図９を参照して後述する。  
更新参照関係保存部２０３は、更新参照関係生成部２０２から更新参照関係を受け取り、ＣＩＭ格納部２０１に保存する。
【００１３】
パッケージ更新部２０４は、パッケージに属するクラスに更新の必要性が生じた場合に、ＣＩＭ格納部２０１に格納されるクラスおよびパッケージの更新を行う。  
パッケージ更新検出部２０５は、パッケージ更新部２０４から更新したクラスおよびパッケージの情報を、ＣＩＭ格納部２０１から更新参照関係をそれぞれ受け取る。パッケージ更新検出部２０５は、更新参照関係に基づいて、更新したパッケージの他に更新するべきパッケージである更新対象パッケージを検出する。パッケージ更新検出部２０５の動作については、図１２を参照して後述する。  
パッケージ更新通知部２０６は、パッケージ更新検出部２０５から更新対象パッケージの情報を受け取り、更新対象パッケージの更新通知を生成し、必要に応じて外部へ送信する。
【００１４】
次に、本実施形態に係るアプリケーション装置１０２について図３を参照して説明する。  
本実施形態に係るアプリケーション装置１０２は、通信部３０１、更新部３０２、およびＣＩＭ部分格納部３０３を含む。  
通信部３０１は、オントロジ更新装置１０１と相互通信を行う。具体的には、オントロジ更新装置１０１から更新通知を受け取る。  
更新部３０２は、通信部３０１から更新通知を受け取り、ＣＩＭ部分格納部３０３に格納されるパッケージを更新する。  
ＣＩＭ部分格納部３０３は、ＣＩＭに基づく特定のパッケージと、該当パッケージに属するクラス、属性および他の情報を格納する。また、更新部３０２からの更新があった場合は、更新されたパッケージを格納する。
【００１５】
次に、本実施形態で採用するＣＩＭモデルの概念について図４を参照して説明する。  
図４は、ＣＩＭに用いるパッケージのリスト例を示す。ＣＩＭは、ＵＭＬ(unified modeling language)を用いてモデルが記述され、クラス、プロパティ、データタイプなどの要素が定義される。また、ＣＩＭを定めるＩＥＣ６１９７０（ＣＤＶ版、５７／１０３２／ＣＤＶ、committee draft for vote）と、ＩＥＣ６１９６８（ＦＤＩＳ版、final draft international standard）とを用いて、利用分野によってパッケージに分類し、管理を行う。本実施形態では、ＣＩＭとして、ＩＥＣ６１９７０のパッケージとＩＥＣ６１９６８のパッケージとのうち、必要なパッケージを選択するか、または全て採用する。
【００１６】
次に、一般的なＩＥＣ６１９７０のパッケージの一例を図５に示す。  
図５にはパッケージ間の依存関係が示され、各ブロックはパッケージを表す。例えば「Ｔｏｐｏｌｏｇｙ」パッケージは、「Ｗｉｒｅｓ」、「Ｍｅａｓ」および「Ｃｏｒｅｓ」とＵＭＬが定義する依存関係を有する。しかし、ＣＩＭではクラスの階層構造により継承関係が成立するため、パッケージ間の依存関係のみでは、パッケージ間の関係は、どのクラス、または複数のクラス、属性によって成立するのかは不明である。
【００１７】
次に、パッケージのクラス階層構造の一例について図６を参照して説明する。  
図６は、一例としてＣＩＭで定義される「Ｗｉｒｅ」パッケージのクラス階層構造例を示す。  
各ブロックはクラスを表し、矢印によりそれぞれの階層関係を表現する。矢印の先のクラスが親クラスを表す。また、クラス６０１の「Ｃｏｒｅ：ｉｄｅｔｉｆｉｅｄＯｂｊｅｃｔ」は、「Ｃｏｒｅ」がパッケージ名であり、「ｉｄｅｎｔｉｆｉｅｄＯｂｊｅｃｔ」はクラス名である。このように、クラスが属するパッケージが記述される。また、パッケージ名がないブロックは、階層構造により表現されるパッケージに属するクラスである。例えば、クラス６０２の「ＴａｐＣｈａｎｇｅｒ」は、「Ｗｉｒｅ」のパッケージに定義されることとなり、クラス６０２の属するパッケージは「Ｗｉｒｅ」パッケージである。このように、あるパッケージの階層構造として、別のパッケージに属するクラスを用いて階層構造を形成してもよい。  
なお、ＷｉｒｅパッケージとＣｏｒｅパッケージとは依存関係を有するが、２つのパッケージ間に階層関係は存在せず、ＷｉｒｅパッケージとＣｏｒｅパッケージとの間の依存関係は、複数のクラスによって成立するが、あるＷｉｒｅパッケージのクラスが更新した際に、Ｃｏｒｅパッケージの更新を行うかどうかは不明確である。
【００１８】
ここで、本実施形態における定義されるクラス構造の一例を図７に示す。  
図７の例では、ＣＩＭにより定義されるクラス構造は、名称（Ｎａｍｅ）７０１、種類（Ｔｙｐｅ）７０２、注釈（Ｎｏｔｅ）７０３から構成される。本実施形態では、クラス構造に、バージョン（Ｖｅｒｓｉｏｎ）７０４のフィールドを付与する。また、各クラスには、自分が定義するｎａｔｉｖｅ ａｔｔｒｉｂｕｔｅ（自定義プロパティ）、上位クラスから継承するプロパティのｉｎｈｅｒｉｔ ａｔｔｒｉｂｕｔｅがある。
【００１９】
次に、本実施形態におけるプロパティ構造の一例について図８を参照して説明する。  
クラスの場合と同様に、ＣＩＭが定義するプロパティは、名称（Ｎａｍｅ）、データタイプ（Ｔｙｐｅ）、注釈（ｎｏｔｅ）のフィールドがあり、本実施形態はバージョン（Ｖｅｒｓｉｏｎ）のフィールドを付与する。例えば、図８の例では、名称８０１「ｍＲＩＤ」、タイプ８０２「Ｓｔｒｉｎｇ」、注釈８０３「Ｉｎｈｅｒｉｔｅｄ ｆｒｏｍ：ＩｄｅｎｔｉｆｉｅｄＯｂｊｅｃｔ」、およびバージョン８０４「１．１」は本実施形態が付与する。上述のｉｎｈｅｒｉｔ ａｔｔｒｉｂｕｔｅの場合は、注釈８０３において自分を定義したクラスを記述する。
【００２０】
従来のＣＩＭ記述によるクラスおよびプロパティにはバージョン情報の定義がなく、ＣＩＭの更新が行われた際に、各クラスまたは各プロパティに更新があったかどうかは、定義されたテキストの内容を相互に比較しなければわからない。  
一方、本実施形態では、各クラスまたは各プロパティにバージョンのフィールドを追加しているため、各要素に更新があった場合に、バージョンを参照することで更新が必要なクラスまたはプロパティを検出することができる。
【００２１】
ここで、更新参照関係生成部２０２の動作について図９のフローチャートを参照して説明する。  
ステップＳ９０１では、ＣＩＭ格納部２０１から、全クラスと、各クラスの親クラス情報と、各クラスが属するパッケージ情報とを抽出し、クラスリストを作成する。  
ステップＳ９０２では、クラスリストから、１つのクラスを抽出する。   
ステップＳ９０３では、抽出したクラスが属するパッケージと、抽出したクラスの上位層である親クラスが属するパッケージとが異なるかどうかを判定する。パッケージが異なる場合は、ステップＳ９０４へ進み、パッケージが同一である場合は、ステップＳ９０９へ進む。
【００２２】
ステップＳ９０４では、生成された更新参照関係に親クラスが属するパッケージが存在するかどうかを判定する。親クラスが属するパッケージが存在する場合は、ステップＳ９０６へ進み、親クラスが属するパッケージが存在しない場合は、ステップＳ９０５へ進む。  
ステップＳ９０５では、親クラスが属するパッケージを追加する。  
ステップＳ９０６では、親クラスが属するパッケージと抽出したクラスが属するパッケージとが既に関連付いているかどうかを判定する。関連付いている場合はステップＳ９０７へ進み、関連付いていない場合は、ステップＳ９０８へ進む。
【００２３】
ステップＳ９０７では、親クラスが属するパッケージと抽出したクラスが属するパッケージとの関連付けに、親クラスを追加する。こうすることで、パッケージ間の関連付けにおいて、どのクラスによってパッケージ間の更新参照関係が成立しているかを示すことができる。なお、抽出したクラスが属するパッケージを更新参照パッケージという。  
ステップＳ９０８では、更新参照関係として、親クラスが属するパッケージと、更新参照パッケージと、クラスとの関連付けをテーブルに追加する。このように、ステップＳ９０７またはステップＳ９０８の処理によって、親クラスが属するパッケージに、親クラスと更新参照パッケージとの情報を関連付けることができる。  
ステップＳ９０９では、クラスリストに未抽出のクラスがあるかどうかを判定する。未抽出のクラスがあれば、ステップＳ９０２へ戻り、ステップＳ９０２からステップＳ９０９までの同様の処理を繰り返す。未抽出のクラスがなければ、処理を終了する。以上の処理によって、更新参照関係生成部２０２においてパッケージごとの更新参照関係を生成される。
【００２４】
次に、更新参照関係生成部２０２の動作の具体例について、図１０および図１１を参照して説明する。  
図１０は、ＣＩＭクラス階層構造による継承関係の一例である。クラス１は、１番上位層のクラスであり、パッケージＣに属する。クラス１は、下位層のクラス（子クラス）として、パッケージＡに属するクラス２とパッケージＢに属するクラス３とを有する。また、クラス３の子クラスとして、パッケージＢに属するクラス４とパッケージＡに属するクラス５とがあり、さらに、クラス４の子クラスとして、パッケージＡに属するクラスＡがある。また、上述の継承関係では、上位層のクラス（親クラス）のプロパティを継承する。図１０の例では、クラス３はクラス５の親クラスであり、クラス５はクラス３のプロパティを全て継承する。
【００２５】
さらに、クラス３には、引用関係（ｃａｓｅ−ｏｆ）として、パッケージＤに属するクラス１００が関連付いている。引用関係は、あるクラスが、階層継承関係を持たない他のクラスから、少なくとも一部の定義プロパティを引用する場合を指す。具体的には、図１０の場合はクラス３とクラス１００とが引用関係を有し、クラス１００は、クラス３のプロパティの少なくとも一部の定義プロパティを継承する。この引用関係も更新参照関係に含めてもよい。
【００２６】
また、包含関係（ｐａｒｔ−ｗｈｏｌｅ）を更新参照関係に含めてもよい。包含関係は、あるクラスの属性が、他のクラスのサブセットである場合を指す。
【００２７】
図１１は、図１０のクラス階層構造に基づいて更新参照関係生成部２０２によって生成された、更新参照関係のテーブルである。  
本実施形態では、パッケージごとに、パッケージ名１１０１、パッケージコード１１０２、パッケージ説明１１０３、パッケージバージョン１１０４、作成日１１０５、更新参照パッケージリスト（Ｄｅｐｅｎｄｅｎｔ＿ｂｙ）１１０６、および更新参照パッケージ｛クラス名｝（Ｐａｃｋａｇｅ｛ｒｅｌａｔｅｄ＿ｃｌａｓｓ｝）１１０７が関連付けられ、ひとつのパッケージに関する更新参照関係は、一列に格納される。例えば、更新参照関係１１０８は、パッケージＡの更新参照関係を示す。なお、本実施形態では、更新参照関係として、全ての要素を含めているが、少なくともパッケージ名１１０１、パッケージバージョン１１０４、更新参照パッケージリスト１１０６、および更新参照パッケージ｛クラス名｝１１０７を含めばよい。
【００２８】
パッケージ名１１０１は、ＣＩＭ規格で定められたパッケージの名前である。パッケージコード１１０２は、パッケージを識別するための識別子である。パッケージ説明１１０３は、ＣＩＭ規格で定義したパッケージの説明文またはその他パッケージ利用説明である。パッケージバージョン１１０４は、パッケージのバージョン番号であり、実施形態により付与する。例えば、初期値は１とする。作成日１１０５は、更新参照関係を作成した日付である。更新参照パッケージリスト１１０６は、パッケージ名と関連付く更新参照パッケージ名を列挙したリストである。なお、更新参照パッケージと更新参照関係のタイプ（引用関係、包含関係など）とを記述してもよい。更新参照パッケージ｛クラス名｝１１０７は、パッケージごとの更新参照パッケージ名と、更新参照パッケージの依存関係を成立させるクラスを記述する。
【００２９】
ここで、更新参照関係生成部２０２の動作の具体例について図１２のフローチャートを参照して説明する。  
ステップＳ１２０１では、ＣＩＭ格納部２０１に格納されるＣＩＭ情報（既存ＣＩＭ情報）から、全クラスと、各クラスの親クラス情報と、各クラスが属するパッケージ情報とを検出し、クラスリストを作成する。  
ステップＳ１２０２では、クラスリストから、１つのクラス、ここではクラスＸ（Ｐａｃｋａｇｅ１）を抽出する。  
ステップＳ１２０３では、抽出したクラスＸが属するパッケージ（Ｐａｃｋａｇｅ１）と、抽出したクラスの上位層である親クラスＹが属するパッケージ（Ｐａｃｋａｇｅ２）とが異なるかどうか（違うかどうか）を判定する。パッケージが異なる場合（ＹＥＳ）は、ステップＳ１２０４へ進み、パッケージが同一である場合（ＮＯ）は、ステップＳ１２０９へ進む。
【００３０】
ステップＳ１２０４では、生成された更新参照関係（図１１に示すテーブル）に親クラスＹが属するパッケージＰａｃｋａｇｅ２の列が存在するかどうかを判定する。親クラスが属するパッケージＰａｃｋａｇｅ２が存在する場合（ＹＥＳ）は、ステップＳ１２０６へ進み、親クラスが属するパッケージＰａｃｋａｇｅ２が存在しない場合（ＮＯ）は、ステップＳ１２０５へ進む。  
ステップＳ１２０５では、親クラスＹが属するパッケージＰａｃｋａｇｅ２の列を追加する。  
ステップＳ１２０６では、親クラスＹが属するパッケージＰａｃｋａｇｅ２と抽出したクラスＸが属するパッケージＰａｃｋａｇｅ１とが既に関連付いているかどうかを判定する。具体的には、Ｐａｃｋａｇｅ２の列のＤｅｐｅｎｄｅｎｔ＿Ｂｙコラムに、Ｐａｃｋａｇｅ１の記述があるかどうかを判定する。記述がある場合はステップＳ１２０７へ進み、記述がない場合は、ステップＳ１２０８へ進む。
【００３１】
ステップＳ１２０７では、親クラスＹが属するパッケージＰａｃｋａｇｅ２と抽出したクラスＸが属するパッケージＰａｃｋａｇｅ１との関連付けコラム（Ｄｅｐｅｎｄｅｎｔ＿ｂｙ）に、親クラスＹを追加する。
【００３２】
ステップＳ１２０８では、更新参照関係に、親クラスＹが属するパッケージＰａｃｋａｇｅ２と、更新参照パッケージＰａｃｋａｇｅ１と、クラスＸとの更新参照関連を生成する。
【００３３】
ステップＳ１２０９では、クラスリストに未抽出（未処理）のクラスがあるかどうかを判定する。未抽出のクラスがあれば、ステップＳ１２０２へ戻り、ステップＳ１２０２からステップＳ１２０９までの同様の処理を繰り返す。未抽出のクラスがなければ、処理を終了する。
【００３４】
さらに、図１１を参照して更新参照関係生成の具体例を説明する。  
パッケージＢの更新参照関係は、まず、パッケージＢの更新参照先の更新参照パッケージリスト１１０６に「パッケージＡ」が追加される。続いて、「パッケージＡ」と「パッケージＢ」との更新参照関係は、パッケージＢに属するクラス３によって成立するため、更新参照パッケージ｛クラス名｝１１０７コラムにパッケージＡ｛クラス３｝が追加される。同様に、パッケージＡに属するクラス６も、パッケージＢに属するクラス４を親クラスとする階層関係となるので、更新参照パッケージ｛クラス｝１１０７にパッケージＡ｛クラス４｝が追加され、パッケージＡ｛クラス３，クラス４｝の形式となる。このように、更新参照関係生成部２０２がパッケージごとに処理を行うことで、パッケージごとの更新参照関係を生成することができる。  
なお、パッケージＢの更新参照パッケージ１１０６に示す「パッケージＤ」は、引用関係であり、更新参照パッケージとして引用関係または包含関係を有するパッケージも更新参照関係に含める。
【００３５】
次に、オントロジ更新装置１０１の動作について図１３のフローチャートを参照して説明する。  
ステップＳ１３０１では、パッケージ更新部２０４が、更新通知によりクラスのバージョンを更新する。  
ステップＳ１３０２では、パッケージ更新部２０４が、更新されたクラスが属するパッケージを更新する。  
ステップＳ１３０３では、パッケージ更新検出部２０５が、更新されたパッケージに更新参照パッケージリストがあるかどうかを判定する。更新参照パッケージリスト（１１０６）がある場合、ステップＳ１３０４に進み、更新参照パッケージがない場合、処理を終了する。
【００３６】
ステップＳ１３０４では、パッケージ更新検出部２０５が、更新されたパッケージの更新参照パッケージのうちで、更新されたクラスと関連する更新参照パッケージ（１１０７）があるかどうかを判定する。更新されたクラスと関係する更新参照パッケージ１１０７がなければ、更新されたクラスが属するパッケージのみ更新すれば良い。以下、更新されたクラスと関連する更新参照パッケージを更新対象パッケージという。更新対象パッケージがある場合、ステップＳ１３０５へ進み、更新対象パッケージがなければ、処理を終了する。  
ステップＳ１３０５では、パッケージ更新通知部２０６が、更新対象パッケージの更新通知を生成する。その後、ステップＳ１３０３へ戻り、更新対象パッケージがなくなるまで、ステップＳ１３０３からステップＳ１３０５までの処理を繰り返す。
【００３７】
具体的に図１１を参照して、クラス４が更新される場合を想定して説明する。  
はじめに、クラス４のバージョンを更新し、クラス４が属するパッケージＢを更新する。続いて図１１の更新参照パッケージリスト１１０６を参照すると、パッケージＢには、更新参照パッケージとしてパッケージＡとパッケージＤとが関連付いている。さらに、更新参照パッケージ｛クラス｝１１０７を参照すると、パッケージＡがパッケージＢのクラス３およびクラス４に依存し、パッケージＤはパッケージＢのクラス３に依存する。従って、クラス４の更新によって、パッケージＤは更新の影響を受けず、パッケージＡだけが更新の影響を受けることが判定できる。すなわち、更新対象パッケージであるパッケージＡの利用アプリケーションのみに更新通知を行えばよい。よって他のパッケージを無駄に更新することなく、必要最低限の更新を行うことができる。
【００３８】
なお、パッケージＡの更新を行った後に、パッケージＡを図１３に示すステップＳ１３０２の入力として処理を繰り返し行うことにより、更新すべき全てのパッケージを検出することが望ましい。  
（実施形態の変形例）  
図１のオントロジ更新システム１００では、オントロジ更新装置１０１（サーバ）が個々のアプリケーション装置１０２に更新通知を行っていたが、本変形例では、個々のアプリケーション装置１０２に、生成したパッケージ間の更新参照関係を保存する。
【００３９】
本変形例に係るアプリケーション装置のブロック図を図１４に示す。  
本変形例に係るアプリケーション装置１４００は、パッケージ更新部２０４、パッケージ更新検出部２０５、パッケージ更新通知部２０６、通信部３０１、更新部３０２、およびＣＩＭ部分格納部３０３を示す。なお、アプリケーション装置１４００の各ブロックは、図２および図３に示す各ブロックと同様の動作を行うためここでの説明は省略する。
【００４０】
次に、本変形例に係るアプリケーション装置１４００の動作を説明する。  
はじめに、パッケージ間の更新参照関係をＣＩＭ部分格納部３０３に格納しておく。個々のアプリケーション装置１４００が利用する情報を更新した際、パッケージ更新部２０４が更新すべきパッケージを更新する。  
ＣＩＭ部分格納部３０３に格納した更新参照関係から、図１３に示す処理により、パッケージ更新検出部２０５が検出した更新参照パッケージリストのうち、更新対象パッケージを検出して、更新対象パッケージを有するアプリケーションに、パッケージ更新通知部２０６が更新対象パッケージに関する更新通知を送信する。  
また、他のアプリケーションの更新によって、更新の影響を受ける場合もある。その場合は、通信部３０１が更新通知を受信し、更新部３０２がＣＩＭ部分格納部３０３に格納される更新対象パッケージを更新する。
【００４１】
ここで、本実施形態で用いるＨａｓ−ａおよびＩｓ−ａの関係について図１５を参照して説明する。  
クラス１、クラス２およびクラス３による階層構造は、Ｉｓ−ａ関係１５０１を有し、継承関係を有する。一方、本実施形態にかかるパッケージ構造は、パッケージＡ１がクラス１とクラス３とを有し、パッケージＢ１がクラス２を有するＨａｓ−ａ関係１５０２となる。なお、通常、パッケージＡ１とパッケージＢ１とは継承関係はない。
【００４２】
比較例として、従来のＵＭＬによるＣＩＭパッケージの依存関係を図１６に示す。  
従来のパッケージ間の依存関係は、パッケージ間に、要素間の関係を有することで形成される。しかしパッケージ間の依存関係だけでは、どの要素と、どの関係を有するのかが不明確であるため、例えば、パッケージＢが更新されると、パッケージＢに依存するパッケージＡとパッケージＤとが更新されることとなり、パッケージＤに関する更新作業が余分に発生してしまう。本実施形態では、どのクラスにより、パッケージ間の依存関係が成立するかということがわかるので、必要なパッケージのみ更新することができる。
【００４３】
以上に示した実施形態によれば、パッケージ間の更新参照関係を生成することで、クラスの更新があった場合に、更新の必要がないパッケージを更新せずに、必要なパッケージのみ更新することができ、効率的な更新処理を行うことができる。
【００４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４５】
１００・・・オントロジ更新システム、１０１・・・オントロジ更新装置、１０２−１〜１０２−４，１４００・・・アプリケーション装置、１０３・・・ネットワーク、２０１・・・ＣＩＭ格納部、２０２・・・更新参照関係生成部、２０３・・・更新参照関係保存部、２０４・・・パッケージ更新部、２０５・・・パッケージ更新検出部、２０６・・・パッケージ更新通知部、３０１・・・通信部、３０２・・・更新部、３０３・・・ＣＩＭ部分格納部、６０１，６０２・・・クラス、７０１，８０１・・・名称、７０２，８０２・・・タイプ、７０３，８０３・・・注釈、７０４，８０４・・・バージョン、１１０１・・・パッケージ名、１１０２・・・パッケージコード、１１０３・・・パッケージ説明、１１０４・・・パッケージバージョン、１１０５・・・作成日、１１０６・・・更新参照パッケージリスト、１１０７・・・更新参照パッケージ｛クラス名｝、１１０８・・・更新参照関係、１5０１・・・Ｉｓ−ａ関係、１５０２・・・Ｈａｓ−ａ関係。
【図１】
0005284403.tif 000002
【図２】
0005284403.tif 000003
【図３】
0005284403.tif 000004
【図４】
0005284403.tif 000005
【図５】
0005284403.tif 000006
【図６】
0005284403.tif 000007
【図７】
0005284403.tif 000008
【図８】
0005284403.tif 000009
【図９】
0005284403.tif 000010
【図１０】
0005284403.tif 000011
【図１１】
0005284403.tif 000012
【図１２】
0005284403.tif 000013
【図１３】
0005284403.tif 000014
【図１４】
0005284403.tif 000015
【図１５】
0005284403.tif 000016
【図１６】
0005284403.tif 000017