Sun WBEM SDK 開発ガイド

照会 API による照会文字列の解析

com.sun.wbem.query パッケージ中のクラスやメソッドは、WQL パーサーと、解析する WQL 文字列を表しています。このパッケージには、照会文字列内の節を表すクラスと、これらの節の中の文字列を処理するメソッドが含まれています。

現在のところ解析可能な WQL 式のタイプは SELECT 式だけです。SELECT 式には次の部分が含まれています。

WQL の式

次の図は、WQL 式中の節と WBEM クラスの対応を表したものです。

図 5–1 WQL 式を表す WBEM クラス

Graphic

WQL 

WBEM 照会クラス 

SELECT attribute_expression

SelectList

FROM table_attribute

FromExp

WHERE conditional_expression

QueryExp

WQL は、CIM データモデルに基づいて格納されるデータを照会できるようになっています。CIM モデルでは、オブジェクトに関する情報は CIM クラスや CIM インスタンスに格納されます。CIM インスタンスには、名前、データ型、値からなるプロパティを持含めることができます。WQL は、次の表に示すように CIM オブジェクトモデルを SQL テーブルにマップします。

SQL 

WQL 

テーブル 

CIM クラス 

行 

CIM インスタンス 

列 

CIM プロパティ 

CIM の WQL 式は、次の形式で表すことができます。


SELECT FROM WHERE CIM property CIM class propertyA = 40

次はより実際的な WQL 式の例です。



SELECT * FROM Solaris_FileSystem WHERE (Name="home" OR Name="files") AND AvailableSpace > 2000000

SELECT 文

SelectExp クラスは、SELECT 分を表します。

SELECT 文は、情報検索に使用される SQL 文ですが、WQL SELECT 文には、WQL 特有の制約と拡張がいくつかあります。SQL SELECT 文は、通常データベース環境でテーブルから特定の列を検索するのに使用されます。WQL SELECT 文は、単一クラスのインスタンスを検索するのに使用されます。WQL では、複数のクラスに渡る照会はサポートされません。

検索リストは SELECT 式で表されます。SELECT 文には次の形式があります。

SELECT 文 

選択されるもの 

SELECT *

指定されたクラスとそのすべてのサブクラスのすべてのインスタンス。 

SELECT attr_exp, attr_exp...attr_exp

指定されたクラスとそのすべてのサブクラスのすべてのインスタンスのうち、指定された識別子をもっているものだけ。 

FROM 節

FROM 節は、abstract クラス fromExp によって表されます。現在のところ、fromExp の直接のサブクラスは NonJoinExp だけです。NonJoinExp は、1 つのテーブル (CIM クラス) だけを指定した FROM 節を表しています。select 操作はこのテーブルに対して行われます。

FROM 節では、照会文字列に一致するインスタンスが含まれているクラスを指定します。SQL では、FROM 節に修飾子付き属性式を指定します。これが検索するクラスの名前になります。修飾子付き属性式には、そのテーブルとクラスを指定します。現在のところ WQL FROM 節では、非 join 式だけがサポートされます。したがって、WQL FROM 節には 1 つのクラスしか指定できません。

WHERE 節

QueryExp クラスは、その各サブクラスが条件式を表している abstract クラスです。特定の CIMInstance がこれらの条件式に適用されると、ブール値を返します。

WHERE 節は、照会のスコープを狭めるためのものです。WHERE 節には条件式が含まれています。これらの条件式には、プロパティまたはキーワード、演算子、定数が含まれています。WHERE 節には、あらかじめ定義された WQL 演算子のいずれかを指定する必要があります。

SELECT 文の後に追加する WHERE 節の基本的な構文は、次のとおりです。

SELECT FROM WHERE CIM instance CIM class conditional_expression

WHERE 節の条件式は、次の形式です。

 
property operator constant

QueryExp クラスの次の各サブクラスは、WHERE 節における条件式の特定のタイプに対応しています。

WHERE 節の条件式は QueryExp クラスで表されます。条件式はツリー構造になっています。たとえば、条件式 (a=2 and b=3 or c=4) は、次のようなツリー構造で表されます。

QueryExp クラスは照会式ツリーのトップレベルだけを返します (上の例では ORQueryExp)。これによって、プロバイダは、そのクラス内のメソッドを使って照会式ツリーの分岐を下方にたどることができます。

canonize メソッドの使用

プロバイダが WQL 照会文字列を別のエンティティに渡し、この文字列を解析させるには、次のメソッドが便利です。