【注意】 このドキュメントは、W3CのMetadata API for Media Resources 1.0 W3C Recommendation 13 March 2014の和訳です。
このドキュメントの正式版はW3Cのサイト上にある英語版であり、このドキュメントには翻訳に起因する誤りがありえます。誤訳、誤植などのご指摘は、訳者までお願い致します。
First Update: 2014年03月29日
このドキュメントに対する正誤表を参照してください。いくつかの規範的な修正が含まれているかもしれません。
翻訳版も参照してください。
Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするためのAPIを定義しています。全体的な目標は、開発者が、様々なメタデータ・フォーマットで格納されているメタデータ情報に簡便にアクセスできるようにすることです。このAPIは、メディア資源のオントロジー1.0の仕様で定義されているメタデータ・プロパティーにアクセスする手段を提供します。このプロパティーは、このAPIではピボット語彙(pivot vocabulary)として用いられます。この仕様の中心となるのは、同期的・非同期的なモデルでメタデータ情報を検索するためのAPIインターフェースの定義です。また、API実装の挙動の仕様に加え、構造化した戻り型(return type)のインターフェースも定義しています。
この項は、このドキュメントの公開時のステータスについて記述しています。他のドキュメントがこのドキュメントに取って代わることがありえます。現行のW3Cの刊行物およびこの技術報告の最新の改訂版のリストは、http://www.w3.org/TR/のW3C技術報告インデックスにあります。
このドキュメントは、W3Cメンバー、ソフトウェア開発者、他のW3Cグループ、および他の利害関係者によりレビューされ、W3C勧告として管理者の協賛を得ました。これは確定済みドキュメントであり、参考資料として用いたり、別のドキュメントで引用することができます。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範囲な開発を促進することです。これによってウェブの機能性および相互運用性が増強されます。
このドキュメントは、メディア・アノテーション・ワーキンググループが作成したもので、W3C Video on the Web Activityの一部です。
一般の方は、この勧告に関するコメントを公開メーリング・リスト[email protected](公開アーカイブ)にお送りください。メールの件名に「[REC Comment API]」を使用してください。
ワーキンググループは、公開テスト・スイートを採用し、メディア資源のメタデータAPI 1.0のための実装報告書を作成しました。
旧バージョン以降、このドキュメントに対する変更は行なわれていません。
メディア資源のメタデータAPIは、クライアントのみ(ブラウザに、プラグインやジャバスクリプト・ライブラリーとして組み込んで)にも、クライアント―サーバ型(Webサービスとしてサーバー・サイドに)にも実装できます。実装報告書で要約しているこれらの2つのシナリオにおける、このAPIの実装レベルにより、勧告候補を脱することが可能となりました。しかし、このAPIをブラウザのコードにネイティブに実装することは想定していません。
このドキュメントは、2004年2月5日のW3C特許方針の下で活動しているグループによって作成されました。W3Cは、このグループの成果物に関連するあらゆる特許の開示の公開リストを維持し、このページには特許の開示に関する指示も含まれています。不可欠な請求権(Essential Claim(s))を含んでいると思われる特許に関して実際に知っている人は、W3C特許方針の6項に従って情報を開示しなければなりません。
MediaResource
インターフェース
AsyncMediaResource
インターフェース
SyncMediaResource
インターフェース
MediaAnnotation
インターフェース
MetadataSource
インターフェース
この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするための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.0仕様[MEDIA-ONTOLOGY]の対象とするフォーマットを参照してください。
メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]の対象外のフォーマットを参照してください。
このドキュメントでは、「オントロジー」、「メディア資源」、「プロパティー」、「マッピング」および「プロパティー値の型」という用語は、メディア資源のオントロジー1.0仕様[[MEDIA-ONTOLOGY]の2項で定義されているとおりに解釈すべきです。
非規範的と記している項と同じく、この仕様のすべてのオーサリングのガイドライン、図、例、注は、非規範的です。この仕様のその他の部分はすべて規範的です。
この仕様の「しなければならない(must)」、「してはならない(must not)」、「必須である/要求される(required)」、「すべきである/する必要がある(should)」、「すべきでない/する必要がない(should not)」、「推奨される(recommended)」、「することができる/してもよい(may)」、「選択できる/任意である(optional)」というキーワードは、[RFC2119]で記述されているとおりに解釈されなければなりません。
この項では、API設計のきっかけとなった様々な使用のシナリオについて論じます。2つの主要なシナリオについて検討しました。そのシナリオでは、このAPIは、
ユーザ・エージェントで、または、
ウェブ・サービスにアクセスしているクライアントとして
実装され、呼び出されます。
多くの場合、クライアントのみの実装でも、クライアント-サーバー型の実装の場合でも、メディア資源と(または)メタデータ情報源は離れて存在しています。APIは、デフォルトでは非同期APIが指定されます。つまり、呼び出しはブロックされませんが、結果(あるいはエラー)はコールバック・メカニズムを用いて返されます。ウェブ・サービスのケースをよりサポートするために、同期モードも定義されています。同期モードはオプションです。
2つのシナリオを図1で示します。
この仕様は、メディア資源に対するメタデータAPIのみを定義しています。図1で示している他の要素(例えば、メタデータのアクセス/抽出/保存)はカバーしていません。
両方のシナリオにおいて、APIは、クライアント・アプリケーションと実際のメタデータ情報源との仲介役を務めます。相互運用性は、i) メタデータ情報にアクセスするためのオペレーション、ii) 共通のオブジェクト構造、および、iii) APIの挙動(例えば、ステータス・コード)を定義することで保証されます。それに続き、実装は、次の多数の要素を実装しなければなりません。
メディア資源のメタデータAPIの実装(このドキュメントで定義しているとおりに)。これは、プロパティーに対し、事実上のGETTERメソッドを提供します。
特定の情報源フォーマットからコア・プロパティーへのマッピングの実装。このとき、メディア資源のメタデータAPI 1.0は、適切な場合には、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]を用いるべきです(should)。
メタデータにアクセスするためのフォーマット固有のAPI。これは、メディア資源について記述しているメタデータ・ドキュメントを検索するためのAPI(例えば、XMLパーサとXPathステートメント)、または、メディア資源に組み込まれているメタデータを読み取るためのエクストラクタ(例えば、JPEG画像からEXIF情報を読み取るライブラリ)でありえます。このAPIが適用されるコンテキストを定義するためには、少なくとも、メディア資源からメタデータ・ドキュメントへの、またはその逆の、一方向の参照が必要です。そうでない場合は、ウェブ・アプリケーション(シナリオ1)、ウェブサービス(シナリオ2)、またはメディア・リポジトリ(シナリオ2)がそのような参照を提供する必要があります。
このAPIによって、様々なメタデータ・フォーマットで格納されているメタデータ情報へのアクセスが提供されます。そのため、同じプロパティーの異なるインスタンスが存在しえます。
このAPIは、[WEBIDL]を用いて、多くのインターフェースを定義します。これらは、次のカテゴリーにグループ化できます。
MediaResource
と呼ばれる、メタデータの実際の検索オペレーションを定義するインターフェースで、同期と非同期の両方のバージョンで提供される(4.1項、4.2項と4.3項を参照)。
MediaAnnotation
と呼ばれる、応答のオブジェクト/メタデータ・アノテーションのデータ構造を定義するインターフェースとその特殊化(4.4項と4.5項を参照)。
MetadataSource
と呼ばれるメタデータ情報源のデータ構造を定義するインターフェース(4.6項を参照)。
次に、様々なインターフェースと、非表示ではないオペレーションについて論じます。このAPIの実装では、オペレーションの非同期モードをサポートしなければならず(must)、同期モードをサポートすることができ(may)、このドキュメントで定義しているインターフェースをサポートしなければなりません(must)。エラーが生じた場合には、例外処理の代わりに、処理状況を示すステータス・コード(4.7項を参照)が、(同期APIでは)返され、(非同時では)コールバック関数により提供されます。
その後、戻り型(つまり、MediaAnnotation
とその特殊化)とMetadataSource
のインターフェースを定義しています。
この仕様の付録AのIDLフラグメントは、「Web IDL」仕様に記述されているとおり、適合IDLフラグメントに対しては必須であると解釈されなければなりません。[WEBIDL]
MediaResource
インターフェースMediaResource
インターフェースは、このAPIの中心となるもので、特定のメディア資源のメタデータ・プロパティーにアクセスするためのオペレーションを提供します。ここでは、オペレーションの非同期と同期モードの明確な区別は、AsyncMediaResource
とSyncMediaResource
という、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);
};
createMediaResource
AsyncMediaResource
かSyncMediaResource
のインターフェースのどちらかのオブジェクトをインスタンス化します。さらに、これにより、このAPIを適用する特定のメディア資源とメタデータ情報源を設定することが可能となります。
パラメータ | 型 | Null値の可否 | オプション | 説明 |
---|---|---|---|---|
mediaResource | DOMString |
✘ | ✘ | この属性は、APIが処理すべき特定のメディア資源を設定しなければなりません。 |
metadataSources |
|
✘ | ✔ | この属性は、追加のメタデータ情報源を指定すべきです。 |
mode | short |
✘ | ✔ | この属性は、希望するオペレーション・モードを指定すべきです。非同期モードには1 、同期モードには2 を用いるべきです。モード引数が省略され、両方のモードが実装でサポートされている場合、非同期モードが用いらるでしょう。 |
MediaResource
getSupportedModes
1
、同期モードに2
、両方のモードに3
であるべきです。
short
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); }
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);
};
getMediaProperty
MediaAnnotation
インターフェースを実装しており、4.4項で説明しています。返されるオブジェクトは、リクエストされたプロパティーに応じて、異なるサブタイプを実装します(MediaAnnotation
インターフェースから継承)。例えば、「title」(タイトル)をリクエストするとTitle
インターフェースを実装したオブジェクトの配列を返し、「creator」(作成者)をリクエストするとCreator
インターフェースを実装したオブジェクトを得られる等々です。これらのインターフェースについては、4.5項で説明しています。例はここにあります。
パラメータ | 型 | Null値の可否 | オプション | 説明 |
---|---|---|---|---|
propertyNames | DOMString[] |
✘ | ✘ | この引数は、値を検索する必要のあるプロパティーを含んだ配列を識別します。配列が空であれば、値を持っているすべてのプロパティーが検索されるでしょう。 |
successCallback |
|
✘ | ✘ | この引数は、プロパティーへの非同期リクエストに対するコールバック・オブジェクトを保持しています。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 |
|
✘ | ✘ | この引数は、元のメタデータへの非同期リクエストに対するコールバック・オブジェクトを保持しています。successCallback オブジェクトは、MetadataCallback インターフェースを実装し、値を持っている全プロパティーがリストアップされた時点で呼び出す必要のあるhandleEvent オペレーションを保持しています。このhandleEvent オペレーションは、元のメタデータを保持している新しいDOMString配列で呼び出す必要があります。 |
errorCallback | ErrorCallback |
✘ | ✘ | この引数は、元のメタデータへの非同期リクエストの失敗に対するコールバック・オブジェクトを保持しています。errorCallback オブジェクトは、ErrorCallback インターフェースを実装し、試みが失敗した時に呼び出す必要のあるhandleEvent オペレーションを保持しています。このhandleEvent オペレーションは、エラーのステータス・コードを表す新しいDOMStringで呼び出す必要があります(詳細は4.7項を参照)。 |
void
PropertyCallback
インターフェースPropertyCallback
インターフェースは、リクエストされたプロパティーの全データが集められた時点で呼び出す必要のあるhandleEvent
オペレーションを保持しています。
interface PropertyCallback {
void handleEvent (MediaAnnotation
[] mediaAnnotations);
};
handleEvent
パラメータ | 型 | Null値の可否 | オプション | 説明 |
---|---|---|---|---|
mediaAnnotations |
|
✘ | ✘ | この引数は、リクエストされたプロパティーと一致する値を持つオブジェクトのリストを保持しています。これらのオブジェクトは、MediaAnnotation インターフェースを実装し、4.4項で説明しています。返されるオブジェクトは、リクエストされたプロパティーに応じて、異なるサブタイプを実装します(MediaAnnotation インターフェースから継承)。 |
void
MetadataCallback
インターフェースMetadataCallback
インターフェースは、リクエストされたメタデータが集められた時点で呼び出す必要のあるhandleEvent
オペレーションを保持しています。
interface MetadataCallback {
void handleEvent (DOMString[] metadata);
};
非同期の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 } } */
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);
};
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
DOMString
配列を返します。例はここにあります。
パラメータ | 型 | Null値の可否 | オプション | 説明 |
---|---|---|---|---|
sourceFormat | DOMString |
✘ | ✘ | この引数は、特定のメタデータ・フォーマットを識別します。メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されているメタデータ・フォーマット識別子を用いるべきです(should)。メタデータ・フォーマットが定義されていれば、指定されたメタデータ・フォーマットで利用できるメタデータのみが検索されます。 |
DOMString[]
この項の例では、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>" * } ] */
MediaAnnotation
インターフェースMediaAnnotation
インターフェースは、MediaResource.getMediaProperty
オペレーションの戻り型として用いられます。そこれは、メタデータ・プロパティーに関する一般的な値を保持するためのコンテナです。
一部のメタデータ・プロパティーは、複合型として定義されているため、MediaAnnotation
の特定の派生型が定義されており、その特定の属性が追加されています。しかし、MediaAnnotation
は、(value
属性の)プロパティーの印刷可能な文字列表現にアクセスするための汎用的な戻り型として使用できます。これには、ステータス・コードも含まれています。一般的なエラーの場合には、返されるMediaAnnotation
配列の最初の要素にグローバルなエラー・コードが含まれています。そうでない場合には、ステータスは、返される個々のプロパティーに提供できます。
個々のメタデータ・プロパティーごとに派生インターフェースを指定するために、次の、設計に関する留意点を用いました。
MediaAnnotation
からインターフェースが派生し、オントロジー・ドキュメントの仕様に従った型付き属性が追加されます。value
を印刷可能な文字列表現で埋めなければならず(must)、以下のステップに従うことをお勧めします。
value
属性の別の属性にある文字列と重複する可能性があります。特定のメタデータ・プロパティーや属性のデータ型にかかわらず使用できるすべてのメタデータ・プロパティーに対する汎用的な値フィールドを持つという目的のために、この冗長性は許容範囲と見なされています。URI|string
型を持っていれば、インターフェースには2つの属性があり、一つは「Link」(リンク)、一つは「Label」(ラベル)で、属性名に追加され、それぞれURIと文字列を表します。MediaAnnotation
または、メタデータ・プロパティーの1つに対する派生インターフェースの1つに由来することで、ユーザ拡張が可能となります。interface MediaAnnotation {
attribute DOMString propertyName;
attribute DOMString value;
attribute DOMString language;
attribute DOMString sourceFormat;
attribute DOMString fragmentIdentifier;
attribute DOMString mappingType;
attribute short statusCode;
};
fragmentIdentifier
language
mappingType
propertyName
sourceFormat
statusCode
value
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 * } * } ]
この項では、MediaResource.getMediaProperty()
オペレーションでクエストできる、様々なプロパティーについて記述します。このオペレーションを呼び出せば、指定されたプロパティーを表すMediaAnnotation
インターフェースを実装したオブジェクトが返されます。すべてのプロパティーは、MediaAnnotation
インターフェースから受け継いだインターフェースで表されます(上記の設計ガイドラインに従って)。
次の戻り型インターフェースのいくつかは、プロパティーの値をURI(つまり、統制語に対する指示子)または自由形式のテキストとして保持できます。URIの方が望ましく、可能な(つまり、情報が含まれているか、情報源のメタデータから構築できる)場合には常に、MediaAnnotationインターフェース(または、特殊化した型)の各属性が入力されるべきです。
下記では、プロパティーごとに、(同期)JavaScriptの例で、プロパティーの固有の属性の用法を示します。どの場合も、MediaAnnotation
インターフェースの一般属性もリクエストできます。
MediaResource.getMediaProperty
オペレーションが「identifier」(識別子)というpropertyNames
パラメータの値で呼び出されれば、Identifier
インターフェースを実装したオブジェクトが、identifierプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Identifier : MediaAnnotation
{
attribute DOMString identifierLink;
};
identifierLink
id = image.getMediaProperty(["identifier"]); /** Resulting in: * [ { "Identifier" : { * "propertyName" : "identifier", * "identifierLink" : "urn:uuid:36a87260-1102-11df-8a39-0800200c9a66", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「title」(タイトル)というpropertyNames
パラメータの値で呼び出されれば、Title
インターフェースを実装したオブジェクトが、titleプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Title : MediaAnnotation
{
attribute DOMString titleLabel;
attribute DOMString typeLink;
attribute DOMString typeLabel;
};
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「language」(言語)というpropertyNames
パラメータの値で呼び出されれば、Language
インターフェースを実装したオブジェクトが、languageプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Language : MediaAnnotation
{
attribute DOMString languageLink;
attribute DOMString languageLabel;
};
language = video.getMediaProperty(["language"]); /** Resulting in: * [ { "Language" : { * "propertyName" : "language", * "languageLabel" : "en-us", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「locator」(ロケータ)というpropertyNames
パラメータの値で呼び出されれば、Locator
インターフェースを実装したオブジェクトが、locatorプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Locator : MediaAnnotation
{
attribute DOMString locatorLink;
};
locatorLink
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 * } * } ] */
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;
};
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 * } * } ] */
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;
};
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 * } * } ] */
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;
};
date
typeLabel
typeLink
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 * } * } ] */
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;
};
altitude
coordiateSystem
属性で指定される座標体系で、その場所の高度を保持します。
coordinateSystemLabel
coordinateSystemLink
latitude
coordiateSystem
属性で指定される座標体系で、その場所の緯度を保持します。
locationLabel
locationLink
longitude
coordiateSystem
属性で指定される座標体系で、その場所の経度を保持します。
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「description」(内容記述)というpropertyNames
パラメータの値で呼び出されれば、Description
インターフェースを実装したオブジェクトが、descriptionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Description : MediaAnnotation
{
attribute DOMString descriptionLabel;
};
descriptionLabel
description = image.getMediaProperty(["description"]); /** Resulting in: * [ { "Description" : { * "propertyName" : "description", * "descriptionLabel" : "Group picture of the W3C MAWG at the F2F meeting in Stockholm.", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「keyword」(キーワード)というpropertyNames
パラメータの値で呼び出されれば、Keyword
インターフェースを実装したオブジェクトが、keywordプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Keyword : MediaAnnotation
{
attribute DOMString keywordLabel;
attribute DOMString keywordLink;
};
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「genre」(ジャンル)というpropertyNames
パラメータの値で呼び出されれば、Genre
インターフェースを実装したオブジェクトが、genreプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Genre : MediaAnnotation
{
attribute DOMString genreLabel;
attribute DOMString genreLink;
};
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 * } * } ] */
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;
};
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 * } * } ] */
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;
};
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「collection」(コレクション)というpropertyNames
パラメータの値で呼び出されれば、Collection
インターフェースを実装したオブジェクトが、collectionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Collection : MediaAnnotation
{
attribute DOMString collectionLink;
attribute DOMString collectionLabel;
};
collection = image.getMediaProperty(["collection"]); /** Resulting in: * [ { "Collection" : { * "propertyName" : "collection", * "collectionLink" : "http://individuals.example.com/JohnDoe/myWorkPictures/", * "collectionLabel" : "My Work Pictures", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションがpropertyNames
パラメータの値として「著作権」(copyright)で呼び出されれば、Copyright
インターフェースを実装したオブジェクトが、copyrightプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Copyright : MediaAnnotation
{
attribute DOMString copyrightLabel;
attribute DOMString holderLabel;
attribute DOMString holderLink;
};
copyright = image.getMediaProperty(["copyright"]); /** Resulting in: * [ { "Copyright" : { * "propertyName" : "copyright", * "copyrightLabel" : "All images in the collection are copyrighted by John Doe.", * "holderLabel" : "John Doe", * "holderLink" : "http://individuals.example.com/JohnDoe", * "statusCode" : 200 * } * } ] */
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;
};
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「publisher」(公開者)というpropertyNames
パラメータの値で呼び出されれば、Publisher
インターフェースを実装したオブジェクトが、publisherプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Publisher : MediaAnnotation
{
attribute DOMString publisherLink;
attribute DOMString publisherLabel;
};
publisher = image.getMediaProperty(["publisher"]); /** Resulting in: * [ { "Publisher" : { * "propertyName" : "publisher", * "publisherLabel" : "ACME", * "publisherLink" : "http://company.example.com/ACME", * "statusCode" : 200 * } * } ] */
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;
};
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 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「fragment」(フラグメント)というpropertyNames
パラメータの値で呼び出されれば、Fragment
インターフェースを実装したオブジェクトが、fragmentプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Fragment : MediaAnnotation
{
attribute DOMString identifier;
attribute DOMString roleLink;
attribute DOMString roleLabel;
};
fragment = movie.getMediaProperty(["fragment"]); /** Resulting in: * [ { "Fragment" : { * "propertyName" : "fragment", * "identifier" : "http://www.example.com/video.ogv#t=10,20", * "roleLabel" : "chapter", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「namedFragment」(名前付きフラグメント)というpropertyNames
パラメータの値で呼び出されれば、NamedFragment
インターフェースを実装したオブジェクトが、namedFragmentプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface NamedFragment : MediaAnnotation
{
attribute DOMString identifier;
attribute DOMString label;
};
namedFragment = movie.getMediaProperty(["namedFragment"]); /** Resulting in: * [ { "NamedFragment" : { * "propertyName" : "namedFragment", * "identifier" : "http://www.example.com/video.ogv#t=30,35", * "label" : "kissScene", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「frameSize」(フレーム・サイズ)というpropertyNames
パラメータの値で呼び出されれば、FrameSize
インターフェースを実装したオブジェクトが、frameSizeプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface FrameSize : MediaAnnotation
{
attribute double width;
attribute double height;
attribute DOMString unit;
};
frameSize = image.getMediaProperty(["frameSize"]); /** Resulting in: * [ { "FrameSize" : { * "propertyName" : "framesize", * "width" : 3072, * "height" : 2304, * "unit" : "pixels", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「compression」(圧縮)というpropertyNames
パラメータの値で呼び出されれば、Compression
インターフェースを実装したオブジェクトが、compressionプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface FrameSize : MediaAnnotation
{
attribute DOMString compressionLink; attribute DOMString compressionLabel;
};
compression = video.getMediaProperty(["compression"]); /** Resulting in: * [ { "Compression" : { * "propertyName" : "compression", * "compressionLabel" : "H.264/AVC", * "compressionLink" : "urn:example-org:codingnames2010#ITU-H264", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「duration」(時間長)というpropertyNames
パラメータの値で呼び出されれば、Duration
インターフェースを実装したオブジェクトが、durationプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Duration : MediaAnnotation
{
attribute double duration;
};
duration
duration = video.getMediaProperty(["duration"]); /** Resulting in: * [ { "Duration" : { * "propertyName" : "duration", * "duration" : 3600, * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「format」(フォーマット)というpropertyNames
パラメータの値で呼び出されれば、Format
インターフェースを実装したオブジェクトが、formatプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface Format : MediaAnnotation
{ attribute DOMString formatLink;
attribute DOMString formatLabel;
};
format = image.getMediaProperty(["format"]); /** Resulting in: * [ { "Format" : { * "propertyName" : "format", * "formatLabel" : "image/jpeg", * "formatLink" : "http://dbpedia.org/resource/JPEG", * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「samplingRate」(サンプリング・レート)というpropertyNames
パラメータの値で呼び出されれば、SamplingRate
インターフェースを実装したオブジェクトが、samplingRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface SamplingRate : MediaAnnotation
{
attribute double samplingRate;
};
samplingRate
samplingrate = audio.getMediaProperty(["samplingRate"]); /** Resulting in: * [ { "SamplingRate" : { * "propertyName" : "samplingRate", * "samplingRate" : 44100, * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「frameRate」(フレーム・レート)というpropertyNames
パラメータの値で呼び出されれば、FrameRate
インターフェースを実装したオブジェクトが、frameRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface FrameRate : MediaAnnotation
{
attribute double frameRate;
};
frameRate
framerate = video.getMediaProperty(["frameRate"]); /** Resulting in: * [ { "FrameRate" : { * "propertyName" : "frameRate", * "frameRate" : 30, * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「averageBitRate」(平均ビットレート)というpropertyNames
パラメータの値で呼び出されれば、AverageBitRate
インターフェースを実装したオブジェクトが、averageBitRateプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface AverageBitRate : MediaAnnotation
{
attribute double averageBitRate;
};
averageBitRate
bitrate = video.getMediaProperty(["averageBitRate"]); /** Resulting in: * [ { "AverageBitRate" : { * "propertyName" : "averageBitRate", * "averageBitRate" : 45.06, * "statusCode" : 200 * } * } ] */
MediaResource.getMediaProperty
オペレーションが「numTracks」(トラック数)というpropertyNames
パラメータの値で呼び出されれば、NumTracks
インターフェースを実装したオブジェクトが、numTracksプロパティー(メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]で定義されている)を表して返されます。
interface NumTracks : MediaAnnotation
{
attribute short number;
attribute DOMString typeString;
};
numTracks = video.getMediaProperty(["numTracks"]); /** Resulting in: * [ { "NumTracks" : { * "propertyName" : "numTracks", * "number" : 2, * "typeString" : "audio", * "statusCode" : 200 * } * } ] */
MetadataSource
インターフェースMetadataSource
インターフェースは、他のメタデータ情報源を識別するために用いられます。
interface MetadataSource {
attribute DOMString metadataSource;
attribute DOMString sourceFormat;
};
metadataSource
sourceFormat
metadataSource = new MetadataSource("http://www.w3.org/2008/WebVideo/Annotations/drafts/metadata_formats/DC_example1.xml","dc");
この項では、システムの挙動を示すために定義されているAPIのステータス・コードを紹介します。4.4項で述べているように、ステータス・コードは、APIに対するメソッドの呼び出しによって返されたMediaAnnotation
オブジェクトの属性の1つとして返されます。これらのステータス・コードは、APIレベルで用いられ、クライアント・サイドがサーバー・サイドのいずれかの実装に適用されます。
数値コード | テキストによる記述 | 例 |
---|---|---|
200 | OK | プロパティーは正しく伝えられた。 |
204 | コンテンツなし | プロパティーはコンテンツなしに検索された。 |
206 | 部分的コンテンツ | 結果集合に格納された利用可能なデータのサブセットのみ |
400 | 不正リクエスト | 構文エラー |
404 | 存在不明 | クエリ資源が見つからなかった。 |
415 | 非サポート・メディア・タイプ | 画像データ格納に対し時間長要求があった。 |
462 | 情報源フォーマットにおけるプロパティー未定義 | 位置がMediaRSSに定義されていない。 |
500 | サーバ内部エラー | 内部ライブラリ(例えば、エクストラクタ)衝突 |
562 | プロパティー未サポート | 実装されたプロパティーのサブセット |
ここでは、実際の実装にJavaScriptを用いてこのAPIを利用する方法の例をいくつか紹介します。さらに、これらの例では、このAPIの実装が、特定のメディア資源に対応したメタデータが存在している場所を知っているとみなしています(必要ならば、MetadataSource
インターフェースを用いてメタデータの場所を設定できます)。その実装は、メディア資源のオントロジー1.0仕様[MEDIA-ONTOLOGY]のコア・プロパティーに対し、様々なメタデータ・フォーマットのマッピングを提供すべきです。
//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 * } * } ] */
//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 * } * } ] */
genre = movie.getMediaProperty(["genre"], "", "", "en-us"); /** Resulting in: * [ { "Genre" : { * "propertyName" : "genre", * "value" : "Action", * ..., * "statusCode" = 200 * } * }, * { "Genre" : { * "propertyName" : "genre", * "value" : "Drama", * ..., * "statusCode" = 200 * } * }, * { ... * } ] */
ここでは、ウェブ・サービスを用いてこのAPIを実装する方法を説明します。現在は、Web IDLがウェブ・サービスにバインディングを提供していないことに注意してください。ここで示している例は、4.5項で挙げた各プロパティーの例に対応しています。
リクエスト: http://example.com/my-media-resource/?getOriginalMetadata=DC
応答(JSONフォーマット):
[ { "statusCode" : "200" }, {"originalMetadata" : "<?xml version='1.0'?><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>"} ]
次の例は、様々なプロパティーに対する値をリクエストする方法を示しています。
リクエスト: http://example.com/my-media-resource/?ma-query=identifier
応答(JSONフォーマット):
[ { "Identifier" : { "propertyName" : "identifier", "identifierLink" : "urn:uuid:36a87260-1102-11df-8a39-0800200c9a66", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=title
応答(JSONフォーマット):
[ { "Title" : { "propertyName" : "title", "value" : "Artificial Horizon", "typeLink" : "http://www.ebu.ch/metadata/cs/ebu_ObjectTypeCodeCS.xml#21", "typeLabel" : "Album title", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=language
応答(JSONフォーマット):
[ { "Language" : { "propertyName" : "language", "languageLabel" : "en-us", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=locator
応答(JSONフォーマット):
[ { "Locator" : { "propertyName" : "locator", "locatorLink" : "http://www.w3.org/2008/WebVideo/Annotations/wiki/images/9/93/MAWG-Stockholm-20090626.JPG", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=contributor
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=creator
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=date
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=location
応答(JSONフォーマット):
[ { "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 }} ]
リクエスト: http://example.com/my-media-resource/?ma-query=description
応答(JSONフォーマット):
[ { "Description" : { "propertyName" : "description", "descriptionLabel" : "Group picture of the W3C MAWG at the F2F meeting in Stockholm.", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=keyword
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=genre
応答(JSONフォーマット):
[ { "Genre" : { "propertyName" : "genre", "genreLabel" : "Sports", "genreLink" : "http://www.ebu.ch/metadata/cs/ebu_ContentGenreCS.xml#3.1.1.9", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=rating
応答(JSONフォーマット):
[ { "Rating" : { "propertyName" : "rating", "ratingValue" : 10.0, "ratingSystemLabel" : "John Doe", "ratingSystemLink" : "http://individuals.example.com/JohnDoe", "minimum" : 0, "maximum" : 10.0, "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=relation
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=collection
応答(JSONフォーマット):
[ { "Collection" : { "propertyName" : "collection", "collectionLink" : "http://individuals.example.com/JohnDoe/myWorkPictures/", "collectionLabel" : "My Work Pictures", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=copyright
応答(JSONフォーマット):
[ { "Copyright" : { "propertyName" : "copyright", "copyrightLabel" : "All images in the collection are copyrighted by John Doe.", "holderLabel" : "John Doe", "holderLink" : "http://individuals.example.com/JohnDoe", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=policy
応答(JSONフォーマット):
[ { "Policy" : { "propertyName" : "policy", "statementLink" : "http://creativecommons.org/licenses/by/2.5/", "statementLabel" : "Attribution 2.5 Generic (CC BY 2.5)", "typeLabel" : "license", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=publisher
応答(JSONフォーマット):
[ { "Publisher" : { "propertyName" : "publisher", "publisherLabel" : "ACME", "publisherLink" : "http://company.example.com/ACME", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=targetAudience
応答(JSONフォーマット):
[ { "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 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=fragment
応答(JSONフォーマット):
[ { "Fragment" : { "propertyName" : "fragment", "identifier" : "http://www.example.com/video.ogv#t=10,20", "roleLabel" : "chapter", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=namedFragment
応答(JSONフォーマット):
[ { "NamedFragment" : { "propertyName" : "namedFragment", "label" : "kissScene", "identifier" : "http://www.example.com/video.ogv#t=30,35", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=frameSize
応答(JSONフォーマット):
[ { "FrameSize" : { "propertyName" : "framesize", "width" : 3072, "height" : 2304, "unit" : "pixels", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=compression
応答(JSONフォーマット):
[ { "Compression" : { "propertyName" : "compression", "compressionLabel" : "H.264/AVC", "urn:example-org:codingnames2010#ITU-H264", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=duration
応答(JSONフォーマット):
[ { "Duration" : { "propertyName" : "duration", "duration" : 3600, "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=format
応答(JSONフォーマット):
[ { "Format" : { "propertyName" : "format", "formatLabel" : "image/jpeg", "formatLink" : "http://dbpedia.org/resource/JPEG", "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=samplingRate
応答(JSONフォーマット):
[ { "SamplingRate" : { "propertyName" : "samplingRate", "samplingRate" : 44100, "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=frameRate
応答(JSONフォーマット):
[ { "FrameRate" : { "propertyName" : "frameRate", "frameRate" : 30, "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=averageBitRate
応答(JSONフォーマット):
[ { "AverageBitRate" : { "propertyName" : "averageBitRate", "averageBitRate" : 45.06, "statusCode" : 200 } } ]
リクエスト: http://example.com/my-media-resource/?ma-query=numTracks
応答(JSONフォーマット):
[ { "NumTracks" : { "propertyName" : "numTracks", "number" : 2, "typeString" : "audio", "statusCode" : 200 } } ]
この項には、実装の相互運用性に加え、メディア資源/フラグメントの識別子がなかったり、複数あったりした場合の扱いに関する実装者向けの推奨を含んでいます。
一部の情報源フォーマットでは、資源やそのフラグメントの1つを、1つ以上の識別子、フラグメント名、時間/空間フラグメントURIなどの複数の方法で識別できます。例えば、IDも割り当てられている時間のメディア・フラグメント(これは時間の値域で対応できる)がありえます。
メディア資源のオントロジーのRDF表現では、これはowl:sameAs
を用いて表すことができます(ガイドラインで推奨されているとおりに)。APIで同様の挙動を保証するためには、実装は、そのような識別子をすべて応答として返すべきです(should)。複数の識別子を持つフラグメントのプロパティーに対してクエリを行った場合、実装は個々の別の識別子を受け取り、それらのそれぞれ同じ応答を返すべきです(should)。
識別子をまったく指定せずに、フラグメント(例えば、トラック)に関するメタデータを含むことができる情報源フォーマットがあります。RDF表現では、空白ノードを使用できるため、これは問題ではありません。APIの実装では、識別子がない場合には、フラグメントのリストをリクエストするクライアントは、フラグメントのプロパティーにクエリを行うことができません。
そのような場合には、実装では、フラグメントに対して識別子を作成すべき(should)で、クライアントが後のクエリでそれをフラグメントのプロパティーに使用できるように、長い間有効であることを保証すべきです(should)。識別子が永続的に有効であり続けることは保証されません。
これは、下記を含む様々な方法で実装可能です。
APIは異なる2つのモードで実装できます。非同期モードは必須ですが、同期モードはオプションです。このような状況では、これらのモード間の相互運用性は、1つのモードのみの実装に基づきつつ、両方の処理モードを提供するための望ましい機能になるでしょう。
オプションであるAPIの同期モードの実装(例えば、ウェブ・サービスで)は、ラッパー(wrapper)によって必須の非同期通信に変わります。したがって、必須であるラッパーの機能性は、ノンブロッキング・スクリプト(non-blocking script)を処理するウェブ・ワーカーの仕様[WEBWORKERS]を用いてJavaScriptで実装されます。ラッパー・コードのデモは[MAWG-REPO]でダウンロードできます。最初に、非同期モード(mawg_api.js
)に加えて同期モードもサポートするために、MediaResourceインターフェースの既存オペレーションが適用されます。次に、同期コミュニケーションをラップするAsyncMediaResourceインターフェースの実装が加えられます。したがって、AsyncMediaResource
インターフェースの2つのオペレーション(getMediaProperty
とgetOriginalMetadata
)は、ウェブ・ワーカー(media_property_worker.js
、media_property_worker.js
)により、対応する同期の呼び出しを参照します。最後に、コールバック関数の呼び出しによって、同期コミュニケーションの結果が同期オペレーションにプッシュされます。
スレッドは一時停止できず、並行するスレッドとの相互作用も行えないため、同期の呼び出しによる非同期実装のラップは、JavaScriptでは実行できません。だとしても、ウェブ・サービスの呼び出しにおいて非同期APIの呼び出しをラップするために、他のプログラミング言語(例えばJava)を用いることはできます。
この仕様は、ウェブ上のメディア資源のメタデータ情報にアクセスするためのAPIを定義しています。このAPIは、別個のドキュメントか、メディア資源に組み込むかの方法で、メタデータ情報(1つのフォーマットまたは様々なフォーマットで既にアクセス可能)をリクエストするための手段を提供します。そのため、このAPIでは、それ以上のセキュリティ問題は発生しません。
それでもなお、合意の宣言なしに、メタデータを用いてある人の個人情報にアクセスできるかもしれないことに注意すべきです。例えば、メディア資源に関する時間と地理の情報は、その作成者に関する情報を間接的に提供する可能性があります。
DAP WGの[POLICY-REQS]、ODRL 1.1 [ODRL11]、P3P 1.1 [P3P11]や、PLING Wiki [PLING-WIKI]のポリシー要件[POLICY-REQS]など、この話題に取り組んでいるW3Cの関連する活動や技術文書があります。
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; };
このドキュメントは、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)です。
[email protected]での議論に貢献いただいた方々にも感謝を表します。