CSWのAPIを使用すると、次のような操作を実行できます。
レコード・タイプ・ドメインおよびレコード・ビューの変換に関する情報の指定
レコード・タイプのパブリッシュ
レコード・タイプの削除(パブリッシュの解除)
CSWレコード・タイプに対する権限の付与および取消し
PL/SQL API(SDO_CSW_PROCESSパッケージ)は「SDO_CSW_PROCESSパッケージ(CSWの処理)」、XMLリクエストおよびレスポンスの例は「XMLのリクエストおよびレスポンス例」、Java APIは「CSWの管理用のJava API」を参照してください。
クライアントはサーバーの機能に関する情報を取得できます。機能のドキュメントは、GetCapabilitiesリクエストに対するレスポンスとしてCSWサーバーにより生成されます。機能のドキュメントには、Oracleデータベースに保存されているCSWメタデータから抽出された情報が含まれています(レコード・タイプとサポートされる操作のタイプを含む)。
クライアントは、HTTP GET、POSTおよびSOAPプロトコルを使用してこの機能ドキュメントにアクセスできます。次の例では、HTTPプロトコルを使用しています。
http:///<machine-name:port>/oraclespatial/csw?request=GetCapabilities&service=CSW&acceptversion=2.0.0&outputFormat=text/xml
次に、前述の書式について説明します。
machine-nameは、アプリケーション・サーバーが実行されているシステムの名前です。
portは、アプリケーション・サーバーが実行されているポートの番号です。
oraclespatialは、Oracle Spatial and GraphのWebサービス・アプリケーションがマウントされるデフォルトのrootです。
GML形式ではない空間コンテンツをCSWで処理する必要がある場合は、その空間パス情報を抽出するためにextractSDO
という名前のユーザー定義のファンクションを作成する必要があります。このファンクションは、GML以外の形式の空間コンテンツが使用され空間索引を作成する対象となるレコード・タイプごとに実装する必要があります。(レコード・タイプのすべての空間コンテンツがGML形式の場合、このファンクションは必要ありません。)
また、「extractSDOファンクションの登録および登録解除」で説明されているとおりに、このファンクションを登録する必要があります。これにより、GML形式ではない空間パス・コンテンツを抽出する必要がある場合、Oracle Spatial and Graph CSWサーバーでは、このファンクションを検索および起動することができます。
extractSDO
ファンクションの書式は次のとおりです。
extractSDO(
xmlData IN XMLType, srsNs IN VARCHAR2, spPathsSRSNSList IN MDSYS.STRINGLISTLIST); ) RETURN MDSYS.SDO_GEOM_PATH_INFO;
パラメータ
空間パス情報を抽出する必要のあるレコード・インスタンスのデータを指定します。
フィーチャ・タイプの空間データと関連付けられた空間参照システム(座標系)のユーザー定義の名前空間を指定します。この名前空間は(指定されている場合)、GetFeatureリクエストに対する回答として生成されるFeatureCollectionの<boundedBy>
要素内のsrsName
属性を生成するときにも使用されます。
異なる空間パスに関連付けられたユーザー定義の空間参照システム名前空間が1つのレコード・タイプに複数ある場合、このパラメータには、タイプの登録時に指定された異なる空間パスに対応する空間参照システム名前空間情報のリストを指定します。これはMDSYS.STRINGLISTLIST型のオブジェクトで、VARRAY(1000000) OF MDSYS.STRINGLIST
として定義されます。また、MDSYS.STRINGLIST型はVARRAY(1000000) OF VARCHAR2(4000)
として定義されます。異なる空間列に関連付けられたユーザー定義の空間参照システム名前空間が、1つのレコードに複数存在しない場合は、このパラメータはNULLにする必要があります。
各MDSYS.STRINGLISTオブジェクトの最初の要素は空間参照システム名前空間で、2つ目の要素は空間参照システム名前空間の別名です(別名がある場合)。
使用上の注意
このファンクションではGML以外の空間コンテンツが解析され、MDSYS.SDO_GEOM_PATH_INFO型のオブジェクトが戻されます。このオブジェクト型の定義は次のとおりです。
(path MDSYS.STRINGLIST, geom SDO_GEOMETRY, arrindex NUMBER)
path
属性には、抽出してgeom
属性に格納する空間コンテンツのパスを指定します。これは、MDSYS.STRINGLIST型のオブジェクトで、VARRAY(1000000) OF VARCHAR2(4000)
として定義されます。パス属性のパターンは、MDSYS.STRINGLIST('pe_namespace1','pe_name1', 'pe_namespace2','pe_name2',...);
です。次に各項目について説明します。
pe_namespace1
は、1つ目のパス要素の名前空間です。
pe_name1
は、1つ目のパス要素の名前です。
pe_namespace2
は、2つ目のパス要素の名前空間です。
pe_name2
は、2つ目のパス要素の名前です。
同様に、残りの名前空間と名前の組合せを指定します。
パスに含まれる/typeNameNSAlias:typeName/pe_namespace1_Alias:pe_name1/pe_namespace2_Alias:pe_name2...
は、空間コンテンツのXPathをGML以外の形式で表現したもので、ユーザー定義ファンクションextractSDO
によって抽出されます。
typeNameNSAlias
は、レコード・タイプ名の名前空間の別名です。
typeName
は、レコード・タイプのタイプ名です。
pe_namespace1_Alias
は、名前空間pe_namespace1
の別名です。
pe_namespace2_Alias
は、名前空間pe_namespace2
の別名です。
geom
属性は、SDO_GEOMETRYオブジェクトとして抽出される(path
パラメータに対応する)空間コンテンツです。抽出されたジオメトリには、空間索引を使用して索引付けを行うことができます。
現在、arrindex
属性は使用されていないため、1に設定する必要があります。(パスの配列索引として将来使用するために予約されています。)
extractSDO
ファンクションを作成した後は、GML形式ではないレコード・タイプに含まれる空間パス・コンテンツの処理に使用できるように、このファンクションを登録する必要があります。ファンクションを登録するには、SDO_CSW_PROCESS.InsertPluginMapプロシージャをコールします。次に例を示します。
BEGIN SDO_CSW_PROCESS.insertPluginMap('http://www.opengis.net/cat/csw', 'Record', 'csw_admin_usr.csw_RT_1_package'); END; /
GML形式でない空間パス・コンテンツの処理にextractSDO
ファンクションを使用する必要がなくなった場合は、SDO_CSW_PROCESS.DeletePluginMapプロシージャをコールしてこのファンクションの登録を解除できます。次に例を示します。
BEGIN SDO_CSW_PROCESS.deletePluginMap('http://www.opengis.net/cat/csw', 'Record'); END; /