この章では、OpenGISコンソーシアム仕様のカタログ・サービスであるOracle Spatial実装について説明します。この仕様によると、カタログ・サービスは、データ、サービスおよび関連する情報オブジェクトについての記述情報(メタデータ)の集合をパブリッシュおよび検索する機能をサポートしています。カタログ内のメタデータは、ユーザーとソフトウェアの両方によって評価したり、詳細な処理を行う目的で、問合せや配置が可能なリソース特性を示します。カタログ・サービスは、情報コミュニティ内に登録された情報リソースの検索およびバインドをサポートする必要があります。
ここでは、Oracle Spatial実装をCatalog Services for the Web(CSW)と呼びます。
この章の内容は次のとおりです。
この章では、CSWについて、クライアントとの関係およびデータベース・サーバーとの関係も含めて説明します。CSWはWebサービスとして実装され、Oracle Containers for Java(OC4J)にデプロイできます(Oracle Containers for Java(OC4J)はOracle Application Serverに同梱されています)。
CSWにはメタデータ層があります。この層では、カタログ・リクエストへの応答で必要とされるメタデータがデータベースに格納されます。メタデータには空間列が含まれており、Oracle Spatialのインタフェースを使用して空間列の問合せおよび処理が可能です。メタデータには、レコードの非空間属性と空間属性の関連付け、およびカタログ・サービスからクライアントに提供されるサービスも格納されます。
図16-1に、CSWのアーキテクチャを示します。
次に、図16-1について説明します。
CSWは、Oracle Application Server中間層のコンテナの一部です。
CSWでは、SOAP/XML形式のCSWリクエストおよびレスポンスを使用して、Webサービス・クライアントと通信できます。
CSWでは、データベースに対するJDBCコールを介して空間データおよびメタデータへのアクセスが実行されます。
データベースには、CSWのメタデータおよびデータとともにOracle Spatialが含まれます。
CSWセキュリティは、セキュアなトランスポートを使用して実装されます。ユーザーIDおよびユーザー・ラベルはLDAPで管理され、中間層とCSWセキュリティを組み合せて認証が行われます。Oracleのラベルベースのセキュリティは、レコード・レベルでのユーザー権限の管理に使用されます。
CSWのAPIを使用すると、次のような操作を実行できます。
レコード・タイプ・ドメインおよびレコード・ビューの変換に関する情報の指定
レコード・タイプのパブリッシュ
レコード・タイプの削除(パブリッシュの解除)
CSWレコード・タイプに対する権限の付与および取消し
PL/SQL API(SDO_CSW_PROCESSパッケージ)は第22章、XMLリクエストおよびレスポンスの例は16.3項、Java APIは16.4項を参照してください。
機能のドキュメントは、機能のインスタンスを記述したドキュメントです。このドキュメントには、レコード・タイプおよびサポートされる操作(挿入、削除など)のタイプが指定されます。
機能のドキュメントは、GetCapabilitiesリクエストへのレスポンスとしてCSWサーバーで生成されます。CSWサーバーでは機能テンプレートが使用されます。レコード・タイプおよび操作に関する情報がこのテンプレートに追加されて、機能のドキュメントが作成されます。
クライアントがHTTP GETメソッドを使用してこの機能のドキュメントにアクセスするには、次のようにSOAPインタフェースまたはXMLインタフェースのいずれかを使用します。
SOAPインタフェースの場合は、oracle.spatial.ws.servlet.CSWServletを使用します。このサーブレットには、次の書式のアドレスでアクセスできます。
http:///machine-name:port/SpatialWS-SpatialWS-context-root/cswservlet?request=GetCapabilities&service=CSW&acceptversion=2.0.0&outputFormat=text/xml
XMLインタフェースの場合は、oracle.spatial.ws.servlet.CSWXMLServletを使用します。このサーブレットには、次の書式のアドレスでアクセスできます。
http:///machine-name:port/SpatialWS-SpatialWS-context-root/xmlcswservlet?request=GetCapabilities&service=CSW&acceptversion=2.0.0&outputFormat=text/xml
次に、前述の書式について説明します。
machine-nameは、OC4Jサーバーが実行されているシステムの名前です。
portは、OC4Jサーバーが実行されているポートの番号です。
SpatialWS-SpatialWS-context-rootは、SpatialのWebサービス・アプリケーションがマウントされるデフォルトのrootです。
cswservletは、oracle.spatial.ws.servlet.CSWServletに対するservlet-mapping url-patternです。web.xmlファイルにデフォルトで指定されます。
xmlcswservletは、oracle.spatial.ws.servlet.CSWXMLServletに対するservlet-mapping url-patternです。web.xmlファイルにデフォルトで指定されます。
GML形式ではない空間コンテンツをCSWで処理する必要がある場合は、その空間パス情報を抽出するためにextractSDOという名前のユーザー定義のファンクションを作成する必要があります。このファンクションは、GML以外の形式の空間コンテンツが使用され空間索引を作成する対象となるレコード・タイプごとに実装する必要があります。(レコード・タイプのすべての空間コンテンツがGML形式の場合、このファンクションは必要ありません。)
また、16.2.2.1項で説明されているとおりに、このファンクションを登録する必要があります。これにより、GML形式ではない空間パス・コンテンツを抽出する必要がある場合、Oracle Spatial 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)として定義されます。path属性のパターンは、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;
/
この項では、次の各操作について、CSWエンジンへのレコード・リクエストの一部と、各リクエストに対するレスポンスを示します。
GetCapabilities
DescribeRecord
GetRecords
GetDomain
GetRecordById
次のトランザクション・タイプを指定するサブ要素を含むトランザクション
Insert
Update
Delete
例16-1は、指定した名前空間URLで、CSWという名前のCSWサーバーの機能を取得するリクエストです。このリクエストでは、機能のドキュメント(16.2.1項を参照)が戻されます。
例16-1 GetCapabilitiesリクエスト
<csw:GetCapabilities service="CSW" xmlns:csw="http://www.opengis.net/cat/csw" xmlns:ows="http://www.opengis.net/ows">
<ows:AcceptVersions>
<ows:Version>2.0.0</ows:Version>
</ows:AcceptVersions>
<ows:AcceptFormats>
<ows:OutputFormat>text/xml</ows:OutputFormat>
</ows:AcceptFormats>
</csw:GetCapabilities>
例16-2は、例16-1のリクエストに対するレスポンスからの抜粋です。
例16-2 GetCapabilitiesのレスポンス
<Capabilities xmlns="http://www.opengis.net/cat/csw" version="2.0.0" updateSequence="0" xmlns:ows="http://www.opengis.net/ows" xmlns:ogc="http://www.opengis.net/ogc" xmlns:csw="http://www.opengis.net/cat/csw" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ns0="http://www.opengis.net/cat/csw" xmlns:ns1="http://www.opengis.net/cat/csw">
<ows:ServiceIdentification xmlns:ows="http://www.opengis.net/ows">
<ows:ServiceType>CSW</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion>
<ows:Title>Company CSW</ows:Title>
<ows:Abstract>
A catalogue service that conforms to the HTTP protocol
binding of the OpenGIS Catalogue Service specification
version 2.0.0.
</ows:Abstract>
<ows:Keywords>
<ows:Keyword>CSW</ows:Keyword>
<ows:Keyword>Company Name</ows:Keyword>
<ows:Keyword>geospatial</ows:Keyword>
<ows:Keyword>catalogue</ows:Keyword>
</ows:Keywords>
<ows:Fees>NONE</ows:Fees>
<ows:AccessConstraints>NONE</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider xmlns:ows="http://www.opengis.net/ows">
<ows:ProviderName>Company Name</ows:ProviderName>
<ows:ProviderSite ans1:href="http://www.oracle.com" xmlns:ans1="http://www.w3.org/1999/xlink"/>
<ows:ServiceContact>
<ows:IndividualName> Contact Person Name</ows:IndividualName>
<ows:PositionName>Staff</ows:PositionName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice>999-999-9999</ows:Voice>
<ows:Facsimile>999-999-9999</ows:Facsimile>
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint>1 Street Name</ows:DeliveryPoint>
<ows:City>CityName</ows:City>
<ows:AdministrativeArea>StateName</ows:AdministrativeArea>
<ows:PostalCode>09999</ows:PostalCode>
<ows:Country>USA</ows:Country>
<ows:ElectronicMailAddress>
contact.person@example.com
</ows:ElectronicMailAddress>
</ows:Address>
<ows:OnlineResource ans1:href="mailto:contact.person@example.com" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:ContactInfo>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata xmlns:ows="http://www.opengis.net/ows">
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/cswservlet" xmlns:ans1="http://www.w3.org/1999/xlink"/>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeRecord">
<ows:DCP>
<ows:HTTP>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="typeName"><ows:Value>ns0:SampleRecord</ows:Value><ows:Value>ns1:Record</ows:Value></ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>text/xml</ows:Value>
</ows:Parameter>
<ows:Parameter name="schemaLanguage">
<ows:Value>XMLSCHEMA</ows:Value>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetRecords">
<ows:DCP>
<ows:HTTP>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="TypeName"><ows:Value>ns0:SampleRecord</ows:Value><ows:Value>ns1:Record</ows:Value></ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>text/xml </ows:Value>
</ows:Parameter>
<ows:Parameter name="outputSchema">
<ows:Value>OGCCORE</ows:Value>
</ows:Parameter>
<ows:Parameter name="resultType">
<ows:Value>hits</ows:Value>
<ows:Value>results</ows:Value>
<ows:Value>validate</ows:Value>
</ows:Parameter>
<ows:Parameter name="ElementSetName">
<ows:Value>brief</ows:Value>
<ows:Value>summary</ows:Value>
<ows:Value>full</ows:Value>
</ows:Parameter>
<ows:Parameter name="CONSTRAINTLANGUAGE">
<ows:Value>Filter</ows:Value>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetRecordById">
<ows:DCP>
<ows:HTTP>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="ElementSetName">
<ows:Value>brief</ows:Value>
<ows:Value>summary</ows:Value>
<ows:Value>full</ows:Value>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="GetDomain">
<ows:DCP>
<ows:HTTP>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="ParameterName">
<ows:Value>GetRecords.resultType</ows:Value>
<ows:Value>GetRecords.outputFormat</ows:Value>
<ows:Value>GetRecords.outputRecType</ows:Value>
<ows:Value>GetRecords.typeNames</ows:Value>
<ows:Value>GetRecords.ElementSetName</ows:Value>
<ows:Value>GetRecords.ElementName</ows:Value>
<ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>
<ows:Value>GetRecordById.ElementSetName</ows:Value>
<ows:Value>DescribeRecord.typeName</ows:Value>
<ows:Value>DescribeRecord.schemaLanguage</ows:Value>
</ows:Parameter>
</ows:Operation>
<ows:Operation name="Transaction">
<ows:DCP>
<ows:HTTP>
<ows:Post ans1:href="http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort" xmlns:ans1="http://www.w3.org/1999/xlink"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Parameter name="service">
<ows:Value>CSW</ows:Value>
</ows:Parameter>
<ows:Parameter name="version">
<ows:Value>2.0.0</ows:Value>
</ows:Parameter>
<ows:ExtendedCapabilities>
<ogc:Filter_Capabilities xmlns:ogc="http://www.opengis.net/ogc">
<ogc:Spatial_Capabilities>
<ogc:Spatial_Operators>
<ogc:BBOX/>
<ogc:Equals/>
<ogc:Disjoint/>
<ogc:Intersect/>
<ogc:Touches/>
<ogc:Crosses/>
<ogc:Within/>
<ogc:Contains/>
<ogc:Overlaps/>
<ogc:Beyond/>
<ogc:DWithin/>
</ogc:Spatial_Operators>
</ogc:Spatial_Capabilities>
<ogc:Scalar_Capabilities>
<ogc:Logical_Operators/>
<ogc:Comparison_Operators>
<ogc:Simple_Comparisons/>
<ogc:Like/>
<ogc:Between/>
<ogc:NullCheck/>
</ogc:Comparison_Operators>
<ogc:Arithmetic_Operators>
<ogc:Simple_Arithmetic/>
</ogc:Arithmetic_Operators>
</ogc:Scalar_Capabilities>
</ogc:Filter_Capabilities>
</ows:ExtendedCapabilities>
</ows:OperationsMetadata>
</Capabilities>
例16-3は、指定した名前空間に対して、Recordというタイプ名のレコードを記述するリクエストです。
例16-3 DescribeRecordリクエスト
<csw:DescribeRecord service="CSW" version="2.0.0" xmlns:csw="http://www.opengis.net/cat/csw" > <csw:TypeName targetNamespace="http://www.opengis.net/cat/csw">Record</csw:TypeName> </csw:DescribeRecord>
例16-4は、例16-3のリクエストに対するレスポンスです。レスポンスはXMLスキーマ定義(XSD)です。各要素の説明は、レスポンス内の各<documentation>要素に含まれるコメントを参照してください。
例16-4 DescribeRecordのレスポンス
<xsd:schema targetNamespace="http://www.opengis.net/cat/csw" elementFormDefault="qualified" version="2.0.0" id="csw-record" xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:appinfo>
<dc:identifier xmlns:dc="http://www.purl.org/dc/elements/1.1/">
http://schemas.opengis.net/csw/2.0.0/record
</dc:identifier>
</xsd:appinfo>
<xsd:documentation xml:lang="en">
This schema defines the basic record types that are common to all CSW
implementations. An application profile may extend AbstractRecordType to
represent model-specific content.
</xsd:documentation>
</xsd:annotation>
<xsd:import namespace="http://www.purl.org/dc/terms/" schemaLocation="./recdcterms.xsd"/>
<xsd:import namespace="http://www.purl.org/dc/elements/1.1/" schemaLocation="./recdcmes.xsd"/>
<xsd:import namespace="http://www.opengis.net/ows" schemaLocation="./owsboundingbox.xsd"/>
<xsd:element name="AbstractRecord" type="csw:AbstractRecordType" abstract="true" id="AbstractRecord"/>
<xsd:complexType name="AbstractRecordType" abstract="true" id="AbstractRecordType"/>
<xsd:element name="DCMIRecord" type="csw:DCMIRecordType" substitutionGroup="csw:AbstractRecord"/>
<xsd:complexType name="DCMIRecordType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This type encapsulates all of the standard DCMI metadata terms,
including the Dublin Core refinements; these terms may be mapped to the
profile-specific information model.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="csw:AbstractRecordType">
<xsd:sequence>
<xsd:group ref="dct:DCMI-terms"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="BriefRecord" type="csw:BriefRecordType" substitutionGroup="csw:AbstractRecord"/>
<xsd:complexType name="BriefRecordType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This type defines a brief representation of the common record format.
It extends AbstractRecordType to include only the dc:identifier and
dc:type properties.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="csw:AbstractRecordType">
<xsd:sequence>
<xsd:element ref="dc:identifier"/>
<xsd:element ref="dc:type" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="SummaryRecord" type="csw:SummaryRecordType" substitutionGroup="csw:AbstractRecord"/>
<xsd:complexType name="SummaryRecordType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This type defines a summary representation of the common record format.
It extends AbstractRecordType to include the core properties.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="csw:AbstractRecordType">
<xsd:sequence>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="dc:identifier"/>
<xsd:element ref="dc:type"/>
<xsd:element ref="dc:title"/>
<xsd:element ref="dc:subject"/>
<xsd:element ref="dc:format"/>
<xsd:element ref="dc:relation"/>
<xsd:element ref="dct:modified"/>
<xsd:element ref="dct:abstract"/>
<xsd:element ref="dct:spatial"/>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="Record" type="csw:RecordType" substitutionGroup="csw:AbstractRecord"/>
<xsd:complexType name="RecordType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
This type extends DCMIRecordType to add ows:BoundingBox; it may be used
to specify a bounding envelope for the catalogued resource.
</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="csw:DCMIRecordType">
<xsd:sequence>
<xsd:element ref="ows:BoundingBox" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
例16-5は、contributorがRajaであるレコードを取得するリクエストです。
|
注意: Oracle Databaseリリース11.1のSpatial Catalog Serviceでは、GetRecordsリクエストの同期処理のみサポートされます。 |
例16-5 GetRecordsリクエスト
<?xml version="1.0" ?>
<csw:GetRecords
service="CSW"
version="2.0.0"
xmlns:csw="http://www.opengis.net/cat/csw"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:dc="http://www.purl.org/dc/elements/1.1/"
xmlns:dct="http://www.purl.org/dc/terms/"
outputFormat="text/xml"
resultType="results"
outputSchema="csw:Record">
<csw:Query typeNames="csw:Record">
<csw:ElementName>/csw:Record/dc:identifier</csw:ElementName>
<csw:ElementName>/csw:Record/dc:contributor</csw:ElementName>
<csw:Constraint version="2.0.0" >
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/csw:Record/dc:contributor</ogc:PropertyName>
<ogc:Literal>Raja</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</csw:Constraint>
</csw:Query>
</csw:GetRecords>
例16-6は、例16-5のリクエストに対するレスポンスです。
例16-6 GetRecordsのレスポンス
<csw:GetRecordsResponse xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/" xsi:schemaLocation="http://www.opengis.net/cat/csw http://localhost:8888/SpatialWS-SpatialWS-context-root/cswservlet?recordTypeId=1 " version="2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<csw:RequestId>4</csw:RequestId>
<csw:SearchStatus status="complete"/>
<csw:SearchResults recordSchema="http://www.opengis.net/cat/csw" numberOfRecordsMatched="1" numberOfRecordsReturned="1" nextRecord="0" expires="2007-02-09T16:32:35.29Z">
<csw:Record xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:ows="http://www.opengis.net/ows" xmlns:dct="http://www.purl.org/dc/terms/">
<dc:contributor xmlns:dc="http://www.purl.org/dc/elements/1.1/" scheme="http://www.example.com">Raja</dc:contributor>
<dc:identifier xmlns:dc="http://www.purl.org/dc/elements/1.1/">REC-1</dc:identifier>
</csw:Record>
</csw:SearchResults>
</csw:GetRecordsResponse>
例16-7は、レコード・タイプに関連するドメイン情報を取得するリクエストです。
例16-7 GetDomainリクエスト
<csw:GetDomain service="CSW" version="2.0.0" xmlns:csw="http://www.opengis.net/cat/csw" > <csw:ParameterName>GetRecords.resultType</csw:ParameterName> </csw:GetDomain>
例16-8は、例16-7のリクエストに対するレスポンスです。
例16-8 GetDomainのレスポンス
<csw:GetDomainResponse xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/">
<csw:DomainValues type="csw:SampleRecord">
<csw:ParameterName>GetRecords.resultType</csw:ParameterName>
<csw:ListOfValues>
<csw:Value>hits</csw:Value>
<csw:Value>results</csw:Value>
<csw:Value>validate</csw:Value>
</csw:ListOfValues>
</csw:DomainValues>
<csw:DomainValues type="csw:Record">
<csw:ParameterName>GetRecords.resultType</csw:ParameterName>
<csw:ListOfValues>
<csw:Value>hits</csw:Value>
<csw:Value>results</csw:Value>
<csw:Value>validate</csw:Value>
</csw:ListOfValues>
</csw:DomainValues>
</csw:GetDomainResponse>
例16-9は、レコードIDの値がREC-1のレコードを取得するリクエストです。
例16-9 GetRecordByIdリクエスト
<?xml version="1.0" ?> <csw:GetRecordById service="CSW" version="2.0.0" xmlns:csw="http://www.opengis.net/cat/csw" xmlns:ogc="http://www.opengis.net/ogc" > <csw:Id> REC-1 </csw:Id> <csw:ElementSetName>brief</csw:ElementSetName> </csw:GetRecordById>
例16-10は、例16-9のリクエストに対するレスポンスです。
例16-10 GetRecordByIdのレスポンス
<csw:GetRecordByIdResponse xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/" xsi:schemaLocation="http://www.opengis.net/cat/csw http://localhost:8888/SpatialWS-SpatialWS-context-root/cswservlet?recordTypeId=2 http://www.opengis.net/cat/csw http://localhost:8888/SpatialWS-SpatialWS-context-root/cswservlet?recordTypeId=1 " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<csw:BriefRecord xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:ows="http://www.opengis.net/ows" xmlns:dct="http://www.purl.org/dc/terms/">
<dc:identifier xmlns:dc="http://www.purl.org/dc/elements/1.1/">REC-1</dc:identifier>
</csw:BriefRecord>
</csw:GetRecordByIdResponse>
例16-11は、contributorがJohnのレコードを挿入するリクエストです。このレコードのID値はREC-2で、指定した境界ボックス(左下および右上の座標で定義される最適化された四角形)の空間属性が含まれます。
例16-11 Insertリクエスト
<csw:Transaction service="CSW"
version="2.0.0"
xmlns:csw="http://www.opengis.net/cat/csw" >
<csw:Insert>
<Record xmlns="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" >
<dc:contributor scheme="http://www.example.com">John</dc:contributor>
<dc:identifier >REC-2</dc:identifier>
<ows:WGS84BoundingBox crs="urn:opengis:crs:OGC:2:84" dimensions="2">
<ows:LowerCorner>12 12</ows:LowerCorner>
<ows:UpperCorner>102 102</ows:UpperCorner>
</ows:WGS84BoundingBox>
</Record>
</csw:Insert>
</csw:Transaction>
例16-12は、例16-11のリクエストに対するレスポンスです。
例16-12 Insertのレスポンス
<csw:TransactionResponse xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/" xsi:schemaLocation="http://www.opengis.net/cat/csw http://localhost:8888/SpatialWS-SpatialWS-context-root/cswservlet?recordTypeId=1 " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<csw:TransactionSummary>
<csw:totalInserted>1</csw:totalInserted>
</csw:TransactionSummary>
</csw:TransactionResponse>
例16-13は、現行のcontributor値がJohnであるレコードのcontributor値をJaneに更新するリクエストです(つまり、値をJohnからJaneに変更します)。
例16-13 Updateリクエスト
<csw:Transaction service="CSW"
version="2.0.0"
xmlns:csw="http://www.opengis.net/cat/csw"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:dc="http://www.purl.org/dc/elements/1.1/">
<csw:Update>
<csw:RecordProperty>
<csw:Name>/csw:Record/dc:contributor</csw:Name>
<csw:Value>Jane</csw:Value>
</csw:RecordProperty>
<csw:Constraint version="2.0.0">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/csw:Record/dc:contributor</ogc:PropertyName>
<ogc:Literal>John</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</csw:Constraint>
</csw:Update>
</csw:Transaction>
例16-14は、例16-13のリクエストに対するレスポンスです。
例16-14 Updateのレスポンス
<csw:TransactionResponse xmlns:csw="http://www.opengis.net/cat/csw" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:dct="http://www.purl.org/dc/terms/">
<csw:TransactionSummary>
<csw:totalUpdated>1</csw:totalUpdated>
</csw:TransactionSummary>
</csw:TransactionResponse>
例16-15は、contributor値がJaneであるレコードを削除するリクエストです。
例16-15 Deleteリクエスト
<csw:Transaction service="CSW"
version="2.0.0"
xmlns:csw="http://www.opengis.net/cat/csw"
xmlns:dc="http://www.purl.org/dc/elements/1.1/"
xmlns:ogc="http://www.opengis.net/ogc">
<csw:Delete typeName="csw:Record">
<csw:Constraint version="2.0.0">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>/csw:Record/dc:contributor</ogc:PropertyName>
<ogc:Literal>Jane</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</csw:Constraint>
</csw:Delete>
</csw:Transaction>
SDO_CSW_PROCESSパッケージに含まれるPL/SQL APIに加え、Java APIを使用してレコード・タイプのパブリッシュおよび削除を行ったり、レコード・タイプおよびCSWメタデータ表へのアクセス権限の付与および取消しを行うことができます。
この項では、oracle.spatial.csw.CSWAdminクラスに含まれる各メソッドについての基本的な参照情報を説明します。ここでは、メソッドをアルファベット順に記載しています。
createXMLTableIndexメソッドは、レコード・タイプのインスタンスにSYS.XMLTABLEINDEX索引を作成するメソッドです。このメソッドの書式は次のとおりです。
public static void createXMLTableIndex(
OracleConnection conn,
String typeNS,
String typeName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
deleteDomainInfoメソッドは、レコード・タイプに関連するドメイン情報を削除するメソッドです。このメソッドの書式は次のとおりです。
public static void deleteDomainInfo(
OracleConnection conn,
int recordTypeId,
String parameterName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
recordTypeIdは、レコード・タイプのIDです。
parameterNameは、削除するドメイン・パラメータの名前です。
deleteRecordViewMapメソッドは、レコード・ビューの変換に関連する情報を削除するメソッドです。このメソッドの書式は次のとおりです。
public static void deleteRecordViewMap(
OracleConnection conn,
String recordTypeNS,
String viewSrcName,
String targetTypeName,
String mapType) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
recordTypeNSは、レコード・タイプの名前空間のURLです。
viewSrcNameは、ソース・レコード・タイプの名前です。
targetTypeNameは、変換先レコード・タイプの名前です。
mapTypeは、マップ・タイプ(brief、summaryなど)です。
disableVersioningメソッドは、レコード・タイプのバージョニングを無効にするメソッドです。このメソッドの書式は次のとおりです。
public static void disableVersioning(
OracleConnection conn,
String rtNSUrl,
String rtName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
rtNSUrlは、レコード・タイプの名前空間のURLです。
rtNameは、レコード・タイプの名前です。
dropRecordTypeメソッドは、CSWリポジトリからレコード・タイプを削除するメソッドです。このメソッドの書式は次のとおりです。
public static void dropRecordType(
OracleConnection conn,
String rtNSUrl,
String rtName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
rtNSUrlは、レコード・タイプの名前空間のURLです。
rtNameは、レコード・タイプの名前です。
dropXMLTableIndexメソッドは、レコード・タイプのインスタンスに対して作成されたSYS.XMLTABLEINDEX型の索引を削除するメソッドです。このメソッドの書式は次のとおりです。
public static void dropXMLTableIndex(
OracleConnection conn,
String typeNS,
String typeName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
enableVersioningメソッドは、レコード・タイプのバージョニングを有効にするメソッドです。このメソッドの書式は次のとおりです。
public static void enableVersioning(
OracleConnection conn,
String rtNSUrl,
String rtName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
rtNSUrlは、レコード・タイプの名前空間のURLです。
rtNameは、レコード・タイプの名前です。
getIsXMLTableIndexCreatedメソッドは、レコード・タイプにSYS.XMLTABLEINDEX型の索引が作成されている場合はブール値TRUEを戻し、そのような索引が作成されていない場合はブール値FALSEを戻すメソッドです。このメソッドの書式は次のとおりです。
public static boolean getIsXMLTableIndexCreated(
OracleConnection conn,
String typeNS,
String typeName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
getRecordTypeIdメソッドは、指定した名前空間とレコード・タイプの組合せのレコード・タイプIDを戻すメソッドです。このメソッドの書式は次のとおりです。
public static boolean getIRecordTypeId(
OracleConnection conn,
String typeNamespace,
String typeName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNamespaceは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
grantMDAccessToUserメソッドは、CSWメタデータへのアクセス権限をデータベース・ユーザーに付与するメソッドです。このメソッドの書式は次のとおりです。
public static void grantMDAccessToUser(
OracleConnection conn,
String usrName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
usrNameは、データベース・ユーザーの名前です。
grantRecordTypeToUserメソッドは、レコード・タイプへのアクセス権限をデータベース・ユーザーに付与するメソッドです。このメソッドの書式は次のとおりです。
public static void grantRecordTypeToUser(
OracleConnection conn,
String typeNS,
String typeName,
String usrName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
usrNameは、データベース・ユーザーの名前です。
publishRecordTypeメソッドは、レコード・タイプをパブリッシュするメソッドです。つまり、このメソッドによって、レコード・タイプに関連するメタデータが登録されます。このメソッドの書式は次のとおりです。
public static void publishRecordType(OracleConnection conn,
XMLType recordTypeMD) throws SQLException , CSWException;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType,
ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias) throws SQLException ;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType,
ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias,
String rtXSDRefId,
boolean genSpatialIndex,
boolean setDomainInfo,
Hashtable<String, ArrayList<String>> domainInfo,
boolean setRecordViewMap,
ArrayList<ArrayList<Object>> recordViewMap) throws SQLException ;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType,
ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias,
String rtXSDRefId,
boolean genSpatialIndex,
boolean setDomainInfo,
Hashtable<String, ArrayList<String>> domainInfo,
boolean setRecordViewMap,
ArrayList<ArrayList<Object>> recordViewMap,
ArrayList<PathInfo> numPaths,
ArrayList<PathInfo> idxPaths,
ArrayList<String[]> idxPathTypes,
boolean genXMLIndex) throws SQLException ;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType, ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias,
String rtXSDRefId,
boolean genSpatialIndex,
boolean setDomainInfo,
Hashtable<String, ArrayList<String>> domainInfo,
boolean setRecordViewMap,
ArrayList<ArrayList<Object>> recordViewMap,
ArrayList<PathInfo> numPaths,
ArrayList<PathInfo> idxPaths,
ArrayList<String[]> idxPathTypes,
boolean genXMLIndex,
boolean isGML3) throws SQLException ;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType,
ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias,
String rtXSDRefId,
boolean genSpatialIndex,
boolean setDomainInfo,
Hashtable<String, ArrayList<String>> domainInfo,
boolean setRecordViewMap,
ArrayList<ArrayList<Object>> recordViewMap,
ArrayList<PathInfo> numPaths,
ArrayList<PathInfo> idxPaths,
ArrayList<String[]> idxPathTypes,
boolean genXMLIndex,
boolean isGML3,
CollectionPathInfo collPathInfo) throws SQLException;
public static void publishRecordType(OracleConnection conn,
String typeNS,
String typeName,
ArrayList<String> idPaths,
ArrayList<PathInfo> spatialPaths,
ArrayList<PathInfo> tsPaths,
XMLType schemaDoc,
XMLType briefXSLPattern,
XMLType summaryXSLPattern,
XMLType dcmiXSLPattern,
ArrayList<String> srsPaths,
String idExtractorType,
ArrayList<GeomMetaInfo> sdoMetaInfo,
String srsNS, String srsNSAlias,
String rtXSDRefId,
boolean genSpatialIndex,
boolean setDomainInfo,
Hashtable<String, ArrayList<String>> domainInfo,
boolean setRecordViewMap,
ArrayList<ArrayList<Object>> recordViewMap,
ArrayList<PathInfo> numPaths,
ArrayList<PathInfo> idxPaths,
ArrayList<String[]> idxPathTypes,
boolean genXMLIndex,
boolean isGML3,
CollectionPathInfo collPathInfo,
boolean hasMultipleSRSNS) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
recordTypeMDは、レコード・タイプ登録メタデータです。このメタデータは、wstype_md.xsdファイルに指定されたrecordTypeMd要素定義に準拠している必要があります。レコード・タイプのパス登録メタデータのXMLの例は、rt_metadata1.xmlおよびrt_metadata2.xmlに用意されています。これらのファイルは、src/data/パスの下にあるws_client.jarデモ・ファイル(10.4項を参照)に含まれています。レコード・タイプをパブリッシュする例の使用方法は、Readme.txtファイルを参照してください。このファイルはsrc/パスの下にあるws_client.jarに含まれています。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
idPathsは、レコードIDパス要素のリストです。各要素はString型です。
spatialPathsは、レコード・タイプに含まれる空間パスのリストです。これは、oracle.spatial.ws.PathInfoクラス(16.4.12.1項を参照)のArrayListです。
tsPathsは、レコード・タイプに含まれる時間に関連したパスのリストです(date、dateTime、gYear、gMonth、gDay、gMonthDay、gYearMonthなど)。これは、oracle.spatial.ws.PathInfoクラス(16.4.12.1項を参照)のArrayListです。
schemaDocは、レコード・タイプのXMLスキーマ定義(XSD)です。
briefXSLPatternは、レコード構造の形式をfullからbriefに変換するためのXSLTマッピングです。
summaryXSLPatternは、レコード構造の形式をsummaryからbriefに変換するためのXSLTマッピングです。
dcmiXSLPatternは、レコード構造の形式をdcmiからbriefに変換するためのXSLTマッピングです。
srsPathsは、空間参照システム情報を表すパスのリストです。
idExtractorTypeは、識別子の抽出方法(XPATH、USER_FUNCまたはNONE)に関する情報です。XPATHは、idPathsパラメータに指定したXPathを使用してレコード識別子が抽出されることを表します。USER_FUNCは、idPathsパラメータに指定したユーザー定義のファンクションが起動されることで、レコード・ドキュメント・インスタンス全体がそのファンクションに渡されてレコード識別子が抽出されることを表します。NONEは、レコード識別子がシステムによって生成されることを表します。
sdoMetaInfoは、空間パスの空間メタデータ情報です。これは、oracle.spatial.ws.GeomMetaInfoクラス(16.4.12.1項を参照)のArrayListです。
srsNSは、空間パス内のデータと関連付けられた空間参照システム(座標系)のユーザー定義の名前空間です。
srsNSAliasは、空間パス内のデータと関連付けられた空間参照システム(座標系)の名前空間の別名です。
rtXSDRefIdは、1つのXSDファイル内に複数のレコード・タイプが定義されている場合は、グループ・レコード・タイプのXMLスキーマ定義ファイル名(文字列)です。このパラメータは、グループXSD定義をCSWメタデータ内に格納する際に使用されると、その後、グループ・レコード・タイプXSDファイル内にスキーマが定義されている複数のレコード・タイプから参照されます。
genSpatialIndexは、ブール値です。TRUEの場合は、タイプの作成時に空間索引がレコード・タイプ上に作成されます。FALSEの場合、空間索引は作成されません。
setDomainInfoは、ブール値です。TRUEの場合は、このレコード・タイプのドメイン情報がタイプの作成時に設定されます。FALSEの場合、このレコード・タイプのドメイン情報は設定されません。
domainInfoは、ドメイン情報です。
setRecordViewMapは、ブール値です。TRUEの場合は、レコード・ビューの変換マップがタイプの作成時に設定されます。FALSEの場合、レコード・ビューの変換マップは設定されません。
recordViewMapは、レコード・ビューの変換マップ情報(briefからfull、summaryからfull、およびdcmiからfull)です。これはArrayList<ArrayList<Object>>型で、各ArrayList<Object>には、Object[0] = (String) recordTypeNS、Object[1] = (String) viewSrcName、Object[2] = (String) targetTypeName、Object[3]= (oracle.xdb.XMLType) mapInfo、Object[4] = (String) mapTypeが含まれます。
numPathsは、レコード・タイプに含まれる数値(NUMBER、INTEGERなど)に関連するパスのリストです。これは、oracle.spatial.ws.PathInfoクラス(16.4.12.1項を参照)のArrayListです。
idxPathsは、索引パスのリストです。 これは、SYS.XMLTABLEINDEX型の索引の作成時に、索引が作成されるパスのリストです。これは、oracle.spatial.ws.PathInfoクラス(16.4.12.1項を参照)のArrayListです。
idxPathTypesは、各索引パスの情報を指定します。このパスには、string[3]の次の各要素が含まれます。string[0]にはタイプ名、string[1]にはタイプの形式(長さのタイプなど)、string[2]には、Bツリー索引と一意索引のいずれかを作成するか、または索引の作成を行わないかの指定(CSWAdmin.BTREE、CSWAdmin.UNIQUEまたはNULL)が含まれます。
genXMLIndexは、ブール値です。TRUEの場合は、SYS.XMLTABLEINDEX型の索引がドキュメントベース・レコード・タイプ上に作成されます。FALSEの場合は、SYS.XMLTABLEINDEX型の索引はドキュメントベース・レコード・タイプ上に作成されません。現時点で索引を作成しないことを選択する場合でも、createXMLTableIndexメソッド(16.4.1項を参照)を使用して後から作成できます。
isGML3は、ブール値です。TRUEは、このレコード・タイプのインスタンスに含まれるジオメトリがGML3.1.1に準拠していることを表します。FALSEは、このレコード・タイプのインスタンス内のジオメトリがGML 2.1.2に準拠していることを表します。
collPathInfoは、空間コレクションのパス情報です。
hasMultipleSRSNSは、ブール値です。TRUEは、このレコード・タイプから複数のユーザー定義の空間参照システムの名前空間が参照されることを表します。FALSEは、このレコード・タイプから複数のユーザー定義の空間参照システムの名前空間は参照されないことを表します。
この項では、publishRecordTypeメソッドのパラメータ定義で使用されるいくつかのクラスについて説明します。
oracle.spatial.ws.PathElementはPathElement名前空間およびPathElement名の2つのStringオブジェクトを含むJavaクラスです。このクラスには、getValue()メソッドが含まれ、このメソッドからは文字列形式のPathElementオブジェクトが戻されます。このクラスの書式は次のとおりです。
public class PathElement {
// Set namespace and name information for a PathElement.
public void set(String ns, String name);
//Get a string value for the PathElement object.
public String getValue() ;
}
oracle.spatial.ws.Pathは、パスを構成する順序付けされたPathElementオブジェクトのリストを含むJavaクラスです。たとえば、XPathがmyns:A/myns:Bである場合、myns:Aおよびmyns:BがPathElementオブジェクトということになります。このクラスには、getValue()メソッドが含まれ、このメソッドからは文字列形式のPathオブジェクトが戻されます。このクラスの書式は次のとおりです。
public class Path {
//Add a PathElement.
public void add(PathElement p) ;
//Get a string Value for the Path object.
public String getValue() ;
}
oracle.spatial.ws.PathInfoは、パスの関連付けおよびメタデータの情報など、パスまたはパスのリストに関する情報を含むコンテナ・クラスです。このクラスの書式は次のとおりです。
public class PathInfo {
// Set number of occurrences for the Path. Default value is 1. Number of
// occurrences > 1 in case of arrays.
public void setNumOfOccurrences(int i) ;
// Get number of occurrences for the Path.
public int getNumOfOccurrences();
// Add a path, in case PathInfo has multiple paths associated via a
// choice association
public void addPath(Path p) ;
// Add path type information. This is relevant for time-related Paths
// (for example, date, dateTime, gDay, gMonth, gYear, gMonthDay,
// gYearMonth, duration, or time).
public void addPathType(String t) ;
// Add a PathInfo type. This can be PathInfo.CHOICE or
// PathInfo.DEFAULT or PathInfo.COLLECTION.
// PathInfo.CHOICE - means that the list of paths in this PathInfo are
// related to each other via choice association. For example, we may have
// a list of Spatial Paths, which are associated with one another via choice.
// So, only one of these path can occur in a feature instance/document.
// PathInfo.COLLECTION - means the list of paths in this PathInfo are part
// of a collection (currently spatial collections are
// supported) which will be indexed.
// Default value is PathInfo.DEFAULT for one Path or a finite array Paths.
// @param t PathInfo type information. PathInfo.CHOICE or
// PathInfo.DEFAULT or PathInfo.COLLECTION
public void addPathInfoType(int t) ;
// Returns a string representation for PathInfo content.
public String getPathContent() ;
// Returns Path type information (for example, date, dateTime, gDay, gMonth,
// gYear, gMonthDay, gYearMonth, duration, or time).
public String getPathType() ;
// Returns a string representation for PathInfo path content.
// param i The index of the path in the PathInfo whose path content needs to
// be returned
// @return a string representation for PathInfo path content
public String getCollectionPathContent(int i);
// Returns number of paths in the PathInfo.
// @return number of paths in the PathInfo which is of type PathInfo.COLLECTION
// if PathInfo is not of type PathInfo.COLLECTION returns -1
public int getCollectionPathContentSize();
}
oracle.spatial.ws.CollectionPathInfoは、PathInfoオブジェクトのコレクションに関する情報を含むコンテナ・クラスです。このコレクションに含まれる各PathInfoオブジェクトは、索引付けされて検索対象になる空間パスのグループを表します。このクラスは、フィーチャ・タイプおよびレコード・タイプ内のコレクションをベースにした空間コンテンツを参照するパスの登録に使用されます。このクラスの書式は次のとおりです。
public class CollectionPathInfo {
/**
* Add a PathInfo.
* @param p PathInfo to be added
* @param g geometry related metadata for PathInfo to be added
*/
public void addPathInfo(PathInfo p, GeomMetaInfo g) ;
/**
* Get a PathInfo.
* @param i index of the PathInfo to be retrieved
*/
public PathInfo getPathInfo(int i) ;
/**
* Get geometry related metadata for a certain PathInfo.
* @param i index of the PathInfo whose geomMetaInfo is to be retrieved
*/
public GeomMetaInfo getGeomMetaInfo(int i) ;
/**
* Get all PathInfo objects in this CollectionPathInfo.
*/
public ArrayList<PathInfo> getPathInfos() ;
}
oracle.spatial.ws.GeomMetaInfoは、レコード・タイプ内の空間パスに対応する次元関連の情報を含むクラスです。この情報には、次元名、下限および上限、許容差および座標系(SRID)が含まれます。このクラスの書式は次のとおりです。
public class GeomMetaInfo {
// Default constructor. Creates a GeomMetaInfo object with number of
// dimensions equal to 2.
public GeomMetaInfo() ;
// Creates a GeomMetaInfo object of a specified number of dimensions.
// Parameter numOfDimensions is the number of dimensions represented
// in the GeomMetaInfo object.
// Note: max number of dimensions supported is 4.
public GeomMetaInfo(int numOfDimensions) throws
ArrayIndexOutOfBoundsException ;
//Set Dimension Name.
// Parameter index represents the dimension index which needs to be set.
// Parameter val is dimension name value.
public void setDimName(int index, String val) throws
ArrayIndexOutOfBoundsException ;
// Set Dimension Lower Bound.
// Parameter index represents the dimension index which needs to be set.
// Parameter val is dimension lower bound value.
public void setLB(int index, double val) throws
ArrayIndexOutOfBoundsException ;
// Set Dimension Upper Bound
// Parameter index represents the dimension index which needs to be set.
// Parameter val is dimension upper bound value
public void setUB(int index, double val) throws
ArrayIndexOutOfBoundsException ;
// Set Dimension tolerance value.
// Parameter index represents the dimension index which needs to be set.
// Parameter val is dimension tolerance value.
public void setTolerance(int index, double val) throws
ArrayIndexOutOfBoundsException ;
// Set Coordinate Reference System Identifier
public void setSRID (int val) ;
// Get dimension Name.
// Parameter index represents the dimension index whose name needs to be
// returned. This method returns the dimension name for the given index.
public String getDimName(int index) throws
ArrayIndexOutOfBoundsException ;
// Get dimension lower bound.
// Parameter index represents the dimension index whose lower bound needs
// to be returned.
// This method returns the lower bound for the given index.
public double getLB(int index) throws ArrayIndexOutOfBoundsException ;
// Get dimension upper bound.
// Parameter index represents the dimension index whose upper bound needs
// to be returned.
// This method returns the upper bound for the given index.
public double getUB(int index) throws ArrayIndexOutOfBoundsException ;
// Get dimension tolerance.
// Parameter index represents the dimension index whose tolerance needs
// to be returned.
// This method returns the tolerance value for the given index.
public double getTolerance(int index) throws
ArrayIndexOutOfBoundsException ;
// Get coordinate system (spatial reference system) identifier.
public int getSRID () ;
// Get number of dimensions represented by this GeomMetaInfo object.
public int getNumOfDimensions() ;
// Sets the spatial index dimension parameter. By default it is 2.
// return Coordinate Reference System Identifier value
public int setSpatialIndexDimension(int d) ;
// Get the spatial index dimension parameter.
// return number of dimensions
public int getSpatialIndexDimension() ;
// Sets the user spatial srs namespace referred to by this GeomMetaInfo object.
// Needs to be specified if multiple srs namespace are referred to within
// the same feature or record type.
public void setSRSNS(String s) ;
// Gets the user defined spatial srs namespace referred to by
// this GeomMetaInfo object.
public String getSRSNS() ;
// Sets the user defined spatial srs namespace alias referred to
// by this GeomMetaInfo object.
public void setSRSNSAlias (String s) ;
// Gets the user defined spatial srs namespace alias
// referred to by this GeomMetaInfo object.
public String getSRSNSAlias () ;
}
registerTypePluginMapメソッドは、レコード・タイプの空間コンテンツの処理および抽出用プラグインを登録するメソッドです。このメソッドの書式は次のとおりです。
public static boolean registerTypePluginMap(
OracleConnection conn,
String typeNamespace,
String typeName,
String packageName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
packageNameは、プラグインで使用されるPL/SQLパッケージ・オブジェクトの名前です(scott.my_plugin_pkgなど)。
revokeMDAccessFromUserメソッドは、CSWメタデータへのアクセス権限をデータベース・ユーザーから取り消すメソッドです。このメソッドの書式は次のとおりです。
public static void revokeMDAccessFromUser(
OracleConnection conn,
String usrName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
usrNameは、データベース・ユーザーの名前です。
revokeRecordTypeFromUserメソッドは、レコード・タイプへのアクセス権限をデータベース・ユーザーから取り消すメソッドです。このメソッドの書式は次のとおりです。
public static void revokeRecordTypeFromUser(
OracleConnection conn,
String typeNS,
String typeName,
String usrName) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
typeNameは、レコード・タイプの名前です。
usrNameは、データベース・ユーザーの名前です。
setCapabilitiesInfoメソッドは、機能に関連する情報を移入するメソッドです。(機能のドキュメントについては、16.2.1項を参照してください。)このメソッドの書式は次のとおりです。
public static void setCapabilitiesInfo(OracleConnection conn, XMLType capabilitiesTemplate) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
capabilitiesTemplateは、カタログ・サービスの機能のテンプレートです。
setDomainInfoメソッドは、レコード・タイプに関連するドメイン情報を設定するメソッドです。このメソッドの書式は次のとおりです。
public static void setDomainInfo(OracleConnection conn, int recordTypeId, String propertyName, String parameterName, ArrayList<String> values) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
recordTypeIdは、レコード・タイプのIDです。
propertyNameは、ドメイン・プロパティの名前です。
parameterNameは、ドメイン・パラメータの名前です。
valuesは、ドメイン・パラメータの値を指定します。
setRecordViewMapメソッドは、レコード・ビューの変換(たとえば、BriefRecordからRecordなど)に関連する情報を移入するメソッドです。このメソッドの書式は次のとおりです。
public static void setRecordViewMap(OracleConnection conn, String recordTypeNS, String viewSrcName, String targetTypeName, oracle.xdb.XMLType mapInfo, String mapType) throws SQLException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
recordTypeNSは、レコード・タイプの名前空間のURLです。
viewSrcNameは、ソース・レコード・タイプの名前です。
targetTypeNameは、変換先レコード・タイプの名前です。
mapInfoは、マッピングのXSLT定義です。
mapTypeは、マップ・タイプ(brief、summaryなど)です。
setXMLTableIndexInfoメソッドは、索引を作成するオプションを使用してレコード・タイプのXMLTableIndex索引情報を更新します。このメソッドの書式は次のとおりです。
|
注意: XMLTableIndex索引がすでに存在する場合は、setXMLTableIndexInfoメソッドをコールする前に、(dropRecordTypeメソッドを使用して)索引を削除する必要があります。 |
public static void setXMLTableIndexInfo(OracleConnection conn, String typeNS, String ftName, ArrayList<PathInfo> idxPaths, ArrayList<String[]> idxPathTypes, boolean genXMLIndex) throws SQLException , CSWException;
connは、DBAロールが付与されたユーザー用のOracle Database接続です。
typeNSは、レコード・タイプの名前空間のURLです。
ftNameは、レコード・タイプの名前です。
idxPathsは、索引パスのリストです。これは、XMLTABLEINDEX型の索引の作成時に、索引が作成されるパスのリストです。これは、oracle.spatial.ws.PathInfoクラス(16.4.12.1項を参照)のArrayListです。
idxPathTypesは、各索引パスの情報を指定します。このパスには、string[3]の次の各要素が含まれます。string[0]にはタイプ名、string[1]にはタイプの形式(長さのタイプなど)、string[2]には、Bツリー索引と一意索引のいずれかを作成するか、または索引の作成を行わないかの指定(CSWAdmin.BTREE、CSWAdmin.UNIQUEまたはNULL)が含まれます。
genXMLIndexは、ブール値です。TRUEの場合は、SYS.XMLTABLEINDEX型の索引がレコード・タイプ上に作成されます。FALSEの場合は、SYS.XMLTABLEINDEX型の索引はレコード・タイプ上に作成されません。現時点で索引を作成しないことを選択する場合でも、createXMLTableIndexメソッド(16.4.1項を参照)を使用して後から作成できます。