29 ユーザー定義のリポジトリ・メタデータ
Oracle XML DBリポジトリに格納されたXMLデータに関連付ける独自のメタデータを作成できます。
- メタデータとXMLの概要
使用するデータが、コンテンツの一部ではない追加情報に関連付けられていることがよくあります。データを様々な方法で処理するには、この種のメタデータをデータのグループ化や分類に使用します。 - XML Schemaを使用したリソース・メタデータの定義
ユーザー・メタデータを写真リソースに追加するには、この種のメタデータの構造をXML Schemaを使用して定義する必要があります。それぞれの写真リソース・メタデータの種類(技術、カテゴリ)について、XML Schemaを作成して登録します。 - リソース・メタデータの追加、変更および削除
ユーザー定義のリソース・メタデータを追加、更新および削除するには、パッケージDBMS_XDB_REPOS
内のPL/SQLプロシージャ、SQL DML文INSERT
、UPDATE
およびDELETE
またはWebDAVプロトコル・メソッドPROPPATCH
を使用します。 - XML Schemaに基づくリソース・メタデータの問合せ
リソース・メタデータを問い合せる際に、メタデータ列RESID
を使用して、メタデータを関連のデータに結合できます。 - バイナリ・イメージ・メタデータからのXMLイメージ・メタデータ
デジタル・カメラには、生成されるイメージ・ファイルの一部としてイメージ・メタデータが含まれます。Oracle Multimediaでは、このバイナリ・メタデータを抽出してXMLに変換するためのツールが提供されています。Oracle Multimedia XML SchemaはOracle XML DBリポジトリに自動的に登録されており、様々な種類のバイナリ・イメージ・メタデータをXMLデータに変換します。 - XML Schemaに基づかないリソース・メタデータの追加
XML Schemaに基づかないユーザー定義のリソース・メタデータは、CLOB
インスタンスとして、関連付けられているリソースのResource
要素に格納します。 - リソース・メタデータに影響するPL/SQLプロシージャ
PL/SQLプロシージャDBMS_XMLSCHEMA.registerSchema
、DBMS_XDBZ.enable_hierarchy
、DBMS_XDBZ.disable_hierarchy
、DBMS_XDBZ.is_hierarchy_enabled
、DBMS_XDB_REPOS.appendResourceMetadata
、DBMS_XDB_REPOS.deleteResourceMetadata
、DBMS_XDB_REPOS.purgeResourceMetadata
およびDBMS_XDB_REPOS.updateResourceMetadata
を使用して、リソース・メタデータ操作を実行できます。
親トピック: Oracle XML DBリポジトリ
29.1 メタデータとXMLの概要
使用するデータが、コンテンツの一部ではない追加情報に関連付けられていることがよくあります。データを様々な方法で処理するには、この種のメタデータをデータのグループ化や分類に使用します。
たとえば、多数の写真に対して、カラー合成、焦点長などの写真の特性や、場所、被写体の種類(風景か人物か)などの付随情報といったメタデータをそれぞれの写真に関連付けたい場合があります。
Oracle XML DBリポジトリのリソースは、メタデータとデータの両方を含むXML文書です。データは、要素Contents
のコンテンツです。リソース内の他のすべての要素にはメタデータが含まれます。リソースのデータはXMLでなくてもかまいません。
Oracle XML DBリポジトリを、ユーザーが定義したメタデータに関連付けることができます。こうしたユーザー定義のメタデータの他に、各リポジトリ・リソースにも、Oracle XML DBにより自動作成され、リソース管理に(透過的に)使用されている関連のメタデータがあります。こうしたシステム定義のメタデータには、各リソースの所有者や作成日などのプロパティが含まれています。
システム定義のメタデータを除き、リソース情報のいずれをデータ、いずれをメタデータとみなすかはユーザーの判断です。写真リソースの場合、写真に関する付随情報は通常、バイナリ・イメージである写真データの一部とはみなされません。しかしテキストの場合は、特定の情報をリソースのコンテンツ(データ)に含めるか、別扱いにして、メタデータとしてコンテンツに関連付けるかを選択できる場合があります。こうした選択は、多くの場合、データを使用または作成するアプリケーションに左右されます。
- メタデータの種類 - 用語の用法
メタデータという用語は、XMLのコンテキストにおいて様々な方法で使用され、ここには、XML Schema定義、XMLタグ、およびリソース・コンテンツを補完するOracle XML DBリポジトリ・リソース情報などが含まれます。 - ユーザー定義のリソース・メタデータ
ユーザー定義のリソース・メタデータは、それ自身XMLで表現されています。他のXMLデータに関連付けられたXMLデータであり、その説明や、補足情報、関連情報を提供します。 - シナリオ: 写真コレクションのメタデータ
スキーマに基づくリソース・メタデータの使用方法を説明するために、次のシナリオでは、リポジトリ・リソースに格納されている写真のイメージ・ファイルに関連付けられているメタデータを使用します。必要なだけ多くの種類のメタデータを作成して、同じリソースに関連付けることができます。
親トピック: ユーザー定義のリポジトリ・メタデータ
29.1.1 メタデータの種類 - 用語の用法
メタデータという用語は、XMLのコンテキストにおいて様々な方法で使用され、ここには、XML Schema定義、XMLタグ、およびリソース・コンテンツを補完するOracle XML DBリポジトリ・リソース情報などが含まれます。
リソース・メタデータ(システム定義またはユーザー定義)の他に、「メタデータ」という語は次のものを指すことがあります。
-
XML Schemaは、XML文書のクラスを示すメタデータです。
-
XMLタグ(要素名または属性名)は、要素のコンテンツや属性値に名前を付けたり整理したりするのに使用されるメタデータです。
次のようにして、メタデータをリポジトリ・リソースのコンテンツであるXML文書に関連付けることができます。
-
メタデータ情報を含む追加のXML要素をリソースのコンテンツに追加することができます。たとえば、デジタル・イメージ・データを、写真に関する説明を要素として含むXML文書の中に入れることもできます。この場合、データとそのメタデータは、同じリソースのコンテンツであることによって関連付けられています。それらを分離したり、正しく関連させたりする処理はアプリケーションが担当します。
-
特定のリソースのメタデータをリポジトリに、別のリソースのコンテンツとして追加することもできます。この場合、このリソースをメタデータとして処理し、データに関連付けるのはアプリケーションが担当します。
-
リソースのメタデータ情報を、リポジトリのリソース・メタデータとして追加できます。この場合、Oracle XML DBはメタデータをそのままの形で認識します。アプリケーションは、リポジトリに問い合せることによってこのメタデータを検出します。アプリケーションは、メタデータが存在するかどうかや、データとの関連付けについて独自に知っている必要はありません。
関連トピック
親トピック: メタデータおよびXMLの概要
29.1.2 ユーザー定義のリソース・メタデータ
ユーザー定義のリソース・メタデータは、それ自身XMLで表現されています。他のXMLデータに関連付けられたXMLデータであり、その説明や、補足情報、関連情報を提供します。
リソースのユーザー定義のメタデータはXML Schemaに基づいている場合も、そうでない場合もあります。
-
XML Schemaに基づくリソース・メタデータは別個の(オンラインでない)表に格納されます。これらはリソースOIDによってリソース表に関連付けられており、メタデータ表の非表示のオブジェクト列
RESID
に格納されます。 -
XML Schemaに基づかないリソース・メタデータは、リソース文書の一部としてリソース表の
XDB.XDB$RESOURCE
に格納されます。
XML Schemaに基づくメタデータは、リソースに対して問合せやDML操作を効率的に実行する際に有効です。この章では、XML Schemaに基づくリソース・メタデータに関する次のタスクの実行方法を説明します。
-
特定の種類のリソースに対してメタデータを定義するXML Schemaの作成と登録。
-
リポジトリ・リソースへのメタデータの追加とその更新(変更)。
-
関連付けられているコンテンツを検索するためのリソース・メタデータの問合せ。
-
リソースに関連付けられているメタデータの削除と、リソースに関連付けられているすべてのメタデータの消去。
この他、XML Schemaに基づかないメタデータをリソースに追加する方法も説明します。
一般に、ユーザー定義のリソース・メタデータはリソース・データを使用する場合と同様に使用できます。バージョニングとアクセス制御については特にそれが成り立ちます。
リソース・メタデータの典型的な使用方法には、ワークフロー・アプリケーション、ユーザー権限の強制管理、リソース所有権の追跡、リソース有効期間の管理などがあります。
親トピック: メタデータおよびXMLの概要
29.1.3 シナリオ: 写真コレクションのメタデータ
XML Schemaに基づくリソース・メタデータの使用方法を説明するために、次のシナリオでは、リポジトリ・リソースに格納されている写真のイメージ・ファイルに関連付けられているメタデータを使用します。必要なだけ多くの種類のメタデータを作成して、同じリソースに関連付けることができます。
イメージ・ファイルの例では、(1)写真の技術的な側面、および(2)写真のテーマや用途に関する情報のメタデータを作成します。この2種類の関連メタデータを使用して写真リソースを問い合せます。
親トピック: メタデータおよびXMLの概要
29.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-2のXML Schemaは写真イメージ・ファイルの分類に使用するメタデータを定義します。この簡単な例では、分類用のCategory
という名前の、単一の汎用プロパティを定義します。
メタデータのXML Schema定義には、その情報を任意の特定の種類のデータへの関連付けに制限するものはないということに注意してください。任意の型のメタデータを任意の型のリソースに、自由に関連付けできます。同一のリソースに複数の型のメタデータを関連付けることもできます。
また、XML Schemaは、それ自身では、関連付けられているデータをメタデータであると定義してはいません。そうした特徴付けは、enableHierarchy
の値ENABLE_HIERARCHY_RESMETADATA
を介するスキーマ登録によって行われます。enableHierarchy
の値ENABLE_HIERARCHY_CONTENTS
(デフォルト値)に同じスキーマが登録されると、リソースに対応するメタデータでなく、同じ情報を持つリソース・コンテンツが定義されます。同一のXML Schemaを、同じ名前で複数回登録することはできません。
注意:
デフォルトでは、ユーザー・メタデータは、XML Schemaに基づく場合にはオブジェクト・リレーショナル形式で格納され、XML Schemaに基づかない場合にはCLOB
インスタンスとして格納されます。また、XML Schema登録のためのOPTIONS
パラメータをREGISTER_BINARYXML
に設定することにより、かわりにバイナリXMLとしても格納できます。
例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の登録
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; /
親トピック: ユーザー定義のリポジトリ・メタデータ
29.3 リソース・メタデータの追加、変更および削除
ユーザー定義のリソース・メタデータを追加、更新および削除するには、パッケージDBMS_XDB_REPOS
内のPL/SQLプロシージャ、SQL DML文INSERT
、UPDATE
およびDELETE
またはWebDAVプロトコル・メソッドPROPPATCH
を使用します。
ユーザー定義のリソース・メタデータの追加、更新、および削除は、次のいずれかの方法で行うことができます。
-
パッケージ
DBMS_XDB_REPOS
内のPL/SQLプロシージャの使用-
appendResourceMetadata
- リソースへのメタデータの追加 -
updateResourceMetadata
- リソース・メタデータの変更 -
deleteResourceMetadata
- リソースからの特定のメタデータの削除 -
purgeResourceMetadata
– すべてのメタデータのリソースからの削除
-
-
SQL DML文
INSERT
、UPDATE
、およびDELETE
の使用による、直接的なリソースの更新 -
WebDAVプロトコル・メソッド
PROPPATCH
の使用
メタデータの追加と同じ方法でメタデータを更新または削除するには、SQL DM文とWebDAVメソッドPROPPATCH
を使用します。これらの操作のいずれかで、完全なResource
要素を指定する場合は、それぞれのリソース・メタデータのプロパティがResource
要素の(ただの子孫でなく)子でなければいけないことに注意してください。同じ種類のメタデータ要素を複数使用する場合、それらを1つの親メタデータ要素の子として収集する必要があります。こうした最上位のユーザー定義では、リソース・メタデータ・プロパティの順序は重要ではなく、Oracle XML DBにおいても必ずしも維持されません。
パッケージDBMS_XDB_REPOS
内の各種PL/SQLプロシージャの使用方法はよく似ています。いずれも、XML Schemaに基づいている、またはXML Schemaに基づかないメタデータとともに使用できます。一部のプロシージャのいくつかの形式(シグネチャ)は、XML Schemaに基づくメタデータにのみ適用されます。ここでは、プロシージャappendResourceMetadata
およびdeleteResourceMetadata
について、例を使用して説明します。
- APPENDRESOURCEMETADATAを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.appendResourceMetadata
を使用して、ユーザー定義のメタデータをリソースに追加できます。 - DELETERESOURCEMETADATAを使用したメタデータの削除
プロシージャDBMS_XDB_REPOS.deleteResourceMetadata
を使用して、リソースに関連付けられている特定のメタデータを削除できます。あるリソースに関連付けられているメタデータをすべて削除するには、プロシージャDBMS_XDB_REPOS.purgeResourceMetadata
を使用します。 - SQL DMLを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.appendResourceMetadata
を使用せずにリソース・メタデータを追加、更新または削除するには、DML文INSERT
およびUPDATE
を使用してRESOURCE_VIEW
を直接更新します。 - WebDAV PROPPATCHを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.appendResourceMetadata
を使用せずにリソース・メタデータを追加する他の方法は、WebDAVのPROPPATCH
メソッドを使用する方法です。
関連項目:
PL/SQLパッケージDBMS_XDB_REPOS
のプロシージャの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
親トピック: ユーザー定義のリポジトリ・メタデータ
29.3.1 APPENDRESOURCEMETADATAを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.appendResourceMetadata
を使用して、ユーザー定義のメタデータをリソースに追加できます。
例29-3では、写真リソースを作成し、型がImgTechMetadata
の、XML Schemaに基づくメタデータを追加することにより、写真に関する技術情報を記録しています。
例29-4では、型がImgTechMetadata
のメタデータを例29-3と同じリソースに追加することにより、写真をいずれかのユーザー定義のコンテンツ・カテゴリに分類しています。
例29-3 メタデータのリソースへの追加 - 写真の技術情報
DECLARE returnbool BOOLEAN; BEGIN returnbool := DBMS_XDB_REPOS.createResource( '/public/horse_with_pig.jpg', bfilename('MYDIR', 'horse_with_pig.jpg')); DBMS_XDB_REPOS.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 メタデータのリソースへの追加 - 写真のコンテンツ・カテゴリ
BEGIN DBMS_XDB_REPOS.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.
親トピック: リソース・メタデータの追加、変更および削除
29.3.2 DELETERESOURCEMETADATAを使用したメタデータの削除
プロシージャDBMS_XDB_REPOS.deleteResourceMetadata
を使用して、リソースに関連付けられている特定のメタデータを削除できます。あるリソースに関連付けられているメタデータをすべて削除するには、プロシージャDBMS_XDB_REPOS.purgeResourceMetadata
を使用します。
例29-5では、例29-4で写真リソースに追加されたカテゴリ・メタデータを削除しています。デフォルトでは、メタデータへのリソース・リンク(REF
)と、そのリンクにより識別されるメタデータ表の両方が削除されます。リンクのみを削除するように指定するオプションのパラメータを使用できます。その場合、メタデータ表はそのまま残りますが、リソースへの関連性はなくなります。この例では、デフォルトの動作が使用されています。
例29-5 リソースからの特定のメタデータの削除
BEGIN
DBMS_XDB_REPOS.deleteResourceMetadata('/public/horse_with_pig.jpg',
'cnamespace',
'ImgCatMetadata');
END;
/
PL/SQL procedure successfully completed.
SELECT * FROM imgcatmetadatatable;
no rows selected
親トピック: リソース・メタデータの追加、変更および削除
29.3.3 SQL DMLを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.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 =
XMLQuery('declare namespace r = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
declare namespace c = "cnamespace"; (: :)
copy $tmp := . modify insert node
<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>
into $tmp/r:Resource
return $tmp'
PASSING RES
RETURNING CONTENT)
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.
親トピック: リソース・メタデータの追加、変更および削除
29.3.4 WebDAV PROPPATCHを使用したメタデータの追加
プロシージャDBMS_XDB_REPOS.appendResourceMetadata
を使用せずにリソース・メタデータを追加する他の方法は、WebDAVのPROPPATCH
メソッドを使用する方法です。
例29-7で説明します。同様にメタデータを更新および削除できます。
例29-7は、WebDAVメソッドPROPPATCHを使用してメタデータを挿入することにより、例29-4
と同じことを実行する方法を示しています。適切なツールを使用することで、アプリケーションでこの種のPROPPATCH
WebDAVリクエストを作成し、WebDAVサーバーに送信して処理させることができます。
ユーザー定義のメタデータを更新する場合も同様です。ユーザー定義のメタデータを削除する場合も同様のWebDAVリクエストを使用しますが、D:set
をD: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>
親トピック: リソース・メタデータの追加、変更および削除
29.4 XML Schemaに基づくリソース・メタデータの問合せ
リソース・メタデータを問い合せる際に、メタデータ列RESID
を使用して、メタデータを関連のデータに結合できます。
enableHierarchy
値ENABLE_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.
親トピック: ユーザー定義のリポジトリ・メタデータ
29.5 バイナリ・イメージ・メタデータからのXMLイメージ・メタデータ
デジタル・カメラには、生成されるイメージ・ファイルの一部としてイメージ・メタデータが含まれます。Oracle Multimediaでは、このバイナリ・メタデータを抽出してXMLに変換するためのツールが提供されています。Oracle Multimedia 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 Multimediaでイメージ・メタデータを使用する際にサポートされているXML Schemaの詳細は、Oracle Multimediaリファレンスを参照してください。
親トピック: ユーザー定義のリポジトリ・メタデータ
29.6 XML Schemaに基づかないリソース・メタデータの追加
XML Schemaに基づかないユーザー定義のリソース・メタデータは、CLOB
インスタンスとして、関連付けられているリソースのResource
要素に格納します。
リソースのデフォルトのXML Schemaでは最上位要素がany
(maxOccurs= "unbounded"
で宣言)なので、任意の有効なXMLデータをリソース表XDB.XDB$RESOURCE
のリソース・ドキュメントに含めることができます。
次のスケルトンは、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_REPOS.createResource(
'/public/NurseryRhyme.txt',
bfilename('MYDIR', 'tdadxdb-xdb_repos_meta-011.txt'),
nls_charset_id('AL32UTF8'));
UPDATE RESOURCE_VIEW SET RES =
XMLQuery('declare namespace r = "http://xmlns.oracle.com/xdb/XDBResource.xsd"; (: :)
declare namespace n = "nurserynamespace"; (: :)
copy $tmp := . modify insert node
<n:NurseryMetadata>
<Author>Mother Goose</Author>
</n:NurseryMetadata>
into $tmp/r:Resource
return $tmp'
PASSING RES
RETURNING CONTENT)
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.
親トピック: ユーザー定義のリポジトリ・メタデータ
29.7 リソース・メタデータに影響するPL/SQLプロシージャ
PL/SQLプロシージャDBMS_XMLSCHEMA.registerSchema
、DBMS_XDBZ.enable_hierarchy
、DBMS_XDBZ.disable_hierarchy
、DBMS_XDBZ.is_hierarchy_enabled
、DBMS_XDB_REPOS.appendResourceMetadata
、DBMS_XDB_REPOS.deleteResourceMetadata
、DBMS_XDB_REPOS.purgeResourceMetadata
およびDBMS_XDB_REPOS.updateResourceMetadata
を使用して、リソース・メタデータ操作を実行できます。
-
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_REPOS.appendResourceMetadata
- リソースにメタデータを追加します。 -
DBMS_XDB_REPOS.deleteResourceMetadata
- リソースから特定のメタデータを削除します。 -
DBMS_XDB_REPOS.purgeResourceMetadata
- ユーザー定義のメタデータをすべてリソースから削除します。XML Schemaに基づくリソースの場合、オプションのパラメータDELETE_OPTION
を使用して、メタデータ情報を単にリンク解除するだけでなく、削除するかどうかを指定できます。 -
DBMS_XDB_REPOS.updateResourceMetadata
- リソースのメタデータを更新します。
関連項目:
PL/SQLプロシージャの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。
親トピック: ユーザー定義のリポジトリ・メタデータ