E Catalog Services for the Web (CSW)のサポート[非推奨の実装]

このCatalog Services for the Webのサポートの実装は非推奨です。

ノート:

この実装の使用は推奨されません。かわりに、「Catalog Services for the Web (CSW)のサポート」に記載のCSWのサポートを使用してください。

この付録の内容は、この本の以前のバージョンでは章として掲載されており、現在非推奨となった実装の使用を続ける必要がある場合のためにのみここに掲載しています

この章では、OpenGISコンソーシアム仕様のカタログ・サービスであるOracle Spatial and Graph実装について説明します。この仕様によると、カタログ・サービスは、データ、サービスおよび関連する情報オブジェクトについての記述情報(メタデータ)の集合をパブリッシュおよび検索する機能をサポートしています。カタログ内のメタデータは、ユーザーとソフトウェアの両方によって評価したり、詳細な処理を行う目的で、問合せや配置が可能なリソース特性を示します。カタログ・サービスは、情報コミュニティ内に登録された情報リソースの検索およびバインドをサポートする必要があります。

ここでは、Oracle Spatial and Graph実装をCatalog Services for the Web (CSW)と呼びます。

ノート:

CSWを使用する前に、「空間Webサービスの概要」で説明されている概念を理解し、その章での説明に従って必要な構成作業を実行しておく必要があります。

以前のリリースの、1つ以上のSYS.XMLTABLEINDEX型の索引を使用して索引付けされたデータがある場合には、アップグレード後に索引をアップグレードして再作成する前に、関連する索引を削除する必要があります(「アップグレード前およびアップグレード後に行う索引のメンテナンス(WFSおよびCSW)」を参照)。

E.1 CSWエンジンおよびアーキテクチャ[非推奨の実装]

この章では、CSWについて、クライアントとの関係およびデータベース・サーバーとの関係も含めて説明します。CSWはWebサービスとして実装され、WebLogic Server環境にデプロイできます。

CSWにはメタデータ層があります。この層では、カタログ・リクエストへの応答で必要とされるメタデータがデータベースに格納されます。メタデータには空間列が含まれており、Oracle Spatial and Graphインタフェースを使用して空間列の問合せおよび処理が可能です。メタデータには、レコードの非空間属性と空間属性の関連付け、およびカタログ・サービスからクライアントに提供されるサービスも格納されます。

図18-1に、CSWのアーキテクチャを示します。

図E-1 CSWのアーキテクチャ

図E-1の説明が続きます
「図E-1 CSWのアーキテクチャ」の説明

次に、図18-1について説明します。

  • CSWは、中間層のコンテナの一部です。

  • CSWでは、SOAP/XML形式のCSWリクエストおよびレスポンスを使用して、Webサービス・クライアントと通信できます。

  • CSWでは、データベースに対するJDBCコールを介して空間データおよびメタデータへのアクセスが実行されます。

  • データベースには、CSWのメタデータおよびデータとともにOracle Spatial and Graphが含まれます。

CSWセキュリティは、セキュアなトランスポートを使用して実装されます。ユーザーIDおよびユーザー・ラベルはLDAPで管理され、中間層とCSWセキュリティを組み合せて認証が行われます。Oracleのラベルベースのセキュリティは、レコード・レベルでのユーザー権限の管理に使用されます。

E.2 CSW APIおよび構成[非推奨の実装]

CSWのAPIを使用すると、次のような操作を実行できます。

  • レコード・タイプ・ドメインおよびレコード・ビューの変換に関する情報の指定

  • レコード・タイプのパブリッシュ

  • レコード・タイプの削除(パブリッシュの解除)

  • CSWレコード・タイプに対する権限の付与および取消し

E.2.1 機能のドキュメント[非推奨の実装]

機能のドキュメントは、機能のインスタンスを記述したドキュメントです。このドキュメントには、レコード・タイプおよびサポートされる操作(挿入、削除など)のタイプが指定されます。

機能のドキュメントは、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は、アプリケーション・サーバーが実行されているシステムの名前です。

  • portは、アプリケーション・サーバーが実行されているポートの番号です。

  • SpatialWS-SpatialWS-context-rootは、Spatial and Graphの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ファイルにデフォルトで指定されます。

E.2.2 空間パス抽出ファンクション(extractSDO)[非推奨の実装]

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;

パラメータ

xmlData

空間パス情報を抽出する必要のあるレコード・インスタンスのデータを指定します。

srsNs

フィーチャ・タイプの空間データと関連付けられた空間参照システム(座標系)のユーザー定義の名前空間を指定します。この名前空間は(指定されている場合)、GetFeatureリクエストに対する回答として生成されるFeatureCollectionの<boundedBy>要素内のsrsName属性を生成するときにも使用されます。

spPathsSRSNSList

異なる空間パスに関連付けられたユーザー定義の空間参照システム名前空間が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に設定する必要があります。(パスの配列索引として将来使用するために予約されています。)

E.2.2.1 extractSDOファンクションの登録および登録解除[非推奨の実装]

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;
/

E.3 XMLのリクエストおよびレスポンス例[非推奨の実装]

この項では、次の各操作について、CSWエンジンへのレコード・リクエストの一部と、各リクエストに対するレスポンスを示します。

  • GetCapabilities

  • DescribeRecord

  • GetRecords

  • GetDomain

  • GetRecordById

  • 次のトランザクション・タイプを指定するサブ要素を含むトランザクション

    • Insert

    • Update

    • Delete

例E-1 GetCapabilitiesリクエスト

指定した名前空間URLで、CSWという名前のCSWサーバーの機能を取得するリクエストを次に示します。このリクエストでは、機能のドキュメントが戻されます。

<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>

例E-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>

例E-3 DescribeRecordリクエスト

指定した名前空間に対して、Recordというタイプ名のレコードを記述するリクエストを次に示します。

<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>

例E-4 DescribeRecordのレスポンス

前述のリクエストに対するレスポンスは、次のとおりです。レスポンスはXMLスキーマ定義(XSD)です。各要素の説明は、レスポンス内の各<documentation>要素に含まれるコメントを参照してください。

<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>

例E-5 GetRecordsリクエスト

contributorがRajaであるレコードを取得するリクエストを次に示します。

Spatial Catalog Serviceでは、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>

例E-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>

例E-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>

例E-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>

例E-9 GetRecordByIdリクエスト

レコードIDの値がREC-1のレコードを取得するリクエストを次に示します。

<?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>

例E-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>

例E-11 Insertリクエスト

contributorがJohnのレコードを挿入するリクエストを次に示します。このレコードのID値はREC-2で、指定した境界ボックス(左下および右上の座標で定義される最適化された四角形)の空間属性が含まれます。

<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>

例E-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>

例E-13 Updateリクエスト

現行のcontributor値がJohnであるレコードのcontributor値をJaneに更新する(つまり、値をJohnからJaneに変更する)リクエストを次に示します。

<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>

例E-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>

例E-15 Deleteリクエスト

contributor値がJaneであるレコードを削除するリクエストを次に示します。

<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>

例E-16 Deleteのレスポンス

前述のリクエストに対するレスポンスは、次のとおりです。

<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:totalDeleted>1</csw:totalDeleted>
   </csw:TransactionSummary>
</csw:TransactionResponse>

E.4 CSW管理のためのJava API[非推奨の実装]

SDO_CSW_PROCESSパッケージに含まれるPL/SQL APIに加え、Java APIを使用してレコード・タイプのパブリッシュおよび削除を行ったり、レコード・タイプおよびCSWメタデータ表へのアクセス権限の付与および取消しを行うことができます。

この項では、oracle.spatial.csw.CSWAdminクラスに含まれる各メソッドについての基本的な参照情報を説明します。ここでは、メソッドをアルファベット順に記載しています。

E.4.1 createXMLTableIndexメソッド

createXMLTableIndexメソッドは、レコード・タイプのインスタンスにXDB.XMLINDEX索引を作成するメソッドです。このメソッドの書式は次のとおりです。

public static void createXMLTableIndex(
    OracleConnection conn, 
    String typeNS, 
    String typeName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

E.4.2 deleteDomainInfoメソッド

deleteDomainInfoメソッドは、レコード・タイプに関連するドメイン情報を削除するメソッドです。このメソッドの書式は次のとおりです。

public static void deleteDomainInfo(
    OracleConnection conn, 
    int recordTypeId, 
    String parameterName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

recordTypeIdは、レコード・タイプのIDです。

parameterNameは、削除するドメイン・パラメータの名前です。

E.4.3 deleteRecordViewMapメソッド

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など)です。

E.4.4 disableVersioningメソッド

disableVersioningメソッドは、レコード・タイプのバージョニングを無効にするメソッドです。このメソッドの書式は次のとおりです。

public static void disableVersioning(
    OracleConnection conn, 
    String rtNSUrl, 
    String rtName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

rtNSUrlは、レコード・タイプの名前空間のURLです。

rtNameは、レコード・タイプの名前です。

E.4.5 dropRecordTypeメソッド

dropRecordTypeメソッドは、CSWリポジトリからレコード・タイプを削除するメソッドです。このメソッドの書式は次のとおりです。

public static void dropRecordType(
    OracleConnection conn, 
    String rtNSUrl, 
    String rtName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

rtNSUrlは、レコード・タイプの名前空間のURLです。

rtNameは、レコード・タイプの名前です。

E.4.6 dropXMLTableIndexメソッド

dropXMLTableIndexメソッドは、レコード・タイプのインスタンスに対して作成されたXDB.XMLINDEX型の索引を削除するメソッドです。このメソッドの書式は次のとおりです。

public static void dropXMLTableIndex(
    OracleConnection conn, 
    String typeNS, 
    String typeName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

E.4.7 enableVersioningメソッド

enableVersioningメソッドは、レコード・タイプのバージョニングを有効にするメソッドです。このメソッドの書式は次のとおりです。

public static void enableVersioning(
    OracleConnection conn, 
    String rtNSUrl, 
    String rtName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

rtNSUrlは、レコード・タイプの名前空間のURLです。

rtNameは、レコード・タイプの名前です。

E.4.8 getIsXMLTableIndexCreatedメソッド

getIsXMLTableIndexCreatedメソッドは、レコード・タイプにXDB.XMLINDEX型の索引が作成されている場合はブール値TRUEを戻し、そのような索引が作成されていない場合はブール値FALSEを戻すメソッドです。このメソッドの書式は次のとおりです。

public static boolean getIsXMLTableIndexCreated(
    OracleConnection conn, 
    String typeNS, 
    String typeName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

E.4.9 getRecordTypeIdメソッド

getRecordTypeIdメソッドは、指定した名前空間とレコード・タイプの組合せのレコード・タイプIDを戻すメソッドです。このメソッドの書式は次のとおりです。

public static boolean getIRecordTypeId(
    OracleConnection conn, 
    String typeNamespace, 
    String typeName) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNamespaceは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

E.4.10 grantMDAccessToUserメソッド

grantMDAccessToUserメソッドは、CSWメタデータへのアクセス権限をデータベース・ユーザーに付与するメソッドです。このメソッドの書式は次のとおりです。

public static void grantMDAccessToUser(
    OracleConnection conn, 
    String usrName)  throws SQLException;
 

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

usrNameは、データベース・ユーザーの名前です。

E.4.11 grantRecordTypeToUserメソッド

grantRecordTypeToUserメソッドは、レコード・タイプへのアクセス権限をデータベース・ユーザーに付与するメソッドです。このメソッドの書式は次のとおりです。

public static void grantRecordTypeToUser(
    OracleConnection conn, 
    String typeNS, 
    String typeName, 
    String usrName)  throws SQLException;
 

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

usrNameは、データベース・ユーザーの名前です。

E.4.12 publishRecordTypeメソッド

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.xmlrt_metadata2.xmlに用意されています。これらのファイルは、src/data/パスの下にあるws_client.jarデモ・ファイルに含まれています。レコード・タイプをパブリッシュする例の使用方法は、Readme.txtファイルを参照してください。このファイルは、src/パスの下にあるws_client.jarに含まれています。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

idPathsは、レコードIDパス要素のリストです。各要素はString型です。

spatialPathsは、レコード・タイプに含まれる空間パスのリストです。これは、oracle.spatial.ws.PathInfoクラス(「publishRecordTypeに関連するクラス」を参照)のArrayListです。

tsPathsは、レコード・タイプに含まれる時間に関連したパスのリストです(datedateTimegYeargMonthgDaygMonthDaygYearMonthなど)。これは、oracle.spatial.ws.PathInfoクラス(「publishRecordTypeに関連するクラス」を参照)のArrayListです。

schemaDocは、レコード・タイプのXMLスキーマ定義(XSD)です。

briefXSLPatternは、レコード構造の形式をfullからbriefに変換するためのXSLTマッピングです。

summaryXSLPatternは、レコード構造の形式をsummaryからbriefに変換するためのXSLTマッピングです。

dcmiXSLPatternは、レコード構造の形式をdcmiからbriefに変換するためのXSLTマッピングです。

srsPathsは、空間参照システム情報を表すパスのリストです。

idExtractorTypeは、識別子の抽出方法(XPATHUSER_FUNCまたはNONE)に関する情報です。XPATHは、idPathsパラメータに指定したXPathを使用してレコード識別子が抽出されることを表します。USER_FUNCは、idPathsパラメータに指定したユーザー定義のファンクションが起動されることで、レコード・ドキュメント・インスタンス全体がそのファンクションに渡されてレコード識別子が抽出されることを表します。NONEは、レコード識別子がシステムによって生成されることを表します。

sdoMetaInfoは、空間パスの空間メタデータ情報です。これは、oracle.spatial.ws.GeomMetaInfoクラス(「publishRecordTypeに関連するクラス」を参照)の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) recordTypeNSObject[1] = (String) viewSrcNameObject[2] = (String) targetTypeNameObject[3]= (oracle.xdb.XMLType) mapInfoObject[4] = (String) mapTypeが含まれます。

numPathsは、レコード・タイプに含まれる数値(NUMBER、INTEGERなど)に関連するパスのリストです。これは、oracle.spatial.ws.PathInfoクラス(「publishRecordTypeに関連するクラス」を参照)のArrayListです。

idxPathsは、索引パスのリストです。これは、XDB.XMLINDEX型の索引の作成時に、索引が作成されるパスのリストです。これは、oracle.spatial.ws.PathInfoクラス(「publishRecordTypeに関連するクラス」を参照)のArrayListです。

idxPathTypesは、各索引パスの情報を指定します。このパスには、string[3]の次の各要素が含まれます。string[0]にはタイプ名、string[1]にはタイプの形式(長さのタイプなど)、string[2]には、Bツリー索引と一意索引のいずれかを作成するか、または索引の作成を行わないかの指定(CSWAdmin.BTREECSWAdmin.UNIQUEまたはNULL)が含まれます。

genXMLIndexは、ブール値です。TRUEの場合は、XDB.XMLINDEX型の索引がドキュメントベース・レコード・タイプ上に作成されます。FALSEの場合は、XDB.XMLINDEX型の索引はドキュメントベース・レコード・タイプ上に作成されません。現時点で索引を作成しないことを選択する場合でも、createXMLTableIndexメソッド(「createXMLTableIndexメソッド」を参照)を使用して後から作成できます。

isGML3は、ブール値です。TRUEは、このレコード・タイプのインスタンスに含まれるジオメトリがGML3.1.1に準拠していることを表します。FALSEは、このレコード・タイプのインスタンス内のジオメトリがGML 2.1.2に準拠していることを表します。

collPathInfoは、空間コレクションのパス情報です。

hasMultipleSRSNSは、ブール値です。TRUEは、このレコード・タイプから複数のユーザー定義の空間参照システムの名前空間が参照されることを表します。FALSEは、このレコード・タイプから複数のユーザー定義の空間参照システムの名前空間は参照されないことを表します。

E.4.12.1 publishRecordTypeに関連するクラス

この項では、publishRecordTypeメソッドのパラメータ定義で使用されるいくつかのクラスについて説明します。

oracle.spatial.ws.PathElementPathElement名前空間および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:BPathElementオブジェクトということになります。このクラスには、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 () ;
}

E.4.13 registerTypePluginMapメソッド

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など)。

E.4.14 revokeMDAccessFromUserメソッド

revokeMDAccessFromUserメソッドは、CSWメタデータへのアクセス権限をデータベース・ユーザーから取り消すメソッドです。このメソッドの書式は次のとおりです。

public static void revokeMDAccessFromUser(
    OracleConnection conn, 
    String usrName)  throws SQLException;
 

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

usrNameは、データベース・ユーザーの名前です。

E.4.15 revokeRecordTypeFromUserメソッド

revokeRecordTypeFromUserメソッドは、レコード・タイプへのアクセス権限をデータベース・ユーザーから取り消すメソッドです。このメソッドの書式は次のとおりです。

public static void revokeRecordTypeFromUser(
    OracleConnection conn, 
    String typeNS, 
    String typeName, 
    String usrName)  throws SQLException;
 

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

typeNSは、レコード・タイプの名前空間のURLです。

typeNameは、レコード・タイプの名前です。

usrNameは、データベース・ユーザーの名前です。

E.4.16 setCapabilitiesInfoメソッド

setCapabilitiesInfoメソッドは、機能に関連する情報を移入するメソッドです。(機能のドキュメントについては、「機能のドキュメント」を参照してください。)このメソッドの書式は次のとおりです。

public static void setCapabilitiesInfo(OracleConnection conn,
   XMLType capabilitiesTemplate) throws SQLException;

connは、DBAロールが付与されたユーザー用のOracle Database接続です。

capabilitiesTemplateは、カタログ・サービスの機能のドキュメントです。

E.4.17 setDomainInfoメソッド

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は、ドメイン・パラメータの値を指定します。

E.4.18 setRecordViewMapメソッド

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など)です。

E.4.19 setXMLTableIndexInfoメソッド

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クラス(「publishRecordTypeに関連するクラス」を参照)のArrayListです。

idxPathTypesは、各索引パスの情報を指定します。このパスには、string[3]の次の各要素が含まれます。string[0]にはタイプ名、string[1]にはタイプの形式(長さのタイプなど)、string[2]には、Bツリー索引と一意索引のいずれかを作成するか、または索引の作成を行わないかの指定(CSWAdmin.BTREECSWAdmin.UNIQUEまたはNULL)が含まれます。

genXMLIndexは、ブール値です。TRUEの場合は、XDB.XMLINDEX型の索引がレコード・タイプ上に作成されます。FALSEの場合は、XDB.XMLINDEX型の索引はレコード・タイプ上に作成されません。現時点で索引を作成しないことを選択する場合でも、createXMLTableIndexメソッド(「createXMLTableIndexメソッド」を参照)を使用して後から作成できます。