ヘッダーをスキップ
Oracle® XML DB開発者ガイド
11gリリース2 (11.2)
B70200-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

29 ユーザー定義のリポジトリ・メタデータ

この章では、XMLデータと関連付けてOracle XML DBリポジトリに格納するXMLメタデータの作成と使用について説明します。

この章の内容は次のとおりです。

メタデータとXMLの概要

使用するデータが、コンテンツの一部ではない追加情報に関連付けられていることがよくあります。データを様々な方法で処理するには、この種のメタデータをデータのグループ化や分類に使用します。たとえば、多数の写真に対して、カラー合成、焦点長などの写真の特性や、場所、被写体の種類(風景か人物か)などの付随情報といったメタデータをそれぞれの写真に関連付けたい場合があります。

Oracle XML DBリポジトリのリソースは、メタデータとデータの両方を含むXML文書です。データは、要素Contentsのコンテンツです。リソース内の他のすべての要素にはメタデータが含まれます。リソースのデータはXMLでなくてもかまいません。

Oracle XML DBリポジトリを、ユーザーが定義したメタデータに関連付けることができます。こうしたユーザー定義のメタデータの他に、各リポジトリ・リソースにも、Oracle XML DBにより自動作成され、リソース管理に(透過的に)使用されている関連のメタデータがあります。こうしたシステム定義のメタデータには、各リソースの所有者や作成日などのプロパティが含まれています。

システム定義のメタデータを除き、リソース情報のいずれをデータ、いずれをメタデータとみなすかはユーザーの判断です。写真リソースの場合、写真に関する付随情報は通常、バイナリ・イメージである写真データの一部とはみなされません。しかしテキストの場合は、特定の情報をリソースのコンテンツ(データ)に含めるか、別扱いにして、メタデータとしてコンテンツに関連付けるかを選択できる場合があります。こうした選択は、多くの場合、データを使用または作成するアプリケーションに左右されます。

メタデータの種類 - 用語の用法

リソース・メタデータ(システム定義またはユーザー定義)の他に、「メタデータ」という語は次のものを指すことがあります。

  • XML Schemaは、XML文書のクラスを示すメタデータです。

  • XMLタグ(要素名または属性名)は、要素のコンテンツや属性値に名前を付けたり整理したりするのに使用されるメタデータです。

次のようにして、メタデータをリポジトリ・リソースのコンテンツであるXML文書に関連付けることができます。

  • メタデータ情報を含む追加のXML要素をリソースのコンテンツに追加することができます。たとえば、デジタル・イメージ・データを、写真に関する説明を要素として含むXML文書の中に入れることもできます。この場合、データとそのメタデータは、同じリソースのコンテンツであることによって関連付けられています。それらを分離したり、正しく関連させたりする処理はアプリケーションが担当します。

  • 特定のリソースのメタデータをリポジトリに、別のリソースのコンテンツとして追加することもできます。この場合、このリソースをメタデータとして処理し、データに関連付けるのはアプリケーションが担当します。

  • リソースのメタデータ情報を、リポジトリのリソース・メタデータとして追加できます。この場合、Oracle XML DBはメタデータをそのままの形で認識します。アプリケーションは、リポジトリに問い合せることによってこのメタデータを検出します。アプリケーションは、メタデータが存在するかどうかや、データとの関連付けについて独自に知っている必要はありません。

ユーザー定義のリソース・メタデータ

これらの様々なメタデータ処理の方法のうち、この章では、上で最後にあげた、ユーザー定義のリソース・メタデータについて説明します。こうしたメタデータは、それ自身XMLで表現されています。他のXMLデータに関連付けられたXMLデータであり、その説明や、補足情報、関連情報を提供します。

リソースのユーザー定義のメタデータはXML Schemaに基づいている場合も、そうでない場合もあります。

  • XML Schemaに基づくリソース・メタデータは別個の(オンラインでない)表に格納されます。これらはリソースOIDによってリソース表に関連付けられており、メタデータ表の非表示のオブジェクト列RESIDに格納されます。

  • XML Schemaに基づかないリソース・メタデータはリソース表のCLOB列に格納されます。

XML Schemaに基づくメタデータは、リソースに対して問合せやDML操作を効率的に実行する際に有効です。この章では、XML Schemaに基づくリソース・メタデータに関する次のタスクの実行方法を説明します。

  • 特定の種類のリソースに対してメタデータを定義するXML Schemaの作成と登録。

  • リポジトリ・リソースへのメタデータの追加とその更新(変更)。

  • 関連付けられているコンテンツを検索するためのリソース・メタデータの問合せ

  • リソースに関連付けられているメタデータの削除と、リソースに関連付けられているすべてのメタデータの消去

この他、XML Schemaに基づかないメタデータをリソースに追加する方法も説明します。

一般に、ユーザー定義のリソース・メタデータはリソース・データを使用する場合と同様に使用できます。バージョニングとアクセス制御については特にそれが成り立ちます。

リソース・メタデータの典型的な使用方法には、ワークフロー・アプリケーション、ユーザー権限の強制管理、リソース所有権の追跡、リソース有効期間の管理などがあります。

シナリオ: 写真コレクションのメタデータ

XML Schemaに基づくリソース・メタデータの使用方法を説明するために、この章ではリポジトリ・リソースに格納されている写真のイメージ・ファイルに関連付けられているメタデータを取り上げます。必要なだけ多くの種類のメタデータを作成して、同じリソースに関連付けることができます。イメージ・ファイルの例では、(1)写真の技術的な側面、および(2)写真のテーマや用途に関する情報のメタデータを作成します。この2種類の関連メタデータを使用して写真リソースを問い合せます。

XML Schemaによるリソース・メタデータの定義

この項では、まず各写真に関連付けるメタデータをXML Schemaを使用して定義します。それぞれのメタデータの種類(技術、カテゴリ)について、XML Schemaを作成して登録します。

例29-1のXML Schemaは、写真イメージ・ファイルの技術的側面を記述するのに使用するメタデータを定義します。ここではPL/SQLプロシージャDBMS_XMLSCHEMA.registerSchemaを使用してXML Schemaを登録します。このスキーマをリポジトリ・リソース・メタデータを定義するものとして識別するためには、enableHierarchyパラメータの値にENABLE_HIERARCHY_RESMETADATAを使用します。リソースのコンテンツ(データ)は、かわりに値ENABLE_HIERARCHY_CONTENTS(デフォルト値)を使用して定義します。

例29-1で定義するプロパティは、イメージの高さ、幅、色深度、タイトル、および簡単な説明です。

例29-1 写真の技術情報を扱うXML Schemaの登録

BEGIN
  DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL       => 'imagetechnique.xsd',
    SCHEMADOC       => '<xsd:schema targetNamespace="inamespace"
                                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                    xmlns:xdb="http://xmlns.oracle.com/xdb"
                                    xmlns="inamespace">
                          <xsd:element name="ImgTechMetadata"
                                       xdb:defaultTable="IMGTECHMETADATATABLE">
                            <xsd:complexType>
                              <xsd:sequence>
                                <xsd:element name="Height"      type="xsd:float"/>
                                <xsd:element name="Width"       type="xsd:float"/>
                                <xsd:element name="ColorDepth"  type="xsd:integer"/>
                                <xsd:element name="Title"       type="xsd:string"/>
                                <xsd:element name="Description" type="xsd:string"/>
                              </xsd:sequence>
                            </xsd:complexType>
                          </xsd:element>
                        </xsd:schema>',
    enableHierarchy => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_RESMETADATA);
END;
/

例29-2のXML Schemaは写真イメージ・ファイルの分類に使用するメタデータを定義します。この簡単な例では、分類用のCategoryという名前の、単一の汎用プロパティを定義します。

例29-2 写真のカテゴリを扱うXML Schemaの登録

BEGIN
  DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL       => 'imagecategories.xsd',
    SCHEMADOC       => '<xsd:schema targetNamespace="cnamespace"
                                    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                    xmlns:xdb="http://xmlns.oracle.com/xdb"
                                    xmlns="cnamespace">
                          <xsd:element name="ImgCatMetadata"
                                       xdb:defaultTable="IMGCATMETADATATABLE">
                            <xsd:complexType>
                              <xsd:sequence>
                                <xsd:element name="Categories" 
                                             type="CategoriesType"/>
                              </xsd:sequence>
                            </xsd:complexType>
                          </xsd:element>
                          <xsd:complexType name="CategoriesType">
                            <xsd:sequence>
                              <xsd:element name="Category" type="xsd:string"
                                           maxOccurs="unbounded"/>
                            </xsd:sequence>
                          </xsd:complexType>
                        </xsd:schema>',
    enableHierarchy => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_RESMETADATA);
END;
/

メタデータのXML Schema定義には、その情報を任意の特定の種類のデータへの関連付けに制限するものはないということに注意してください。任意の型のメタデータを任意の型のリソースに、自由に関連付けできます。同一のリソースに複数の型のメタデータを関連付けることもできます。

また、XML Schemaは、それ自身では、関連付けられているデータをメタデータであると定義してはいません。そうした特徴付けは、enableHierarchyの値ENABLE_HIERARCHY_RESMETADATAを介するスキーマ登録によって行われます。enableHierarchyの値ENABLE_HIERARCHY_CONTENTS(デフォルト値)に同じスキーマが登録されると、リソースに対応するメタデータでなく、同じ情報を持つリソース・コンテンツが定義されます。同一のXML Schemaを、同じ名前で複数回登録することはできません。


注意:

XML Schemaに基づいたユーザー定義メタデータは、デフォルトではCLOBとして格納されます。また、XML Schema登録のためのOPTIONSパラメータをREGISTER_BINARYXMLに設定することにより、これをバイナリXMLとして格納できます。

リソース・メタデータの追加、更新、削除

ユーザー定義のリソース・メタデータの追加、更新、および削除は、次の方法で行うことができます。

  • パッケージDBMS_XDB内のPL/SQLプロシージャの使用

    • appendResourceMetadata - リソースへのメタデータの追加

    • updateResourceMetadata - リソース・メタデータの変更

    • deleteResourceMetadata - リソースからの特定のメタデータの削除

    • purgeResourceMetadataすべてのメタデータのリソースからの削除

  • SQL DML文INSERTUPDATE、およびDELETEの使用による、直接的なリソースの更新

  • WebDAVプロトコル・メソッドPROPPATCHの使用

メタデータの追加と同じ方法でメタデータを更新または削除するには、SQL DM文とWebDAVメソッドPROPPATCHを使用します。これらの操作のいずれかで、完全なResource要素を指定する場合は、それぞれのリソース・メタデータのプロパティがResource要素の(ただの子孫でなく)子でなければいけないことに注意してください。同じ種類のメタデータ要素を複数使用する場合、それらを1つの親メタデータ要素の子として収集する必要があります。こうした最上位のユーザー定義では、リソース・メタデータ・プロパティの順序は重要ではなく、Oracle XML DBにおいても必ずしも維持されません。

パッケージDBMS_XDB内の各種PL/SQLプロシージャの使用方法はよく似ています。いずれも、XML Schemaに基づいている、またはXML Schemaに基づかないメタデータとともに使用できます。一部のプロシージャのいくつかの形式(シグネチャ)は、XML Schemaに基づくメタデータにのみ適用されます。ここでは、プロシージャappendResourceMetadataおよびdeleteResourceMetadataについて、例を使用して説明します。


関連項目:

PL/SQLパッケージDBMS_XDBのプロシージャは、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

APPENDRESOURCEMETADATAを使用したメタデータの追加

プロシージャDBMS_XDB.appendResourceMetadataを使用して、ユーザー定義のメタデータをリソースに追加できます。

例29-3では、写真リソースを作成し、型がImgTechMetadataの、XML Schemaに基づくメタデータを追加することにより、写真に関する技術情報を記録しています。

例29-3 メタデータのリソースへの追加 - 写真の技術情報

DECLARE
  returnbool BOOLEAN;
BEGIN
  returnbool := DBMS_XDB.createResource(
                  '/public/horse_with_pig.jpg',
                  bfilename('MYDIR', 'horse_with_pig.jpg'));
  DBMS_XDB.appendResourceMetadata(
    '/public/horse_with_pig.jpg',
    XMLType('<i:ImgTechMetadata
                 xmlns:i="inamespace"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="inamespace imagetechnique.xsd">
               <Height>1024</Height>
               <Width>768</Width>
               <ColorDepth>24</ColorDepth>
               <Title>Pig Riding Horse</Title>
               <Description>Picture of a pig riding a horse on the beach,
taken outside hotel window.</Description>
             </i:ImgTechMetadata>'));
END;
/

例29-4では、型がImgTechMetadataのメタデータを例29-3と同じリソースに追加することにより、写真をいずれかのユーザー定義のコンテンツ・カテゴリに分類しています。

例29-4 メタデータのリソースへの追加 - 写真のコンテンツ・カテゴリ

BEGIN
  DBMS_XDB.appendResourceMetadata(
    '/public/horse_with_pig.jpg',
    XMLType('<c:ImgCatMetadata
                 xmlns:c="cnamespace"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="cnamespace imagecategories.xsd">
               <Categories>
                 <Category>Vacation</Category>
                 <Category>Animals</Category>
                 <Category>Humor</Category>
                 <Category>2005</Category>
               </Categories>
             </c:ImgCatMetadata>'));
END;
/

PL/SQL procedure successfully completed.
 
SELECT * FROM imgcatmetadatatable;
 
SYS_NC_ROWINFO$
--------------------------------------------------------------------------------
<c:ImgCatMetadata xmlns:c="cnamespace" xmlns:xsi="http://www.w3.org/2001/XMLSche
ma-instance" xsi:schemaLocation="cnamespace imagecategories.xsd">
  <Categories>
    <Category>Vacation</Category>
    <Category>Animals</Category>
    <Category>Humor</Category>
    <Category>2005</Category>
  </Categories>
</c:ImgCatMetadata>
 
1 row selected.

DELETERESOURCEMETADATAを使用したメタデータの削除

プロシージャDBMS_XDB.deleteResourceMetadataを使用して、リソースに関連付けられている特定のメタデータを削除できます。あるリソースに関連付けられているメタデータをすべて削除するには、プロシージャDBMS_XDB.purgeResourceMetadataを使用します。

例29-5では、例29-4で写真リソースに追加されたカテゴリ・メタデータを削除しています。デフォルトでは、メタデータへのリソース・リンク(REF)と、そのリンクにより識別されるメタデータ表の両方が削除されます。リンクのみを削除するように指定するオプションのパラメータを使用できます。その場合、メタデータ表はそのまま残りますが、リソースへの関連性はなくなります。この例では、デフォルトの動作が使用されています。

例29-5 リソースからの特定のメタデータの削除

BEGIN
  DBMS_XDB.deleteResourceMetadata('/public/horse_with_pig.jpg',
                                  'cnamespace',
                                  'ImgCatMetadata');
END;
/

PL/SQL procedure successfully completed.
 
SELECT * FROM imgcatmetadatatable;
 
no rows selected

SQL DMLを使用したメタデータの追加

プロシージャDBMS_XDB.appendResourceMetadataを使用せずにリソース・メタデータ表を追加、更新、および削除するには、DML文INSERTおよびUPDATEを使用してRESOURCE_VIEWを更新します。

この方法によるリソース・メタデータの追加を例29-6で説明します。この例は、SQL文UPDATEを使用して、メタデータを直接RESOURCE_VIEWに挿入することにより、例29-3と同じことを実行する方法を示しています。他のSQL DML文も同様に使用できます。

例29-6 RESOURCE_VIEWでのDMLの使用によるリソースへのメタデータの追加

UPDATE RESOURCE_VIEW
  SET RES = 
        insertChildXML(
          RES, 
          '/r:Resource', 
          'c:ImgCatMetadata', 
          XMLType('<c:ImgCatMetadata
                       xmlns:c="cnamespace"
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                       xsi:schemaLocation="cnamespace imagecategories.xsd">
                     <Categories>
                       <Category>Vacation</Category>
                       <Category>Animals</Category>
                       <Category>Humor</Category>
                       <Category>2005</Category>
                     </Categories>
                   </c:ImgCatMetadata>'),
          'xmlns:r="http://xmlns.oracle.com/xdb/XDBResource.xsd"
           xmlns:c="cnamespace"')
  WHERE equals_path(RES, '/public/horse_with_pig.jpg') = 1;
/

SELECT * FROM imgcatmetadatatable;
 
SYS_NC_ROWINFO$
--------------------------------------------------------------------------------
<c:ImgCatMetadata xmlns:c="cnamespace" xmlns:xsi="http://www.w3.org/2001/XMLSche
ma-instance" xsi:schemaLocation="cnamespace imagecategories.xsd">
  <Categories>
    <Category>Vacation</Category>
    <Category>Animals</Category>
    <Category>Humor</Category>
    <Category>2005</Category>
  </Categories>
</c:ImgCatMetadata>
 
1 row selected.

次の問合せは、メタデータ表imgcatmetadatatableを直接指定してではなく、RESOURCE_VIEWを使用して挿入したメタデータを抽出します。(ここではわかりやすいように、この結果をフォーマット出力しています。)

SELECT XMLQuery('declare namespace r
                   = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
                 declare namespace c
                   = "cnamespace"; (: :)
                 /r:Resource/c:ImgCatMetadata'
                PASSING RES RETURNING CONTENT)
  FROM RESOURCE_VIEW
  WHERE equals_path(RES, '/public/horse_with_pig.jpg') = 1;
 
XMLQUERY('DECLARENAMESPACER="HTTP://XMLNS.ORACLE.COM/XDB/XDBRESOURCE.XSD";(::)DE
--------------------------------------------------------------------------------
<c:ImgCatMetadata xmlns:c="cnamespace" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="cnamespace imagecategories.xsd">
  <Categories>
    <Category>Vacation</Category>
    <Category>Animals</Category>
    <Category>Humor</Category>
    <Category>2005</Category>
  </Categories>
</c:ImgCatMetadata>
 
1 row selected.

WebDAV PROPPATCHを使用したメタデータの追加

プロシージャDBMS_XDB.appendResourceMetadataを使用せずにリソース・メタデータを追加する他の方法は、WebDAVのPROPPATCHメソッドを使用する方法です。例29-7で説明します。同様にメタデータを更新および削除できます。

例29-7は、WebDAVメソッドPROPPATCHを使用してメタデータを挿入することにより、例29-4と同じことを実行する方法を示しています。適切なツールを使用することで、アプリケーションでこの種のPROPPATCH WebDAVリクエストを作成し、WebDAVサーバーに送信して処理させることができます。

ユーザー定義のメタデータを更新する場合も同様です。ユーザー定義のメタデータを削除する場合も同様のWebDAVリクエストを使用しますが、D:setD:removeに置き換えます。

例29-7 WebDAV PROPPATCHによるメタデータの追加

PROPPATCH /public/horse_with_pig.jpg HTTP/1.1
Host: www.example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: 609
Authorization: Basic dGRhZHhkYl9tZXRhOnRkYWR4ZGJfbWV0YQ==
Connection: close
 
<?xml version="1.0" encoding="utf-8" ?>
<D:propertyupdate xmlns:D="DAV:" xmlns:Z="http://www.w3.com/standards/z39.50/">
  <D:set>
    <D:prop>
      <c:ImgCatMetadata
          xmlns:c="cnamespace"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="cnamespace imagecategories.xsd">
        <Categories>
          <Category>Vacation</Category>
          <Category>Animals</Category>
          <Category>Humor</Category>
          <Category>2005</Category>
        </Categories>
      </c:ImgCatMetadata>
    </D:prop>
  </D:set>
</D:propertyupdate>

XML Schemaに基づくリソース・メタデータの問合せ

enableHierarchyENABLE_HIERARCHY_RESMETADATAを使用してXML Schemaを登録する場合、追加の列RESIDが、メタデータの格納に使用されるXMLType表に自動的に追加されます。この列には、メタデータに関連付けられているリソースのオブジェクト識別子(OID)が格納されます。メタデータを問い合せる際に、列RESIDを使用して、メタデータを関連のデータに結合することができます。

メタデータを問い合せる方法には次のようなものがあります。

  • RESOURCE_VIEWにメタデータを問い合せます。次に例を示します。

    SELECT count(*) FROM RESOURCE_VIEW
      WHERE
        XMLExists(
          'declare namespace r
             = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
           declare namespace c
             = "cnamespace"; (: :)
           /r:Resource/c:ImgCatMetadata/Categories/Category[text()="Vacation"]'
          PASSING RES);
    
      COUNT(*)
    ----------
             1
     
    1 row selected.
    
  • XML Schemaに基づく表に対してユーザー定義のメタデータを直接問い合せ、そのメタデータをリソース表に結合し、選択するリソースを識別します。その場合は、メタデータ表のRESID列を使用します。次に例を示します。

    SELECT COUNT(*) FROM RESOURCE_VIEW rs, imgcatmetadatatable ct
      WHERE
        XMLExists(
          'declare namespace r
             = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
           declare namespace c
             = "cnamespace"; (: :)
           /r:Resource/c:ImgCatMetadata/Categories/Category'
          PASSING RES)
        AND rs.RESID = ct.RESID;
    
      COUNT(*)
    ----------
             1
     
    1 row selected.
    

パフォーマンス向上のため、ユーザー定義のメタデータの直接問合せをお薦めします。RESOURCE_VIEWに対する直接の問合せは、XPathリライトの使用により単独で最適化することはできません。これは、Categoryなどのターゲット要素がCLOB値に格納されているか、オフラインの表に格納されているかを判断する方法がないためです。

パフォーマンスをさらに向上させるには、問合せ対象の各メタデータ列に索引を作成します。

例29-8は、両方の種類の写真リソース・メタデータに対して問合せを行い、休暇の写真(Vacation Photos)に分類されている、タイトルが「Pig Riding Horse」のリソースへのパスを取得します。

例29-8 XML Schemaに基づくリソース・メタデータの問合せ

SELECT ANY_PATH
  FROM RESOURCE_VIEW rs, imgcatmetadatatable ct, imgtechmetadatatable tt
  WHERE XMLExists(
          'declare namespace r
             = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
           declare namespace c
             = "cnamespace"; (: :)
           /r:Resource/c:ImgCatMetadata/Categories/Category[text()="Vacation"]'
          PASSING RES)
    AND XMLExists(
          'declare namespace r
             = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
           declare namespace i
             = "inamespace"; (: :)
           /r:Resource/i:ImgTechMetadata/Title[text()="Pig Riding Horse"]'
          PASSING RES)
    AND rs.RESID = ct.RESID
    AND rs.RESID = tt.RESID;

ANY_PATH
--------------------------
/public/horse_with_pig.jpg
 
1 row selected.

バイナリ・イメージ・メタデータからのXMLイメージ・メタデータ

この章の前の項では、イメージの技術メタデータを定義する、単純なユーザー定義のXML Schema、imagetechnique.xsdを使用して、リポジトリ・リソース・メタデータの追加と変更の方法を説明しました。この単純なXML Schemaは、写真イメージの技術情報という点で実際的なものではありません。

しかし、ほとんどのデジタル・カメラでは、バイナリ・イメージ・ファイルの一部として、独自に作成したイメージ・メタデータを含んでいます。Oracle Databaseに含まれるOracle interMediaには、このバイナリ・データを抽出してXMLに変換するツールが用意されています。Oracle interMedia XML SchemaはOracle XML DBリポジトリに自動的に登録されており、次の種類のバイナリ・イメージ・メタデータをXMLデータに変換します。

  • EXIF - Exchangeable Image File Format

  • IPTC-NAA IIM - International Press Telecommunications Council-Newspaper Association of America Information Interchange Model

  • XMP - Extensible Metadata Platform

EXIFは、デジタル・スチル・カメラのメタデータ標準です。EXIFメタデータはTIFFおよびJPEGのイメージ・ファイルに格納されています。IPTCおよびXMPメタデータは、通常、デスクトップ画像処理ソフトウェアによりイメージ・ファイルに埋め込まれます。


関連項目:

  • バイナリ・イメージ・メタデータの抽出や、そのXMLへの変換など、デジタル・イメージのメタデータの操作は、『Oracle Multimediaユーザーズ・ガイド』を参照してください。

  • Oracle interMediaでイメージ・メタデータを使用する際にサポートされているXML Schemaの詳細は、『Oracle Multimediaリファレンス』を参照してください。


XML Schemaに基づかないリソース・メタデータの追加

XML Schemaに基づかないユーザー定義のリソース・メタデータは、CLOBインスタンスとして、関連付けられているリソースのResource要素に格納します。リソースのデフォルトのXML Schemaでは最上位要素がany(maxOccurs= "unbounded"で宣言)なので、任意の有効なXMLデータをリソース文書に含めることができます。このメタデータは、リソース表のCLOB列に格納されます。

次のスケルトンは、XML Schemaに基づかないリソース・メタデータの構造と位置を示しています。

     <Resource xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd"
       <Owner>DESELBY</Owner>
       ... <!-- other system-defined metadata -->
       <!-- contents of the resource>
       <Contents>
         ...
       </Contents>
       <!-- User-defined metadata (appearing within different namespace) -->
       <MyOwnMetadata xmlns="http://www.example.com/custommetadata">
         <MyElement1>value1</MyElement1>
         <MyElement2>value2</MyElement2>
       </MyOwnMetadata>
     </Resource>

XDBResource.xsd以外の名前空間に属する、XML Schemaに基づかないリソース・メタデータを設定したり、それにアクセスしたりするには、XML Schemaに基づくリソース・メタデータのアクセスに関する前述の説明で触れた方法のいずれかを使用します。

例29-9は、SQL DML操作に関する説明で、ユーザー定義のメタデータを<RESOURCE>文書に直接追加しています。この例は、SQL DMLを使用してXML Schemaに基づかないメタデータをリソースに追加する方法を示しています。

例29-9 XML Schemaに基づかないメタデータのリソースへの追加

DECLARE
  res BOOLEAN;
BEGIN
  res := DBMS_XDB.createResource('/public/NurseryRhyme.txt',
                                 bfilename('MYDIR',
                                           'tdadxdb-xdb_repos_meta-011.txt'),
                                 nls_charset_id('AL32UTF8'));
UPDATE RESOURCE_VIEW
  SET RES = insertChildXML(RES, 
                           '/r:Resource', 
                           'n:NurseryMetadata', 
                           XMLType('<n:NurseryMetadata xmlns:n="nurserynamespace">
                                      <Author>Mother Goose</Author>
                                   <n:NurseryMetadata>'),
                           'xmlns:r="http://xmlns.oracle.com/xdb/XDBResource.xsd"
                            xmlns:n="nurserynamespace"')
  WHERE equals_path(RES, '/public/NurseryRhyme.txt') = 1;
END;
/

PL/SQL procedure successfully completed.
 

SELECT XMLSerialize(DOCUMENT rs.RES AS CLOB) FROM RESOURCE_VIEW rs
  WHERE equals_path(RES, '/public/NurseryRhyme.txt') = 1;
 
XMLSERIALIZE(DOCUMENTRS.RESASCLOB)
--------------------------------------------------------------------------------
<Resource xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd" Hidden="false" Inv
alid="false" Container="false" CustomRslv="false" VersionHistory="false" StickyR
ef="true">
  <CreationDate>2005-05-24T13:51:48.043234</CreationDate>
  <ModificationDate>2005-05-24T13:51:48.290144</ModificationDate>
  <DisplayName>NurseryRhyme.txt</DisplayName>
  <Language>en-US</Language>
  <CharacterSet>UTF-8</CharacterSet>
  <ContentType>text/plain</ContentType>
  <RefCount>1</RefCount>
  <ACL>
    <acl description="Public:All privileges to PUBLIC" xmlns="http://xmlns.oracl
e.com/xdb/acl.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch
emaLocation="http://xmlns.oracle.com/xdb/acl.xsd                           http:
//xmlns.oracle.com/xdb/acl.xsd" shared="true">
      <ace>
        <principal>PUBLIC</principal>
        <grant>true</grant>
        <privilege>
          <all/>
        </privilege>
      </ace>
    </acl>
  </ACL>
  <Owner>TDADXDB_META</Owner>
  <Creator>TDADXDB_META</Creator>
  <LastModifier>TDADXDB_META</LastModifier>
  <SchemaElement>http://xmlns.oracle.com/xdb/XDBSchema.xsd#text</SchemaElement>
  <Contents>
    <text>Mary had a little lamb
Its fleece was white as snow
and everywhere that Mary went
that lamb was sure to go
</text>
  </Contents>
  <n:NurseryMetadata xmlns:n="nurserynamespace">
    <Author xmlns="">Mother Goose</Author>
  </n:NurseryMetadata>
</Resource>
 
1 row selected.

リソース・メタデータに影響するPL/SQLプロシージャ

次のPL/SQLプロシージャはリソース・メタデータを操作します。

  • DBMS_XMLSCHEMA.registerSchema - XML Schemaの登録。パラメータENABLEHIERARCHYによりリソース・メタデータが影響を受けます。

  • DBMS_XDBZ.enable_hierarchy - XMLTypeの表やビューに対するリポジトリ・サポートを有効にします。パラメータHIERARCHY_TYPEと値DBMS_XDBZ.ENABLE_HIERARCHY_RESMETADATAを使用すると、リソース・メタデータを有効にできます。これにより、メタデータに関連付けられているリソースを追跡するRESIDが追加されます。

  • DBMS_XDBZ.disable_hierarchy - XMLTypeの表やビューに対するリポジトリ・サポートをすべて無効にします。

  • DBMS_XDBZ.is_hierarchy_enabled - パラメータHIERARCHY_TYPEを使用して、指定された階層の型が、指定されたXMLTypeの表やビューに対して現在有効かどうかをテストします。リソース・メタデータが有効かどうかは、HIERARCHY_TYPEの値がDBMS_XDBZ.IS_ENABLED_RESMETADATAかどうかでテストできます。

  • DBMS_XDB.appendResourceMetadata - メタデータをリソースに追加します。

  • DBMS_XDB.deleteResourceMetadata - 指定したメタデータをリソースから削除します。

  • DBMS_XDB.purgeResourceMetadata - すべてのユーザー定義のメタデータをリソースから削除します。XML Schemaに基づくリソースの場合、オプションのパラメータDELETE_OPTIONを使用して、メタデータ情報を単にリンク解除するだけでなく、削除するかどうかを指定できます。

  • DBMS_XDB.updateResourceMetadata - リソースのメタデータを更新します。


関連項目:

PL/SQLプロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。