(57)【要約】【課題】特定の文法に対応するオブジェクトクエリ文の生成を容易にすることを目的とする。【解決手段】クエリ開発者１０１はオブジェクトクエリ実行装置１００を操作してクエリモデル１９１を生成する。クエリモデル編集部１１０はクエリ開発者１０１の指定に基づいてオブジェクトクエリ文を表す図をクエリモデル１９１として生成する。オブジェクトクエリ文生成部１２０は、クエリモデル１９１の文法と所定の文法との対応規則を定めたオブジェクトクエリ変換規則１９６に基づいて、クエリモデル１９１からオブジェクトクエリ文１８１を生成する。オブジェクトクエリ実行部１３０はオブジェクトクエリ文１８１を実行し、オブジェクトクエリ結果１８４を出力する。【選択図】図２
2011028392.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶するオブジェクトクエリ変換規則記憶部と、
前記第１の命令群に含まれる第１群命令を使用した第１のオブジェクトクエリ文を表すデータをクエリモデルとして記憶するクエリモデル記憶部と、
前記第２の命令群に含まれる複数の第２群命令のうち前記クエリモデルに使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定し、前記第１のオブジェクトクエリ文と同じ問い合わせ内容を示す第２のオブジェクトクエリ文を前記第２群特定命令を使用して生成するオブジェクトクエリ文生成部と
を備えたことを特徴とするオブジェクトクエリ文生成装置。
【請求項２】
前記クエリモデルは、前記第１のオブジェクトクエリ文の構成要素を図で表したデータである
ことを特徴とする請求項１記載のオブジェクトクエリ文生成装置。
【請求項３】
前記オブジェクトクエリ文生成装置は、さらに、
第１群命令の指定を入力装置から入力し、指定された第１群命令を表す所定の図を表示装置に表示し、表示した図を含んだデータを前記クエリモデルとして生成するクエリモデル編集部を備えた
ことを特徴とする請求項２記載のオブジェクトクエリ文生成装置。
【請求項４】
前記オブジェクトクエリ文生成装置は、さらに、
第２群命令を使用した第３のオブジェクトクエリ文を記憶するオブジェクトクエリ文記憶部と、
前記第３のオブジェクトクエリ文に使用された第２群命令に対応する第１群命令を前記オブジェクトクエリ変換規則に基づいて第１群特定命令として特定し、前記第３のオブジェクトクエリ文と同じ問い合わせ内容を示すクエリモデルを前記第１群特定命令に基づいて生成するクエリモデル生成部とを備えた
ことを特徴と請求項３記載のオブジェクトクエリ文生成装置。
【請求項５】
オブジェクトクエリ変換規則記憶部が、オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶し、
クエリモデル記憶部が、前記第１の命令群に含まれる第１群命令を使用した第１のオブジェクトクエリ文を表すデータをクエリモデルとして記憶し、
オブジェクトクエリ文生成部が、前記第２の命令群に含まれる複数の第２群命令のうち前記クエリモデルに使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定し、前記第１のオブジェクトクエリ文と同じ問い合わせ内容を示す第２のオブジェクトクエリ文を前記第２群特定命令を使用して生成する
ことを特徴とするオブジェクトクエリ文生成方法。
【請求項６】
オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶するオブジェクトクエリ変換規則記憶部と、
前記第１の命令群に含まれる第１群命令を使用した第１のオブジェクトクエリ文を表すデータをクエリモデルとして記憶するクエリモデル記憶部と
を備えたコンピュータにオブジェクトクエリ文を生成させるオブジェクトクエリ文生成プログラムにおいて、
前記第２の命令群に含まれる複数の第２群命令のうち前記クエリモデルに使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定する第２群特定命令特定処理と、
前記第１のオブジェクトクエリ文と同じ問い合わせ内容を示す第２のオブジェクトクエリ文を前記第２群特定命令を使用して生成するオブジェクトクエリ文生成処理と
をコンピュータに実行させるオブジェクトクエリ文生成プログラム。
【請求項７】
オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶するオブジェクトクエリ変換規則記憶部と、
前記第１の命令群に含まれる第１群命令を使用した特定のオブジェクトクエリ文を記憶するオブジェクトクエリ文記憶部と、
前記第２の命令群に含まれる複数の第２群命令のうち前記特定のオブジェクトクエリ文に使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定し、前記特定のオブジェクトクエリ文と同じ問い合わせ内容を表すデータを前記第２群特定命令を表す所定の図を用いてクエリモデルとして生成するクエリモデル生成部と、
前記クエリモデル生成部により生成されたクエリモデルを表示装置に表示するクエリモデル表示部と
を備えたことを特徴とするクエリモデル生成装置。
【請求項８】
オブジェクトクエリ変換規則記憶部が、オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶し、
オブジェクトクエリ文記憶部が、前記第１の命令群に含まれる第１群命令を使用した特定のオブジェクトクエリ文を記憶し、
クエリモデル生成部が、前記第２の命令群に含まれる複数の第２群命令のうち前記特定のオブジェクトクエリ文に使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定し、前記特定のオブジェクトクエリ文と同じ問い合わせ内容を表すデータを前記第２群特定命令を表す所定の図を用いてクエリモデルとして生成し、
クエリモデル表示部が、前記クエリモデル生成部により生成されたクエリモデルを表示装置に表示する
ことを特徴とするクエリモデル生成方法。
【請求項９】
オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶するオブジェクトクエリ変換規則記憶部と、
前記第１の命令群に含まれる第１群命令を使用した特定のオブジェクトクエリ文を記憶するオブジェクトクエリ文記憶部と
を備えたコンピュータにオブジェクトクエリ文を図を用いて表したクエリモデルを生成させるクエリモデル生成プログラムにおいて、
前記第２の命令群に含まれる複数の第２群命令のうち前記特定のオブジェクトクエリ文に使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定する第２群特定命令特定処理と、
前記特定のオブジェクトクエリ文と同じ問い合わせ内容を表すクエリモデルを前記第２群特定命令を表す所定の図を用いて生成するクエリモデル生成処理と、
クエリモデル生成処理で生成されたクエリモデルを表示装置に表示するクエリモデル表示処理と
をコンピュータに実行させるクエリモデル生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向データに対するオブジェクトクエリ文生成装置、オブジェクトクエリ文生成装置のオブジェクトクエリ文生成方法、オブジェクトクエリ文生成プログラム、クエリモデル生成装置、クエリモデル生成装置のクエリモデル生成方法およびクエリモデル生成プログラムに関するものである。
【背景技術】
【０００２】
従来、クエリ開発者は、グラフィカルなユーザインタフェースでテーブルを結合することによって、リレーショナルデータに対するクエリ文（ＳＱＬ文）を自動生成していた（例えば、特許文献１の図１５）。
【０００３】
また、オブジェクト指向データに対してクエリ文を実行する機能が実現されている。オブジェクト指向データに対するクエリ文（以下、「オブジェクトクエリ文」という）は特定の文法（以下、「オブジェクトクエリ文法」という）に則って記述される。
【０００４】
例えば、非特許文献１の図１２（ｐ．２）に示される「ＬＩＮＱ」はオブジェクトクエリ文法を定義する。Ｃ＃ＬＩＮＱがオブジェクトクエリ文法で記述されたクエリ文であり、ＬＩＮＱライブラリとＬＩＮＱプロバイダとがクエリ文を実行してクエリ結果を生成する。
他のオブジェクトクエリ文法として、非特許文献２の「７．５．１  ＧＰａｔｈを使ったオブジェクトの問い合わせ」（ｐ．１７４）に示される「ＧＰａｔｈ」が挙げられる。
「ＬＩＮＱ」と「ＧＰａｔｈ」とは、オブジェクトクエリ文を記述できるという点で共通する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１４３８８３号公報
【非特許文献】
【０００６】
【非特許文献１】赤間信幸著、「ＬＩＮＱテクノロジ入門」日経ＢＰソフトプレス、２００８年７月２８日発行
【非特許文献２】Ｄｉｅｒｋ  Ｋｏｎｉｇ他著、「Ｇｒｏｏｖｙイン・アクション」毎日コミュニケーションズ、２００８年９月２９日発行
【発明の概要】
【発明が解決しようとする課題】
【０００７】
オブジェクトクエリ文は処理内容をテキスト形式で順番に書き下ろして作成されており、その作成が困難である。
また、オブジェクトクエリ文法（例えば、コマンド）はそれぞれ異なるため、特定の文法（例えば、ＬＩＮＱ）で記述されたオブジェクトクエリ文を他の文法（例えば、ＧＰａｔｈ）で記述されたオブジェクトクエリ文にのみ対応するシステムで使用することはできない。
【０００８】
特許文献１は、リレーショナルデータに対するクエリ文を生成対象としているため、オブジェクト指向データに対するクエリ文を生成することはできない。
【０００９】
本発明は、例えば、特定の文法で記述されたオブジェクトクエリ文を他の文法で記述されたオブジェクトクエリ文にのみ対応するシステムで使用できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明のオブジェクトクエリ文生成装置は、
オブジェクト指向データの問い合わせ内容を示すオブジェクトクエリ文に使用される第１群命令を複数含んだ第１の命令群とオブジェクトクエリ文に使用される第２群命令を複数含んだ命令群であって前記第１の命令群と異なる第２の命令群とを命令毎に対応付けるオブジェクトクエリ変換規則を記憶するオブジェクトクエリ変換規則記憶部と、
前記第１の命令群に含まれる第１群命令を使用した第１のオブジェクトクエリ文を表すデータをクエリモデルとして記憶するクエリモデル記憶部と、
前記第２の命令群に含まれる複数の第２群命令のうち前記クエリモデルに使用された第１群命令に対応する第２群命令を前記オブジェクトクエリ変換規則に基づいて第２群特定命令として特定し、前記第１のオブジェクトクエリ文と同じ問い合わせ内容を示す第２のオブジェクトクエリ文を前記第２群特定命令を使用して生成するオブジェクトクエリ文生成部とを備える。
【発明の効果】
【００１１】
本発明によれば、例えば、特定の文法で記述された第１のオブジェクトクエリ文を他の文法に対応する第２のオブジェクトクエリ文に変換することができる。これにより、第２のオブジェクトクエリ文にのみ対応するシステムに第１のオブジェクトクエリ文を使用することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１におけるオブジェクトクエリ実行方法を示すフローチャート。
【図２】実施の形態１におけるオブジェクトクエリ実行装置１００の機能構成図。
【図３】実施の形態１におけるクエリモデル１９１を示すＵＭＬオブジェクト図。
【図４】実施の形態１におけるクエリモデル文法１９２に定義される命令語を示す表。
【図５】実施の形態１におけるオブジェクトスキーマ１９３を表すＵＭＬクラス図。
【図６】実施の形態１におけるオブジェクトクエリ文１８１を示す図。
【図７】実施の形態１におけるオブジェクトクエリ変換規則１９６を表す対応表。
【図８】実施の形態１におけるクエリモデル文法１９２およびオブジェクトクエリ文法１８２に定義される命令語の主な種類を示す表。
【図９】実施の形態１におけるオブジェクトクエリ文生成方法を示すＵＭＬアクティビティ図。
【図１０】実施の形態１における対象オブジェクト指定文の作成処理（Ｓ１１００）を示すＵＭＬアクティビティ図。
【図１１】実施の形態１における関数宣言文作成処理（Ｓ１２００）を示すＵＭＬアクティビティ図。
【図１２】実施の形態１における名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）を示すＵＭＬアクティビティ図。
【図１３】実施の形態１におけるサブクラス指定抽出文の作成処理（Ｓ１４００）を示すＵＭＬアクティビティ図。
【図１４】実施の形態１における真偽制約指定抽出文の作成処理（Ｓ１５００）を示すＵＭＬアクティビティ図。
【図１５】実施の形態１におけるリターンオブジェクト指定文の作成処理（Ｓ１６００）を示すＵＭＬアクティビティ図。
【図１６】実施の形態１におけるオブジェクトクエリ実行装置１００のハードウェア資源の一例を示す図。
【図１７】オブジェクトクエリ文に対するクエリ文とリレーショナルデータに対するクエリ文との違いを示す表。
【図１８】実施の形態２におけるオブジェクトクエリ実行装置１００の機能構成図。
【図１９】実施の形態２におけるクエリモデル生成方法を示すＵＭＬアクティビティ図。
【図２０】実施の形態２における対象オブジェクト指定図の作成処理（Ｓ２１００）を示すＵＭＬアクティビティ図。
【図２１】実施の形態２における関数オブジェクト図の作成処理（Ｓ２２００）を示すＵＭＬアクティビティ図。
【図２２】実施の形態２における抽出処理図の作成処理（Ｓ２３００）を示すＵＭＬアクティビティ図。
【図２３】実施の形態２におけるグループ化処理図の作成処理（Ｓ２４００）を示すＵＭＬアクティビティ図。
【図２４】実施の形態２における変形処理図の作成処理（Ｓ２５００）を示すＵＭＬアクティビティ図。
【発明を実施するための形態】
【００１３】
実施の形態１．
オブジェクトクエリ文を図で表したクエリモデルをクエリ開発者の指定に基づいて生成し、生成したクエリモデルを特定の文法で記述したオブジェクトクエリ文に変換し、変換したオブジェクトクエリ文を実行し、実行結果を出力する装置、方法およびプログラムについて説明する。
【００１４】
オブジェクトクエリ文とは、オブジェクト指向データの問い合わせ内容を示すクエリ文である。
【００１５】
オブジェクト指向データは、オブジェクト指向に基づいて構成されたデータであり、「クラス」「オブジェクト」「インスタンス」から成る。
「オブジェクト」は、特定の物（実体）を「属性（データともいう）」および「操作（メソッドともいう）」で定義したものであり、「クラス」を実体化したものである。
「クラス」は、属性および操作を定義したものであり、同種の複数の「オブジェクト」を表す雛型となる。
「インスタンス」は、具体的なデータを持つ「オブジェクト」である。
【００１６】
クラス間の関係（例えば、継承）を表すデータを「オブジェクトスキーマ」といい、オブジェクトスキーマを表す構造図を「クラス図」という。
オブジェクト間の関係を表す構造図を「オブジェクト図」という。
【００１７】
「クラス図」や「オブジェクト図」の表記法として「ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）」がある。
ＵＭＬのモデル階層において、「オブジェクトスキーマ」および「クラス図」は「メタレベル１」に相当し、「オブジェクト図」は「メタレベル０」に相当する。
【００１８】
図１は、実施の形態１におけるオブジェクトクエリ実行方法を示すフローチャートである。
実施の形態１におけるオブジェクトクエリ実行方法について、図１に基づいて以下に説明する。
【００１９】
＜Ｓ１１０：クエリモデル生成処理＞
オブジェクトクエリ実行装置は、オブジェクトクエリ文を構成する要素（例えば、命令語、オブジェクト名、クラス名、属性名、継承、集約など）（以下、「オブジェクトクエリ要素」という）の指定に用いるＧＵＩ（グラフィカル  ユーザ  インタフェース）をクエリ開発者（利用者）に提供する。ボタン、テキストボックス、リストボックス、ドラッグアンドドロップ機能はＧＵＩの一例である。
オブジェクトクエリ実行装置は、クエリ開発者の指定に基づいて各オブジェクトクエリ要素を表す所定の図を表示装置に表示する。
クエリ開発者は、オブジェクトクエリ実行装置の入力装置（キーボード、マウスなど）を操作してＧＵＩに各オブジェクトクエリ要素を指定し、オブジェクトクエリ文を表すオブジェクト図を作図する。
オブジェクトクエリ実行装置は、作図されたオブジェクト図のデータを「クエリモデル」として生成する。クエリモデルは、特定のオブジェクトクエリ文を表すオブジェクト図のデータである。
【００２０】
＜Ｓ１２０：オブジェクトクエリ文生成処理＞
オブジェクトクエリ実行装置は、クエリモデルに基づいて、標準的な文法で記述したオブジェクトクエリ文を生成する。
以下、オブジェクトクエリ文に適用する標準的な文法を「オブジェクトクエリ文法」という。
ＬＩＮＱやＧＰａｔｈはオブジェクトクエリ文法の一例である。
【００２１】
＜Ｓ１３０：オブジェクトクエリ文実行処理＞
オブジェクトクエリ実行装置は、オブジェクトクエリ文を実行し、実行結果を出力する。
ＬＩＮＱやＧＰａｔｈで記述されたオブジェクトクエリ文を実行する環境は実現されている。オブジェクトクエリ実行装置は、これら従来の実行環境を利用してオブジェクトクエリ文を実行する。
【００２２】
上記のように、オブジェクトクエリ実行装置は、オブジェクトクエリ文をグラフィカルに表示することにより、オブジェクトクエリ文（クエリモデル）の生成を容易にする。
また、オブジェクトクエリ実行装置はＬＩＮＱやＧＰａｔｈで記述したオブジェクトクエリ文をクエリモデルに基づいて生成し、オブジェクトクエリ文を実行する。このため、クエリ開発者はＬＩＮＱやＧＰａｔｈに詳しくなくても、実行可能なオブジェクトクエリ文を生成し、実行させることができる。
【００２３】
図２は、実施の形態１におけるオブジェクトクエリ実行装置１００の機能構成図である。
実施の形態１におけるオブジェクトクエリ実行装置１００の機能構成について、図２に基づいて以下に説明する。
【００２４】
オブジェクトクエリ実行装置１００（オブジェクトクエリ文生成装置の一例）は、クエリモデル編集部１１０、オブジェクトクエリ文生成部１２０、オブジェクトクエリ実行部１３０および実行装置記憶部１９０を備える。
【００２５】
実行装置記憶部１９０は、オブジェクトクエリ実行装置１００で使用されるデータを記憶媒体に記憶する。
クエリモデル１９１、クエリモデル文法１９２、オブジェクトスキーマ１９３、オブジェクト集合１９４、モデル表記１９５、オブジェクトクエリ変換規則１９６、オブジェクトクエリ文１８１、オブジェクトクエリ文法１８２、インスタンス集合１８３およびオブジェクトクエリ結果１８４は、実行装置記憶部１９０に記憶されるデータの一例である。
【００２６】
クエリモデル１９１は、特定の問い合わせ内容（検索、追加、変更、削除などの操作・処理内容）を示すオブジェクトクエリ文を表すオブジェクト図のデータである。
【００２７】
クエリモデル文法１９２は、クエリモデル１９１に適用される文法（命令語・句・文の記述規則・書式など）が定義されたデータである。クエリモデル文法１９２にはオブジェクトクエリ文に必要な文法が定義されている。構文・字句解析プログラムは文法が定義されたデータの一例である。クエリモデル文法１９２はクエリモデル用の文法であり、ＬＩＮＱやＧＰａｔｈなどの標準的な文法とは異なるものとする。但し、ＬＩＮＱやＧＰａｔｈなどの標準的な文法をクエリモデル文法１９２にしても構わない。
【００２８】
オブジェクトスキーマ１９３は、クラスの関係を表すデータであり、クラス図に相当する。
【００２９】
オブジェクト集合１９４は、オブジェクトスキーマ１９３の各クラスに対応するオブジェクトの集まりである。
【００３０】
モデル表記１９５は、クエリモデル１９１を構成する図形（多角形、丸、線、矢印など）のデータである。各図形はオブジェクトクエリ要素と対応付けられているものとする。
【００３１】
オブジェクトクエリ変換規則１９６は、クエリモデル文法１９２とオブジェクトクエリ文法１８２とを対応付けるデータである。例えば、オブジェクトクエリ変換規則１９６は、クエリモデル文法１９２で定義される複数の命令語（第１の命令群）とオブジェクトクエリ文法１８２で定義される複数の命令語（第２の命令語）とを命令語毎に対応付ける。
【００３２】
オブジェクトクエリ文１８１は、オブジェクトクエリ文法１８２を適用して記述されたオブジェクトクエリ文のテキストデータである。オブジェクトクエリ文１８１はクエリモデル１９１に基づいて生成される。
【００３３】
オブジェクトクエリ文法１８２は、オブジェクトクエリ文１８１に適用される標準的な文法が定義されたデータである。例えば、オブジェクトクエリ文法１８２にはＬＩＮＱまたはＧＰａｔｈの文法が定義されている。
【００３４】
インスタンス集合１８３は、オブジェクトスキーマ１９３の各クラスに対応するインスタンスの集まりである。インスタンス集合１８３はオブジェクトクエリ文１８１による問い合わせ対象となる。
【００３５】
オブジェクトクエリ結果１８４は、オブジェクトクエリ文１８１の実行結果を示すデータである。
【００３６】
クエリモデル文法１９２、オブジェクトスキーマ１９３、オブジェクト集合１９４、モデル表記１９５、オブジェクトクエリ変換規則１９６、オブジェクトクエリ文法１８２およびインスタンス集合１８３は実行装置記憶部１９０に予め記憶される。
【００３７】
クエリモデル編集部１１０は、クエリ開発者１０１によるオブジェクトクエリ要素の指定を入力装置から入力し、指定されたオブジェクトクエリ要素を表す図を表示装置に表示し、表示した各図を含んだデータをクエリモデル１９１として生成する。
【００３８】
クエリモデル編集部１１０は、クエリモデル文法１９２、オブジェクトスキーマ１９３、オブジェクト集合１９４およびモデル表記１９５を用いてクエリモデル１９１を生成する。
例えば、クエリモデル編集部１１０はクエリモデル文法１９２で定義される各命令語、オブジェクトスキーマ１９３のクラス図、オブジェクト集合１９４に含まれる各オブジェクト、モデル表記１９５に含まれる各図形を指定するＧＵＩを表示し、クエリ開発者１０１によるＧＵＩの指定に基づいてクエリモデル１９１を生成する。
また、クエリモデル編集部１１０はクエリ開発者１０１の指定が文法的に正しいか否かをクエリモデル文法１９２に基づいてチェックし、クエリ開発者１０１の指定が構造的に正しいか否かをオブジェクトスキーマ１９３に基づいてチェックする。クエリ開発者１０１の指定が正しくない場合、クエリモデル編集部１１０はエラーメッセージを表示する。
【００３９】
オブジェクトクエリ文生成部１２０は、オブジェクトクエリ変換規則１９６に基づいてクエリモデル１９１からオブジェクトクエリ文１８１を生成する。
例えば、オブジェクトクエリ文生成部１２０は、オブジェクトクエリ文法１８２で定義された複数の命令語（第２群命令）のうちクエリモデル１９１に使用されたクエリモデル文法１９２の命令語（第１群命令）に対応する命令語をオブジェクトクエリ変換規則１９６に基づいて特定する。オブジェクトクエリ文生成部１２０は、特定したオブジェクトクエリ文法１８２の命令語（第２群特定命令）を使用して、クエリモデル１９１と同じ問い合わせ内容を示すオブジェクトクエリ文１８１を生成する。
【００４０】
オブジェクトクエリ文生成部１２０は、オブジェクトクエリ文１８１を生成するためにクエリモデル文法１９２、オブジェクトスキーマ１９３、オブジェクトクエリ文法１８２などを参照する。
【００４１】
オブジェクトクエリ実行部１３０は、オブジェクトクエリ文１８１を実行してオブジェクトクエリ結果１８４を生成し、生成したオブジェクトクエリ結果１８４を出力装置（表示装置、プリンタなど）に出力する。
例えば、オブジェクトクエリ実行部１３０は、オブジェクトクエリ文１８１に対応するインスタンス（またはインスタンスの属性値）をインスタンス集合１８３から抽出し、抽出した各インスタンスをオブジェクトクエリ結果１８４として表示装置に表示する。
【００４２】
オブジェクトクエリ実行部１３０は、オブジェクトクエリ文１８１を解釈して実行するためにオブジェクトスキーマ１９３やオブジェクトクエリ文法１８２などを参照する。
【００４３】
クエリモデル編集部１１０、オブジェクトクエリ文生成部１２０およびオブジェクトクエリ実行部１３０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて動作する。
【００４４】
図３は、実施の形態１におけるクエリモデル１９１を示すＵＭＬオブジェクト図である。
実施の形態１におけるクエリモデル１９１について、図３に基づいて以下に説明する。
【００４５】
クエリ開発者１０１は、オブジェクトクエリ実行装置１００のＧＵＩを利用して図３（１）（２）に示すようなクエリモデル１９１および図３（３）に示すようなクラス図を作図する。オブジェクトクエリ実行装置１００のクエリモデル編集部１１０はＧＵＩを表示し、クエリ開発者１０１の指定に基づいてクエリモデル１９１を描画する。
例えば、クエリ開発者１０１は、（１）ｑｕｅｒｙ１の＜＜ｉｎ＞＞オブジェクトを作成するため、「オブジェクトの追加」をＧＵＩで指定して四角い箱を追加する。さらに、クエリ開発者１０１は、クエリモデル文法１９２の命令群から「＜＜ｉｎ＞＞」を選択し、オブジェクト集合１９４から「ｓｈｏｒｔｃｕｔ．ｌｉｓｔ」を選択する。
また例えば、クエリ開発者１０１は、「集約」を表す矢印線（菱形付き）を指定し、＜＜ｉｎ＞＞オブジェクト（全体）から＜＜ｆｒｏｍ＞＞オブジェクト（部分）へ矢印線（菱形付き）を引く。
【００４６】
（１）ｑｕｅｒｙ１は、ショートカット（Ｓｈｏｒｔｃｕｔ）に対応付けられているフォルダ（Ｆｏｌｄｅｒ）について、フォルダの名前（ｎａｍｅ）、ショートカットの数およびフォルダのサイズ（ｓｉｚｅ）を一覧化するオブジェクトクエリ文を表している。一覧化されるフォルダはサイズが「２０（メガバイト）」より大きいフォルダであり、ショートカットの数でソートされる。
ショートカットの数とは、当該フォルダに対応付けられているショートカットの数である。フォルダのサイズとは、当該フォルダ（および当該フォルダ下に再帰的に含まれる各下位フォルダ）内の各ファイル（Ｆｉｌｅ）のサイズ（ｆｉｌｅＳｉｚｅ）の合計である。
【００４７】
（２）ａｌｌｆｉｌｅｓは、「ｑｕｅｒｙ１」のＡｎｏｎｙｍｏｕｓオブジェクトから呼び出される関数を表している。
【００４８】
図４は、実施の形態１におけるクエリモデル文法１９２に定義される命令語を示す表である。
図４に示すように、クエリモデル文法１９２には、「＜＜ｉｎ＞＞」「＜＜ｆｒｏｍ＞＞」「＜＜ｒｅｔｕｒｎ＞＞」などの命令語が定義される。
例えば、クエリ開発者１０１は、オブジェクトクエリ文１８１の問い合わせ対象を「＜＜ｉｎ＞＞」命令や「＜＜ｆｒｏｍ＞＞」命令を用いて指定する。
また例えば、クエリ開発者１０１は、オブジェクトクエリ文１８１の問い合わせ結果の内容を「＜＜ｒｅｔｕｒｎ＞＞」命令を用いて指定する。
【００４９】
図５は、実施の形態１におけるオブジェクトスキーマ１９３を表すＵＭＬクラス図である。
図５のオブジェクトスキーマ１９３は、コンピュータの一般的なファイル管理の構造を示している。
クエリモデル編集部１１０、オブジェクトクエリ文生成部１２０およびオブジェクトクエリ実行部１３０はオブジェクトスキーマ１９３に基づいてクエリモデル１９１の構造をチェックし、オブジェクトクエリ文１８１を生成し、オブジェクトクエリ文１８１を実行する。
三角矢印の線はクラス（スーパークラス）とサブクラスの関係を示している。三角矢印が付された「Ｉｔｅｍ」はスーパークラスであり、三角矢印に繋がる「Ｓｈｏｒｔｃｕｔ」「Ｆｏｌｄｅｒ」「Ｆｉｌｅ」はサブクラスである。「Ｓｈｏｒｔｃｕｔ」「Ｆｏｌｄｅｒ」「Ｆｉｌｅ」は「Ｉｔｅｍ」の一種である。
【００５０】
図６は、実施の形態１におけるオブジェクトクエリ文１８１を示す図である。
図６に示すオブジェクトクエリ文１８１は、ＧＰａｔｈに従って記述されている。
オブジェクトクエリ文生成部１２０は、オブジェクトクエリ変換規則１９６に基づいてクエリモデル１９１（図３参照）からオブジェクトクエリ文１８１（図６参照）を生成する。
オブジェクトクエリ文１８１の生成方法の詳細については後述する。
【００５１】
図７は、実施の形態１におけるオブジェクトクエリ変換規則１９６を表す対応表である。
図７には、「オブジェクトクエリ文法の要素」としてＧＰａｔｈの要素を示している。
例えば、オブジェクトクエリ文１８１の「｛論理式｝」は「ｆｉｎｄＡｌｌ（）｛属性名  論理式｝」に変換され、オブジェクトクエリ文１８１の「｛ｏｒｄｅｒｅｄ｝」は「ｓｏｒｔ（）」に変換される。
【００５２】
図８は、実施の形態１におけるクエリモデル文法１９２およびオブジェクトクエリ文法１８２に定義される命令語の種類を示す表である。
図８に示すように、クエリモデル文法１９２およびオブジェクトクエリ文法１８２には「抽出」処理、「変形」処理、「グループ化」処理を指定する命令語が定義される。
「抽出」処理は、オブジェクト集合から条件に一致するオブジェクトを絞り込む処理である。例えば、クエリモデル文法１９２の「｛論理式｝」やオブジェクトクエリ文法１８２の「ｆｉｎｄＡｌｌ（）｛属性名  論理式｝」が「抽出」の命令語である。
「変形」処理は、各オブジェクトの属性に応じてオブジェクト集合を変形する処理である。例えば、クエリモデル文法１９２の「｛ｏｒｄｅｒｅｄ｝」やオブジェクトクエリ文法１８２の「ｓｏｒｔ（）」が「変形」の命令語である。
「グループ化」処理は、特定のキーでオブジェクトをグループ化する処理である。例えば、クエリモデル文法１９２の「＜＜ｇｒｏｕｐ＞＞」やオブジェクトクエリ文法１８２の「ｇｒｏｕｐＢｙ（）」が「グループ化」の命令語である。
【００５３】
図９は、実施の形態１におけるオブジェクトクエリ文生成方法を示すＵＭＬアクティビティ図である。
実施の形態１におけるオブジェクトクエリ文生成方法について、図９に基づいて以下に説明する。
【００５４】
ＵＭＬアクティビティ図はフローチャートに相当する。
枠内の右下に記号が記されている処理（Ｓ１１００〜Ｓ１６００）は、処理を展開したＵＭＬアクティビティ図が別に存在することを示している。これらの処理の詳細はそれぞれの展開図に基づいて説明する。
【００５５】
オブジェクトクエリ文生成部１２０は、図９に示す処理方法によりクエリモデル１９１からオブジェクトクエリ文１８１を生成する。
【００５６】
Ｓ１０１０において、＜＜ｆｒｏｍ＞＞オブジェクトにリンクされている＜＜ｉｎ＞＞オブジェクトの有無を判定する。
＜＜ｆｒｏｍ＞＞オブジェクトにリンクされている＜＜ｉｎ＞＞オブジェクトが有る場合、処理はＳ１１００に進む。
＜＜ｆｒｏｍ＞＞オブジェクトにリンクされている＜＜ｉｎ＞＞オブジェクトが無い場合、処理はＳ１２００に進む。
【００５７】
Ｓ１１００において、問い合わせ対象となるオブジェクト集合を指定する文を作成する。
Ｓ１２００において、関数の処理対象となるオブジェクトを宣言する文を作成する。
Ｓ１１００またはＳ１２００の後、処理はＳ１３００に進む。
【００５８】
Ｓ１３００において、名前付き派生オブジェクトを生成する文を作成する。
Ｓ１４００において、サブクラス指定に基づいてオブジェクトを抽出する文を作成する。
Ｓ１５００において、真偽制約指定に基づいてオブジェクトを抽出する文を作成する。
Ｓ１６００において、リターン（出力）するオブジェクトを指定する文を作成する。
【００５９】
例えば、Ｓ１１００において、図３のクエリモデル１９１に基づいて図６のオブジェクトクエリ文１８１の（ａ）が作成される。
同様に、Ｓ１２００で（ｇ）、Ｓ１３００で（ｃ）（ｈ）（ｉ）、Ｓ１４００で（ｂ）、Ｓ１６００で（ｄ）（ｅ）（ｆ）（ｊ）が作成される。
【００６０】
オブジェクトクエリ文生成部１２０は、Ｓ１１００〜Ｓ１６００で生成される各文を処理順に並べてオブジェクトクエリ文１８１を生成するのではなく、各文をオブジェクトクエリ文法１８２に基づく所定の順序（図３ではａ→ｂ→・・・→ｆ、ｇ→ｈ→・・・→ｋの順）に並べてオブジェクトクエリ文１８１を生成する。
【００６１】
以下に、Ｓ１１００〜Ｓ１６００の各処理の詳細を説明する。
【００６２】
まず、以下の説明で使用する各用語について説明する。
【００６３】
＜＜ｘｘｘ＞＞オブジェクトは、図３において＜＜ｘｘｘ＞＞が記されている一つの箱（オブジェクト）を指す。
【００６４】
「オブジェクト名」は、図３においてセミコロンの前方に記されている単語を指す。
例えば、＜＜ｇｒｏｕｐ＞＞オブジェクトのオブジェクト名は「ｅｎｔｒｙ」である。
オブジェクト名が有るオブジェクトを「名前付きオブジェクト」とし、オブジェクト名が無いオブジェクトを「無名オブジェクト」または「匿名オブジェクト」とする。
【００６５】
「クラス名」は、図３においてセミコロンの後方に記されている単語を指す。
例えば、＜＜ｇｒｏｕｐ＞＞オブジェクトのクラス名は「Ｅｎｔｒｙ」である。
【００６６】
「リンク」は、オブジェクト間の関係を意味し、図３においてオブジェクト同士を繋ぐ矢印線で記される。
リンクの矢印側を「リンク先」、リンクの反対側（矢印が無い側）を「リンク元」とする。
【００６７】
「リンク端名」は、リンクの種類を意味し、図３においてリンク先に記される。
例えば、図３（１）において「ｔａｒｇｅｔｉｔｅｍ」「ｖａｌｕｅ」「ｋｅｙ」がリンク端名である。
【００６８】
菱形付きの矢印線を「集約リンク」、＜＜ｄｅｒｉｖｅ＞＞が記された点線のリンクを「依存リンク」、リンク端名「ｘｘｘ」が記されたリンクを「ｘｘｘリンク」とする。
【００６９】
「集約リンク」は、オブジェクト間に「全体」と「部分」との関係があることを意味し、図３において菱形付きの矢印線で記される。
全体のオブジェクトを「集約全体オブジェクト」、部分のオブジェクトを「集約部分オブジェクト」とする。
図３において、「集約全体オブジェクト」は集約リンクのリンク元（菱形側）のオブジェクトであり、「集約部分オブジェクト」は集約リンクのリンク先（矢印側）のオブジェクトである。
例えば、＜＜ｉｎ＞＞ｓｈｏｒｔｃｕｔ．ｌｉｓｔオブジェクトは集約全体オブジェクトであり、＜＜ｆｒｏｍ＞＞Ｓｈｏｒｔｃｕｔオブジェクトは集約部分オブジェクトである。
【００７０】
「依存リンク」は、オブジェクト間で特性が継承されることを意味し、図３において＜＜ｄｅｒｉｖｅ＞＞が付された点線矢印で記される。
特性を継承するオブジェクトを「依存オブジェクト」、特性を継承されるオブジェクトを「被依存オブジェクト」とする。
図３において、「依存オブジェクト」は依存リンクのリンク元のオブジェクトであり、「被依存オブジェクト」は依存リンクのリンク先のオブジェクトである。
例えば、Ａｎｏｎｙｍｏｕｓオブジェクトは依存オブジェクトであり、＜＜ｇｒｏｕｐ＞＞オブジェクトは被依存オブジェクトである。
【００７１】
「派生オブジェクト」は、依存リンクに接続するオブジェクトのうちオブジェクトスキーマ１９３（図５参照）に定義されていないオブジェクトを意味する。
例えば、図３（１）において、Ａｎｏｎｙｍｏｕｓオブジェクトと＜＜ｇｒｏｕｐ＞＞オブジェクトとは共に派生オブジェクトである。
【００７２】
「代入制約オブジェクト」は、代入制約がオブジェクトを対象にして定義されているオブジェクトを意味する。
例えば、図３（２）において、＜＜ｒｅｔｕｒｎ＞＞オブジェクトは代入制約オブジェクトである。
【００７３】
「代入制約属性オブジェクト」は、代入制約が属性を対象として定義されているオブジェクトを意味する。
例えば、図３（１）において、Ａｎｏｎｙｍｏｕｓオブジェクトは代入制約属性オブジェクトである。
【００７４】
図１０は、実施の形態１における対象オブジェクト指定文の作成処理（Ｓ１１００）を示すＵＭＬアクティビティ図である。
実施の形態１における対象オブジェクト指定文の作成処理（Ｓ１１００）について、図１０に基づいて以下に説明する。
【００７５】
Ｓ１１１０において、オブジェクトクエリ文１８１の実行結果を設定する変数（以下、「クエリ結果」という）の名前としてモデル名を記述する。
Ｓ１１２０において、クエリ結果に＜＜ｉｎ＞＞オブジェクトを代入する文を記述する。
【００７６】
Ｓ１１１０およびＳ１１２０により、図３（１）に対して図６（ａ）が記述される。
【００７７】
Ｓ１１２０により、対象オブジェクト指定文の作成処理（Ｓ１１００）は終了する。
【００７８】
図１１は、実施の形態１における関数宣言文の作成処理（Ｓ１２００）を示すＵＭＬアクティビティ図である。
実施の形態１における関数宣言文の作成処理（Ｓ１２００）について、図１１に基づいて以下に説明する。
【００７９】
Ｓ１２１０において、モデル名を関数名として記述する。
Ｓ１２２０において、＜＜ｆｒｏｍ＞＞オブジェクトを関数の引数として記述する。
【００８０】
Ｓ１２１０およびＳ１２２０により、図３（２）に対して図６（ｇ）が記述される。
【００８１】
Ｓ１２２０により、関数宣言文の作成処理（Ｓ１２００）は終了する。
【００８２】
図１２は、実施の形態１における名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）を示すＵＭＬアクティビティ図である。
実施の形態１における名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）について、図１２に基づいて以下に説明する。
【００８３】
Ｓ１３１０において、クエリモデル１９１から名前付き派生オブジェクトを抽出する。
【００８４】
図３（１）からは、＜＜ｇｒｏｕｐ＞＞オブジェクトが抽出される。
図３（２）からは、ｃｈｉｌｄＦｉｌｅｓオブジェクトとｆｉｌｅｓＩｎＦｏｌｄｅｒオブジェクトが抽出される。ｃｈｉｌｄＦｉｌｅｓオブジェクトはクラス名を省略した名前付きオブジェクトである。
【００８５】
Ｓ１３１０の後、処理はＳ１３２０に進む。
【００８６】
但し、Ｓ１３１０において名前付き派生オブジェクトが無い場合、以後の処理は行わず、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する（図示省略）。
【００８７】
以下、Ｓ１３１０で抽出された名前付き派生オブジェクトを「オブジェクトＡ」とする。
【００８８】
Ｓ１３２０において、オブジェクトＡが＜＜ｇｒｏｕｐ＞＞オブジェクトであるか否かを判定する。
オブジェクトＡが＜＜ｇｒｏｕｐ＞＞オブジェクトである場合、処理はＳ１３２１に進む。
オブジェクトＡが＜＜ｇｒｏｕｐ＞＞オブジェクトでない場合、処理はＳ１３３０に進む。
【００８９】
Ｓ１３２１において、オブジェクトＡ（＜＜ｇｒｏｕｐ＞＞オブジェクト）のｖａｌｕｅリンクのリンク先のオブジェクトをグループ化する命令を記述する。
Ｓ１３２２において、オブジェクトＡのｋｅｙリンクのリンク先のオブジェクトをグループ化キーとする指定を記述する。
【００９０】
Ｓ１３２１およびＳ１３２２により、図３（１）に対して図６（ｃ）が記述される。
【００９１】
Ｓ１３２２により、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する。
【００９２】
Ｓ１３３０において、オブジェクトＡのオブジェクト名を代入変数の名前とする宣言を記述する。
Ｓ１３３０の後、処理はＳ１３３１に進む。
【００９３】
Ｓ１３３１において、オブジェクトＡが＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクト、集約全体オブジェクト、代入制約オブジェクト、代入制約属性オブジェクトおよびその他のオブジェクトのいずれであるか判定する。
【００９４】
オブジェクトＡが＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクトの場合、処理はＳ１３３２に進む。
オブジェクトＡが集約全体オブジェクトの場合、処理はＳ１３３４に進む。
オブジェクトＡが代入制約オブジェクトの場合、処理はＳ１３３５に進む。
オブジェクトＡが代入制約属性オブジェクトの場合、処理はＳ１３３６に進む。
オブジェクトＡがその他のオブジェクトの場合（ｅｌｓｅ）、処理はＳ１３３７に進む。
【００９５】
Ｓ１３３２において、オブジェクトＡ（＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクト）のクラス名を関数名にした関数呼び出し式を代入文の形式で記述する。
Ｓ１３３３において、オブジェクトＡの被依存オブジェクトのクラス名を関数呼び出し式の引数として記述する。
【００９６】
Ｓ１３３０、Ｓ１３３２およびＳ１３３３により、図３（２）に対して図６（ｉ）が記述される。
【００９７】
Ｓ１３３３により、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する。
【００９８】
Ｓ１３３４において、オブジェクトＡ（集約全体オブジェクト）が集約する集約部分オブジェクトを抽出する式を代入文の形式で記述する。
【００９９】
Ｓ１３３０およびＳ１３３４により、図３（２）に対して図６（ｈ）が記述される。
Ｓ１３３４により、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する。
【０１００】
Ｓ１３３５において、オブジェクトＡ（代入制約オブジェクト）に定義されている代入制約を代入文の形式で記述する。
Ｓ１３３５により、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する。
【０１０１】
Ｓ１３３６において、オブジェクトＡ（代入制約属性オブジェクト）に定義されている代入制約でオブジェクトＡの属性を初期化する代入式を記述する。
Ｓ１３３６により、名前付き派生オブジェクト生成文の作成処理（Ｓ１３００）は終了する。
【０１０２】
Ｓ１３３７において、エラーメッセージを表示し、オブジェクトクエリ文１８１の生成処理をエラー終了する。
【０１０３】
図１３は、実施の形態１におけるサブクラス指定抽出文の作成処理（Ｓ１４００）を示すＵＭＬアクティビティ図である。
実施の形態１におけるサブクラス指定抽出文の作成処理（Ｓ１４００）について、図１３に基づいて以下に説明する。
【０１０４】
Ｓ１４１０において、＜＜ｆｒｏｍ＞＞オブジェクトのリンクのうち非派生オブジェクトＡと繋がるリンク（以下、「リンク経路Ｂ」という）を取得する。
【０１０５】
図３（１）において、Ｆｏｌｄｅｒオブジェクトが非派生オブジェクトＡに該当し、ｔａｒｇｅｔＩｔｅｍリンクがリンク経路Ｂに該当する。
【０１０６】
Ｓ１４１０の後、処理はＳ１４２０に進む。
【０１０７】
但し、Ｓ１４１０においてリンク経路Ｂが無い場合、以後の処理は行わず、サブクラス指定抽出文の作成処理（Ｓ１４００）は終了する（図示省略）。
【０１０８】
Ｓ１４２０において、オブジェクトスキーマ１９３を参照し、リンク経路Ｂに対応するリンク（以下、「関連経路Ｃ」という）をオブジェクトスキーマ１９３から取得する。
Ｓ１４２０の後、処理はＳ１４３０に進む。
【０１０９】
Ｓ１４３０において、関連経路Ｃのリンク先のクラス（以下、「リンク先クラスＤ」という）をオブジェクトスキーマ１９３から取得する。
Ｓ１４３０の後、処理はＳ１４４０に進む。
【０１１０】
Ｓ１４４０において、非派生オブジェクトＡに対応するクラス（以下、「非派生クラスＥ」という）をオブジェクトスキーマ１９３から取得する。
Ｓ１４４０の後、処理はＳ１４５０に進む。
【０１１１】
Ｓ１４５０において、非派生クラスＥがリンク先クラスＤのサブクラスであるか否かを判定する。
非派生クラスＥがリンク先クラスＤのサブクラスである場合、処理はＳ１４５１に進む。
非派生クラスＥがリンク先クラスＤのサブクラスでない場合（ｅｌｓｅ）、処理はＳ１４５２に進む。
【０１１２】
Ｓ１４５１において、非派生オブジェクトＡがリンク先クラスＤのオブジェクトであることを抽出条件とする式を記述する。
【０１１３】
Ｓ１４５１により、図３（１）に対して図６（ｂ）が記述される。
【０１１４】
Ｓ１４５１により、サブクラス指定抽出文の作成処理（Ｓ１４００）は終了する。
【０１１５】
Ｓ１４５２において、エラーメッセージを表示し、オブジェクトクエリ文１８１の生成処理をエラー終了する。
【０１１６】
図１４は、実施の形態１における真偽制約指定抽出文の作成処理（Ｓ１５００）を示すＵＭＬアクティビティ図である。
実施の形態１における真偽制約指定抽出文の作成処理（Ｓ１５００）について、図１４に基づいて以下に説明する。
【０１１７】
Ｓ１５１０において、非派生オブジェクトの属性に設定されている真偽制約を取得する。
以下、真偽制約が設定されている属性を「属性Ａ」とし、属性Ａの真偽制約を「真偽制約Ｂ」とする。
Ｓ１５１０の後、処理はＳ１５２０に進む。
【０１１８】
但し、Ｓ１５１０において非派生オブジェクトに属性Ａが無い場合、以後の処理は行わず、真偽制約指定抽出文の作成処理（Ｓ１５００）は終了する（図示省略）。
【０１１９】
Ｓ１５２０において、属性Ａが真偽制約Ｂを満たすことを抽出条件とする式を記述する。
Ｓ１５２０により、真偽制約指定抽出文の作成処理（Ｓ１５００）は終了する。
【０１２０】
図１５は、実施の形態１におけるリターンオブジェクト指定文の作成処理（Ｓ１６００）を示すＵＭＬアクティビティ図である。
実施の形態１におけるリターンオブジェクト指定文の作成処理（Ｓ１６００）について、図１５に基づいて以下に説明する。
【０１２１】
Ｓ１６１０において、＜＜ｒｅｔｕｒｎ＞＞オブジェクトを取得する。
以下、＜＜ｒｅｔｕｒｎ＞＞オブジェクトを「オブジェクトＡ」とする。
Ｓ１６１０の後、処理はＳ１６２０に進む。
【０１２２】
Ｓ１６２０において、オブジェクトＡが集約全体オブジェクト、代入制約オブジェクト、＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクトおよびその他のオブジェクトのいずれであるかを判定する。
オブジェクトＡが集約全体オブジェクトである場合、処理はＳ１６３０に進む。
オブジェクトＡが代入制約オブジェクトである場合、処理はＳ１６４０に進む。
オブジェクトＡが＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクトである場合、処理はＳ１６４１に進む。
オブジェクトＡがその他のオブジェクトである場合、処理はＳ１６５０に進む。
【０１２３】
Ｓ１６３０において、オブジェクトＡ（集約全体オブジェクト）が集約する集約部分オブジェクトの属性に変形制約｛ｏｒｄｅｒ｝｛ｕｎｉｑｕｅ｝が定義されている場合、当該属性を変形制約のキーとして記述する。
以下、オブジェクトＡが集約する集約部分オブジェクトを「オブジェクトＢ」とする。
【０１２４】
図３（１）において、ＡｎｏｎｙｍｏｕｓオブジェクトがオブジェクトＢに該当する。
Ｓ１６３０により、図３（１）に対して図６（ｆ）が記述される。
【０１２５】
Ｓ１６３０の後、処理はＳ１６３１に進む。
【０１２６】
Ｓ１６３１において、オブジェクトＢが＜＜ｆｒｏｍ＞＞オブジェクトであるか否かを判定する。
オブジェクトＢが＜＜ｆｒｏｍ＞＞オブジェクトでない場合、処理はＳ１６３２に進む。
オブジェクトＢが＜＜ｆｒｏｍ＞＞オブジェクトである場合（ｅｌｓｅ）、処理はＳ１６３４に進む。
【０１２７】
Ｓ１６３２において、オブジェクトＢの属性に代入制約が定義されている場合、当該属性を当該代入制約で初期化する式を記述する。
【０１２８】
Ｓ１６３２により、図３（１）に対して図６（ｄ）が記述される。
【０１２９】
Ｓ１６３２の後、処理はＳ１６３３に進む。
【０１３０】
Ｓ１６３３において、オブジェクトＢの属性に真偽制約が定義されている場合、当該属性が当該真偽制約を満たすことを抽出条件とする式を記述する。
【０１３１】
Ｓ１６３３により、図３（１）に対して図６（ｅ）が記述される。
【０１３２】
Ｓ１６３３の後、処理はＳ１６３４に進む。
【０１３３】
Ｓ１６３４において、オブジェクトＢが依存する被依存オブジェクト（以下、「オブジェクトＣ」とする）が有るか否かを判定する。
オブジェクトＣが有る場合、処理はＳ１６６０に進む。
オブジェクトＣが無い場合、リターンオブジェクト指定文の作成処理（Ｓ１６００）は終了する。
【０１３４】
Ｓ１６４０において、オブジェクトＡ（代入制約オブジェクト）に定義されている代入制約を代入文の形式で記述する。
【０１３５】
Ｓ１６４０により、図３（２）に対して図６（ｊ）が記述される。
Ｓ１６４０の後、処理はＳ１６４３に進む。
【０１３６】
Ｓ１６４１において、オブジェクトＡ（＜＜ｆｕｎｃｔｉｏｎ＞＞オブジェクト）のクラス名を関数名とする関数呼び出し式を記述する。
Ｓ１６４２において、オブジェクトＡが依存する被依存オブジェクトが有る場合、当該被依存オブジェクトのクラス名を関数呼び出し式の引数として記述する。
Ｓ１６４２の後、処理はＳ１６４３に進む。
【０１３７】
Ｓ１６４３において、オブジェクトＡ（代入制約または＜＜ｆｕｎｃｔｉｏｎ＞＞）が依存する被依存オブジェクト（以下、「オブジェクトＣ」とする）が有るか否かを判定する。
オブジェクトＣが有る場合、処理はＳ１６６０に進む。
オブジェクトＣが無い場合、リターンオブジェクト指定文の作成処理（Ｓ１６００）は終了する。
【０１３８】
Ｓ１６５０において、エラーメッセージを表示し、オブジェクトクエリ文１８１の生成処理をエラー終了する。
【０１３９】
Ｓ１６６０において、オブジェクトＣ（オブジェクトＡまたはＢが依存する被依存オブジェクト）を新たなオブジェクトＡとして、Ｓ１６２０に処理を戻す。
【０１４０】
以上により、オブジェクトクエリ文１８１の生成方法についての説明を終了する。
【０１４１】
図１６は、実施の形態１におけるオブジェクトクエリ実行装置１００のハードウェア資源の一例を示す図である。
図１６において、オブジェクトクエリ実行装置１００は、ＣＰＵ９１１（マイクロプロセッサ、マイクロコンピュータともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ドライブ装置９０４、プリンタ装置９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９０４は、ＦＤ（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【０１４２】
通信ボード９１５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【０１４３】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
【０１４４】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９１１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【０１４５】
ファイル群９２４には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【０１４６】
実施の形態において構成図およびフローチャート（ＵＭＬアクティビティ図）に含まれている矢印は主としてデータや信号の入出力を示す。
【０１４７】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【０１４８】
実施の形態１において、以下のようなオブジェクトクエリ実行装置１００について説明した。
オブジェクトクエリ実行装置１００は、クエリモデル文法１９２に基づいて、オブジェクトクエリ文１８１の内容をグラフィカルなクエリモデル１９１として表示する。
オブジェクトクエリ実行装置１００は、グラフィカルなクエリモデル１９１から実行可能なオブジェクトクエリ文１８１を生成する。
オブジェクトクエリ実行装置１００は、オブジェクトクエリ変換規則１９６に基づいて、様々なオブジェクトクエリ文法に則ったオブジェクトクエリ文１８１を生成する。
【０１４９】
クエリ開発者１０１は、オブジェクトクエリ文１８１の内容をクエリモデル１９１でグラフィカルに記述できるため、オブジェクトクエリ文１８１を処理順に記述する必要がない。つまり、クエリ開発者１０１は、従来に比べてオブジェクトクエリ文１８１を容易に記述することができる。
オブジェクトクエリ変換規則１９６に則ってクエリモデル１９１からオブジェクトクエリ文１８１を生成するため、オブジェクトクエリ変換規則１９６を変更すれば、様々なオブジェクトクエリ文法１８２に則ったオブジェクトクエリ文１８１を生成することができる。つまり、１つのクエリモデル１９１に基づいて実行環境に合ったオブジェクトクエリ文１８１を生成することができる。
【０１５０】
オブジェクトクエリ実行装置１００は、オブジェクト指向データに対するクエリ文（オブジェクトクエリ文１８１）を生成する。
オブジェクト指向データに対するクエリ文は、リレーショナルデータに対するクエリ文（例えば、ＳＱＬ）とは異なる。
【０１５１】
図１７は、オブジェクトクエリ文に対するクエリ文とリレーショナルデータに対するクエリ文との違いを示す表である。
オブジェクトクエリ文に対するクエリ文とリレーショナルデータに対するクエリ文との違いについて、図１７に基づいて以下に説明する。
【０１５２】
クエリ文の「記述概要」において、以下のような違いがある。
リレーショナルデータに対するクエリ文は「２次元表のスキーマをどのように加工していくかを記述」する。
一方、オブジェクト指向データに対するクエリ文は「オブジェクト１個に対する処理を記述し、それをオブジェクト集合に対して繰り返し適用するように記述」する。
【０１５３】
このため、具体的に３つの相違点がある。
【０１５４】
（１）「記述で使う要素」が、リレーショナルデータに対するクエリ文ではテーブル名に相当する「スキーマレベルの要素」であり、オブジェクト指向データに対するクエリ文ではオブジェクト１個に相当する「スキーマを実体化したレベルの要素」である。
即ち、リレーショナルデータに対するクエリ文は、オブジェクト指向データに対するクエリ文よりメタレベルが１つ上のレベルの要素で記述している。
【０１５５】
（２）「記述内容」が、リレーショナルデータに対するクエリ文では「スキーマ」であり、オブジェクト指向データに対するクエリ文では「オブジェクト１つに対する処理」である。
【０１５６】
（３）「データ形式」が、リレーショナルデータに対するクエリ文は「２次元表の行形式」であり、オブジェクト指向データに対するクエリ文は「継承や他オブジェクトへのリンクを持つオブジェクト形式」である。
【０１５７】
したがって、従来のリレーショナルデータに対する技術（例えば、特許文献１のグラフィカル  ユーザ  インタフェース）は、オブジェクト指向データに適用できない。
【０１５８】
実施の形態２．
オブジェクトクエリ文１８１からクエリモデル１９１を生成する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項は実施の形態１と同様である。
【０１５９】
図１８は、実施の形態２におけるオブジェクトクエリ実行装置１００の機能構成図である。
実施の形態２におけるオブジェクトクエリ実行装置１００の機能構成について、図１８に基づいて以下に説明する。
【０１６０】
オブジェクトクエリ実行装置１００は、実施の形態１で説明した構成（図２参照）に加えて、クエリモデル生成部１４０を備える。
【０１６１】
クエリモデル生成部１４０は、オブジェクトクエリ変換規則１９６に基づいてオブジェクトクエリ文１８１からクエリモデル１９１を生成する。オブジェクトクエリ文１８１はオブジェクトクエリ文生成部１２０によりクエリモデル１９１から生成された文でないものとする。
例えば、クエリモデル生成部１４０は、オブジェクトクエリ文１８１（第３のオブジェクトクエリ文）に使用されたオブジェクトクエリ文法１８２の命令語（第２群命令）に対応するクエリモデル文法１９２の命令（第１群命令）をオブジェクトクエリ変換規則１９６に基づいて特定する。クエリモデル生成部１４０は、特定したクエリモデル文法１９２の命令語（第１群特定命令）を使用して、オブジェクトクエリ文１８１と同じ問い合わせ内容を示すクエリモデル１９１を生成する。
クエリモデル生成部１４０は、ＣＰＵを用いて動作する。
【０１６２】
図１９は、実施の形態２におけるクエリモデル生成方法を示すＵＭＬアクティビティ図である。
実施の形態２におけるクエリモデル生成方法について、図１９に基づいて以下に説明する。
【０１６３】
クエリモデル生成部１４０は、図１９に示す処理方法によりオブジェクトクエリ文１８１からクエリモデル１９１を生成する。
【０１６４】
Ｓ２０１０において、オブジェクトクエリ文１８１がクエリ定義と関数定義とのいずれであるか判定する。
【０１６５】
図６の「ｑｕｅｒｙ１」がクエリ定義に該当し、図６の「ａｌｌＦｉｌｅｓ」が関数定義に該当する。
【０１６６】
オブジェクトクエリ文１８１がクエリ定義の場合、処理はＳ２１００に進む。
オブジェクトクエリ文１８１が関数定義の場合、処理はＳ２２００に進む。
【０１６７】
Ｓ２１００において、問い合わせ対象となるオブジェクト集合を表す図を作成する。
Ｓ２２００において、関数の処理対象となるオブジェクトを表す図を作成する。
Ｓ２１００またはＳ２２００の後、処理はＳ２３００に進む。
【０１６８】
Ｓ２３００において、抽出処理を表す図を作成する。
Ｓ２４００において、グループ化処理を表す図を作成する。
Ｓ２５００において、変形処理を表す図を作成する。
Ｓ２５００の後、処理はＳ２６００に進む。
【０１６９】
Ｓ２６００において、＜＜ｒｅｔｕｒｎ＞＞オブジェクトを表す図を作成する。
【０１７０】
例えば、Ｓ２１００において、図６のオブジェクトクエリ文１８１に基づいて図３（１）のクエリモデル１９１の＜＜ｉｎ＞＞、＜＜ｆｒｏｍ＞＞オブジェクトおよび＜＜ｉｎ＞＞から＜＜ｆｒｏｍ＞＞への集約リンクが作成される。
同様に、Ｓ２２００で図３（２）の＜＜ｆｒｏｍ＞＞オブジェクト、Ｓ２３００で図３（１）のＦｏｌｄｅｒオブジェクトとｔａｒｇｅｔｉｔｅｍリンク、Ｓ２４００で＜＜ｇｒｏｕｐ＞＞オブジェクト、ｋｅｙリンクおよびｖａｌｕｅリンク、Ｓ２５００でＡｎｏｎｙｍｏｕｓオブジェクトと依存リンク、Ｓ２６００で＜＜ｒｅｔｕｒｎ＞＞オブジェクトが作成される。
【０１７１】
以下に、Ｓ２１００〜Ｓ２５００の各処理の詳細を説明する。
【０１７２】
図２０は、実施の形態２における対象オブジェクト指定図の作成処理（Ｓ２１００）を示すＵＭＬアクティビティ図である。
実施の形態２における対象オブジェクト指定図の作成処理（Ｓ２１００）について、図２０に基づいて以下に説明する。
【０１７３】
Ｓ２１１０において、クエリ結果の変数名をクエリモデル１９１の名前として設定する。
【０１７４】
Ｓ２１１０により、図６（ａ）に基づいて図３（１）のモデル名が「ｑｕｅｒｙ１」となる。
【０１７５】
Ｓ２１１０の後、処理はＳ２１２０に進む。
【０１７６】
Ｓ２１２０において、クエリ結果に代入されているオブジェクトを＜＜ｉｎ＞＞オブジェクトとして作図する。＜＜ｉｎ＞＞オブジェクトはクエリモデル１９１内で出発点となるオブジェクトである。
【０１７７】
Ｓ２１２０により、図６（ａ）に基づいて図３（１）の＜＜ｉｎ＞＞オブジェクトが作図される。
【０１７８】
Ｓ２１２０の後、処理はＳ２１３０に進む。
【０１７９】
Ｓ２１３０において、＜＜ｉｎ＞＞オブジェクトに集約される集約部分オブジェクトを＜＜ｆｒｏｍ＞＞オブジェクトとして作図する。
【０１８０】
Ｓ２１３０により、図６（ａ）の「Ｓｈｏｒｔｃｕｔ」をクラス名として図３（１）の＜＜ｆｒｏｍ＞＞オブジェクトが作図される。
【０１８１】
Ｓ２１３０の後、処理はＳ２１４０に進む。
【０１８２】
Ｓ２１４０において、＜＜ｉｎ＞＞オブジェクトから＜＜ｆｒｏｍ＞＞オブジェクトへの集約リンクを作図する。
【０１８３】
Ｓ２１４０により、図３（１）の＜＜ｉｎ＞＞オブジェクトから＜＜ｆｒｏｍ＞＞オブジェクトへの集約リンクが作図される。
【０１８４】
Ｓ２１４０により、対象オブジェクト指定図の作成処理（Ｓ２１００）は終了する。
【０１８５】
図２１は、実施の形態２における関数オブジェクト図の作成処理（Ｓ２２００）を示すＵＭＬアクティビティ図である。
実施の形態２における関数オブジェクト図の作成処理（Ｓ２２００）について、図２１に基づいて以下に説明する。
【０１８６】
Ｓ２２１０において、関数名をクエリモデル１９１の名前として設定する。
【０１８７】
Ｓ２２１０により、図６（ｇ）に基づいて図３（２）のモデル名が「ａｌｌＦｉｌｅｓ」となる。
【０１８８】
Ｓ２２１０の後、処理はＳ２２２０に進む。
【０１８９】
Ｓ２２２０において、関数の引数として記述されている名前を用いて＜＜ｆｒｏｍ＞＞オブジェクトを作図する。
【０１９０】
Ｓ２２２０により、図６（ｇ）に基づいて図３（２）の＜＜ｆｒｏｍ＞＞オブジェクトが作図される。
【０１９１】
Ｓ２２２０により、関数オブジェクト図の作成処理（Ｓ２２００）は終了する。
【０１９２】
図２２は、実施の形態２における抽出処理図の作成処理（Ｓ２３００）を示すＵＭＬアクティビティ図である。
実施の形態２における抽出処理図の作成処理（Ｓ２３００）について、図２２に基づいて以下に説明する。
【０１９３】
Ｓ２３１０において、オブジェクトクエリ文１８１中にユニーク処理を示す文があるか、クラス指定による抽出条件（真偽制約）を示す文があるか、またはいずれの文もないか判定する。
ユニーク処理を示す文がある場合、処理はＳ２３２０に進む。
クラス指定による抽出条件を示す文がある場合、処理はＳ２３３０に進む。
いずれの文もない場合（ｅｌｓｅ）、処理はＳ２３４０に進む。
【０１９４】
Ｓ２３２０において、オブジェクトクエリ文１８１からユニーク処理を示す文（以下、「ユニーク処理文」という）を取得する。
Ｓ２３２０の後、処理はＳ２３２１に進む。
【０１９５】
Ｓ２３２１において、ユニーク処理文からユニーク処理のキーとなる属性を特定し、特定した属性に｛ｕｎｉｑｕｅ｝を設定する。
Ｓ２３２１により、抽出処理図の作成処理（Ｓ２３００）は終了する。
【０１９６】
Ｓ２３３０において、オブジェクトクエリ文１８１からクラス指定による抽出条件を示す文を取得する。
以下、Ｓ２３３０で取得された文を「抽出処理文Ａ」、抽出処理文Ａの抽出条件を「抽出条件Ａ」とし、抽出条件Ａで指定されているクラスに対応するオブジェクトを「抽出条件オブジェクトＡ」とする。
【０１９７】
Ｓ２３３０により、図６（ｂ）が抽出処理文Ａとして取得される。
【０１９８】
Ｓ２３３０の後、処理はＳ２３３１に進む。
【０１９９】
Ｓ２３３１において、抽出処理文Ａに基づいて、＜＜ｆｒｏｍ＞＞オブジェクトから抽出条件オブジェクトＡまでの経路上のオブジェクトおよびリンクを作図する。
【０２００】
Ｓ２３３１により、図６（ｂ）に基づいて図３（１）のＦｏｌｄｅｒオブジェクトおよびｔａｒｇｅｔＩｔｅｍリンクが作図される。
【０２０１】
Ｓ２３３１により、抽出処理図の作成処理（Ｓ２３００）は終了する。
【０２０２】
Ｓ２３４０において、オブジェクトクエリ文１８１からオブジェクトの属性に対する抽出条件を示す文を取得する。
以下、Ｓ２３４０で取得された文を「抽出処理文Ｂ」、抽出処理文Ｂの抽出条件を「抽出条件Ｂ」とし、抽出条件Ｂが設定されたオブジェクトを「抽出条件オブジェクトＢ」とする。
Ｓ２３４０の後、処理はＳ２３４１に進む。
【０２０３】
但し、当該抽出処理文が無い場合、以後の処理は行わず、抽出処理図の作成処理（Ｓ２３００）は終了する（図示省略）。
【０２０４】
Ｓ２３４１において、抽出処理文Ｂに基づいて、＜＜ｆｒｏｍ＞＞オブジェクトから抽出条件オブジェクトＢまでの経路上のオブジェクトおよびリンクを作図する。
Ｓ２３４１の後、処理はＳ２３４２に進む。
【０２０５】
Ｓ２３４２において、抽出条件オブジェクトＢの属性に抽出条件Ｂを設定する。
Ｓ２３４２により、抽出処理図の作成処理（Ｓ２３００）は終了する。
【０２０６】
図２３は、実施の形態２におけるグループ化処理図の作成処理（Ｓ２４００）を示すＵＭＬアクティビティ図である。
実施の形態２におけるグループ化処理図の作成処理（Ｓ２４００）について、図２３に基づいて以下に説明する。
【０２０７】
Ｓ２４１０において、オブジェクトクエリ文１８１からグループ化を指定している文を取得する。
以下、Ｓ２４１０で取得された文を「グループ化処理文」とする。
【０２０８】
Ｓ２４１０により、図６（ｃ）がグループ化処理文として取得される。
【０２０９】
Ｓ２４１０の後、処理はＳ２４２０に進む。
【０２１０】
但し、グループ化処理文が無い場合、以後の処理は行わず、グループ化処理図の作成処理（Ｓ２４００）は終了する（図示省略）。
【０２１１】
Ｓ２４２０において、＜＜ｇｒｏｕｐ＞＞オブジェクトを作図する。
【０２１２】
Ｓ２４２０により、図３（１）の＜＜ｇｒｏｕｐ＞＞オブジェクトが作図される。
【０２１３】
Ｓ２４２０の後、処理はＳ２４３０に進む。
【０２１４】
Ｓ２４３０において、グループ化処理文に基づいてグループ化のキーとなるオブジェクト（以下、「グループ化キーオブジェクト」という）を特定し、＜＜ｇｒｏｕｐ＞＞オブジェクトからグループ化キーオブジェクトへのｋｅｙリンクを作図する。
【０２１５】
Ｓ２４３０により、図６（ｃ）に基づいて図３（１）のｋｅｙリンクが作図される。
【０２１６】
Ｓ２４３０の後、処理はＳ２４４０に進む。
【０２１７】
Ｓ２４４０において、グループ化処理文に基づいてグループ化の対象となるオブジェクト（以下、「グループ化対象オブジェクト」という）を特定し、＜＜ｇｒｏｕｐ＞＞オブジェクトからグループ化対象オブジェクトへのｖａｌｕｅリンクを作図する。
【０２１８】
Ｓ２４４０により、図６（ｃ）に基づいて図３（１）のｖａｌｕｅリンクが作図される。
【０２１９】
Ｓ２４４０により、グループ化処理図の作成処理（Ｓ２４００）は終了する。
【０２２０】
図２４は、実施の形態２における変形処理図の作成処理（Ｓ２５００）を示すＵＭＬアクティビティ図である。
実施の形態２における変形処理図の作成処理（Ｓ２５００）について、図２４に基づいて以下に説明する。
【０２２１】
Ｓ２５１０において、オブジェクトクエリ文１８１から変形処理（ｃｏｌｌｅｃｔ、ｓｏｒｔ）を示す文を取得する。
以下、Ｓ２５１０で取得された文を「変形処理文」とする。
【０２２２】
Ｓ２５１０により、図６（ｄ）（ｆ）が変形処理文として取得される。
【０２２３】
Ｓ２５１０の後、処理はＳ２５２０に進む。
【０２２４】
但し、変形処理文が無い場合、以後の処理は行わず、変形処理図の作成処理（Ｓ２５００）は終了する（図示省略）。
【０２２５】
Ｓ２５２０において、変形処理文に代入文（「＝」を含む文）が含まれるか否かを判定する。
以下、変形処理文に含まれる代入文を「代入文Ａ」とする。
変形処理文に代入文Ａが含まれる場合、処理はＳ２５２１に進む。
変形処理文に代入文Ａが含まれない場合（ｅｌｓｅ）、処理はＳ２５２２に進む。
【０２２６】
Ｓ２５２１において、代入文Ａ中の代入先の変数の名前をオブジェクト名とする派生オブジェクトを作図する。
以下、Ｓ２５２１で作図された派生オブジェクトを「派生オブジェクトＤ」とする。
Ｓ２５２１の後、処理はＳ２５３０に進む。
【０２２７】
但し、Ｓ２５２１において当該派生オブジェクトが既に作図されている場合、作図は行わず、処理はＳ２５４０に進む（図示省略）。
【０２２８】
Ｓ２５２２において、変形処理文を表す派生オブジェクトを作図する。
以下、Ｓ２５２２で作図された派生オブジェクトを「派生オブジェクトＤ」とする。
【０２２９】
Ｓ２５２２により、図３（１）のＡｎｏｎｙｍｏｕｓオブジェクトが作図される。
【０２３０】
Ｓ２５２２の後、処理はＳ２５３０に進む。
【０２３１】
但し、Ｓ２５２２において当該派生オブジェクトが既に作図されている場合、作図は行わず、処理はＳ２５４０に進む（図示省略）。
【０２３２】
Ｓ２５３０において、派生オブジェクトＤが関数呼び出しオブジェクトであるか、派生オブジェクトＤが集約全体オブジェクトであるか、変形処理文中に引数があるか又はいずれにも該当しないか判定する。
派生オブジェクトＤが関数呼び出しオブジェクトである場合、処理はＳ２５３１に進む。
派生オブジェクトＤが集約全体オブジェクトである場合、処理はＳ２５３３に進む。
変形処理文中に引数がある場合、処理はＳ２５３４に進む。
いずれにも該当しない場合（ｅｌｓｅ）、処理はＳ２５４０に進む。
【０２３３】
Ｓ２５３１において、派生オブジェクトＤ（関数呼び出しオブジェクト）のクラス名として関数名を設定する。
Ｓ２５３２において、関数の引数として指定されているオブジェクト（以下、「関数引数オブジェクト」という）の図を特定し、派生オブジェクトから関数引数オブジェクトへ依存リンクを引く。
Ｓ２５３２の後、処理はＳ２５４０に進む。
【０２３４】
Ｓ２５３３において、派生オブジェクトＤ（集約全体オブジェクト）により集約される集約部分オブジェクトの図を特定し、派生オブジェクトＤから集約部分オブジェクトへ集約リンクを引く。
Ｓ２５３３の後、処理はＳ２５４０に進む。
【０２３５】
Ｓ２５３４において、変形処理文中の引数名を名前とするオブジェクトＥを作図し、オブジェクトＤからオブジェクトＥへ依存リンクを引く。
但し、作図済みの場合、オブジェクトＥ、依存リンクを作図しない。
【０２３６】
図６（ｄ）の「ｅｎｔｒｙ」が変形処理文中の引数名に該当する。
Ｓ２５３４により、図３（１）のＡｎｏｎｙｍｏｕｓオブジェクトからｅｎｔｒｙオブジェクトへの依存リンクが作図される。
【０２３７】
Ｓ２５３４の後、処理はＳ２５４０に進む。
【０２３８】
Ｓ２５４０において、変形処理文がソート処理（ｓｏｒｔ）を示すか判定する。
変形処理文がソート処理を示す場合、処理はＳ２５４１に進む。
変形処理文がソート処理を示さない場合（ｅｌｓｅ）、変形処理図の作成処理（Ｓ２５００）は終了する。
【０２３９】
Ｓ２５４１において、変形処理文からソートのキーとなる属性を特定し、特定した属性に対応する図に｛ｏｒｄｅｒ｝を設定する。
【０２４０】
Ｓ２５４１により、図３（１）のＡｎｏｎｙｍｏｕｓオブジェクトに｛ｏｒｄｅｒｅｄ｝が設定される。
【０２４１】
Ｓ２５４１の後、変形処理図の作成処理（Ｓ２５００）は終了する。
【０２４２】
以上により、クエリモデル文法１９２の生成方法についての説明を終了する。
【０２４３】
実施の形態２において、以下のようなオブジェクトクエリ実行装置１００について説明した。
オブジェクトクエリ実行装置１００は、オブジェクトクエリ文１８１をグラフィカルなクエリモデル１９１として生成する。
オブジェクトクエリ実行装置１００は、オブジェクトクエリ変換規則１９６に基づいて、様々なクエリモデル文法に則ったクエリモデル１９１を生成する。
【０２４４】
オブジェクトクエリ実行装置１００は、オブジェクトクエリ文１８１の内容からクエリモデル１９１を生成するので、クエリの内容をグラフィカルに表示することができる。
オブジェクトクエリ変換規則１９６に則ってオブジェクトクエリ文１８１からクエリモデル１９１を生成するため、オブジェクトクエリ変換規則１９６を変更すれば、他のクエリモデル文法に則ったクエリモデル１９１を生成することができる。つまり、１つのオブジェクトクエリ文１８１の内容を様々なクエリモデル１９１で表示することができる。
【符号の説明】
【０２４５】
１００  オブジェクトクエリ実行装置、１０１  クエリ開発者、１１０  クエリモデル編集部、１２０  オブジェクトクエリ文生成部、１３０  オブジェクトクエリ実行部、１４０  クエリモデル生成部、１９０  実行装置記憶部、１９１  クエリモデル、１９２  クエリモデル文法、１９３  オブジェクトスキーマ、１９４  オブジェクト集合、１９５  モデル表記、１９６  オブジェクトクエリ変換規則、１８１  オブジェクトクエリ文、１８２  オブジェクトクエリ文法、１８３  インスタンス集合、１８４  オブジェクトクエリ結果、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ドライブ装置、９０６  プリンタ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2011028392.tif 000003
【図２】
2011028392.tif 000004
【図３】
2011028392.tif 000005
【図４】
2011028392.tif 000006
【図５】
2011028392.tif 000007
【図６】
2011028392.tif 000008
【図７】
2011028392.tif 000009
【図８】
2011028392.tif 000010
【図９】
2011028392.tif 000011
【図１０】
2011028392.tif 000012
【図１１】
2011028392.tif 000013
【図１２】
2011028392.tif 000014
【図１３】
2011028392.tif 000015
【図１４】
2011028392.tif 000016
【図１５】
2011028392.tif 000017
【図１６】
2011028392.tif 000018
【図１７】
2011028392.tif 000019
【図１８】
2011028392.tif 000020
【図１９】
2011028392.tif 000021
【図２０】
2011028392.tif 000022
【図２１】
2011028392.tif 000023
【図２２】
2011028392.tif 000024
【図２３】
2011028392.tif 000025
【図２４】
2011028392.tif 000026