CyberLibrarian

【注意】 このドキュメントは、W3CのMetadata API for Media Resources 1.0 W3C Recommendation 13 March 2014の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。

First Update: 2014年03月29日 | セマンティック・ウェブ関連用語集


W3C

メディア資源のメタデータAPI 1.0

W3C勧告 2014年3月13日

本バージョン:
http://www.w3.org/TR/2014/REC-mediaont-api-1.0-20140313/
最新公開バージョン:
http://www.w3.org/TR/mediaont-api-1.0/
旧バージョン:
http://www.w3.org/TR/2013/PR-mediaont-api-1.0-20131015/
編集者:
Florian Stegmaier, University of Passau
Werner Bailer, JOANNEUM RESEARCH
Martin Hoffernig, JOANNEUM RESEARCH
이원석(Wonsuk Lee), Samsung Electronics, Ltd.
Chris Poppe, Ghent University

このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。

翻訳版も参照してください。


要約

この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするためのAPIを定義しています。全体的な目標は、開発者が、様々なメタデータ・フォーマットで格納されているメタデータ情報に簡便にアクセスできるようにすることです。このAPIは、メディア資源のオントロジー1.0の仕様で定義されているメタデータ・プロパティーにアクセスする手段を提供します。このプロパティーは、このAPIではピボット語彙(pivot vocabulary)として用いられます。この仕様の中心となるのは、同期的・非同期的なモデルでメタデータ情報を検索するためのAPIインターフェースの定義です。また、API実装の挙動の仕様に加え、構造化した戻り型(return type)のインターフェースも定義しています。

このドキュメントのステイタス

この項は、このドキュメントの公開時のステイタスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。

このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。

このドキュメントは、Media Annotations Working Groupが作成したもので、W3C Video on the Web Activityの一部です。

一般の方は、この勧告に関するコメントを公開メーリング・リストpublic-media-annotation@w3.org公開アーカイブ)にお送りください。メールの件名に「[REC Comment API]」を使用してください。

ワーキンググループは、公開テスト・スイートを採用し、メディア資源のメタデータAPI 1.0のための実装報告書を作成しました。

旧バージョン以降、このドキュメントに対する変更は行なわれていません。

メディア資源のメタデータAPIは、クライアントのみ(ブラウザに、プラグインやジャバスクリプト・ライブラリーとして組み込んで)にも、クライアント―サーバ型(Webサービスとしてサーバー・サイドに)にも実装できます。実装報告書で要約しているこれらの2つのシナリオにおける、このAPIの実装レベルにより、勧告候補を脱することが可能となりました。しかし、このAPIをブラウザのコードにネイティブに実装することは想定していません。

このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。

目次

1. はじめに

この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするためのAPIを定義しています。全体的な目標は、開発者が、様々なメタデータ・フォーマットで格納されているメタデータ情報に簡便にアクセスできるようにすることです。メディア資源のオントロジー1.0[MEDIA-ONTOLOGY]で定義されているコア・プロパティーは、このAPIではピボット語彙として用いられます。これらのコア・プロパティーと対象のメタデータ・フォーマットとの関係の記述は、クロス・コミュニティーのデータ統合を提供するために、メディア資源のオントロジー1.0の仕様[MEDIA-ONTOLOGY]でドキュメント化されています。このAPIは、インターフェース定義言語Web IDL[WEBIDL]を用いて記述します。Web IDLを用いるという決定(それはECMAScriptとJavaにバインディングを提供する)は、メディア資源のオントロジーおよびメタデータAPIのユースケースと要件[MEDIA-ANNOT-REQS]に基づいています。

このAPIは、ユーザまたはアプリケーションが相互運用可能な方法でメタデータを使用できるようにするインターフェースを定義しています。メタデータ・フォーマット間の相互運用性は、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]をピボット・メタデータ・フォーマットとして用いることで保証されます。このAPIは、ウェブ上のメディア資源に関連するあるメタデータ・フォーマットで表わされた特定のメタデータ情報をリクエストするためのオペレーションを提供します。さらに、コア・プロパティーの実際の表現と、このAPIの挙動を指定します。

1.1 対象とするフォーマット

メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]の対象とするフォーマットを参照してください。

1.2 対象外のフォーマット

メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]の対象外のフォーマットを参照してください。

1.3 用語

このドキュメントでは、「オントロジー」、「メディア資源」、「プロパティー」、「マッピング」および「プロパティー値の型」という用語は、メディア資源のオントロジー1.0仕様[[MEDIA-ONTOLOGY]の2項で定義されているとおりに解釈すべきです。

2. 適合性

非規範と記されている項に加え、この仕様のすべてオーサリング・ガイドライン、図表、例および注は非規範的です。この仕様のその他の部分はすべて規範的です。

この仕様の「しなければならない(must)」、「してはならない(must not)」、「必須である/要求される(required)」、「すべきである/する必要がある(should)」、「すべきでない/する必要がない(should not)」、「推奨される(recommended)」、「することができる/してもよい(may)」、「選択できる/任意である(optional)」というキーワードは、[RFC2119]で記述されているとおりに解釈されなければなりません。

3. 設計に関する考察

この項では、API設計のきっかけとなった様々な使用のシナリオについて論じます。2つの主要なシナリオについて検討しました。そのシナリオでは、このAPIは、

実装され、呼び出されます。

多くの場合、クライアントのみの実装でも、クライアント-サーバー型の実装の場合でも、メディア資源と(または)メタデータ情報源は離れて存在しています。APIは、デフォルトでは非同期APIが指定されます。つまり、呼び出しはブロックされませんが、結果(あるいはエラー)はコールバック・メカニズムを用いて返されます。ウェブ・サービスのケースをよりサポートするために、同期モードも定義されています。同期モードはオプションです。

2つのシナリオを図1で示します。

APIの使用方法の違いによる2つのシナリオを示した図

図1: このAPIの使用方法の違いによる2つのシナリオ

この仕様は、メディア資源に対するメタデータAPIのみを定義しています。図1で示している他の要素(例えば、メタデータのアクセス/抽出/保存)はカバーしていません。

シナリオ1: クライアントのみ(ユーザ・エージェント)
最初のシナリオでは、このAPIは、ユーザ・エージェントに実装されている、つまり、プラグインやJavaScriptライブラリとしてブラウザに組み込まれています。その場合、APIの呼び出し方法は3つありえます。それらは、外部の呼び出しコードによるもの、クライアントのように機能する内部呼び出しコードによるもの、ユーザ・エージェントに拡張として付随しているものです。通常、このような実装は、非同期処理の例です。ユーザ・エージェントには、メディア資源のメタデータAPI 1.0のほかに、例えば、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]のプロパティー・マッピング・テーブルで定義されているような、メタデータのアクセス(そして、抽出)用のコンポーネントやサポート済みフォーマットのマッピングを含めることができます。さらに、メタデータ情報源(メディア資源および/またはメタデータ・ドキュメント)は、検索できなければなりません。メタデータ情報源へのアクセス(例えば、接続の確立、検索)は、ユーザ・エージェントで処理します。
シナリオ2: クライアント-サーバー型
2番目のシナリオでは、このAPIは、サーバー・サイドの同期処理の原則に従ったウェブ・サービスとして実装されます。通常、メタデータを収集するエージェントなどの非UIクライアントが、このような実装方法を用います。しかし、ユーザ・エージェントからもこのAPIにアクセス可能で、クライアント・サイドのライブラリを利用すれば、シナリオ1で述べているのと同じ方法でウェブ・サービスにアクセスすることができます。ウェブ・サービスの実装では、このシナリオにより、メディア・リポジトリ(例えば、コンテンツ・プロバイダーのアーカイブ・データベース、ムービー・ストアなど)のサポートも可能となります。このようなサービスのおかげで、ユーザ・エージェントは、メタデータ情報源を検索でき、それには、ユーザ・エージェントがサポートしていないカスタマイズされたメタデータ・フォーマットも含まれます。統合的なコンポーネント(シナリオ1を参照)とは対照的に、ウェブ・サービスでのこのAPIの実装は、ユーザ・エージェントで統合されたコンポーネントよりも複雑なマッピングをオンザフライ(on the fly)で行うことができ、より柔軟なものとなりえます(例えば、フォーマットを追加サポートするなど)。

両方のシナリオにおいて、APIは、クライアント・アプリケーションと実際のメタデータ情報源との仲介役を務めます。相互運用性は、i) メタデータ情報にアクセスするためのオペレーション、ii) 共通のオブジェクト構造、および、iii) APIの挙動(例えば、ステータス・コード)を定義することで保証されます。それに続き、実装は、次の多数の要素を実装しなければなりません。

このAPIによって、様々なメタデータ・フォーマットで格納されているメタデータ情報へのアクセスが提供されます。そのため、同じプロパティーの異なるインスタンスが存在しえます。

4. APIの記述

このAPIは、[WEBIDL]を用いて、多くのインターフェースを定義します。これらは、次のカテゴリーにグループ化できます。

次に、様々なインターフェースと、非表示ではないオペレーションについて論じます。このAPIの実装では、オペレーションの非同期モードをサポートしなければならず(must)、同期モードをサポートすることができ(may)、このドキュメントで定義しているインターフェースをサポートしなければなりません(must)。エラーが生じた場合には、例外処理の代わりに、処理状況を示すステータス・コード(4.7項を参照)が、(同期APIでは)返され、(非同時では)コールバック関数により提供されます。

その後、戻り型(つまり、MediaAnnotationとその特殊化)とMetadataSourceのインターフェースを定義しています。

この仕様の付録AのIDLフラグメントは、「Web IDL」仕様に記述されているとおり、適合IDLフラグメントに対しては必須であると解釈されなければなりません。[WEBIDL]

4.1 MediaResourceインターフェース

MediaResourceインターフェースは、このAPIの中心となるもので、特定のメディア資源のメタデータ・プロパティーにアクセスするためのオペレーションを提供します。ここでは、オペレーションの非同期と同期モードの明確な区別は、AsyncMediaResourceSyncMediaResourceという、2つの実装インターフェース(MediaResourceに由来する)の定義により達成されています。これらのインターフェースのオブジェクトは、MediaResourceインターフェースのcreateMediaResourceの呼び出しにより作成されるでしょう。指定されたメタデータ情報源に対する実際の接続は、AsyncMediaResourceまたはSyncMediaResourceのインターフェースのgetMediaPropertyオペレーションの実行で作成されるでしょう。mediaResource引数は、メディア資源を識別しますが、そのために、このAPIの実装は適切なメタデータ情報源を発見しようと試みるべきです。オプションで、オブジェクトの配列(array)を用いてメタデータ情報源への参照を受け渡し、それぞれにMetadataSourceインターフェースを実装することができます(4.6項を参照)。

interface MediaResource {
    short         getSupportedModes ();
    MediaResource createMediaResource (DOMString mediaResource, optional MetadataSource[] metadataSources, optional short mode);
};

4.1.1 メソッド

createMediaResource
このオペレーションは、AsyncMediaResourceSyncMediaResourceのインターフェースのどちらかのオブジェクトをインスタンス化します。さらに、これにより、このAPIを適用する特定のメディア資源とメタデータ情報源を設定することが可能となります。
パラメーター Null値の可否 オプション 説明
mediaResource DOMString この属性は、APIが処理すべき特定のメディア資源を設定しなければなりません。
metadataSources MetadataSource[] この属性は、追加のメタデータ情報源を指定すべきです。
mode short この属性は、希望するオペレーション・モードを指定すべきです。非同期モードには1、同期モードには2を用いるべきです。
モード引数が省略され、両方のモードが実装でサポートされている場合、非同期モードが用いらるでしょう。
例外なし。
戻り型: MediaResource
getSupportedModes
このオペレーションは、実装モードを識別するために呼び出されます。戻りコードは、非同期モードに1、同期モードに2、両方のモードに3であるべきです。
パラメータなし。
例外なし。
戻り型: short

4.1.2 Javascriptの例

getSupportedModesの例:

ma = new MediaResource();
var mode = ma.getSupportedModes();

/** Resulting in:
 * { "supportedModes" : 3 }
 */

createMediaResourceの例:

metadataSources = new MetadataSource[2];
metadataSources[0] = new MetadataSource(
                         "http://www.w3.org/2008/WebVideo/Annotations/drafts/metadata_formats/DC_example1.xml","dc");
metadataSources[1] = new MetadataSource(
                         "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG","exif");

mediaResource = new MediaResource();

if (mediaResource.getSupportedModes() == 1 || mediaResource.getSupportedModes() == 3) {
    aSyncObject = mediaResource.createMediaResource(
                         "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG",
                         metadataSources, 1);
                             
} else if (mediaResource.getSupportedModes() == 2 || mediaResource.getSupportedModes() == 3)  {
    syncObject = mediaResource.createMediaResource(
                         "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG",
                         metadataSources, 2);
}

4.2 AsyncMediaResourceインターフェース

AsyncMediaResourceインターフェースは、メディア資源のメタデータへのアクセスを可能にする多くのオペレーションを提供します。このインターフェースは、実装されていなければなりません(must)。

次に、AsyncMediaResourceインターフェースのWeb IDL記述を示し、その一部である様々なオペレーションを記述します。

この項では、インターフェース定義にMediaAnnotationsインターフェースを用いています。これは、様々なプロパティーに対する繰り返しを可能にするプロパティーに関する一般的な値を保持するためのコンテナの役割を務めます。定義は、4.4項にあります。

interface AsyncMediaResource : MediaResource {
    void getMediaProperty (DOMString[] propertyNames, PropertyCallback successCallback, ErrorCallback errorCallback,
       optional DOMString fragment, optional DOMString sourceFormat, optional DOMString language);
void getOriginalMetadata (DOMString sourceFormat, MetadataCallback successCallback, ErrorCallback errorCallback); };

4.2.1 メソッド

getMediaProperty
このオペレーションにより、特定のプロパティー、一部またはすべてのプロパティーの値の検索が、非同期方式で可能となります。特定のプロパティーが引数として受け渡され、リクエストされたプロパティーと一致する値を保持しているオブジェクトのリストが返されます。これらのオブジェクトは、MediaAnnotationインターフェースを実装しており、4.4項で説明しています。返されるオブジェクトは、リクエストされたプロパティーに応じて、異なるサブタイプを実装します(MediaAnnotationインターフェースから継承)。例えば、「title」(タイトル)をリクエストするとTitleインターフェースを実装したオブジェクトの配列を返し、「creator」(作成者)をリクエストするとCreatorインターフェースを実装したオブジェクトを得られる等々です。これらのインターフェースについては、4.5項で説明しています。例はここにあります。
パラメーター Null値の可否 オプション 説明
propertyNames DOMString[] この引数は、値を検索する必要のあるプロパティーを含んだ配列を識別します。配列が空であれば、値を持っているすべてのプロパティーが検索されるでしょう。
successCallback PropertyCallback この引数は、プロパティーへの非同期リクエストに対するコールバック・オブジェクトを保持しています。successCallbackオブジェクトは、PropertyCallbackインターフェースを実装し、リクエストされたプロパティーの全データが集められた時点で呼び出す必要のあるhandleEventオペレーションを保持しています。このhandleEventオペレーションは、新しいMediaAnnotation配列で呼び出す必要があります。
errorCallback ErrorCallback この引数は、プロパティーへの非同期リクエストの失敗に対するコールバッ・オブジェクトを保持しています。errorCallbackオブジェクトは、ErrorCallbackインターフェースを実装し、試みが失敗した時に呼び出す必要のあるhandleEventオペレーションを保持しています。このhandleEventオペレーションは、エラーのステータス・コードを表わす新しいDOMStringで呼び出す必要があります(詳細は4.7項を参照)。
fragment DOMString この引数には、メタデータがリクエストされる特定のメディア・フラグメントを識別するURIが含まれています。URIは、メディア・フラグメント[MEDIA-FRAGMENTS]仕様のURIに従わなければなりません(must)。このパラメーターはオプションです。
sourceFormat DOMString この引数は、特定のメタデータ・フォーマットを識別します。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。メタデータ・フォーマットが定義されていれば、指定されたメタデータ・フォーマットで利用できるメタデータのみが検索されます。このパラメーターはオプションです。
language DOMString この引数により、メタデータの言語の識別が可能となります。指定された言語で利用できる場合にのみ、メタデータの値が返されるでしょう。お勧めするベスト・プラクティスは、BCP 47[BCP47]を用いることです。このパラメーターはオプションです。
例外なし。
戻り型: void
getOriginalMetadata
このオペレーションにより、指定された情報源のフォーマットと一致する元のメタデータの検索が、非同期方式で可能となります。例はここにあります。
パラメーター Null値の可否 オプション 説明
sourceFormat DOMString この引数は、特定のメタデータ・フォーマットを識別します。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。メタデータ・フォーマットが定義されていれば、指定されたメタデータ・フォーマットで利用できるメタデータのみが検索されます。
successCallback MetadataCallback この引数は、元のメタデータへの非同期リクエストに対するコールバック・オブジェクトを保持しています。successCallbackオブジェクトは、MetadataCallbackインターフェースを実装し、値を持っている全プロパティーがリストアップされた時点で呼び出す必要のあるhandleEventオペレーションを保持しています。このhandleEventオペレーションは、元のメタデータを保持している新しいDOMString配列で呼び出す必要があります。
errorCallback ErrorCallback この引数は、元のメタデータへの非同期リクエストの失敗に対するコールバック・オブジェクトを保持しています。errorCallbackオブジェクトは、ErrorCallbackインターフェースを実装し、試みが失敗した時に呼び出す必要のあるhandleEventオペレーションを保持しています。このhandleEventオペレーションは、エラーのステータス・コードを表わす新しいDOMStringで呼び出す必要があります(詳細は4.7項を参照)。
例外なし。
戻り型: void

4.2.2 Callbackインターフェース

4.2.2.1 PropertyCallbackインターフェース

PropertyCallbackインターフェースは、リクエストされたプロパティーの全データが集められた時点で呼び出す必要のあるhandleEventオペレーションを保持しています。

interface PropertyCallback {
    void handleEvent (MediaAnnotation[] mediaAnnotations);
};
4.2.2.1.1 メソッド
handleEvent
このオペレーションは、全データが1つ以上のプロパティーの値に対するリクエストに応じて集められる時に呼び出されます。
パラメーター Null値の可否 オプション 説明
mediaAnnotations MediaAnnotation[] この引数は、リクエストされたプロパティーと一致する値を持つオブジェクトのリストを保持しています。これらのオブジェクトは、MediaAnnotationインターフェースを実装し、4.4項で説明しています。返されるオブジェクトは、リクエストされたプロパティーに応じて、異なるサブタイプを実装します(MediaAnnotationインターフェースから継承)。
例外なし。
戻り型: void
4.2.2.2 MetadataCallbackインターフェース

MetadataCallbackインターフェースは、リクエストされたメタデータが集められた時点で呼び出す必要のあるhandleEventオペレーションを保持しています。

interface MetadataCallback {
    void handleEvent (DOMString[] metadata);
};
4.2.2.2.1 メソッド
handleEvent
このオペレーションは、全データが元のメタデータに対するリクエストに応じて集められる時に呼び出されます。
パラメーター Null値の可否 オプション 説明
metadata DOMString[] この引数は、元のメタデータを表わすDOMStringsのリストを保持しています。複数のメタデータ・インスタンスが存在できる(例えば、1つのダブリン・コアと、1つのMPEG-7ドキュメント)ことに注意してください。
例外なし。
戻り型: void

4.2.3 Javascriptの例

非同期のgetMediaPropertyの例:

aSyncMediaResource = mediaResource.createMediaResource("http://www.imdb.com/title/tt0133152/", new Array(), 1);
aSyncMediaResource.getMediaProperty(["title"], successCallback, errorCallback, "", "", "");
                                
function successCallback(MediaAnnotation[] mediaAnnotations) {
    ...
}

/** Resulting in:
 * [ { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "Planet of the apes",
 *         "language" : en-us",
 *         ...
 *         "statusCode" : 200
 *         }
 * },
 * { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "Monkey Planet",
 *         "language" : en-us",
 *         ...,
 *         "statusCode" : 200
 *         }
 * },
 * { ...
 * } ]
 */
                
function errorCallback(DOMString error) {
    ...
}

/** Resulting in:
 * { error: { "statusCode" : 200 } }
 */

非同期のgetOriginalMetadataの例:

aSyncMediaResource = mediaResource.createMediaResource(
                         "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG",
                          new Array(), 1);
aSyncMediaResource.getOriginalMetadata("dc", successCallback, errorCallback);

function successCallback(DOMString[] metadata) {
    ...
}

/** Resulting in:
 * [ { "statusCode" : 200
 * },
 * {"originalMetadata" : "<metadata xmlns='http://example.org/myapp/'
 *                                        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 *                                        xsi:schemaLocation='http://example.org/myapp/ http://example.org/myapp/schema.xsd'
 *                                        xmlns:dc='http://purl.org/dc/elements/1.1/'>
 *                                          <dc:title>DC title</dc:title>
 *                                  </metadata>"
 * } ]
 */

                                                
function errorCallback(DOMString error) {
   ...
}

/** Resulting in:
 * { error: { "statusCode" : 200 } }
 */

4.3 SyncMediaResourceインターフェース

SyncMediaResourceインターフェースは、メディア資源のメタデータにアクセスするための多くのオペレーションを提供します。このインターフェースは、実装できます(may)。

次に、同期リクエストに対するSyncMediaResourceインターフェースのWeb IDL記述を示し、その一部である様々なオペレーションを記述します。MediaResourceは、メディア資源の識別子と、オプションでいくつかのメタデータ情報源の識別子に基づいてオブジェクトを構築するために呼び出すことができる構成子を定義します。

interface SyncMediaResource : MediaResource {
    MediaAnnotation[] getMediaProperty (DOMString[] propertyNames, optional DOMString fragment,
       optional DOMString sourceFormat, optional DOMString language);
DOMString[] getOriginalMetadata (DOMString sourceFormat); };

4.3.1 メソッド

getMediaProperty
このオペレーションにより、特定のプロパティー、一部またはすべてのプロパティーのメタデータの検索が、同期方式で可能となります。受け渡された配列は、リクエストされたプロパティーを保持しており、オブジェクトの配列が返されます。配列が空であれば、値を保持しているすべてのプロパティーがリクエストされて返されるでしょう。返されたオブジェクトは、MediaAnnotationインターフェースを実装します(4.3項を参照)。返されるオブジェクトは、リクエストされたプロパティーに応じて、異なるサブタイプを実装します(MediaAnnotationインターフェースから継承)。例えば、「title」(タイトル)をリクエストするとTitleインターフェースを実装したオブジェクトの配列を返し、「creator」(作成者)をリクエストするとCreatorインターフェースを実装したオブジェクトを得られる等々です。これらのサブタイプについては、4.4項で説明しています。オペレーションは、リクエストされたプロパティーを保持しているMediaAnnotation配列を返します。検索中にエラーが生じれば、対応するステータス・コード(例えば、400、404または415)を持つMediaAnnotationオブジェクトが生成され、配列の最初の位置に挿入されるでしょう。例はここにあります。

この項では、インターフェース定義にMediaAnnotationsインターフェースを用いています。これは、様々なプロパティーに対する繰り返しを可能にするプロパティーに関する一般的な値を保持するためのコンテナの役割を務めます。その説明は4.4項にあります。

パラメーター Null値の可否 オプション 説明
propertyNames DOMString[] この引数は、リクエストされたプロパティーを配列として保持しています。配列が空であれば、値を保持している個々のプロパティーが返されるでしょう。
fragment DOMString この引数には、メタデータがリクエストされる特定のメディア・フラグメントを識別するURIが含まれています。URIは、メディア・フラグメント[MEDIA-FRAGMENTS]仕様のURIに従わなければなりません(must)。このパラメーターはオプションです。
sourceFormat DOMString この引数は、特定のメタデータ・フォーマットを識別します。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。メタデータ・フォーマットが定義されていれば、指定されたメタデータ・フォーマットで利用できるメタデータのみが検索されます。このパラメーターはオプションです。
language DOMString この引数により、メタデータの言語の識別が可能となります。指定された言語で利用できる場合にのみ、メタデータの値が返されるでしょう。お勧めするベスト・プラクティスは、BCP 47[BCP47]を用いることです。このパラメーターはオプションです。
例外なし。
戻り型: MediaAnnotation[]
getOriginalMetadata
このオペレーションにより、指定された情報源フォーマットと一致する元のメタデータの検索が、同期方式で可能となります。オペレーションは、最初の位置にリクエストのステータス・コードを持ち、2番目の位置に元のメタデータを持つDOMString配列を返します。例はここにあります。
パラメーター Null値の可否 オプション 説明
sourceFormat DOMString この引数は、特定のメタデータ・フォーマットを識別します。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。メタデータ・フォーマットが定義されていれば、指定されたメタデータ・フォーマットで利用できるメタデータのみが検索されます。
例外なし。
戻り型: DOMString[]

4.3.2 Javascriptの例

この項の例では、MediaAnnotationインターフェースを実装したオブジェクトを得るためにgetMediaProperty()を用いています。noErrorStatus関数は、エラーが存在せず、リクエストされたプロパティーに値が含まれていることを保証します。

ここでは、同期のMediaResourceインターフェースの使用方法とそのオペレーションに関するいくつかのJavaScriptの例を挙げています。

同期のgetMediaPropertyの例:

syncMediaResource = mediaResource.createMediaResource("http://www.imdb.com/title/tt0133152/",
                          new Array(), 2);
title = syncMediaResource.getMediaProperty(["title"], "", "", "");

if (noErrorStatus(title[0].statusCode) == true) {
   ...
}                                                

/** Resulting in:
 * [ { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "Planet of the apes",
 *         "language" : en-us",
 *         ...,
 *         "statusCode" : 200
 *         }
 * },
 * { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "Planet der Affen",
 *         "language" : "de-de",
 *         ...,
 *         "statusCode" : 200
 *         }
 * },
 * { ...
 * } ]
 */

同期のgetOriginalMetadataの例:

syncMediaResource = mediaResource.createMediaResource("http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG",
                         new Array(), 2);
dcMetadata = syncMediaResource.getOriginalMetadata("DC");

if (noErrorStatus(dcMetadata[0].statusCode) == true) {
    ...
}

/** Resulting in:
 * [ { "statusCode" : 200
 * },
 * {"originalMetadata" : "<metadata xmlns='http://example.org/myapp/'
 *                                        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 *                                        xsi:schemaLocation='http://example.org/myapp/ http://example.org/myapp/schema.xsd'
 *                                        xmlns:dc='http://purl.org/dc/elements/1.1/'>
 *                                          <dc:title>DC title</dc:title>
 *                                  </metadata>"
 * } ]
 */

4.4 MediaAnnotationインターフェース

MediaAnnotationインターフェースは、MediaResource.getMediaPropertyオペレーションの戻り型として用いられます。そこれは、メタデータ・プロパティーに関する一般的な値を保持するためのコンテナです。

一部のメタデータ・プロパティーは、複合型として定義されているため、MediaAnnotationの特定の派生型が定義されており、その特定の属性が追加されています。しかし、MediaAnnotationは、(value属性の)プロパティーの印刷可能な文字列表現にアクセスするための汎用的な戻り型として使用できます。これには、ステータス・コードも含まれています。一般的なエラーの場合には、返されるMediaAnnotation配列の最初の要素にグローバルなエラー・コードが含まれています。そうでない場合には、ステータスは、返される個々のプロパティーに提供できます。

個々のメタデータ・プロパティーごとに派生インターフェースを指定するために、次の、設計に関する考察を用いました。

interface MediaAnnotation {
    attribute DOMString propertyName;
    attribute DOMString value;
    attribute DOMString language;
    attribute DOMString sourceFormat;
    attribute DOMString fragmentIdentifier;
    attribute DOMString mappingType;
    attribute short     statusCode;
};

4.4.1 属性

DOMString型のfragmentIdentifier
この属性は、メタデータが関連しているフラグメントを決定するURIであるべきです(should)。
例外なし。
DOMString型のlanguage
この属性は、メタデータの言語を保持すべきです(should)。言語が特定のプロパティーに適用できない場合には、属性は空です。お勧めするベスト・プラクティスは、BCP 47[BCP47]を用いることです。
例外なし。
DOMString型のmappingType
この属性は、セマンティックなレベルのマッピングで論じたような種類のマッピングを指定します。この属性の値は、マッピング特性の1つであるべきです(should)。
例外なし。
DOMString型のpropertyName
プロパティーの名が指定されなければならず(must)、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]に定義されているプロパティー名に対応しているべきです(should)。
DOMString型のsourceFormat
この属性により、メタデータが検索されるメタデータ情報源の指定が可能となります。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。
例外なし。
short型のstatusCode
この属性は、関連するプロパティーに対するステータス・コード(例えば、構造化された返り値を示す264)を指定しなければなりません(must)。
例外なし。
DOMString型のvalue
この属性は、印刷可能な文字列表現で埋められていなければなりません(must)。
例外なし。

4.4.2 JavaScriptの例

noErrorStatus関数は、エラーが存在せず、リクエストされたプロパティーに値が含まれていることを保証します。MediaAnnotationインターフェースは決してインスタンス化されず、派生インターフェースのインスタンスのみが作成されるでしょう。これらは、少なくともMediaAnnotationインターフェースで指定されたパラメーターで埋められていなければならず(must)、特定の属性で埋めることができます(may)。

mediaAnnotation = image.getMediaProperty(["title"], "", "", "");

if (noErrorStatus(mediaAnnotation[0].statusCode) == true) {                    
   ...
}

/** Resulting in:
 * [ { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "Gone with the Wind",
 *         "language" : "en-us",
 *         "sourceFormat" : "mpeg7",
 *         "fragmentIdentifier" : "http://www.example.com/video.ogv#t=10,20",
 *         "mappingType" : "Exact match",
 *         "statusCode" : 200
 *         } 
 * } ]

4.5 プロパティー

この項では、MediaResource.getMediaProperty()オペレーションでクエストできる、様々なプロパティーについて記述します。このオペレーションを呼び出せば、指定されたプロパティーを表わすMediaAnnotationインターフェースを実装したオブジェクトが返されます。すべてのプロパティーは、MediaAnnotationインターフェースから受け継いだインターフェースで表わされます(上記の設計ガイドラインに従って)。

次の戻り型インターフェースのいくつかは、プロパティーの値をURI(つまり、統制語に対する指示子)または自由形式のテキストとして保持できます。URIの方が望ましく、可能な(つまり、情報が含まれているか、情報源のメタデータから構築できる)場合には常に、MediaAnnotationインターフェース(または、特殊化した型)の各属性が入力されるべきです。

下記では、プロパティーごとに、(同期)JavaScriptの例で、プロパティーの固有の属性の用法を示します。どの場合も、MediaAnnotationインターフェースの一般属性もリクエストできます。

4.5.1 識別プロパティー

4.5.1.1 識別子(Identifier)

MediaResource.getMediaPropertyオペレーションが「identifier」(識別子)というpropertyNamesパラメーターの値で呼び出されれば、Identifierインターフェースを実装したオブジェクトが、identifierプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Identifier : MediaAnnotation {
    attribute DOMString identifierLink;
};
4.5.1.1.1 属性
この属性は、メディア資源を識別するURIを保持します。
例外なし。
4.5.1.1.2 JavaScriptの例
id = image.getMediaProperty(["identifier"]);
                                     
/** Resulting in:
 * [ { "Identifier" : {
 *         "propertyName" : "identifier",
 *         "identifierLink" : "urn:uuid:36a87260-1102-11df-8a39-0800200c9a66",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.1.2 タイトル(Title)

MediaResource.getMediaPropertyオペレーションが「title」(タイトル)というpropertyNamesパラメーターの値で呼び出されれば、Titleインターフェースを実装したオブジェクトが、titleプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Title : MediaAnnotation {
    attribute DOMString titleLabel;
    attribute DOMString typeLink;
    attribute DOMString typeLabel;
};
4.5.1.2.1 属性
DOMString型のtitleLabel
この属性は、タイトルをプレーンな文字列として保持します。
例外なし。
DOMString型のtypeLabel
この属性は、タイトルの型をプレーンな文字列として保持します。
例外なし。
この属性は、タイトルの型をURIとして保持します。
例外なし。
4.5.1.2.2 JavaScriptの例
title = song.getMediaProperty(["title"]);
                    
/** Resulting in:
 * [ { "Title" : {
 *         "propertyName" : "title",
 *         "titleLabel" : "Artificial Horizon" ,
 *         "typeLink" : "http://www.ebu.ch/metadata/cs/ebu_ObjectTypeCodeCS.xml#21",
 *         "typeLabel" : "Album title",
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.1.3 言語(Language)

MediaResource.getMediaPropertyオペレーションが「language」(言語)というpropertyNamesパラメーターの値で呼び出されれば、Languageインターフェースを実装したオブジェクトが、languageプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Language : MediaAnnotation {
    attribute DOMString languageLink;
    attribute DOMString languageLabel;
};
4.5.1.3.1 属性
DOMString型のlanguageLabel
この属性は、メディア資源の言語をプレーンな文字列として表わし、これはgetMediaPropertyオペレーションでフィルタリングできます。お勧めするベスト・プラクティスは、BCP 47[BCP47]を用いることです。
例外なし。
この属性は、メディア資源の言語をURIとして表わします。
例外なし。
4.5.1.3.2 JavaScriptの例
language = video.getMediaProperty(["language"]);
        
/** Resulting in:
 * [ { "Language" : {
 *         "propertyName" : "language",
 *         "languageLabel" : "en-us",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.1.4 ロケータ(Locator)

MediaResource.getMediaPropertyオペレーションが「locator」(ロケータ)というpropertyNamesパラメーターの値で呼び出されれば、Locatorインターフェースを実装したオブジェクトが、locatorプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Locator : MediaAnnotation {
    attribute DOMString locatorLink;
};
4.5.1.4.1 属性
この属性は、メディア資源の位置をURIで指定します。
例外なし。
4.5.1.4.2 JavaScriptの例
locator = image.getMediaProperty(["locator"]);

/** Resulting in:
 * [ { "Locator" : {
 *         "propertyName" : "locator",
 *         "locatorLink" : "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */

4.5.2 作成プロパティー

4.5.2.1 寄与者(Contributor)

MediaResource.getMediaPropertyオペレーションが「contributor」(寄与者)というpropertyNamesパラメーターの値で呼び出されれば、Contributorインターフェースを実装したオブジェクトが、contributorプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Contributor : MediaAnnotation {
    attribute DOMString contributorLink;
    attribute DOMString contributorLabel;
    attribute DOMString roleLink;
    attribute DOMString roleLabel;
};
4.5.2.1.1 属性
DOMString型のcontributorLabel
この属性は、寄与者(つまり、寄与したエージェント)をプレーンな文字列として表わします。
例外なし。
この属性は、寄与者(つまり、寄与したエージェント)をURIとして表わします。
例外なし。
DOMString型のroleLabel
この属性は、寄与者の役割をプレーンな文字列として表わします。
例外なし。
この属性は、寄与者の役割をURIとして表わします。
例外なし。
4.5.2.1.2 JavaScriptの例
contributor = video.getMediaProperty(["contributor"]);

/** Resulting in:
 * [ { "Contributor" : {
 *         "propertyName" : "contributor",
 *         "contributorLink" : "http://en.wikipedia.org/wiki/Tim_Burton",
 *         "contributorLabel" : "Tim Burton",
 *         "roleLink" : "http://www.imdb.com/name/nm0000318/",
 *         "roleLabel" : "director",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.2.2 作成者(Creator)

MediaResource.getMediaPropertyオペレーションが「creator」(作成者)というpropertyNamesパラメーターの値で呼び出されれば、Creatorインターフェースを実装したオブジェクトが、creatorプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Creator : MediaAnnotation {
    attribute DOMString creatorLink;
    attribute DOMString creatorLabel;
    attribute DOMString roleLink;
    attribute DOMString roleLabel;
};
4.5.2.2.1 属性
DOMString型のcreatorLabel
この属性は、作成者(つまり、メディア資源の作成に関与したエージェント)をプレーンな文字列として表わします。
例外なし。
この属性は、作成者(つまり、メディア資源の作成に関与したエージェント)をURIとして表わします。
例外なし。
DOMString型のroleLabel
この属性は、作成者の役割をプレーンな文字列として表わします。
例外なし。
この属性は、作成者の役割をURIとして表わします。
例外なし。
4.5.2.2.2 JavaScriptの例
creator = video.getMediaProperty(["creator"]);

/** Resulting in:
 * [ { "Creator" : {
 *         "propertyName" : "creator",
 *         "creatorLink" : "http://dbpedia.org/resource/William_Shakespeare",
 *         "creatorLabel" : "William Shakespeare",
 *         "roleLink" : "http://www.ebu.ch/metadata/cs/ebu_RoleCodeCS.xml#22.5",
 *         "roleLabel" : "playwright",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.2.3 MADate

MediaResource.getMediaPropertyオペレーションが「date」(日付)というpropertyNamesパラメーターの値で呼び出されれば、Dateインターフェースを実装したオブジェクトが、dateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]に定義されている)を表わして返されます。このプロパティーは、ウェブ・アプリケーションの「Date」(日付)という名の他のオブジェクトと名前が衝突しないように「Date」から「MADate」に改名しました。

interface MADate : MediaAnnotation {
    attribute DOMString date;
    attribute DOMString typeLink;
    attribute DOMString typeLabel;
};
4.5.2.3.1 属性
DOMString型のdate
この属性は、メディア資源に関する日付を表わします。日付の値は、入手可能な正確さに応じて、gYear、gYearMonth、date、dateTimeまたはdateTimeStampという特殊な日付/時間データ・型のXMLスキーマの1つを用いて表わさなければなりません(must)。
例外なし。
DOMString型のtypeLabel
この属性は、日付のカテゴリー(例えば、作成日、放送日、公開日、記録日および編集日)をプレーンな文字列として定義します。
例外なし。
この属性は、期日のカテゴリー(例えば、作成日、放送日、公開日、記録日および編集日)をURIとして定義します。
例外なし。
4.5.2.3.2 JavaScriptの例
maDate = video.getMediaProperty(["date"]);

/** Resulting in:
 * [ { "MADate" : {
 *         "propertyName" : "date",
 *         "date": "2009-06-26T15:30:00",
 *         "typeLink" : "urn:smpte:ul:06.0E.2B.34.01.01.01.02.07.02.01.10.02.03.00.00",
 *         "typeLabel" : "modification date",
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.2.4 位置(Location)

MediaResource.getMediaPropertyオペレーションが「location」(位置)というpropertyNamesパラメーターの値で呼び出されれば、Locationインターフェースを実装したオブジェクトが、locationプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Location : MediaAnnotation {
    attribute DOMString locationLink;
    attribute DOMString locationLabel;
    attribute double    longitude;
    attribute double    latitude;
    attribute double    altitude;
    attribute DOMString coordinateSystemLabel;
    attribute DOMString coordinateSystemLink;
};
4.5.2.4.1 属性
double型のaltitude
この属性は、coordiateSystem属性で指定される座標体系で、その場所の高度を保持します。
例外なし。
DOMString型のcoordinateSystemLabel
この属性は、名前で用いられる座標体系を識別します。
例外なし。
この属性は、URIで用いられる座標体系を識別します。
例外なし。
double型のlatitude
この属性は、coordiateSystem属性で指定される座標体系で、その場所の緯度を保持します。
例外なし。
DOMString型のlocationLabel
この属性は、位置をその名前によってプレーンな文字列として識別します。
例外なし。
この属性は、位置をURIとして識別します。
例外なし。
double型のlongitude
この属性は、coordiateSystem属性で指定される座標体系で、その場所の経度を保持します。
例外なし。
4.5.2.4.2 JavaScriptの例
location = video.getMediaProperty(["location"]);

/** Resulting in:
 * [ { "Location" : {
 *         "propertyName" : "location",
 *         "locationLink" : "http://en.wikipedia.org/wiki/San_Jose,_California",
 *         "locationLabel" : "San Jose",
 *         "longitude" : 37.33986481118008,
 *         "latitude" : -121.88507080078125,
 *         "altitude" : 0,
 *         "coordinateSystemLabel" : "WGS84",
 *         "coordinateSystemLink" : "http://www.w3.org/2003/01/geo/wgs84_pos#Point",
 *         "statusCode" : 200
 *         }
 * } ]
 */

4.5.3 内容プロパティー

4.5.3.1 内容記述(Description)

MediaResource.getMediaPropertyオペレーションが「description」(内容記述)というpropertyNamesパラメーターの値で呼び出されれば、Descriptionインターフェースを実装したオブジェクトが、descriptionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Description : MediaAnnotation {
    attribute DOMString descriptionLabel;
};
4.5.3.1.1 属性
DOMString型のdescriptionLabel
この属性は、メディア資源の内容の記述を含んでいます。
例外なし。
4.5.3.1.2 JavaScriptの例
description = image.getMediaProperty(["description"]);

/** Resulting in:
 * [ { "Description" : {
 *         "propertyName" : "description",
 *         "descriptionLabel" : "Group picture of the W3C MAWG at the F2F meeting in Stockholm.",
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.3.2 キーワード(Keyword)

MediaResource.getMediaPropertyオペレーションが「keyword」(キーワード)というpropertyNamesパラメーターの値で呼び出されれば、Keywordインターフェースを実装したオブジェクトが、keywordプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Keyword : MediaAnnotation {
    attribute DOMString keywordLabel;
    attribute DOMString keywordLink;
};
4.5.3.2.1 属性
DOMString型のkeywordLabel
この属性は、内容をプレーンな文字列として記述したキーワードを含んでいます。
例外なし。
この属性は、内容を記述したキーワードを表わすURIを含んでいます。
例外なし。
4.5.3.2.2 JavaScriptの例
keyword = image.getMediaProperty(["keyword"]);

/** Resulting in:
 * [ { "Keyword" : {
 *         "propertyName" : "keyword",
 *         "keywordLabel" : "meeting with people from outside the organisation",
 *         "keywordLink" : "http://sw.opencyc.org/2008/06/10/concept/en/MeetingWithOrganizationalOutsiders",                    
 *         "statusCode" : 200
 *         }
 * }, 
 * { "Keyword" : {
 *         "propertyName" : "keyword",
 *         "keywordLabel" : "standardisation",
 *         "keywordLink" : "http://purl.org/vocabularies/princeton/wn30/synset-standardization-noun-1",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.3.3 ジャンル(Genre)

MediaResource.getMediaPropertyオペレーションが「genre」(ジャンル)というpropertyNamesパラメーターの値で呼び出されれば、Genreインターフェースを実装したオブジェクトが、genreプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Genre : MediaAnnotation {
    attribute DOMString genreLabel;
    attribute DOMString genreLink;
};
4.5.3.3.1 属性
DOMString型のgenreLabel
この属性は、メディア資源のジャンルをプレーンな文字列として表わします。
例外なし。
この属性は、メディア資源のジャンルをURIとして表わします。
例外なし。
4.5.3.3.2 JavaScriptの例
genre = image.getMediaProperty(["genre"]);

/** Resulting in:
 * [ { "Genre" : {
 *         "propertyName" : "genre",
 *         "genreLabel" : "Sports",
 *         "genreLink" : "http://www.ebu.ch/metadata/cs/ebu_ContentGenreCS.xml#3.1.1.9"                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.3.4 格付け(Rating)

MediaResource.getMediaPropertyオペレーションが「rating」(格付け)というpropertyNamesパラメーターの値で呼び出されれば、Ratingインターフェースを実装したオブジェクトが、ratingプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義している)を表わして返されます。

interface Rating : MediaAnnotation {
    attribute double    ratingValue;
    attribute DOMString ratingSystemLabel;
    attribute DOMString ratingSystemLink;
    attribute double    minimum;
    attribute double    maximum;
};
4.5.3.4.1 属性
double型のmaximum
この属性は、格付体系で最大の格付け値を指定します。
例外なし。
double型のminimum
この属性は、格付体系で最小の格付け値を指定します。
例外なし。
DOMString型のratingSystemLabel
この属性は、格付体系をプレーンな文字列で識別します。
例外なし。
この属性は、格付体系をURIとして識別します。
例外なし。
double型のratingValue
この属性は、格付けの値を含んでいます。
例外なし。
4.5.3.4.2 JavaScriptの例
rating = image.getMediaProperty(["rating"]);

/** Resulting in:
 * [ { "Rating" : {
 *         "propertyName" : "rating",
 *         "ratingValue" : 10.0,
 *         "ratingSystemLabel" : "John Doe",
 *         "ratingSystemLink" : "http://individuals.example.com/JohnDoe",
 *         "minimum" : 0,
 *         "maximum" : 10.0,                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */

4.5.4 関係プロパティー

4.5.4.1 関係(Relation)

MediaResource.getMediaPropertyオペレーションが「relation」(関係)というpropertyNamesパラメーターの値で呼び出されれば、Relationインターフェースを実装したオブジェクトが、relationプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Relation : MediaAnnotation {
    attribute DOMString targetLink;
    attribute DOMString targetLabel;
    attribute DOMString typeLink;
    attribute DOMString typeLabel;
};
4.5.4.1.1 属性
DOMString型のtargetLabel
この属性は、関連する資源をプレーンな文字列で識別します。
例外なし。
この属性は、関連する資源をURIで識別します。
例外なし。
DOMString型のtypeLabel
この属性は、関係の型をプレーンな文字列で指定します。
例外なし。
この属性は、関係の型をURIで指定します。
例外なし。
4.5.4.1.2 JavaScriptの例
relation = image.getMediaProperty(["relation"]);

/** Resulting in:
 * [ { "Relation" : {
 *         "propertyName" : "relation",
 *         "targetLink" : "http://www.w3.org/2008/WebVideo/Annotations/wiki/Image:MAWG-Stockholm-20090626_thumb.JPG",
 *         "targetLabel" : "Group picture of MAWG in Stockholm",
 *         "typeLink" : "http://www.ebu.ch/metadata/cs/ebu_HowRelatedCS.xml#19",
 *         "typeLabel" : "thumbnail",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.4.2 コレクション(Collection)

MediaResource.getMediaPropertyオペレーションが「collection」(コレクション)というpropertyNamesパラメーターの値で呼び出されれば、Collectionインターフェースを実装したオブジェクトが、collectionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Collection : MediaAnnotation {
    attribute DOMString collectionLink;
    attribute DOMString collectionLabel;
};
4.5.4.2.1 属性
DOMString型のcollectionLabel
この属性は、メディア資源の起源となったコレクションの名前をプレーンな文字列として保持します。
例外なし。
この属性は、メディア資源の起源となったコレクションの名前をURIとして保持します。
例外なし。
4.5.4.2.2 JavaScriptの例
collection = image.getMediaProperty(["collection"]);

/** Resulting in:
 * [ { "Collection" : {
 *         "propertyName" : "collection",
 *         "collectionLink" : "http://individuals.example.com/JohnDoe/myWorkPictures/",
 *         "collectionLabel" : "My Work Pictures",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */

4.5.5 権利プロパティー

4.5.5.2 方針(Policy)

MediaResource.getMediaPropertyオペレーションが「policy」(方針)というpropertyNamesパラメーターの値で呼び出されれば、Policyインターフェースを実装したオブジェクトが、policyプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Policy : MediaAnnotation {
    attribute DOMString statementLink;
    attribute DOMString statementLabel;
    attribute DOMString typeLink;
    attribute DOMString typeLabel;
};
4.5.5.2.1 属性
DOMString型のstatementLabel
この属性は、方針ステートメントのプレーンな文字列を含んでいます。
例外なし。
この属性は、方針ステートメントのURIを含んでいます。
例外なし。
DOMString型のtypeLabel
この属性は、方針の型をプレーンな文字列として識別します。
例外なし。
この属性は、方針の型をURIとして識別します。
例外なし。
4.5.5.2.2 JavaScriptの例
policy = image.getMediaProperty(["policy"]);

/** Resulting in:
 * [ { "Policy" : {
 *         "propertyName" : "policy",
 *         "statementLink" : "http://creativecommons.org/licenses/by/2.5/",
 *         "statementLabel" : "Attribution 2.5 Generic (CC BY 2.5)",
 *         "typeLabel" : "license",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */

4.5.6 公開プロパティー

4.5.6.1 公開者(Publisher)

MediaResource.getMediaPropertyオペレーションが「publisher」(公開者)というpropertyNamesパラメーターの値で呼び出されれば、Publisherインターフェースを実装したオブジェクトが、publisherプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Publisher : MediaAnnotation {
    attribute DOMString publisherLink;
    attribute DOMString publisherLabel;
};
4.5.6.1.1 属性
DOMString型のpublisherLabel
この属性は、公開者をプレーンな文字列として表わします。
例外なし。
この属性は、公開者をURIとして表わします。
例外なし。
4.5.6.1.2 JavaScriptの例
publisher = image.getMediaProperty(["publisher"]);

/** Resulting in:
 * [ { "Publisher" : {
 *         "propertyName" : "publisher",
 *         "publisherLabel" : "ACME",
 *         "publisherLink" : "http://company.example.com/ACME",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.6.2 対象利用者(TargetAudience)

MediaResource.getMediaPropertyオペレーションが「targetAudience」(対象利用者)というpropertyNamesパラメーターの値で呼び出されれば、TargetAudienceインターフェースを実装したオブジェクトが、targetAudienceプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface TargetAudience : MediaAnnotation {
    attribute DOMString audienceLink;
    attribute DOMString audienceLabel;
    attribute DOMString classificationSystemLink;
    attribute DOMString classificationSystemLabel;
};
4.5.6.2.1 属性
DOMString型のaudienceLabel
この属性は、対象利用者をプレーンな文字列で識別します。
例外なし。
この属性は、対象利用者をURIで識別します。
例外なし。
DOMString型のclassificationSystemLabel
この属性は、分類体系をプレーンな文字列で指定します。
例外なし。
この属性は、分類体系をURIで指定します。
例外なし。
4.5.6.2.2 JavaScriptの例
targetAudience = image.getMediaProperty(["targetAudience"]);

/** Resulting in:
 * [ { "TargetAudience" : {
 *         "propertyName" : "targetAudience",
 *         "audienceLink" : "http://www.mpaa.org/ratings/what-each-rating-means#NC-17",
 *         "audienceLabel" : "No One 17 and Under Admitted",
 *         "classificationSystemLink" : "http://www.mpaa.org/ratings",
 *         "classificationSystemLabel" : "MPAA",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */

4.5.7 フラグメント・プロパティー

4.5.7.1 フラグメント(Fragment)

MediaResource.getMediaPropertyオペレーションが「fragment」(フラグメント)というpropertyNamesパラメーターの値で呼び出されれば、Fragmentインターフェースを実装したオブジェクトが、fragmentプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Fragment : MediaAnnotation {
    attribute DOMString identifier;
    attribute DOMString roleLink;
    attribute DOMString roleLabel;
};
4.5.7.1.1 属性
DOMString型のidentifier
この属性は、フラグメントをメディア・フラグメントURI(時間、空間またはトラック)として識別します。
例外なし。
DOMString型のroleLabel
この属性は、フラグメントの役割をプレーンな文字列として識別し、それはgetMediaPropertyオペレーションでフィルタリングできます。
例外なし。
この属性は、フラグメントの役割をURIとして識別し、それはgetMediaPropertyオペレーションでフィルタリングできます。
例外なし。
4.5.7.1.2 JavaScriptの例
fragment = movie.getMediaProperty(["fragment"]);

/** Resulting in:
 * [ { "Fragment" : {
 *         "propertyName" : "fragment",
 *         "identifier" : "http://www.example.com/video.ogv#t=10,20",
 *         "roleLabel" : "chapter",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.7.2 名前付きフラグメント(NamedFragment)

MediaResource.getMediaPropertyオペレーションが「namedFragment」(名前付きフラグメント)というpropertyNamesパラメーターの値で呼び出されれば、NamedFragmentインターフェースを実装したオブジェクトが、namedFragmentプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface NamedFragment : MediaAnnotation {
    attribute DOMString identifier;
    attribute DOMString label;
};
4.5.7.2.1 属性
DOMString型のidentifier
この属性は、名前付きフラグメントをメディア・フラグメントURIで識別します。
例外なし。
DOMString型のlabel
この属性は、名前付きメディア・フラグメントのプレーン・テキスト・ラベルを含んでおり、名前付きフラグメントからメディア・フラグメントURIを構築するためにそれを使用できます。
例外なし。
4.5.7.2.2 JavaScriptの例
namedFragment = movie.getMediaProperty(["namedFragment"]);

/** Resulting in:
 * [ { "NamedFragment" : {
 *         "propertyName" : "namedFragment",
 *         "identifier" : "http://www.example.com/video.ogv#t=30,35",
 *         "label" : "kissScene",
 *         "statusCode" : 200
 *         } 
 * } ]
 */

4.5.8 技術プロパティー

4.5.8.1 フレーム・サイズ(FrameSize)

MediaResource.getMediaPropertyオペレーションが「frameSize」(フレーム・サイズ)というpropertyNamesパラメーターの値で呼び出されれば、FrameSizeインターフェースを実装したオブジェクトが、frameSizeプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface FrameSize : MediaAnnotation {
    attribute double    width;
    attribute double    height;
    attribute DOMString unit;
};
4.5.8.1.1 属性
double型のheight
この属性は、フレームの高さを表わします。
例外なし。
DOMString型のunit
この属性は、フレームの幅/高さの単位を表わします。デフォルト値はピクセルです。
例外なし。
double型のwidth
この属性は、フレームの幅を表わします。
例外なし。
4.5.8.1.2 JavaScriptの例
frameSize = image.getMediaProperty(["frameSize"]);

/** Resulting in:
 * [ { "FrameSize" : {
 *         "propertyName" : "framesize",
 *         "width" : 3072,
 *         "height" : 2304,
 *         "unit" : "pixels",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.2 圧縮(Compression)

MediaResource.getMediaPropertyオペレーションが「compression」(圧縮)というpropertyNamesパラメーターの値で呼び出されれば、Compressionインターフェースを実装したオブジェクトが、compressionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface FrameSize : MediaAnnotation {
    attribute DOMString compressionLink;
    attribute DOMString compressionLabel;
};
4.5.8.2.1 属性
DOMString型のcompressionLabel
この属性は、メディア資源の圧縮の型をプレーンな文字列として指定します。
例外なし。
この属性は、メディア資源の圧縮の型をURIで指定します。
例外なし。
4.5.8.2.2 JavaScriptの例
compression = video.getMediaProperty(["compression"]);

/** Resulting in:
 * [ { "Compression" : {
 *         "propertyName" : "compression",
 *         "compressionLabel" : "H.264/AVC",
 *         "compressionLink" : "urn:example-org:codingnames2010#ITU-H264",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.3 時間(Duration)

MediaResource.getMediaPropertyオペレーションが「duration」(時間)というpropertyNamesパラメーターの値で呼び出されれば、Durationインターフェースを実装したオブジェクトが、durationプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Duration : MediaAnnotation {
    attribute double duration;
};
4.5.8.3.1 属性
double型のduration
この属性は、メディア資源の時間を(秒で)doubleの値として表わします。
例外なし。
4.5.8.3.2 JavaScriptの例
duration = video.getMediaProperty(["duration"]);
                    
/** Resulting in:
 * [ { "Duration" : {
 *         "propertyName" : "duration",
 *         "duration" : 3600,                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.4 フォーマット(Format)

MediaResource.getMediaPropertyオペレーションが「format」(フォーマット)というpropertyNamesパラメーターの値で呼び出されれば、Formatインターフェースを実装したオブジェクトが、formatプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface Format : MediaAnnotation {
    attribute DOMString formatLink;
    attribute DOMString formatLabel;
};
4.5.8.4.1 属性
DOMString型のformatLabel
この属性は、メディア資源のMIME形式を指定します。
例外なし。
この属性は、メディア資源のMIME形式をURIで識別します。
例外なし。
4.5.8.4.2 JavaScriptの例
format = image.getMediaProperty(["format"]);

/** Resulting in:
 * [ { "Format" : {
 *         "propertyName" : "format",
 *         "formatLabel" : "image/jpeg",
 *         "formatLink" : "http://dbpedia.org/resource/JPEG",                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.5 サンプリング・レート(SamplingRate)

MediaResource.getMediaPropertyオペレーションが「samplingRate」(サンプリング・レート)というpropertyNamesパラメーターの値で呼び出されれば、SamplingRateインターフェースを実装したオブジェクトが、samplingRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface SamplingRate : MediaAnnotation {
    attribute double samplingRate;
};
4.5.8.5.1 属性
double型のsamplingRate
この属性は、音声サンプリング・レートを(Hzで)doubleとして指定します。
例外なし。
4.5.8.5.2 JavaScriptの例
samplingrate = audio.getMediaProperty(["samplingRate"]);

/** Resulting in:
 * [ { "SamplingRate" : {
 *         "propertyName" : "samplingRate",
 *         "samplingRate" : 44100,                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.6 フレーム・レート(FrameRate)

MediaResource.getMediaPropertyオペレーションが「frameRate」(フレーム・レート)というpropertyNamesパラメーターの値で呼び出されれば、FrameRateインターフェースを実装したオブジェクトが、frameRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface FrameRate : MediaAnnotation {
    attribute double frameRate;
};
4.5.8.6.1 属性
double型のframeRate
この属性は、フレームレートを(fpsで)doubleの値として指定します。
例外なし。
4.5.8.6.2 JavaScriptの例
framerate = video.getMediaProperty(["frameRate"]);

/** Resulting in:
 * [ { "FrameRate" : {
 *         "propertyName" : "frameRate",
 *         "frameRate" : 30,                    
 *         "statusCode" : 200
 *         } 
 * } ]
 */
4.5.8.7 平均ビットレート(AverageBitRate)

MediaResource.getMediaPropertyオペレーションが「averageBitRate」(平均ビットレート)というpropertyNamesパラメーターの値で呼び出されれば、AverageBitRateインターフェースを実装したオブジェクトが、averageBitRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface AverageBitRate : MediaAnnotation {
    attribute double averageBitRate;
};
4.5.8.7.1 属性
double型のaverageBitRate
この属性は、平均ビット・レートを(kbpsで)doubleの値として指定します。
例外なし。
4.5.8.7.2 JavaScriptの例
bitrate = video.getMediaProperty(["averageBitRate"]);

/** Resulting in:
 * [ { "AverageBitRate" : {
 *         "propertyName" : "averageBitRate",
 *         "averageBitRate" : 45.06,                    
 *         "statusCode" : 200
 *         }
 * } ]
 */
4.5.8.8 トラック数(NumTracks)

MediaResource.getMediaPropertyオペレーションが「numTracks」(トラック数)というpropertyNamesパラメーターの値で呼び出されれば、NumTracksインターフェースを実装したオブジェクトが、numTracksプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表わして返されます。

interface NumTracks : MediaAnnotation {
    attribute short     number;
    attribute DOMString typeString;
};
4.5.8.8.1 属性
short型のnumber
この属性は、トラックの数を整数の値として指定します。
例外なし。
DOMString型のtypeString
この属性は、数えられたトラックの型をプレーンな文字列(例えば、音声、サブタイトル)として指定します。
例外なし。
4.5.8.8.2 JavaScriptの例
numTracks = video.getMediaProperty(["numTracks"]);

/** Resulting in:
 * [ { "NumTracks" : {
 *         "propertyName" : "numTracks",
 *         "number" : 2,
 *         "typeString" : "audio",                    
 *         "statusCode" : 200
 *         }
 * } ]
 */

4.6 MetadataSourceインターフェース

MetadataSourceインターフェースは、他のメタデータ情報源を識別するために用いられます。

interface MetadataSource {
    attribute DOMString metadataSource;
    attribute DOMString sourceFormat;
};

4.6.1 属性

DOMString型のmetadataSource
メタデータ情報源を識別するURI。
例外なし。
DOMString型のsourceFormat
実際のメタデータ・フォーマットの名前。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。
例外なし。

4.6.2 Javascriptの例

metadataSource = new MetadataSource("http://www.w3.org/2008/WebVideo/Annotations/drafts/metadata_formats/DC_example1.xml","dc");

4.7 APIステータス・コード

この項では、システムの挙動を示すために定義されているAPIのステータス・コードを紹介します。4.4項で述べているように、ステータス・コードは、APIに対するメソッドの呼び出しによって返されたMediaAnnotationオブジェクトの属性の1つとして返されます。これらのステータス・コードは、APIレベルで用いられ、クライアント・サイドがサーバー・サイドのいずれかの実装に適用されます。

数値コード テキストによる記述
200 OK プロパティーは正しく伝えられた。
204 コンテンツなし プロパティーはコンテンツなしに検索された。
206 部分的コンテンツ 結果集合に格納された利用可能なデータのサブセットのみ
400 不正リクエスト 構文エラー
404 存在不明 クエリ資源が見つからなかった。
415 非サポート・メディア・タイプ 画像データ格納に対し時間要求があった。
462 情報源フォーマットにおけるプロパティー未定義 位置がMediaRSSに定義されていない。
500 サーバ内部エラー 内部ライブラリ(例えば、エクストラクタ)衝突
562 プロパティー未サポート 実装されたプロパティーのサブセット

5. 使用方法の例

5.1 JavaScript APIとしての使用

ここでは、実際の実装にJavaScriptを用いてこのAPIを利用する方法の例をいくつか紹介します。さらに、これらの例では、このAPIの実装が、特定のメディア資源に対応したメタデータが存在している場所を知っているとみなしています(必要ならば、MetadataSourceインターフェースを用いてメタデータの場所を設定できます)。その実装は、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]のコア・プロパティーに対し、様々なメタデータ・フォーマットのマッピングを提供すべきです。

例1: 映画「地獄の黙示録」の監督の名前を返す。
//search the video array for the one with title "Apocalypse now" 
for (var i = 0; i < mediaResourceVideoArray.length; i++) { 

    //request for the titles of the video, the variable "titles"
    //will be filled with an array of MediaAnnotation objects. 
    titles = mediaResourceVideoArray[i].getMediaProperty(["title"], "", "", ""); 
    
    //check if the request is finished correctly
    if (noErrorStatus(titles[0].statusCode) == true) {

        for (var j = 0; j < titles.length; j++) { 

            //check if the title matches 
            if (titles[j].titleLabel == "Apocalypse Now") {

                //request for the director of the video, the variable "results" 
                //will be filled with an array of MediaAnnotation objects. 
                tempResults = mediaResourceVideoArray[i].getMediaProperty(["contributor"], "", "", "");

                for (var k = 0; k < tempResults.length; k++) {
                    if (tempResults[i].roleLabel == "director") {
                        result = tempResults[i];
                        break;
                    }
                }  
            } 
        } 
    }
}

/** Resulting in:
 * [ { "Contributor" : {
 *         "propertyName" : "contributor",
 *         "value" : "Francis Ford Coppola",
 *         ...,                    
 *         "statusCode" = 200
 *         }
 * } ]
 */ 
例2: U2のアルバム「ヨシュア・トゥリー」の2曲目のタイトルを検索する。
//get the id of the second song using the fragments property 
tracks = albumMediaResource.getMediaProperty(["fragment"], "", "", "");
trackIdentifier = tracks[1].identifier; 

//use this identifier to get the mediaResource object that represents the track 
mediaResource = new MediaResource(); 
if (mediaResource.getSupportedModes() == 2 || mediaResource.getSupportedModes() == 3) {
    syncMediaResource = mediaResource.createMediaResource(trackIdentifier, new Array(), 2);
}

//get the title of the track 
title = syncMediaResource.getMediaProperty(["title"], "", "", "");

/** Resulting in:
 * [ { "Title" : {
 *         "propertyName" : "title",
 *         "value" : "I Still Haven't Found What I'm Looking For",
 *         ...,                    
 *         "statusCode" = 200          
 *         } 
 * } ]
 */
例3: 映画「地獄の黙示録」のジャンルを返す。
genre = movie.getMediaProperty(["genre"], "", "", "en-us"); 

/** Resulting in: 
 * [ { "Genre" : {
 *         "propertyName" : "genre",
 *         "value" : "Action",
 *         ...,                    
 *         "statusCode" = 200
 *         }
 * },
 * { "Genre" : {
 *         "propertyName" : "genre",
 *         "value" : "Drama",
 *         ...,                    
 *         "statusCode" = 200
 *         }
 * },
 * { ...
 *  } ]
 */

5.2 ウェブ・サービスとしての使用

ここでは、ウェブ・サービスを用いてこのAPIを実装する方法を説明します。現在は、Web IDLがウェブ・サービスにバインディングを提供していないことに注意してください。ここで示している例は、4.5項で挙げた各プロパティーの例に対応しています。

次の例は、様々なプロパティーに対する値をリクエストする方法を示しています。

6. 実装に関する注

この項には、実装の相互運用性に加え、メディア資源/フラグメントの識別子がなかったり、複数あったりした場合の扱いに関する実装者向けの推奨を含んでいます。

6.1 メディア資源またはフラグメントの複数の識別子

一部の情報源フォーマットでは、資源やそのフラグメントの1つを、1つ以上の識別子、フラグメント名、時間/空間フラグメントURIなどの複数の方法で識別できます。例えば、IDも割り当てられている時間のメディア・フラグメント(これは時間の値域で対応できる)がありえます。

メディア資源のオントロジーのRDF表現では、これはowl:sameAsを用いて表わすことができます(ガイドラインで推奨されているとおりに)。APIで同様の挙動を保証するためには、実装は、そのような識別子をすべて応答として返すべきです(should)。複数の識別子を持つフラグメントのプロパティーに対してクエリを行った場合、実装は個々の別の識別子を受け取り、それらのそれぞれ同じ応答を返すべきです(should)。

6.2 フラグメント識別子の欠落

識別子をまったく指定せずに、フラグメント(例えば、トラック)に関するメタデータを含むことができる情報源フォーマットがあります。RDF表現では、空白ノードを使用できるため、これは問題ではありません。APIの実装では、識別子がない場合には、フラグメントのリストをリクエストするクライアントは、フラグメントのプロパティーにクエリを行うことができません。

そのような場合には、実装では、フラグメントに対して識別子を作成すべき(should)で、クライアントが後のクエリでそれをフラグメントのプロパティーに使用できるように、長い間有効であることを保証すべきです(should)。識別子が永続的に有効であり続けることは保証されません。

これは、下記を含む様々な方法で実装可能です。

6.3 実装の相互運用性

APIは異なる2つのモードで実装できます。非同期モードは必須ですが、同期モードはオプションです。このような状況では、これらのモード間の相互運用性は、1つのモードのみの実装に基づきつつ、両方の処理モードを提供するための望ましい機能になるでしょう。

オプションであるAPIの同期モードの実装(例えば、ウェブ・サービスで)は、ラッパー(wrapper)によって必須の非同期通信に変わります。したがって、必須であるラッパーの機能性は、ノンブロッキング・スクリプト(non-blocking script)を処理するウェブ・ワーカーの仕様[WEBWORKERS]を用いてJavaScriptで実装されます。ラッパー・コードのデモは[MAWG-REPO]でダウンロードできます。最初に、非同期モード(mawg_api.js)に加えて同期モードもサポートするために、MediaResourceインターフェースの既存オペレーションが適用されます。次に、同期コミュニケーションをラップするAsyncMediaResourceインターフェースの実装が加えられます。したがって、AsyncMediaResourceインターフェースの2つのオペレーション(getMediaPropertygetOriginalMetadata)は、ウェブ・ワーカー(media_property_worker.jsmedia_property_worker.js)により、対応する同期の呼び出しを参照します。最後に、コールバック関数の呼び出しによって、同期コミュニケーションの結果が同期オペレーションにプッシュされます。

スレッドは一時停止できず、並行するスレッドとの相互作用も行えないため、同期の呼び出しによる非同期実装のラップは、JavaScriptでは実行できません。だとしても、ウェブ・サービスの呼び出しにおいて非同期APIの呼び出しをラップするために、他のプログラミング言語(例えばJava)を用いることはできます。

7. セキュリティに関する考察

この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするためのAPIを定義しています。このAPIは、別個のドキュメントか、メディア資源に埋め込むかの方法で、メタデータ情報(1つのフォーマットまたは様々なフォーマットで既にアクセス可能)をリクエストするための手段を提供します。そのため、このAPIでは、それ以上のセキュリティ問題は発生しません。

それでもなお、合意の宣言なしに、メタデータを用いてある人の個人情報にアクセスできるかもしれないことに注意すべきです。例えば、メディア資源に関する時間と地理の情報は、その作成者に関する情報を間接的に提供する可能性があります。

DAP WGの[POLICY-REQS]、ODRL 1.1 [ODRL11]、P3P 1.1 [P3P11]や、PLING Wiki [PLING-WIKI]のポリシー要件[POLICY-REQS]など、この話題に取り組んでいるW3Cの関連する活動や技術文書があります。

A. Web IDLの記述

Web IDL記述をIDLファイルでダウンロードするためには、このリンクをたどってください。

interface MediaResource {
    short getSupportedModes();
    MediaResource createMediaResource(DOMString mediaResource,
                optional MetadataSource[] metadataSources, optional short mode);
};

interface AsyncMediaResource : MediaResource {
    void getMediaProperty(DOMString[] propertyNames, PropertyCallback successCallback, ErrorCallback errorCallback,
                optional DOMString fragment, optional DOMString sourceFormat, optional DOMString language );
    void getOriginalMetadata (DOMString sourceFormat, MetadataCallback successCallback, ErrorCallback errorCallback);
};

interface PropertyCallback {
    void handleEvent (MediaAnnotation[] mediaAnnotations);
};

interface MetadataCallback {
   void handleEvent (DOMString[] metadata);
};

interface ErrorCallback {
   void handleEvent (DOMString errorStatus);
};

interface SyncMediaResource : MediaResource {
    MediaAnnotation[] getMediaProperty(DOMString[] propertyNames,
                   optional DOMString fragment, optional DOMString sourceFormat,
                   optional DOMString language);
    DOMString[] getOriginalMetadata (DOMString sourceFormat);
};

interface MetadataSource {
   attribute DOMString metadataSource;
   attribute DOMString sourceFormat;
};

interface MediaAnnotation {
   attribute DOMString propertyName;
   attribute DOMString value;
   attribute DOMString language;
   attribute DOMString sourceFormat;
   attribute DOMString fragmentIdentifier;
   attribute DOMString mappingType;
   attribute short     statusCode;
};

interface Identifier : MediaAnnotation {
   attribute DOMString identifierLink;
};

interface Title : MediaAnnotation {
   attribute DOMString titleLabel;
   attribute DOMString typeLink;
   attribute DOMString typeLabel;
};

interface Language : MediaAnnotation {
   attribute DOMString languageLink;
   attribute DOMString languageLabel;
};  

interface Locator : MediaAnnotation {
   attribute DOMString locatorLink;
};

interface Contributor : MediaAnnotation {
   attribute DOMString contributorLink;
   attribute DOMString contributorLabel;
   attribute DOMString roleLink;
   attribute DOMString roleLabel;
};

interface Creator : MediaAnnotation {
   attribute DOMString creatorLink;
   attribute DOMString creatorLabel;
   attribute DOMString roleLink;
   attribute DOMString roleLabel;
};

interface MADate : MediaAnnotation {
   attribute DOMString date; 
   attribute DOMString typeLink;
   attribute DOMString typeLabel;
};

interface Location : MediaAnnotation {
   attribute DOMString locationLink;
   attribute DOMString locationLabel;
   attribute double    longitude;
   attribute double    latitude;
   attribute double    altitude;
   attribute DOMString coordinateSystemLabel;
   attribute DOMString coordinateSystemLink;
};

interface Description : MediaAnnotation {
   attribute DOMString descriptionLabel;
};

interface Keyword : MediaAnnotation {
   attribute DOMString keywordLink;
   attribute DOMString keywordLabel;
};

interface Genre : MediaAnnotation {
   attribute DOMString genreLink;
   attribute DOMString genreLabel;
};

interface Rating : MediaAnnotation {
   attribute double ratingValue;
   attribute DOMString ratingSystemLink;
   attribute DOMString ratingSystemLabel;
   attribute double    min;
   attribute double    max; 
};

interface Relation : MediaAnnotation {
   attribute DOMString targetLink;
   attribute DOMString targetLabel;
   attribute DOMString typeLink;
   attribute DOMString typeLabel;
};

interface Collection : MediaAnnotation {
    attribute DOMString collectionLink;
    attribute DOMString collectionLabel;
};

interface Copyright : MediaAnnotation {
   attribute DOMString copyrightLabel;
   attribute DOMString holderLink;
   attribute DOMString holderLabel;
};

interface Policy : MediaAnnotation {
   attribute DOMString statementLink;
   attribute DOMString statementLabel;
   attribute DOMString typeLink;
   attribute DOMString typeLabel;
};

interface Publisher : MediaAnnotation {
   attribute DOMString publisherLink;
   attribute DOMString publisherLabel;
};

interface TargetAudience : MediaAnnotation {
   attribute DOMString audienceLink;
   attribute DOMString audienceLabel;
   attribute DOMString classificationSystemLink;
   attribute DOMString classificationSystemLabel;
};

interface Fragment : MediaAnnotation {
   attribute DOMString identifier;
   attribute DOMString roleLink;
   attribute DOMString roleLabel;
};

interface NamedFragment : MediaAnnotation {
   attribute DOMString identifier;
   attribute DOMString label;
};

interface FrameSize : MediaAnnotation {
   attribute double width;
   attribute double height;
   attribute DOMString unit;
};

interface Compression : MediaAnnotation {
    attribute DOMString compressionLink;
    attribute DOMString compressionLabel;
};

interface Duration : MediaAnnotation {
    attribute double duration;
};

interface Format : MediaAnnotation {
    attribute DOMString formatLink;
    attribute DOMString formatLabel;
};

interface SamplingRate : MediaAnnotation {
    attribute double samplingRate;
};

interface FrameRate : MediaAnnotation {
   attribute double frameRate;
}; 

interface AverageBitRate : MediaAnnotation {
   attribute double averageBitRate;
};

interface NumTracks : MediaAnnotation {
    attribute short  number;
    attribute DOMString typeString;
};   

B. 謝辞

このドキュメントは、W3C Media Annotations Working Groupの作業の成果です。

ワーキンググループのメンバー(執筆時点でアルファベット順に記述)は、Werner Bailer (JOANNEUM RESEARCH)、Tobias Burger ((public) Invited expert)、Eric Carlson (Apple, Inc.)、Pierre-Antoine Champin (Universite de Lyon)、Ashish Chawla ((public) Invited expert)、Jaime Delgado (Universitat Politecnica de Catalunya)、Jean-Pierre Evain ((public) Invited expert)、Martin Hoffernig (JOANNEUM RESEARCH)、Philip Jagenstedt (Opera Software)、Ralf Klamma ((public) Invited expert)、WonSuk Lee (Samsung Electronics Co., Ltd.)、Veronique Malaise (Vrije Universiteit)、Erik Mannens (IBBT)、Hui Miao (Samsung Electronics Co., Ltd.)、Thierry Michel (W3C/ERCIM)、Frank Nack (University of Amsterdam)、Soohong Daniel Park (Samsung Electronics Co., Ltd.)、Silvia Pfeiffer (W3C Invited Experts)、Chris Poppe (IBBT)、 Victor Rodriguez (Universitat Politecnica de Catalunya)、Felix Sasaki (Potsdam University of Applied Sciences)、David Singer (Apple, Inc.)、Florian Stegmaier ((public) Invited expert)、John Strassner ((public) Invited expert)、Joakim Soderberg (ERICSSON)、Mari Carmen Suarez-Figueroa ((public) Invited expert) Thai Wey Then (Apple, Inc.)、Ruben Tous (Universitat Politecnica de Catalunya)、Raphael Troncy (EURECOM)、Vassilis Tzouvaras (K-Space)、Davy Van Deursen (IBBT)です。

public-media-annotation@w3.orgに関する議論に貢献いただいた方々にも感謝を表します。

C. 参考文献

C.1 規範的な参考文献

[MEDIA-FRAGMENTS]
Raphael Troncy; Erik Mannens; Silvia Pfeiffer and Davy Van Deursen. Media Fragments URI 1.0. W3C Recommendation 25 September 2012. URL: http://www.w3.org/TR/2012/REC-media-frags-20120925/
[MEDIA-ONTOLOGY]
WonSuk Lee; Werner Bailer; Tobias Burger, et al. Media Fragments URI 1.0. W3C Recommendation 09 February 2012. URL: http://www.w3.org/TR/2012/REC-mediaont-10-20120209/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
[WEBIDL]
Cameron McCormack. Web IDL, 19 April 2012. W3C Candidate Recommendation. (Work in progress.) URL: http://www.w3.org/TR/2012/CR-WebIDL-20120419/

C.2 参考情報の参考文献

[BCP47]
A. Phillips; M. Davis. Tags for Identifying Languages September 2009. IETF Best Current Practice. URL: http://tools.ietf.org/html/bcp47
[MAWG-REPO]
MAWG code repository. URL: http://sourceforge.net/projects/mawg
[MEDIA-ANNOT-REQS]
WonSuk Lee; Felix Sasaki; Tobias Burger; Veronique Malaise. Use Cases and Requirements for Ontology and Metadata API for Media Object 1.0.W3C Working Draft 21 January 2010. URL: http://www.w3.org/TR/2010/WD-media-annot-reqs-20100121/
[ODRL11]
Renato Iannella. Open Digital Rights Language (ODRL) Version 1.1. W3C Note. 19 September 2002. URL: http://www.w3.org/TR/odrl
[P3P11]
Matthias Schunter; Rigo Wenning. The Platform for Privacy Preferences 1.1 (P3P1.1) Specification. 13 November 2006. W3C Note. URL: http://www.w3.org/TR/2006/NOTE-P3P11-20061113
[PLING-WIKI]
Policy Languages Interest Group (PLING). PLING Wiki. URL: http://www.w3.org/Policy/pling/
[POLICY-REQS]
Laura Arribas; Paddy Byers; Marcin Hanclik; Frederick Hirsch; David Rogers. Device API Access Control Use Cases and Requirements 17 March 2011. W3C Working Group Note. URL: http://www.w3.org/TR/2011/NOTE-dap-policy-reqs-20110317/
[WEBWORKERS]
Ian Hickson. Web Workers 01 May 2012. W3C Candidate Recommendation. URL: http://www.w3.org/TR/workers/