この文書「DAISYオンライン配信プロトコル仕様」(2010年5月29日付DAISYコンソーシアム理事会承認版)は、DAISY Consortium の "Specification for the DAISY Online Delivery Protocol (Approved May 29, 2010 by the DAISY Consortium Board)"の日本語訳です。この日本語訳は、kzakzaが個人的に訳したものであり、あくまで参考情報です。DAISY Consortiumの公式な日本語訳ではありません。翻訳・解釈に誤りがある可能性があります。原文の最新版が存在する可能性があります。

日本語訳更新日:
2014-10-25
日本語訳公開日:
2014-10-20
翻訳者:
kzakza

DAISYオンライン配信プロトコル(DAISY Online Delivery Protocol)仕様

DAISYコンソーシアム理事会によって2010年5月29日に承認

本バージョン:

本バージョンのzipアーカイブ:

旧バージョン:

編集者

(Co-Chair) Kenny Johar, Vision Australia

(Co-Chair) Markus Gylling, DAISY Consortium

Matt Garrish, CNIB

Geoff Gilmour-Taylor, CNIB

Jelle Martijn Kok, Solutions Radio

Nick Williamson, RNIB

Simon Roy, HumanWare

Johan Abbors, Pratsam


概要

DAISYオンライン配信プロトコルは、サービス(Service)プロバイダからエンドユーザー(User)へのデジタルリソースの配信を容易にするWebサービス(Service)APIである。このプロトコルは、様々なダウンロードモデルを実現する設定を可能とするオペレーションのコアセットを特徴とするもので、出版されたコンテンツのオンライン配信への高まるニーズに対するフレキシブルで軽量なソリューションである。

この文書のステータス

このセクションは、公開時点におけるこの文書のステータスを説明する。他の文書がこの文書を置き換える場合がある。現在のDAISY出版物の一覧や本仕様の最新のバージョンをDAISY projects http://www.daisy.org/projects/ のインデックスで見つけることができる。

この文書は、DAISY Online Working Groupがその活動の一環として作成した。発行時点での完全なメンバ一覧については、付録B 謝辞を参照すること 。

この文書は、DAISYコンソーシアムの技術勧告(Technical Recommendation)であり、DAISY Online Delivery Project憲章 [http://www.daisy.org/projects/daisy-online-delivery/charter.html]の下でDAISY Online Working Groupの運営によって作成されたものである。

ワーキンググループへのこの文書内の誤りの報告やこのプロトコルの将来のバージョンに対する提案は、DAISYコンソーシアムのサイトで公開されている一般のフィードバックフォーム http://www.daisy.org/contact を通して行ってほしい。

本仕様の英語版が標準を定める唯一のバージョンである。

目次

1. はじめに
2. 用語
3. 基盤となる技術
3.1. HTTP
3.1.1. HTTP Cookie
3.1.2. HTTPS
3.1.3. HTTP Basic認証
3.1.4. HTTP Rangeヘッダ
3.2. WS-I
3.2.1. Basic Profile 1.1
3.2.2. WSDL Binding Style
4. プロトコルの基礎
4.1. サービス(Service)モデル
4.1.1. 貸出モデル
4.1.2. 獲得モデル
4.2. ユーザー(User)認証とセッション(Sesstion)管理
4.2.1. セッション(Session)の初期化
4.2.2. セッション(Session)の継続時間
4.3. コンテンツ(Content)選択方式
4.3.1. Out-of-band コンテンツ(Content)選択方式
4.3.2. Browse コンテンツ(Content)選択方式
4.4. コンテンツ(Content)の発行と転送
4.4.1. コンテンツ(Content)取得シーケンス
4.4.2. コンテンツ(Content)のダウンロード(Download)とストリーミング(Streaming)
4.4.3. 更新の公開と数回に分けた公開
4.4.4. コンテンツ(Content)同期シーケンス
4.4.5. 著作権管理
4.5. サービス(Service)からのお知らせ
4.5.1. 新しいアナウンスメント
4.5.2. アナウンスを読む
4.6. ブックマーク
4.7. 動的メニュー
4.7.1. サポート
4.7.2. ルート質問
4.7.3. ナビゲーション
4.7.4. 質問のタイプ
4.7.5. エンドポイント
4.7.6. 予約済みのID
5. API リファレンス
5.1. サービス(Service)にサポートが求められる(REQUIRED)オペレーション(Operation)
5.1.1. logOn オペレーション(Operation)
5.1.2. logOffオペレーション(Operation)
5.1.3. setReadingSystemAttributesオペレーション(Operation)
5.1.4. issueContentオペレーション(Operation)
5.1.5. getContentMetadataオペレーション(Operation)
5.1.6. getContentResourcesオペレーション(Operation)
5.1.7. getServiceAttributes オペレーション(Operation)
5.1.8. getContentListオペレーション(Operation)
5.2. サービス(Service)のサポートが任意である(OPTIONAL)オペレーション(Operation)
5.2.1. getServiceAnnouncementsオペレーション(Operation)
5.2.2. markAnnouncementsAsReadオペレーション(Operation)
5.2.3. returnContentオペレーション(Operation)
5.2.4. setBookmarksオペレーション(Operation)
5.2.5. getBookmarksオペレーション(Operation)
5.2.6. getQuestionsオペレーション(Operation)
5.2.7. getKeyExchangeObjectオペレーション(Operation)
5.3. 障害(Fault)
5.3.1. internalServerError 障害(Fault)
5.3.2. noActiveSession 障害(Fault)
5.3.3. operationNotSupported 障害(Fault)
5.3.4. invalidOperation 障害(Fault)
5.3.5. invalidParameter 障害(Fault)
6. タイプ(Type)リファレンス
6.1. announcementsタイプ(Type)
6.1.1. アナウンスの例
6.2. bookmarkSetタイプ(Type)
6.3. contentListタイプ(Type)
6.3.1. contentList の例
6.4. contentMetadataタイプ(Type)
6.4.1. contentMetadata の例
6.5. KeyExchangeタイプ(Type)
6.6. keyRingタイプ(Type)
6.7. questionsタイプ(Type)
6.8. readタイプ(Type)
6.9. readingSystemAttributes タイプ(Type)
6.9.1. readingSystemAttributes の例
6.10. resourcesタイプ(Type)
6.10.1. resources の例
6.11. serviceAttributesタイプ(Type)
6.11.1. serviceAttributes の例
6.12. userResponsesタイプ(Type)
6.13. 要素のリファレンス
リファレンス
A. WSDL抽象定義
B. 謝辞

例のリスト

6.1. アナウンス
6.2. audio labelがついた1つの完全なcontentList
6.3. 1つの部分的なcontentList
6.4. contentMetadataの例
6.5.ポータブルのオーディオ中心のリーディングシステム(Reading System)のためのreadingSystemAttributes
6.6.より機能的なリーディングシステム(Reading System)のためのreadingSystemAttributes
6.7. スクリプトのURIを使用してリソースインスタンス
6.8. 最小限の図書館サービス(Service)のためのserviceAttributes
6.9. より充実したサービス(Service)のためのserviceAttributes
A.1. "example"が公開したWSDLドキュメント

1. はじめに

このセクションは参考情報である。

DAISYオンライン配信プロトコルは、コンテンツをクライアントとユーザー(User)にタイムリーかつ費用対効果の高い方法で配信できるようにしたいというDAISY製作者のニーズから生まれた。物理的な媒体によるコンテンツの配布の課題は、これらの解決法の実装が困難になり、これらの解決法の維持が煩雑になり、環境に対して優しくないことである。

DAISY デジタル録音図書(Digital Talking Book)は、DAISY規格の主要な構成要素であるが、標準そのものが進化しており、様々なタイプのアクセシブルな媒体を配布する必要性は、DAISYコンソーシアムの多くのメンバーがすでに直面しているものである。その結果、プロバイダからリーディングシステムへのリソースの伝達を目的として、このプロトコルのためのサービス(Service)アーキテクチャを開発した。アクセシブルパブリッシングの領域を超えてコンテンツ配信メカニズムとしても有用なプロトコルにするべき設計原理に基づいている。

第2の主要な開発の目的は、このプロトコルを、個人または組織の配信ニーズに合わせてカスタマイズし、調整ができるよう十分に柔軟なものにするためであった。最小限のコア機能は、たとえば、ユーザー(User)が夜、彼らのリーディングシステム(Reading System)を接続し、自動的に新しいコンテンツをダウンロードできるようにすることができるような、シンプルなサービス(Service)の開発を容易する。機能の拡張セットは、ユーザー(User)がブラウズして 彼ら独自のコンテンツをダウンロードするような、より豊かでよりインタラクティブなモデルを可能にする。

このプロトコルは、コンテンツの配信だけではなく、コンテンツの貸出を容易にするためにも設計された。期間を限定したユーザー(User)へのコンテンツ配信の手段が求められる図書館やその他の機関は、この種の配信モデルを容易にする多くの機能を見つけるだろう。明示的なデジタル著作権管理の問題が懸念事項であるため、このプロトコルではPDTB2コンテンツ保護スキームの使用も可能としている。

このプロトコルは、このコンテンツ配信モデルを実装する意向のある個人や組織の実装やメンテナンスのコストを削減するために既存の技術の確固たる土台の上に構築される、リーディングシステム(Reading System)とサービス(Service)との間の相互作用は、HTTPプロトコルを介したSOAPメッセージによって行われる。 サービス(Service)オペーレションは規範的なWSDLドキュメントで全て定義されている。そして、このプロトコルそのものは、WS-I Basic Profile 1.1に準拠している。

このプロトコルのこのバージョンでは取り組むことができなかった1つの機能は、DAISYオンライン配信サービス(Service)の発見である。DAISYコンソーシアムは、後日、オンラインサービスの追跡し、位置を特定するためのシステムや仕様を開発するかもしれないが、このプロトコルと統合しうるそのような機能は、現時点では存在しない。

2. 用語

このセクションは規範的である。

この文書で利用されているキーワード "MUST"、"MUST NOT"、"REQUIRED"、 "SHALL”、"SHALL NOT" 、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、 "MAY"、そして、 "OPTIONAL" は[RFC 2119]で規定されている通りに解釈されることとする。

加えて、この文書を通して次の用語がこのセクションで述べられて意味で使用されている。

借りることができるコンテンツ(Borrowable Content)

ユーザー(User)に貸与してよく(MAY)、貸与の後に返却されなければならない(MUST)コンテンツ(Content)。コンテンツ(Content)の所有権はユーザー(User)には渡されない。借りることができるコンテンツ(Borrowable Content)は有料で貸与されるコンテンツ(Content)が含まれる。

コンテンツ(Content)

DAISYデジタル録音図書のような、サービス(Service)を通してサービスプロバイダ(Service Provider)によって利用可能になった単数のリソースまたは複数のリソース。(単数形:コンテンツアイテム(Content item))

コンテンツ識別子(Content Identifier)

コンテンツアイテム(Content item)に割り当てられた一意の識別子。この識別子は、サービス(Service)によって定義され、contentMetadataタイプ(Type)の [Dublin Core] ] identifierフィールドによって公開される。識別子は、サービス(Service)の範囲内で一意でなければならない(MUST)し、それが時間の経過とともに変化してはならない(MUST NOT)。

注意事項:

コンテンツ識別子(Content Identifier)とコンテンツアイテム(Content item)内で使用される識別子(例えば、DAISYデジタル録音図書のメタデータ内の識別子)を一致させることは求められない。

ダウンロード(Download)

サービス(Service)からリーディングシステム(Reading System)へのコンテンツ(Content)の転送。このリーディングシステム(Reading System)は不揮発性メモリにコンテンツ(Content)を格納する。

注意事項:

ダウンロード(Download)とストリーミング(Streaming)は、このプロトコルの一面ではなく、リーディングシステム(Reading System)の行為である。

障害(Fault)

[SOAP 1.1]障害(Fault)。障害(Fault)は、SOAPメッセージのエラーおよび/またはステータス情報を搬送する。5.3 障害(Fault)で、このプロトコルで使用される障害(Fault)を定義している。

インタフェース(Interface)

[WSDL 1.1]ポートタイプ。サービス(Service)がサポートするオペレーション(Operation)のセット。

コンテンツの発行(Issue Content)

コンテンツアイテム(Content item)へのアクセスを許可すること。リーディングシステム(Reading System)は、サービス(Service)からアクセスを要求するためにissueContentオペレーションを使用する。

オペレーション(Operation)

[WSDL 1.1]オペレーション。サービス(Service)でサポートされているアクションである。

購入することができるコンテンツ(Purchasable Content)

ユーザー(User)に販売してもよく(MAY)、返却される べきではない(SHOULD NOT)コンテンツ(Content)。コンテンツ(Content)の所有権は、そのユーザー(User)に渡してもよいし(MAY)、渡さなくてもよい。購入することができるコンテンツ(Purchasable Content)には、無料で提供されているコンテンツ(Content)が含まれている。また、返却の必要がない失効したDRMで保護されたコンテンツ(Content)のような、返却が要求されないコンテンツ(Content)も含まれている。

リーディングシステム(Reading System)

サービス(Service)にアクセスし、ユーザー(User)のためにコンテンツ(Content)をレンダリングするハードウェアおよび/またはソフトウェアの組み合わせ。リーディングシステム(Reading System)は、1つのデバイス上で完全に実装されてもよいし(MAY)、いくつかに分割してもよい(MAY)。[WS-I Basic Profile 1.1 適合性対象]の利用者に対応する。

コンテンツの返却(Return Content)

コンテンツアイテム(Content item)へのアクセスをやめること。リーディングシステム(Reading System)がローカルに保存されたデータを削除し、issuedのコンテンツ(Content)を、ユーザー(User)のコレクションからアクセスを無効にし、削除するため、サービス(Service)に通知するためにreturnContentオペレーションをコールした時にコンテンツアイテム(Content item)は返却される。この用語は、借りることができるコンテンツ(Borrowable Content)のみに適用され、購入することができるコンテンツ(Purchasable Content)には適用されない。

サービス(Service)

DAISYオンライン配信プロトコルを実装するWebサービス(Service)。[WS-I Basic Profile 1.1 適合性対象]のインスタンスに対応する。

サービスデリゲート(Service Delegate)

サービスプロバイダ(Service Provider)の管理下にないファイルホステイィングサーバー

サービスプロバイダ(Service Provider)

サービス(Service)を所有している人(単一または複数)または組織(単一または複数)。サービスプロバイダ(Service Provider)は、そのサービス(Service)が動作しているサーバを所有する同じエンティティであってもよいし(MAY)、同じエンティティでなくてもよい。

セッション(Session)

あるリーディングシステム(Reading System)とあるサービス(Service)の間の一連のオペレーション(Operation)。サービス(Service)によって定義された一意の識別子を使用する。1つのセッションが、複数のHTTPコネクションを跨いで持続してよい(MAY)。セッション(Session)識別子は、サービス(Service)の裁量において再利用してもよい(MAY)。セッション(Session)識別子は、[HTTP Cookie]を使用して リーディングシステム(Reading System)に送信される。

ストリーミング(Streaming)

サービス(Service)からリーディングシステム(Reading System)へのコンテンツ(Content)の転送。リーディングシステム(Reading System)は転送されてすぐにそのコンテンツ(Content)をレンダリングし、一時的にそのコンテンツ(Content)を保存する。

注意事項:

ダウンロード(Download)とストリーミング(Streaming)は、このプロトコルの一面ではなく、リーディングシステム(Reading System)の行為である。

タイプ(Type)

[XML Schema 2]のデータタイプ。

ユーザー(User)

リーディングシステム(Reading System)を使用してサービス(Service)とやりとりし、かつ/またはそのサービス(Service)のコンテンツ(Content)にアクセスする人。

3. 基盤となる技術

このセクションは規範的である。

3.1. HTTP

DAISYオンライン配信プロトコルは次のように[HTTP 1.1]を使用する。

  • サービス(Service)によって送受信される全てのSOAPメッセージのトランスポート層として

  • コンテンツ(Content)データの転送のために

リーディングシステム(Reading System)は [HTTP 1.1] と、[SSL 3.0]または[TLS 1.0]を介してセキュアな HTTP (HTTPS) を対応しなければならない(MUST)。

HTTPの使用は、[HTTP 1.1][RFC 2617] に準拠しなければならない(MUST)。

サービス(Service)とリーディングシステム(Reading System)は[RFC 2109]で規定されているHTTPセッションをサポートしなければならない(MUST)。

注意事項:

確立されたHTTPセッションは、それ自身によって、リーディングシステム(Reading System)がサービス(Service)にログオンに成功したことを示す有効なインジケーターではない(セクション4.2. 「ユーザー(User)認証とセッション(Session)管理」 を参照すること)。

リーディングシステム(Reading System)から送られてきた全てのHTTP及びHTTPSリクエストに対し、サービス(Service)は、HTTPレスポンスの中で適切なHTTPステータスコード( [HTTP 1.1] セクション10で規定されているように)を返さなければならない(MUST)。

3.1.1. HTTP Cookie

DAISYオンライン配信プロトコルは、ステートフルなセッションを維持するために([WS-I Basic Profile 1.1]の中で規定されているように)[HTTP Cookies] の使用を求めている。

リーディングシステム(Reading System)は、サービス(Service)によって送信されるすべてのCookieを送受信できなければならない(MUST)。 [WS-I Basic Profile 1.1] のとおり、準拠したリーディングシステム(Reading System)は、Cookieを加工したり、操作してはいけない(MUST NOT)。

準拠したサービス(Service)は、HTTP Cookieを管理できなければならない(MUST)。

3.1.2. HTTPS

交換されるデータに秘密情報を含めてもよい(MAY)ため、サービス(Service)との全てのやり取りには、HTTPSの使用が推奨される(RECOMMENDED)。また、HTTPSは、リーディングシステム(Reading System)が証明書の使用によってサービス(Service)が本物であるかどうか確認することも認めている。

セキュリティについての考慮事項

HTTPSを実装する時には、自己署名証明書を使用するのではなく、全ての証明書を認証機関(certificate authority)に登録することが推奨される(RECOMMENDED)。

HTTPSを介して提供されるリソースを識別する全てのURIには標準的なURIプレフィックスであるhttps:を使用しなければならない(MUST)。

準拠したリーディングシステム(Reading System)は、HTTPSをサポートしなければならない(MUST)。 HTTPSへのサポートは、サービス(Service)にも推奨される(RECOMMENDED)。

3.1.3. HTTP Basic認証

[RFC 2617]で述べられているHTTP Basic認証スキームは、不正アクセスからコンテンツ(Content)を保護するために使用されてもよい(MAY)。

HTTP Basic認証を使用する時には、サービス(Service)はURIのサーバコンポーネントフィールドにあるクレデンシャルを提供しなければならない(MUST)。 userinfo フィールドのスキームは([RFC 2396]のセクション3.2.2にあるとおり) userinfo@host:portである。

クレデンシャルがパスワードを要求する場合は、userinfoフィールドは、 userid :password @ host :portという形式でなければならない(MUST)。

セキュリティについての考慮事項

  1. パスワードが暗号化されていない状態で転送される可能性があり、全てのケースにおいて セキュリティリスクであることが知られているため、userid:passwordを使用しないことを[RFC 2396]は、推奨している。サービス(Service)は、HTTPSのようなセキュアな接続を介して、このスキームを使用するのみにするべきである(SHOULD)。そして、リーディングシステム(Reading System)は この方法について知られた突破口を回避できるよう開発されるべきである(SHOULD)。

  2. パスワードを保存するための現在のベストプラクティスは、データベースが危険にさらされた時に備え、それぞれのパスワードの暗号化したハッシュを格納することのみである。しかし、サービス(Service)は、userinfoフィールドで提供するために、暗号化されていない認証証明書をユーザー(User)のために取得する必要があってもよい(MAY)安全な取得方法が実装されていない限り、このスキームを使用してBasic認証を実装するサービス(Service)は、結果としてデータベースのセキュリティを損なう危険性がある。

リソースを取得する時には、リーディングシステム(Reading System)は、サービス(Service)によって返されたURIで提供されたBasic認証証明書のみを送信しなければならない(MUST)。

コンテンツ(Content)にアクセスするために求められる証明書は、logOnオペレーションで提供される証明書と同じであることは求められない。

注意事項:

HTTP Basic認証の証明書は、サービス(Service)へのログオンに使用してはいけない(MUST NOT)。SOAPセッションを認証するための、セッション(Session)初期化シーケンス を参照すること。

仕様に準拠したリーディングシステム(Reading System)は、Basic認証をサポートしていなければならない(MUST)。サービス(Service)はBasic認証をサポートすることを推奨する(RECOMMENDED)。

3.1.4. HTTP Rangeヘッダ

HTTPまたはHTTPSを使用してリソースを提供する時、サービス(Service)はレンジ取得リクエストを尊重しなければならない(RFC 2616のセクション14.35で説明されているように)。

RFC 2616のセクション14.16で説明されているように)コンテンツの一部分を提供する時、サービス(Service)は、正しいステータスコード、Content-Rangeヘッダ、Content-Lengthヘッダを使用しなければならない(MUST)。

サービスデリゲート(Service Delegate)にRangeヘッダのサポートを求めるのは可能ではないため、リーディングシステム(Reading System)は、Rangeヘッダをサポートしていないサーバを処理できなければならない(MUST)。

3.2. WS-I

3.2.1. Basic Profile 1.1

DAISYオンライン配信プロトコルは、 [WS-I Basic Profile 1.1] の要件に準拠している。このプロトコルの仕様に準拠した全ての実装も[WS-I Basic Profile 1.1]に準拠しなければならない(MUST)。

3.2.2. WSDL Binding Style

付録A WSDL抽象定義の抽象的なWSDLドキュメントで使用されるWSDLバインディングスタイルは、document-literalのwrapedパターンである。document-literal のwrappedスタイルはdocument-literal スタイルのサブセットであり、[WS-I Basic Profile 1.1]の規範的な要件R2712を満たすものである。

準拠したサービス(Service)は、wrapped document-literalバインディングスタイルを使用しなければならない(MUST)。

4. プロトコルの基礎

このセクションは規範的である。

4.1. サービス(Service)モデル

DAISYオンライン配信プロトコルは、2つの基本的なサービスモデルをサポートしている。

  • 貸出モデル。サービス(Service)が借りることができるコンテンツ(Borrowable Content)を提供するモデル。

  • 獲得モデル 。サービス(Service)が 購入することができるコンテンツ(Purchasable Content)を提供するモデル。

サービス(Service)は、借りることができるコンテンツ(Borrowable Content)か 購入することができるコンテンツ(Purchasable Content)のどちらか一方を、またはその両方を提供してよい(MAY)。

両方のサービスモデルの下で同一のコンテンツ(Content)を提供するならば、サービス(Service)は異なるコンテンツ識別子(Content Identifier)を紐付けた2つのコンテンツアイテム(Content item)を提供しなければならない(MUST)。コンテンツアイテム(Content item)は、リソースの同じセットを有してもよい(MAY)。

コンテンツアイテム(Content item)が発行されるモデルを示すために、サービス(Service)は、コンテンツアイテム(Content item)のcontentMetadatarequiresReturn属性を使用しなければならない(MUST)。requiresReturntrueである場合、コンテンツアイテム(Content item)は借りることができるrequiresReturnfalseならば 、コンテンツアイテム(Content item)は購入することができる

コンテンツアイテム(Content item)が一度発行されたら 、サービス(Service)はrequiresReturn属性の値を変更してはならない(MUST NOT)。

4.1.1. 貸出モデル

4.1.1.1. サービス(Service)の要件

サービス(Service)が提供する借りることができるコンテンツ(Borrowable Content)は次の条件を満たさなければならない(MUST)。

借りることができるコンテンツ(Borrowable Content)のアイテムに次の条件が適用される。

  • コンテンツアイテム(Content item)のcontentMetadatarequiresReturn属性はtrue に設定しなければならない(MUST)。

  • コンテンツアイテム(Content item)が発行されたら 、 返却されるまでは、ユーザー(User)のissuedcontentListexpiredcontentListにコンテンツアイテム(Content item)が記載されなければならない(MUST)。

  • 公開済みのコンテンツアイテム(Content item)を返却するため、リーディングシステム(Reading System)が任意のセッション(Session)の間の任意の時間にreturnContentを呼び出すことをサービス(Service)は可能としなければならない(MUST)。

4.1.1.2. リーディングシステム(Reading System)の要件

リーディングシステム(Reading System)は、コンテンツアイテム(Content item)のすべてのローカルのコピーが削除されない限り、そのコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)とともにreturnContentを呼び出してはいけない(MUST NOT)。

4.1.1.3. コンテンツ(Content)の有効期間満了

このプロトコルは、リーディングシステム(Reading System)によるコンテンツ(Content)の自動的な返却 を支援するため、次の2つのメソッドを定義する。resourcesタイプ(Type)のreturnBy属性と、 expiredcontentListである。このプロトコルは、リーディングシステム(Reading System)にこれらのメソッドの強制を求めるものではない。サービスプロバイダ(Service Provider)は、(例えば、[PDTB2] のような DRM スキームによって )特定の時間に有効期限が満了ならなければならない(MUST)コンテンツ(Content)を保護するために他のメソッドを調査するべきである(SHOULD)。

returnBy属性は、ユーザー(User)がコンテンツアイテム(Content item)を返却するべき(SHOULD)時間の前であることを示している。リアルタイムクロックを持っている場合は、リーディングシステム(Reading System)は、指定した時間にコンテンツアイテム(Content item)を削除するべきであり(SHOULD)、次のセッションでサービス(Service)に返却するべきである(MUST)。リーディングシステム(Reading System)は、returnBy属性にある返却期限日をユーザー(User)に伝達するべきである(SHOULD)。

サービスプロバイダ(Service Provider)がコンテンツアイテム(Content item)の返却を望んでいることを示すため、サービス(Service)はexpiredContentList発行された借りることができるコンテンツアイテム(Borrowable Content item)を追加してもよい(MAY)。リーディングシステム(Reading System)が借りることができるコンテンツ(Borrowable Content)のアイテムを持っている場合、リーディングシステム(Reading System)は、各セッションで少なくとも1回このリストを取得するためexpiredidのパラメータを用いてgetContentListを呼び出すべきである(SHOULD)。そして、指し示されたコンテンツアイテム(Content item)を返却するべきである(SHOULD)。expiredContentListにあるコンテンツアイテム(Content item)はまだ公開される。

注意事項:

サービスプロバイダ(Service Provider)は、expiredcontentListを例外的な場合にのみ使用すべきである(SHOULD)。ユーザー(User)は、コンテンツアイテム(Content item)の有効期限がきれたことを通知されるべきであり(SHOULD)、削除されるだろう。

4.1.2. 獲得モデル

4.1.2.1. サービス(Service)の要件

購入することができるコンテンツ(Purchasable Content)のアイテムに次の条件が適用される。

  • コンテンツアイテム(Content item)のcontentMetadatarequiresReturn属性はfalseに設定されなければならない(MUST)。

  • コンテンツアイテム(Content item)が発行されたら、ユーザー(User)のissuedcontentListにコンテンツアイテム(Content item)が記載されてもよい(MAY)。しかし、expiredcontentList に記載されてはいけない(MUST NOT)。この仕様は、issuedcontentListにおける購入することができるコンテンツ(Purchasable Content)の入手可能性の有効期間を規定しない。

4.1.2.2. リーディングシステム(Reading System)の要件

リーディングシステム(Reading System)はcontentMetadatarequiresReturn属性がfalse となっているコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)とともにreturnContentを呼び出してはいけない(MUST NOT)。

4.2. ユーザー(User)認証とセッション(Sesstion)管理

コンテンツを(Content)を取得するためにサービス(Service)とやりとりできるようにする前にリーディングシステム(Reading System)は、認証を成功させ、サービス(Service)と有効なセッション(Session)を確立しなければならない(MUST)。次項から、このプロセスの手順について概要を述べる。

4.2.1. セッション(Session)の初期化

リーディングシステム(Reading System)をサービス(Service)に認証させるため、セッション(Session)を開始するときは、次の手順に従わなくてはならない(MUST)。

サービスプロバイダ(Service Provider)は、リーディングシステム(Reading System)を認証するために必要なクレデンシャルを規定し、ユーザー(User)に提供する責任がある。サービス(Service)は、ユーザー(User)ごと、グループごと、ユーザー(User)のクラスごと、リーディングシステム(Reading System)ごと、もしくはその他の方法によってクレデンシャルを提供しなければならない(MUST)。

  1. リーディングシステム(Reading System)は、logOnオペレーションを呼び出して、サービス(Service)に対するユーザー(User)のクレデンシャルを通過しなくてはならない(MUST)。

  2. サービス(Service)は提供されたクレデンシャルを検証しなければならない(MUST)。そして、それが有効であるならば、そのセッション(Session)のための一意の識別子をもったCookieを発行しなければならない(MUST)。logOnオペレーションに対して成功応答を戻す場合には、サービス(Service)はCookieをリーディングシステム(Reading System)に送らなければならない(MUST)。

ログオンの成功応答を受信した後に、リーディングシステム(Reading System)は、指定された順序で次のオペレーション(Operation)を呼び出さなくてはならない(MUST)。

  1. getServiceAttributes。サービス(Service)に関する必要な情報を発見するために呼び出さなくてはならない(MUST)。

  2. setReadingSystemAttributes。リーディングシステム(Reading System)の能力に関する情報をサービス(Service)へ提供するために呼び出さなくてはならない(MUST)。この呼び出しが成功した場合、サービス(Service)は、true ([XML Schema 2])を返さなくてはならない(MUST)。

サービス(Service)が初期化の段階で障害(Fault)を返すか、求められた戻り値が提供されない場合、リーディングシステム(Reading System)はセッション(Session)を再初期化させる、またはログオンプロセスを終了させてもよい(MAY)。リーディングシステム(Reading System)は、ユーザー(User)に警告してもよいし(MAY)、自動的に再接続を試みてもよいし(MAY)、そのデバイスに特有のアクションをとってもよい(MAY)。

リーディングシステム(Reading System)がこのセクションで概説しているもの以外のオペレーション(Operation)を呼び出そうとした場合、サービス(Service)は、初期化シーケンスの全てがうまく完了する前にinvalidOperation障害(Fault)を返さなければならない(MUST)。このルールの唯一の例外は、 初期化シーケンス内であればどこでも呼び出してよい(MAY)logOffオペレーションである。

ログオンが成功し、初期化シーケンスが完了した後、リーディングシステム(Reading System)は、この仕様で規定されたどのオペレーション(Operation)を呼び出してもよい(MAY)。しかし、もしlogOnを呼び出す場合は、このセクションで概説した初期化シーケンスを完了しなくてはならない(MUST)。

注意事項:

たとえlogOnが失敗した場合でも、サービス(Service)はCookieを発行してもよい(MAY)。

4.2.2. セッション(Session)の継続時間

logOnオペレーションが成功した後、セッション(Session)は開始する。リーディングシステム(Reading System)がlogOffを呼び出すことに成功するか、サービス(Service)がセッション(Session) を終了させるまでは、セッション(Session)はアクティブなままでなければならない(MUST)。このプロトコルは、セッション(Session)の終了に関連した振る舞いを定義しない。タイムアウトインターバル、強制終了の理由、関連するアスペクトは、実装によって定義される。

セッション(Session)がアクティブである限り、サービス(Service)は複数のHTTP接続を跨いでリーディングシステム(Reading System)によるセッション(Session)を持続するべきである(SHOULD)。サービス(Service)は、同じセッションIDを持つ複数の同時接続を可能としてよい(MAY)。

4.3. コンテンツ(Content)選択方式

DAISYオンライン配信プロトコルは、次の2つのコンテンツの選択方式をサポートしている。

  • out-of-band方式。この方式では、ユーザー(User)のコンテンツ(Content)がウェブインターフェイスか自動コンテンツ配信システムのようなout-of-bandメカニズムによって、選択されているか、割り当てられている。

  • browse方式。この方式では、ユーザー(User)がこのプロトコルで定義されたオペレーション(Operation)を使用してサービス(Service)のコレクションを閲覧することができる。

サービスプロバイダ(Service Provider)は、ユーザー(User)に少なくとも1つのコンテンツ選択方式を提供しなければならない(MUST)。

リーディングシステム(Reading System)は、相互運用性の最大化のために、両方のコンテンツ選択方法をサポートするべきである(SHOULD)。しかし、この仕様に準拠するためには、1つの方式をサポートしていることのみが求められている(REQUIRED)。

4.3.1. Out-of-band コンテンツ(Content)選択方式

Out-of-band コンテンツ(Content)選択方式を提供するサービス(Service)が次の条件に合致するならば、そのサービス(Service)は、仕様に準拠している。

既に公開されているコンテンツアイテム(Content item)にアクセスするために、リーディングシステム(Reading System)はもし利用可能であるならば、issuedcontentListも利用してよい(MAY)。

out-of-band選択方式を使用して自動的にダウンロードするシナリオでは、リーディングシステム(Reading System)は、コンテンツ(Content)を取得するためにセクション4.4.「コンテンツ(Content)の発行と転送」で概説されている手順も実行しなければならない(MUST)。

4.3.2. Browse コンテンツ(Content)選択方式

次の条件に合致するならば、Browse コンテンツ(Content)選択方式を提供するサービス(Service)は、仕様に準拠している。

4.4. コンテンツ(Content)の発行と転送

リーディングシステム(Reading System)が、サービス(Service)にコンテンツ(Content)を発行することを要求し、コンテンツ(Content)をダウンロード(Download)もしくはコンテンツ(Content)のストリーミング(Steaming)を開始する手順を、次のセクションで概説する。

4.4.1. コンテンツ(Content)取得シーケンス

サービス(Service)からコンテンツアイテム(Content item)をダウンロードするために、リーディングシステム(Reading System)は与えられた順序で次のオペレーション(Operation)を最初に呼び出さなければならない(MUST)。オペレーション(Operation)を次から次へのすぐに呼び出す必要はない(他のコンテンツアイテム(Content item)のために、他のオペレーション(Operation)を呼び出してよい(MAY))。しかし、順序は維持されなければならない(MUST)。

このセクションで識別される全てのオペレーション(Operation)はコンテンツ識別子(Content Identifier)をパラメータとする。

  1. getContentMetadata。コンテンツアイテム(Content item)に関する情報を取得するためにこのオペレーション(Operation)を呼び出さなければならない(MUST)。返されたメタデータには、出版情報、ファイル形式、戻りステータスとサイズが含まれている。

  2. issueContent。リーディングシステム(Reading System)が、コンテンツアイテム(Content item)にアクセスしようとしていることをサービス(Service)に通知するためにこのオペレーション(Operation)を呼び出さなければならない(MUST)。このオペレーションは、アクセスのための正式な要求を構成している。サービス(Service)は、次の手順に進むためにtrueを返さなければならない(MUST)

    サービス(Service)がfalse 、または障害(Fault)を返す場合は、コンテンツアイテム(Content item)は発行されてはいない。サービス(Service)がtrue を返さない限り、リーディングシステム(Reading System)は次の手順に進んではいけない(MUST)。

  3. getContentResources。コンテンツアイテム(Content item)を構成する全てのリソースのURIを取得するためにこのオペレーションが呼び出されなければならない(MUST)。サービス(Service)は、それぞれの発行したコンテンツアイテム(Content item)ごとにgetContentResourcesの複数の呼び出しを認めてもよい(MAY)。

    リーディングシステム(Reading System)がまだ発行されていないコンテンツアイテム(Content item)のgetContentResourcesを呼び出した時、サービス(Service)は、invalidParameter障害(Fault)を返さなくてはならない(MUST)。

    サービス(Service)は、複数のセッション(Session)を跨ぐ同じコンテンツアイテム(Content item)に対するgetContentResourcesの呼び出しを認めるべきである(SHOULD)。

リーディングシステム(Reading System)は一般的に、サービス(Service)にアイテムを発行するよう要求する前に、コンテンツ(Content)選択方式に説明されている方式の1つを使用するサービス(Service)からcontentList を取得するだろう。

注意事項:

issueContentを呼び出すためのリーディングシステム(Reading System)の要件は、サービス(Service)に要求に関するいかなる情報の追跡をサービス(Service)に要求しないことである。例えば、サービスプロバイダ(Service Provider)が希望するなら、サービス(Service)はすべての要求に対してtrueを返してもよい(MAY)。

4.4.2. コンテンツ(Content)のダウンロード(Download)とストリーミング(Streaming)

リーディングシステム(Reading System)が、コンテンツアイテム(Content item)のリソースのリストを一度取得したら、そのリーディングシステム(Reading System)は、リソース要素で提供されるURIを使用してリソースのダウンロードやストリーミングを開始してもよい(MAY)、

リソースタイプ(Type)はuri属性とlocalURI属性の両方をもっている。uriがリソースのデータの位置である一方で、 localURIは、リーディングシステム(Reading System)がリソースを参照するために使用するローカル名である。このシステムは、リーディングシステム(Reading System)が、例えばDAISY DTBのようなコンテンツアイテム(Content item)内の内部リンクをたどることを認めている一方で、サービス(Service)に任意のURI(例えば、スクリプトによって提供されるもの)とともにリソースを提供させるものである。localURIパスはコンテンツアイテム(Content item)のルートパスからの相対パスである。

URI は ​​、スクリプトや他のコンテンツ配信メカニズムによって解決されてもよい(MAY)ため、リーディングシステム(Reading System)はリソースをローカルで名付けるためにuri属性を使うべきではない(SHOULD NOT)。

リーディングシステム(Reading System)は、リソースの転送を命令するためにリソースのmimeType属性で[MIME] タイプの情報を使用してもよい(MAY)。例えば、ストリーミングリーディングシステム(Streaming Reading System)は、音声データをダウンロードする前にユーザー(User)にすべてのナビゲーションを提供するためにDAISYデジタル録音図書の OPFNCX、そして、SMILファイルを取得してもよい(MAY)。

サービスデリゲート(Service Delegate)に所属するサーバ上にリソースを格納してもよい(MAY)。サービス(Service)は、サービスデリゲート(Service Delegate)サーバに格納されたコンテンツにアクセスをするときに要求される任意のクレデンシャルをリーディングシステム(Reading System)に提供しなくてはならない(MUST)。Basic認証でセキュリティを確保された各リソースのURIは、そのリソースにアクセスするために要求されるクレデンシャルを含めなければならない(MUST)。セクション3.1.3「HTTPBasic認証」 を参照すること。

注意事項:

サービス(Service)は、リーディングシステム(Reading System)がアクティブなセッション(Session)外にあるリソースにアクセスにすることを認めるべきである(SHOULD)。

4.4.3. 更新の公開と数回に分けた公開

このセクションでは、サービスプロバイダ(Service Provider)が、このプロトコルを使用してコンテンツアイテム(Content item)の更新を公開する方法を説明する。

contentList内のresourcesタイプとそれぞれのcontentItem は、コンテンツアイテム(Content item)が最後に修正された時間を指し示す任意の(OPTIONAL)lastModifiedDate属性を持つ。リーディングシステム(Reading System)はこの情報をサービス(Service)上のコンテンツアイテム(Conten item)が最後にアクセスされてからアップデートされているかどうかを決定するために使用することができる。resourceリスト内の各resourceも任意の(OPTIONAL)lastModifiedDate属性を持つ。リーディングシステム(Reading System)は、そのlastModifiedDate属性をどのリソースがアップデートされたかを決定するために使用してよい(MAY)。

このセクションで詳しく述べられた機能は、コンテンツアイテム(Content item)の新しいセクションが作成されるような、同じコンテンツアイテム(Content item)を徐々にアップデートすることによる数回に分けたコンテンツ(Content)の公開に使用することができる。

4.4.4. コンテンツ(Content)同期シーケンス

このセクションは参考情報である。

Out-of-band コンテンツ(Content)選択方式では 、リーディングシステム(Reading System)はローカルで保有しているコンテンツ(Content)をサービス(Service)上でユーザー(User)が利用できるコンテンツ(Content)を自動的に同期することができる。コンテンツ(Content)を同期するために次の一連の手順を取ることができる。セッション(Session)を初期化しなければならない(MUST)が、その他のオペレーション(Operation)は同期する前に呼び出してもよい(MAY)。

  1. リーディングシステム(Reading System)がオフラインの間にユーザー(User)がコンテンツ(Content)を返すことを選択した場合には、リーディングシステム(Reading System)は各コンテンツアイテム(Content item)ごとにreturnContent(itemid)を呼び出す。

  2. リーディングシステム(Reading System)は getContentList("expired", 0, -1)を呼び出す。

  3. リーディングシステム(Reading System)はexpiredリスト内のコンテンツアイテム(Content item)を1つ1つ返却する。

  4. リーディングシステム(Reading System)はgetContentList("new", 0, -1)を呼び出す。

  5. セクション 4.4.1. 「コンテンツ(Content)取得シーケンス」で述べられているように、newリスト内のコンテンツアイテム(Content item)ごとにリーディングシステム(Reading System)はgetContentMetadata(itemid)を呼び出し、続いて issueContent(itemid)、続いてgetContentResources(itemid)を呼び出す。

  6. リーディングシステム(Reading System)はgetContentList("issued", 0, -1)を呼び出す。

  7. issuedリスト内のコンテンツアイテム(Content item)ごとに、リーディングシステム(Reading System)はgetContentResources(itemid) を呼び出す。

この時点で、リーディングシステム(Reading System)はユーザー(User)が利用可能な全てのコンテンツアイテム(Content item)のcontentMetadataリソースを持っているだろう。リーディングシステム(Reading System)は、新規コンテンツ(Content)や更新コンテンツ(Content)のダウンロードを開始することができる。また、ユーザー(User)にそれらのタイトルのストリーミングを提供することができるほか、オペレーション(Operation)を呼び続けることもできる。

サービス(Service)はcontentListの一部を自由に返すことができるため、 完全なリストを取得するために、適切なインデックスパラメータでgetContentListオペレーションを数回呼び出してもよい(MAY)。

障害(Fault)が、このシーケンスの中で発生してもよい(MAY)。例えば、サービス(Service)は、 newcontentList内のコンテンツアイテム(Content item)を多く提供してよい(MAY)が、同時に発行できるのは少しのみである。

4.4.5. 著作権管理

コンテンツ(Content)を保護するために[PDTB2]フォーマットを使用してもよい(MAY)。このプロトコルでは、鍵交換メカニズムとしてgetKeyExchangeObjectオペレーションを提供する。このオペレーションで、リーディングシステム(Reading System)が、暗号化されたコンテンツ(Content)にアクセスするためにサービス(Service)からの鍵を要求することを可能にする。

リーディングシステム(Reading System)とサービス(Service)はPDTB2をサポートすることを求められてはいない。例えば、リーディングシステム(Reading System)に鍵が提供されている場合など、鍵を提供する代替手段が実装している場合、サービス(Service)は、getKeyExchangeObject へのサポートをしないで、PDTB2で保護されたコンテンツ(Content)を提供してもよい(MAY)。

注意事項:

このプロトコルは、信頼メカニズムを提供しない。リーディングシステム(Reading System)がこのプロトコルを使用してサービス(Service)にその公開鍵を提供する方法はない。PDTB2をサポートしているサービス(Service)は、リーディングシステム(Reading System)制作者からの鍵を登録するために、out-of-band方式を使用しなければならない(MUST)。

このプロトコルでは、鍵の有効期限を終了するためのメカニズムはない。

4.4.5.1. PDTB2サポートを宣言する

リーディングシステム(Reading System)がPDTB2をサポートしている場合、リーディングシステム(Reading System)は、サービス(Service)にPDTB2の値を持つ supportedContentProtectionFormats要素と、キーリング内の鍵の名前をリスト化したkeyRing要素をreadingSystemAttributes に含めて通知するべきである(SHOULD)。提供されたキーの名前は、リーディングシステム(Reading System)がサポートしている公開鍵の一部または全てである。

サービス(Service)がPDTB2鍵交換をサポートすることを示すために、サービス(Service)はPDTB2_KEY_PROVISIONという値を持つoperation要素をserviceAttributesに含めなければならない(MUST)。

4.4.5.2. PDTB2コンテンツ(Content)を識別する

PDTB2を使用してコンテンツアイテム(Content item)を保護している場合、 サービス(Service)は、2005-1という値を持つpdtb2:specVersionと名付けられたmeta 要素をcontentMetadataに含めなければならない(MUST)。

さらに、resourcesリスト内の保護されたリソースのmimeTypeは、[PDTB2]仕様のセクション4.1.1.「パッケージファイル」で定義されているようでなければならない(MUST)。 それらのMIMEタイプapplication/x-pdtb…. で始まる。

4.4.5.3. PDTB2コンテンツ(Content)にアクセスする

あらゆるリーディングシステム(Reading System)はPDTB2で保護されているとマークされたコンテンツアイテム(Content item)にアクセスしてもよい(MAY)。PDTB2をサポートしないリーディングシステム(Reading System)は、リソースの一部またはすべてをレンダリングすることができないだろう。

PDTB2で保護されたコンテンツアイテム(Content item)は、そのリソース内にAuthorization Object (AO)を持たなくてはならない(MUST)。リーディングシステム(Reading System)は、コンテンツアイテムを解読するために必要な鍵をセキュアにする鍵の名前のために、AOを検査することができる。リーディングシステム(Reading System)がAOの暗号化されたセクションにアクセスするための鍵を持っていない場合は、リーディングシステム(Reading System)は、サービス(Service)にKey Exchange Object (KXO)を要求してもよい(MAY)。

KXOを取得するには、リーディングシステム(Reading System)は要求された鍵の名称とともにgetKeyExchangeObjectオペレーションを呼び出さなくてはならない(MUST)。

サービス(Service)はKXOを暗号化するためにreadingSystemAttributes内で提供されるどの鍵を選択してもよい(MAY)。サービス(Service)が鍵を全く持っていないか、ユーザー(User)がコンテンツアイテム(Content item)へのアクセスの権限が与えられていない場合、サービス(Service)はinvalidParameter 障害(Fault)とともに返さなくてはならない(MUST)。

リーディングシステム(Reading System)がサービス(Service)から有効なKXOを受け取ったら、リーディングシステム(Reading System)は、保護されたコンテンツアイテム(Content item)の鍵をはずすための AO 内の鍵にアクセスするために、そのKXOを使用することができる。

4.5. サービスアナウンスメント

DAISYオンライン配信プロトコルは、サービスプロバイダ(Service Provider)がサービスアナウンスメントをユーザー(User)のリーディングシステム(Reading System)に配信することを認めている。サービスアナウンスメントとは、情報を伝達するテキスト及び/または音声フォーマットによる ユーザー(User)への短いメッセージである。予期されるサービス(Service)が停止する時間に関するアラートまたはコンテンツアイテム(Cotent item)の期限超過に関する警告などが例に挙げられる。

サービス(Service)がサービスアナウンスメントに対応していることを示すために、サービス(Service)はSERVICE_ANNOUNCEMENTSの値を持つoperation要素をserviceAttributes に含めなくてはならない(MUST)。

サービス(Service)は、サービスアナウンスメントをサポートすることは求められてはいない。リーディングシステム(Reading System)は相互運用性を最大化するために、テキストと音声のサービスアナウンスメントを取得し、レンダリングすることができるべきである(SHOULD)。

4.5.1. 新しいアナウンスメント

リーディングシステム(Reading System)は、サービス(Service)と接続している間は、getServiceAnnouncementsオペレーションを呼び出すことで新しいメッセージをいつでも確認してよい(MAY)。リーディングシステム(Reading System)は、新しいセッション(Session)の初期化が完了した後すぐにアナウンスメントを確認することを推奨する(RECOMMENDED)。

サービス(Service)は、1(最も重要)から3(最も重要でない)のレベルで各アナウンスに重要度のレベルを設定し、ユーザー(User)に示すためのアナウンスを要求するリーディングシステム(Reading System)を支援するためにERRORSYSTEMWARNINGまたはINFORMATIONのうち1つをアナウンスメントのタイプとして規定することができる。

サービス(Service)は、サービス(Service)からの未読のアナウンスをいつでも、いかなる理由によっても削除してもよい(MAY)。潜在的な取得の競合を避けるため、リーディングシステム(Reading System)はアクティブセッション(Session)の持続時間よりも短い有効期間のannouncement IDを取り扱わなくてはならない(MUST)。

サービス(Service)がサービスアナウンスメントに対応してない場合、リーディングシステム(Reading System)がgetServiceAnnouncements を呼び出した時にはサービス(Service)はoperationNotSupported障害(Fault)を返さなくてはならない(MUST)。

4.5.2. アナウンスを読む

リーディングシステム(Reading System)がアナウンスをユーザー(User)に提供した後、次回、ユーザー(User)がサービス(Service)と接続した時に再度同じアナウンスを送信しないよう(Service)に伝えるために、リーディングシステム(Reading System)はmarkAnnouncementsAsReadオペレーションを呼び出してもよい(MAY)。

サービス(Service)から削除されたアナウンスメントより生じる衝突を防ぐために、リーディングシステム(Reading System)は、アクティブなセッション(Session)の間のgetServiceAnnouncementsの最後の呼び出しからmarkAnnouncementsAsReadの呼び出しで獲得した識別値のみを通さなくてはならない(MUST)。

リーディングシステム(Reading System)がmarkAnnouncementsAsReadを呼び出し 、サービス(Service)がfalse を返した場合、アナウンスメントはすでに既読とマークされている。サービス(Service)がinvalidParameter障害(Fault)を返す場合、その識別子は、サービス(Service)上に存在しない。

リーディングシステム(Reading System)は、markAnnouncementsAsReadの1つの呼び出しにおいて 1つ以上のアナウンスを既読としてマークしてもよい(MAY)。invalidParameter 障害(Fault)が返された場合、リーディングシステム(Reading System)はどの識別子が障害(Fault)の原因となったかを決定するために、順次アナウンスごとにmarkAnnouncementsAsRead を呼び出さなくてはならない(MUST)。

4.6. ブックマーク

DAISYオンライン配信プロトコルは、setBookmarksオペレーションによってユーザー(User)のブックマークを記録するために [Z39-86.2005]のポータブルブックマーク(Portable Bookmark)とハイライト(Highlight)の文法を使用する。 リーディングシステム(Reading System)は、コンテンツアイテム(Content item)の最後の読み取り位置を記録するためにこのオペレーションを使用することもできる。リーディングシステム(Reading System)はgetBookmarksオペレーションで保存されたブックマークを取得することができる。サービス(Service)は、ユーザー(User)がアクセスするためのブックマークを事前に定義することもできます。

注意事項:

[Z39-86.2005-BOOKMARKS] は利用とこのタイプのセマンティクスに関して規範的な参照を構成する。しかし、このバージョンのこのプロトコルにおけるsetBookmarksgetBookmarks オペレーションでは、音声による注釈はサポートされていない

サービス(Service)がブックマークの取得をサポートしていることを示すために、サービス(Service)はserviceAttributesGET_BOOKMARKSの値を持つoperation要素を含めなければならない(MUST)。

サービス(Service)がブックマークの設定をサポートしていることを示すために、サービス(Service)はserviceAttributesSET_BOOKMARKS の値を持つ operation要素を含めなければならない(MUST)。

サービス(Service)はブックマークの設定と取得の両方をサポートしている場合は、リーディングシステム(Reading System)はユーザー(User)の最後に読み取り位置を保存するためにbookmarkSetlastMark要素を使用してもよい(MAY)。リーディングシステム(Reading System)は、再生を再開する前に最後の読み取り位置を確認するべきである(SHOULD)。

サービス(Service)はブックマークの取得またはブックマークの設定と取得の両方をサポートしてもよい(MAY)。リーディングシステム(Reading System)は、相互運用性の最大化ための両方のオペレーションをサポートするべきである(SHOULD)。

4.7. 動的メニュー

このセクションは参考情報です。

DAISYオンライン配信プロトコルは、仕様に準拠したリーディングシステム(Reading System)に動的なメニューをサービス(Service)が提供するための機能を提供している。ユーザー(User)は、サービス(Service)の目録をブラウジングしたり、調査に回答をしたり、オンラインストアからアイテムを購入するなどの、サービス(Service)によって提供された多種多様な行為を行うためにこれらのメニューを使用することができる。

以下のセクションでは、動的なメニューシステムの基本原理について説明する。参考となる使用例については、 [Dynamic Menus Primer] を参照すること。

4.7.1. サポート

このセクションは規範的である。

動的メニューをサポートするために、リーディングシステム(Reading System)またはサービス(Service)はgetQuestionsオベレーションを実装していなければならない(MUST)。

サービス(Service)が動的メニューをサポートしていることを示すために、サービス(Service)はserviceAttributesDYNAMIC_MENUSという値を持つoperation 要素を含めなければならない(MUST)。

動的メニューをサポートするリーディングシステム(Reading System)は、readingSystemAttributesでどの入力タイプをサポートしているかを宣言しなければならない(MUST)。サービス(Service)は、リーディングシステム(Reading System)がサポートしていないインプットタイプを要求する質問を送信するべきではない(SHOUDL NOT)。リーディングシステム(Reading System)がどのインプットタイプも宣言していない場合は、サービス(Service)は、multipleChoiceQuestionのみを送信するべきである(SHOULD)。

Browse コンテンツ(Content)選択方式をサポートするサービス(Service)は、ユーザー(User)がコンテンツ(Content)を選択することを可能にするために動的メニューもサポートしなければならない(MUST)。Out-of-band コンテンツ(Content)選択方式 のみをサポートするサービス(Service)は、他の相互作用の目的のために動的メニューをサポートしてもよい(MAY)が、サポートは求められない。

4.7.2. ルート質問

このセクションは規範的である。

すべての動的なメニューシステムは、ルート質問を持たなければならない(MUST)。ルート質問は、基本開始メニュー、またはメインメニューである。 defaultidを持っている。

ルート質問を取得するために、1つのセッション(Session)でのgetQuestionsの最初の呼び出しはquestionIDdefaultである単一のuserResponseとセットでなければならない(MUST)。

4.7.3. ナビゲーション

このセクションは規範的である。

1つの質問は、動的メニューシステムにおけるナビゲーションの基本単位であり、メニューの選択肢の各セットは概念的にユーザー(User)に対する次にとる手順についての質問として見ることができる。

getQuestionsは、userResponses という1つのパラメータをとる。userResponsesタイプは、以前の質問(単一または複数)に対する回答か、セクション4.7.6.「予約済のID」 で定義された3つのキーワードのうちの1つがセットされた1つのquestionIDを持っている。

ユーザー(User)は、セクション4.7.5.「エンドポイント」で概説されているエンドポイントの1つに到達するまで、繰り返しgetQuestionsの呼び出しに対して返ってきた質問への回答を選択して、メニューシステムをナビゲートする。

サービス(Service)は、getQuestionsのどの呼び出し応じて1つ以上の質問を送信してもよい(MAY)。リーディングシステム(Reading System)は、再度、getQuestionsを呼び出す前にそれぞれの質問に対する回答を集めるべきであり(SHOULD)、それぞれの回答は、別々のuserResponse要素に格納されていなければならない(MUST)。

4.7.4. 質問のタイプ

このセクションは規範的である。

DAISYオンライン配信プロトコルは、メニューシステムをナビゲートするための質問として、次の2つのタイプが定義されている。

Multiple Choice Questions(複数選択式質問)

Multiple Choice Questions(複数選択式質問)は、選択するための選択肢のセットである。Multiple Choice Questions(複数選択式問題)は、questions タイプのmultipleChoiceQuestion子要素によって表現される。

Input Questions(入力式質問)

Input Questions(入力式質問)は、ユーザー(User)がテキストおよび/または音声を入力することで回答するものである。Input Questions(入力式問題)は、questionsタイプの inputQuestion子要素によって表現される。

サービス(Service)は、Input Questions(入力式質問)が数値による回答、英数字による回答、音声による回答のどれを要求しているかを、inputQuestionタイプのinputTypes子要素で規定しなければならない(MUST)。複数入力タイプは、 規定されたタイプのどれを使用してもよい(MAY)ことを意味する。

4.7.5. エンドポイント

このセクションは規範的である。

getQuestionsの呼び出しを通じて受信したquestions 要素は、子として次の1つを格納する。そして、メニューシーケンスのエンドポイントを示す。

  • labellabelを使用して購入の確認や調査完了のお礼など、ユーザー(User)に参考情報または終了声明を提供してもよい(MAY)。

  • contentListRef。メニューシケンスが、ユーザー(User)がアクセスしてよいコンテンツアイテム(Content item)のリストの生成で終了する時はcontentList のIDをcontentListRefは格納する。

4.7.6. 予約済みのID

このセクションは規範的である。

3つの予約済みの質問識別子の値がある。

default

リーディングシステム(Reading System)が、ルートの質問を要求していることを示す。セクション4.7.2.「ルート問題」 を参照すること。

search

リーディングシステム(Reading System)が、検索メニューを要求していることを示す。

サービス(Service)は、serviceAttributessupportsSearch要素でこの値をサポートしているか否かを明示的にを宣言しなければならない(MUST)。

back

リーディングシステム(Reading System)は、そのシーケンスでに1つ前のメニューに戻ることを要求している子とを示す。

サービス(Service)は、serviceAttributessupportsServerSideBack 要素でこの値をサポートしているか否かを明示的にを宣言しなければならない(MUST)。

サービス(Service)は、リーディングシステム(Reading System)がbackという値でgetQuestionsオペレーションを呼び出し、アクティブセッションでこのオペレーションが優先呼び出しがなされなかったらinvalidParameter障害(Fault)を返さなければならない(MUST)。

動的メニューをサポートするリーディングシステム(Reading System)はdefaultの値はサポートしなければならない(MUST)。 searchbackのサポートは任意である(OPTIONAL)。

サービス(Service)がsearchまたはback をサポートしていない時にsearchまたはback の値でリーディングシステム(Reading System)がgetQuestionsオペレーションを呼び出した際はinvalidParameter障害(Fault)を返さなければならない(MUST)。

5. API リファレンス

このセクションは規範的である。

5.1. サービス(Service)にサポートが求められる(REQUIRED)オペレーション(Operation)

このセクションでは、すべてのサービス(Service)をサポートしなければならない(MUST)このプロトコルのオペレーションについて記述する。

5.1.1. logOnオペレーション(Operation)

サービス(Service)にリーディングシステム(Reading System)がログインする。

リクエストパラメータ
username

Type: xs:string [XML Schema 2]

サービス(Service)にアクセスするために使用されるアカウント名。

password

Type: xs:string [XML Schema 2]

アカウントのパスワード。

レスポンス

Type: xs:boolean [XML Schema 2]

ログオンが成功したかどうかを明示する。

障害(Fault)

internalServerError, invalidOperation

5.1.2. logOffオペレーション(Operation)

リーディングシステム(Reading System)がサービス(Service)からログオフする。

falseという戻り値または障害(Fault)は両方ともオペレーションが成功しなかったことを示す。

リクエストパラメータ

logOffオペレーションはパラメータを受け取らない。

レスポンス

Type: xs:boolean [XML Schema 2]

ログオフが成功したかどうかどうかを明示する。

障害(Fault)

internalServerError, invalidOperation

5.1.3. setReadingSystemAttributesオペレーション(Operation)

サービス(Service)にリーディングシステム(Reading System)のプロパティを送信する。

リーディングシステム(Reading System)は、セッション初期化シーケンス の一部としてこのオペレーションを呼び出さなくてはならない(MUST)。リーディングシステム(Reading System)のプロパティに動的な変化を記録するために、セッション(Session)の間、このオペレーションを追加で呼び出してもよい(MAY)。

リクエストパラメータ
readingSystemAttributes

Type: readingSystemAttributes

リーディングシステム(Reading System)の属性を格納している。

レスポンス

Type: xs:boolean [XML Schema 2]

サービス(Service)が正常にReadingSystemAttributesを受け取ったかどうかを明示する。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, noActiveSession

5.1.4. issueContentオペレーション(Operation)

指定されたコンテンツアイテムを発行するサービス(Service)を要求する。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

要求されたコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)。

レスポンス

Type: xs:boolean [XML Schema 2]

コンテンツアイテム(Content item)が正常に発行されたかどうかを明示する。

呼び出しがされた時にそのコンテンツアイテム(Content item)がすでに発行された場合、サービス(Service)はtrueを返さなければならない(MUST)。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, noActiveSession

5.1.5. getContentMetadataオペレーション(Operation)

指定されたコンテンツアイテム(Content item)のcontentMetadataを取得する。

このオペレーションは、コンテンツ(Content)取得シーケンス の一部として呼び出されなければならない(MUST)。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

メタデータが要求されているコンテンツアイテム(Content ite)コンテンツ識別子(Content Identifier )を含む

レスポンス

Type: contentMetadata

指定されたコンテンツアイテム(Content item)のメタデータを含む。

障害(Fault)

internalServerErrorinvalidParameternoActiveSessioninvalidOperation

5.1.6. getContentResourcesオペレーション(Operation)

指定されたコンテンツアイテム(Content item)のresourcesリストを取得する。

このオペレーションが呼び出される前にコンテンツアイテム(Content item)が発行(issued)されなければならない(MUST)。そうでない場合、サービス(Service)は invalidParameter障害(Fault)でレスポンスするべきである(SHALL)。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

resourcesリストが要求されているコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)が含まれている。

レスポンス

Type: resources

指定されたコンテンツアイテム(Content item)のresources リストを格納する。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, noActiveSession

5.1.7. getServiceAttributesオペレーション(Operation)

サービス(Service)がサポートするオプションの(OPTIONAL)オペレーションに関する情報を含むサービス(Service)のプロパティを取得する

リーディングシステム(Reading System)はセッション(Session)初期化シーケンスはこのオペレーションを呼び出さなくてはならない(MUST)。そして、リーディングシステム(Reading System)は、サービス(Service)のプロパティの想定される変化に関する情報を取得するために、セッション(Session)の間に他のタイミングでもこのオペレーションを呼び出してもよい(MAY)。

リクエストパラメータ

getServiceAttributesはパラメータを受け取らない。

レスポンス

Type: serviceAttributes

サービス(Service)の属性を格納している。

障害(Fault)

internalServerError, invalidOperation, noActiveSession

5.1.8. getContentListオペレーション(Operation)

コンテンツアイテム(Content item)のリストを取得する。

サービス(Service)によって返されるリストは、事前に作成しておくことができる。その場合は、そのリストは、以下のidパラメーターで定義された3つの予約済みの値の1つを渡すことによって取得される。(これらの予約されている値が使用されるコンテキストに関する情報については、4. プロトコルの基礎を参照すること。)

リストは動的にすることもできる(例: 動的メニュー検索オペレーションシーケンスの結果)。この場合、リストを参照するために使用されるidの値は、getQuestions の事前の呼び出しの戻り値によって提供される(より詳細な情報については、questions タイプ(Type)を参照すること)。

リクエストパラメータ
id

Type: xs:NMTOKEN [XML Schema 2]

取得するコンテンツリストの識別子。

次の3つの値が予約されており、以下で定義されている場合を除き、識別子として使用してはならない(MUST NOT)。

issued

サービス(Service)が現在、ユーザー(User)に対して発行済として記録しているコンテンツアイテム(Content item)のリストを参照する(issueContent を参照すること)。

リストにはダウンロードされたか否かに関わらず、発行された全ての借りることができるコンテンツアイテム(Borrowable Content item)が含まれていなければならない(MUST)。リストには、発行された購入することができるコンテンツアイテム(Purchasable Content item)を含めてもよい(MAY)。有効期限が期限れた コンテンツアイテム(Content item)はリストから除外する。

借りることができるコンテンツ(Borrowable Content)を提供するサービス(Service)はこの識別子を認識しなければならない(MUST)。

new

ユーザー(User)に発行し利用させることができるコンテンツアイテム(Content item)のリストを参照する。

すでに発行されている全てのコンテンツアイテム(Content item)がリストから除外する。

Out-of-band コンテンツ(Content)選択方法をサポートするサービス(Service)はこの識別子を認識しなければならない(MUST)。

expired

すでにユーザー(User)に発行されているが、有効期限が切れた コンテンツアイテム(Content item)のリストを参照する。

firstItem

Type: xs:int [XML Schema 2]

contentListのサブセットを取得する場合に、取得するためのサブセット内の最初のアイテムのインデックスが格納されている。リストの最初のアイテムは、インデックス0 を持つ。

lastItem

Type: xs:int [XML Schema 2]

contentListのサブセットを取得する場合に、取得するためのサブセット内の最後のアイテムのインデックスが格納されている。-1の値は、 firstItemからリストの最後までのを全てのアイテムを取得する要求を示している。

レスポンス

Type: contentList

要求されたコンテンツ(Content)のリスト(または、リストのセグメント)を格納している。

返された contentListid 属性の値は、getContentList オペレーションに渡されたid パラメーターの値と一致していなければならない(MUST)。

firstItem パラメータ及び/または lastItem パラメータの値が有効ではない場合、サービスは、全体のcontentListのアイテムの総数を設定したtotalItems属性の値とともに空の contentList を返さなくてはならない(MUST)。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, noActiveSession

5.2. サービス(Service)のサポートが任意である(OPTIONAL)オペレーション(Operation)

このセクションでは、サービス(Service)がサポートしてもよい(MAY)追加のプロトコルオペレーションについて記述する。サポートが任意である(OPTIONAL)これらのオペレーションが求められる際の状況については、コンテンツ(Content)選択方式を参照すること。

5.2.1. getServiceAnnouncementsオペレーション(Operation)

ユーザー(User)がまだ読んでいないサービス(Service)からのアナウンスを取得する。

リクエストパラメータ

getServiceAnnouncementsはパラメータを受け取らない。

レスポンス

Type: announcements

サービス(Service)からのお知らせが格納されている。

障害(Fault)

internalServerError, invalidOperation, operationNotSupported, noActiveSession

5.2.2. markAnnouncementsAsReadオペレーション(Operation)

指定されたアナウンス(複数可)を既読としてマークする。

このオペレーションは、前のgetServiceAnnouncementsへの呼び出しが同じセッション(Session)の間になされた時のみ有効である。

リクエストパラメータ
read

Type: read

既読としてマークするためのアナウンスのIDを格納している。

レスポンス

Type: xs:boolean [XML Schema 2]

アナウンスが正常にサービス(Service)によって既読とマークされたかどうかを明示する。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.2.3. returnContentオペレーション(Operation)

指定されたコンテンツアイテム(Content item)がリーディングシステム(Reading System)から削除されていることをサービス(Service)に通知する。

このオペレーションに対する呼び出しが正常に行われた後は、指定されたコンテンツアイテム(Content item)がユーザー(User)に発行されることはない。

リーディングシステム(Reading System)は 値がfalseであるrequiresReturn属性を持つコンテンツアイテム(Content item)のためにこの機能を呼び出してはいけない(MUST NOT)。

リーディングシステム(Reading System)はreturnContentを呼び出す前にコンテンツアイテム(Content item)を削除しなくてはならない(MUST)。 リーディングシステム(Reading System)はそのリーディングシステム(Reading System)上でユーザー(User)に発行されていないコンテンツアイテム(Content item)のためにreturnContentを呼び出してはいけない(MUST NOT)。

注意事項:

returnContent を呼び出す前にリーディングシステム(Reading System)が実際にコンテンツアイテム(Content itme)を削除したことをこのプロトコルが保証することはできない。この呼び出しを受信したサービス(Service)の存在がコンテンツアイテム(Content item)が削除されたことの証明にはならない。サービスプロバイダ(Service Provider)がコピー防止メカニズムを必要とする場合は、DRMソリューションを使用するべきである(SHOULD)。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

返されたコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)

レスポンス

Type: xs:boolean [XML Schema 2]

コンテンツアイテム(Content item)が正常に返されたかどうかを明示する。

returnContenttrueもしくは障害(Fault)を返さなくてはならない(MUST)。falseを返してはならない(MUST NOT)。

この呼び出しの前にコンテンツアイテム(Content item)がすでに戻された場合、サービス(Service)はtrueを返さなければならない(MUST)。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.2.4. setBookmarksオペレーション(Operation)

サービス(Service)がコンテンツアイテムに対して提供されたブックマークを保存するように要求する。

このオペレーションは、一度に1つのコンテンツアイテム(Content item)に対するブックマークの保存のみをサポートしている。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

ブックマークが関連付けられているコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)。

bookmarkSet

Type: bookmarkSet

保存するためのブックマークが格納されている。

レスポンス

Type: xs:boolean [XML Schema 2]

サービス(Service)が正常にブックマークを保存したかどうかを明示する。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.2.5. getBookmarksオペレーション(Operation)

サービス(Service)からのコンテンツアイテム(Content item)のブックマークを取得する。

リクエストパラメータ
contentID

Type: xs:string [XML Schema 2]

ブックマークが取得されようとしているコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)。

レスポンス

Type: bookmarkSet

コンテンツアイテム(Content item)のブックマークが格納されている。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.2.6. getQuestionsオペレーション(Operation)

動的なメニューシステムを構成する一連の質問からの質問を取得する。

リクエストパラメータ
userResponses

Type: userResponses

質問への回答を格納する。もしくはuserResponse で定義されている3つの予約済みIDのdefaultsearchbackのいずれか1つを格納する。

レスポンス

Type: questions

1つもしくは複数の複数選択式質問や入力式質問が格納されている。1つのlabel子要素もしくはcontentListRef子要素も格納してもよい(MAY)。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.2.7. getKeyExchangeObjectオペレーション(Operation)

サービス(Service)から[PDTB2]Key Exchange Objectを要求する。

リクエストパラメータ
requestedKeyName

Type: xs:string [XML Schema 2]

要求された鍵の識別子 .

レスポンス

Type: KeyExchange

[PDTB2] Key Exchange Object。これはリーディングシステム(Reading System)のキーリングで識別された鍵のいずれかを使用して暗号化され、要求された鍵を格納する。

障害(Fault)

internalServerError, invalidOperation, invalidParameter, operationNotSupported, noActiveSession

5.3. 障害(Fault)

サービス(Service)がSOAP障害(Fault)を使用してオペレーションにレスポンスすると、次のいずれかのタイプのインスタンスはdetail要素の子でなければならない(MUST)。

これらの障害(Fault)タイプのそれぞれは、 reason子要素、リーディングシステム(Reading System)に、デバッグ情報を送信するために使用することができる文字列を持っている。この情報は、ほとんどの状況でユーザー(User)にレンダリングされるべきではない(SHOULD NOT)。

1つのオペレーションが呼び出されたときに1つ以上の障害(Fault)状態が引き起こされてもよい(MAY)。例えば、サポートされていないオペレーションは、アクティブなセッション(Session)の外で呼び出してもよい(MAY)。2つ以上の障害(Fault)状態が適用された場合、以下で一覧されている障害の優先順位の最初に現れる障害(Fault)が発行されなければならない(MUST)。障害の優先順位は、次のとおりである。

  1. internalServerError

  2. noActiveSession

  3. operationNotSupported

  4. invalidOperation

  5. invalidParameter

5.3.1. internalServerError 障害(Fault)

状態: サービス(Service)で内部サーバーエラーが発生し、オペレーションの実行が停止された。

invalidOperationinvalidParameteroperationNotSupportednoActiveSession 障害(Fault)によって記述されなかったエラーが生じた時にこの障害(Fault)を発する。この障害(Fault)が発せれた場合、リーディングシステム(Reading System)は失敗したオペレーションを再度呼び出すことを試みてもよい(MAY)。

5.3.2. noActiveSession 障害(Fault)

状態: アクティブなセッションが存在しない時にそのオペレーションは許可されていない。

セッション(Session)が有効期限が切れたか正常に初期化しなかった時に行われるセッションの初期化シーケンスで定義されるオペレーションシーケンスの中のオペレーションを除き、全てのオペレーションの呼び出しでこの障害(Fault)は発せられる。

5.3.3. operationNotSupported 障害(Fault)

状態: サービス(Service)はこのオペレーションをサポートしていない。

サービス(Service)がサポートしていないオプションの(OPTIONAL)オペレーションをリーディングシステム(Reading System)が呼び出した時にこの障害(Fault)が発せられる。

5.3.4. invalidOperation 障害(Fault)

状態: オペレーションが、現在のコンテキストで有効ではない。

ある場合において、アクティブなセッション(Session)の間にリーディングシステム(Reading Sysytem)が1つのあるオペレーションを呼び出したが、その他のオペレーションの呼び出し、またはその他のオペレーションのセットの呼び出しが求められる場合にこの障害(Fault)が発せられる。

5.3.5. invalidParameter 障害(Fault)

状態: オペレーション要求とともに無効なパラメータが渡された。

リーディングシステム(Reading Sysytem)が、サービス(Service)が認識していない、または、許可していない、またはサポートしていない1つのパラメータとともに1つのオペレーションを呼び出した時にこの障害(Fault)が発せられる。

6. タイプ(Type)リファレンス

このセクションは規範的である。

次のセクションでは、 [XML Schema 1] スキーマdo-types-10.xsdで定義されている要素について説明する。このスキーマは、抽象WSDLドキュメントの規範的な部分である(付録 A, WSDL 抽象定義を参照すること)。

注意事項:

SGMLの構文規則の次の単純化された次のセットは、コンテンツモデルを定義するためにこのセクションを通して使用されている。

  • 丸括弧は、要素のセット 及び/または その他のグループをグループ化するために使用される。

  • グループ内のカンマ' ,' 要求されるシーケンスは示す。パイプ '|' はオプション(OPTIONAL)のシーケンスを示す。

  • グループや要素の後の疑問符 '?' は、そのアイテムが0回もしくは1回発生されなければならない(MUST)ことを示す。プラス記号 '+'は1つまたはそれ以上を示す。アスタリスク '*' は、0かそれ以上を示す。修飾子がない場合は、その要素またはグループが1回だけ発生しなければならない(MUST)ことを意味する。

この仕様における記述と、 do-types-10.xsdにおける定義の間で不一致が生じた場合は、後者を権威があるものとしてみなすことになる(SHALL)。

6.1. announcements タイプ(Type)

サービス(Service)のアナウンスのリスト。

使用されるオペレーション

getServiceAnnouncements (response)

コンテンツモデル

( announcement* )

6.1.1. アナウンスの例

例6.1. アナウンス

<announcements xmlns="http://www.daisy.org/ns/daisy-online/">
  <announcement id="downtime" priority="1" type="WARNING">
    <label xml:lang="en">
      <text>The Service will not be available on Friday the 10th of September due to
        maintenance.</text>
      <audio uri="http://example.com/content/messages/current.mp3" rangeBegin="0" rangeEnd="65856"
        size="65856"/>
    </label>
  </announcement>
  <announcement id="survey" priority="2" type="INFORMATION">
    <label xml:lang="en">
      <text>A new survey is available, fill it in online at our home page, or use your Daisy Online
        Reading System if it has the required capabilities. Chance to win a Phantom Pocket
        Reader!</text>
      <audio uri="http://example.com/content/messages/current.mp3" rangeBegin="65857" size="92112"/>
    </label>
  </announcement>
</announcements>

6.2. bookmarkSetタイプ(Type)

使用されるオペレーション

setBookmarks (parameter)getBookmarks (response)

コンテンツモデル

( title, uid, lastmark?, ( bookmark | hilite )* )

6.3. contentList タイプ(Type)

コンテンツアイテム(Content item)の完全または部分的なリスト。

使用されるオペレーション

getContentList (response)

コンテンツモデル

( label?, contentItem* )

属性(Attribute)

totalItems

リスト全体におけるcontentItem の合計数。これがリストのほんの一部である場合、 totalItemsは返されるcontentItem の数よりも大きくなる。そうでなければ、彼らは等しくなる。

使用: 必須(REQUIRED)

データタイプ: xs:int

firstItem

リスト全体の中のこのcontentListにおける最初のcontentItemのゼロベースのインデックス。これが部分的なリストである場合、この属性が提供されなければならない(MUST)。この属性が存在する場合、 lastItem属性も存在しなければならない(MUST)。

使用: 任意(OPTIONAL)

データタイプ: xs:int

lastItem

リスト全体の中のこのcontentListにおける最後のcontentItemのゼロベースのインデックス。これが部分的なリストである場合、この属性が提供されなければならない(MUST)。この属性が存在する場合、 firstItem属性も存在しなければならない(MUST)。

使用: 任意(OPTIONAL)

データタイプ: xs:int

id

contentListの識別子。

識別子は、予約済みの3つの値、newissuedexpiredのいずれかでもよい(MAY)。または、典型的には、動的メニューオペレーションシーケンスにおけるエンドポイントcontentListRef で公開されるような、任意の値でもよい(MAY)。

サービス(Service)は、セッションの間、contentListの識別子を維持するべきである(SHOULD)。サービス(Service)は、同じセッション中に同じ任意の識別子を使用した複数のcontentList を公開してはならない(MUST NOT)。

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

6.3.1. contentList の例

例 6.2. audio labelがついた1つの完全なcontentList

この例では、1つの完全なcontentListを示している (firstItemlastItem属性は、ルート要素には存在しない)。

<contentList xmlns="http://www.daisy.org/ns/daisy-online/" 
    id="cl123" totalItems="2">
    <label xml:lang="en">
        <text>Please select from these publications.</text>
        <audio uri="http://example.com/static/PleaseChooseFrom.mp3" size="12342"/>
    </label>
    <contentItem id="com-example-001">
        <label xml:lang="en">
            <text>Harry Potter and the Chamber of Secrets</text>
            <audio uri="http://example.com/content/titles/hp_cs.mp3" size="130821"/>
        </label>
    </contentItem>
    <contentItem id="com-example-002">
        <label xml:lang="en">
            <text>Harry Potter and the Goblet of Fire</text>
            <audio uri="http://example.com/content/titles/hp_gf.mp3" size="130821"/>
        </label>
    </contentItem>
</contentList>

例 6.3. 1つの部分的なcontentList

この例では、1つの部分的なcontentListを示している(firstItemlastItem属性は、このセグメントでどのアイテムに含まれているのかを指定している)。

<contentList xmlns="http://www.daisy.org/ns/daisy-online/" 
    id="cl125" firstItem="0" lastItem="1" totalItems="25">
    <label xml:lang="en">
        <text>Please select from these publications.</text>
        </label>
    <contentItem id="com-example-001">
        <label xml:lang="en">
            <text>Harry Potter and the Chamber of Secrets</text>
        </label>
    </contentItem>
    <contentItem id="com-example-002">
        <label xml:lang="en">
            <text>Harry Potter and the Goblet of Fire</text>
        </label>
    </contentItem>
</contentList>

6.4. contentMetadataタイプ(Type)

コンテンツアイテム(Content item)のメタデータ。

使用されるオペレーション

getContentMetadata (response)

コンテンツモデル

( sample?, metadata )

属性(Attribute)

category

コンテンツアイテム(Content item)の出版物のカテゴリ。

リーディングシステム(Reading System)は、コンテンツアイテム(Content item)を分類またはソートするためにここで提供された値を使用してもよい(MAY)。

任意の値が認められる。BOOKMAGAZINENEWSPAPERそしてOTHERの値は、これらの値の1つに一致するコンテンツアイテム(Content item)がある場合は、その使用が推奨される。

使用: 任意(OPTIONAL)

データタイプ: xs:string

requiresReturn

サービス(Service)が返されるべきコンテンツアイテム(Content item)を要求するかどうかを指定する。

この属性がはtrueである場合、コンテンツアイテム(Content item)が発行されるなら、リーディングシステム(Reading System)がそのコンテンツアイテム(Content item)をある時点で返すというサービス(Service)からリーディングシステム(Reading System)への契約である。

ユーザー(User)が購入することができるコンテンツ(Purchasable Content item)を返そうとした場合、リーディングシステム(Reading System)は、適切なプロンプトでユーザー(User)に提示するべきである(SHOULD)。

使用: 必須(REQUIRED)

データタイプ: xs:boolean

6.4.1. contentMetadata の例

例 6.4. contentMetadataの例

この例では、[PDTB2]で保護された、借りられた書籍のcontentMetadataを示している(セクション4.4.5 著作権管理を参照すること)。

<contentMetadata xmlns="http://www.daisy.org/ns/daisy-online/"
  requiresReturn="true" category="BOOK">
  <sample id="hp_cos-sample"/>
  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    <dc:title>Harry Potter and the Chamber of Secrets</dc:title>
    <dc:identifier>com-example-hp_cos</dc:identifier>
    <dc:format>Daisy 2.02</dc:format>
    <dc:language>en-GB</dc:language>
    <narrator>Mary Svensson</narrator>
    <size>8119213</size>
    <meta name="pdtb2:specVersion" content="2005-1" />
  </metadata>
</contentMetadata>

6.5. KeyExchange タイプ(Type)

使用されるオペレーション

getKeyExchangeObject (response)

コンテンツモデル

( Issuer, ( ds:KeyInfo | Keys )+ )

6.6. keyRing タイプ(Type)

キーの名前のリスト。

使用されるオペレーション

コンテンツモデル

( item* )

6.7. questions タイプ(Type)

質問の順序。

questions要素には以下のいずれかが含まれていなければならない(MUST)。

  • ちょうど1つの contentListRef

  • ちょうど1つの label

  • 任意の順序で1つ以上のmultipleChoiceQuestions 及び/ ​​または inputQuestions

questions要素contentListRefまたはlabel子要素を格納している場合は、それは動的メニューを構成する一連の質問のエンドポイントである。

questionsタイプの使用に関する参考情報については、[Dynamic Menus Prime]を参照すること 。

使用されるオペレーション

getQuestions (response)

コンテンツモデル

( ( multipleChoiceQuestion | inputQuestion )+ | contentListRef | label )

6.8. read タイプ(Type)

announcement 識別子のリスト。

使用されるオペレーション

markAnnouncementsAsRead (parameter)

コンテンツモデル

( item* )

6.9. readingSystemAttributes タイプ(Type)

リーディングシステム(Reading System)のプロパティを指定する。

指定されたプロパティは、セッション(Session)が終了するまで有効である。

使用されるオペレーション

setReadingSystemAttributes (parameter)

コンテンツモデル

( manufacturer, model, serialNumber?, version, config )

この要素は、拡張可能である。

6.9.1. readingSystemAttributes の例

例6.5. ポータブルのオーディオ中心のリーディングシステム(Reading System)のためのreadingSystemAttributes

この例では、小型のポータブルのオーディオを中心としたリーディングシステム(Reading System)(単一のフォーマットのサポート、数値入力、text-to-speech機能なし、PDTB2対応 )のためのreadingSystemAttributesを示している。

<readingSystemAttributes xmlns="http://www.daisy.org/ns/daisy-online/">
  <manufacturer>ACME Corporation</manufacturer>
  <model>Pocket Phantom</model>
  <serialNumber>123456</serialNumber>
  <version>1.23</version>
  <config>
    <supportsMultipleSelections>false</supportsMultipleSelections>
    <preferredUILanguage>en</preferredUILanguage>
    <bandwidth>8000000</bandwidth>
    <supportedContentFormats>
      <contentFormat>ANSI/NISO Z39.86-2005</contentFormat>
    </supportedContentFormats>
    <supportedContentProtectionFormats>
      <protectionFormat>PDTB2</protectionFormat>
    </supportedContentProtectionFormats>
    <keyRing>
      <item>DAISY.lv-acme.ACME</item>
      <item>DAISY.lv-acme.Phantom-1</item>
      <item>DAISY.lv-acme.SN123456</item>
      <item>DAISY.ca-qqhb.006442</item>
      <item>DAISY.au-atbi.userKey-4C452DB4</item>
    </keyRing>
    <supportedMimeTypes>
      <mimeType type="audio/mpeg"/>
    </supportedMimeTypes>
    <supportedInputTypes>
      <input type="TEXT_NUMERIC" />
    </supportedInputTypes>
    <requiresAudioLabels>true</requiresAudioLabels>
  </config>
</readingSystemAttributes>

例6.6. より機能的なリーディングシステム(Reading System)のためのreadingSystemAttributes

この例は、ソフトゥエアのリーディングシステム(Reading System)のような、より機能的なリーディングシステム(Reading System)(マルチフォーマットサポート、フルキーボード入力、ビルトインtext-to-speech機能、しかし、このケースではPDTB2 サポートはない)のためのreadingSystemAttributesを示している。

<readingSystemAttributes xmlns="http://www.daisy.org/ns/daisy-online/">
  <manufacturer>ACME Corporation</manufacturer>
  <model>Pro Phantom III</model>
  <serialNumber>64321</serialNumber>
  <version>1.23</version>
  <config>
    <supportsMultipleSelections>true</supportsMultipleSelections>
    <preferredUILanguage>en</preferredUILanguage>
    <supportedContentFormats>
      <contentFormat>ANSI/NISO Z39.86-2005</contentFormat>
      <contentFormat>Daisy 2.02</contentFormat>
    </supportedContentFormats>
    <supportedContentProtectionFormats />
    <supportedMimeTypes>
      <mimeType type="text/plain" xml:lang="en"/>
      <mimeType type="audio/mpeg"/>
    </supportedMimeTypes>
    <supportedInputTypes>
      <input type="TEXT_ALPHANUMERIC"/>
      <input type="AUDIO"/>
    </supportedInputTypes>
  </config>
  <requiresAudioLabels>false</requiresAudioLabels>
</readingSystemAttributes>

6.10. resources タイプ(Type)

コンテンツアイテム(Content item)を構成するすべてのリソースのリスト。

使用されるオペレーション

getContentResources (response)

コンテンツモデル

( resource+ )

属性(Attribute)

returnBy

サービスプロバイダ(Service Provider)がこのコンテンツアイテム(Content item)を返すよう要求する時間を指定する。

コンテンツアイテム(Content item)の contentMetadatarequiresReturn属性がtrueである時にこの属性は存在してもよい(MAY)。requiresReturn属性がfalseである時はこの属性は存在してはならない(MUST NOT)。

コンテンツアイテム(Content item)が発行されている間、この属性は値を変更しなくてもよい。

contentMetadatarequiresReturn属性と異なり、この属性は契約を構成しない。

使用: 任意(OPTIONAL)

データタイプ: xs:dateTime

lastModifiedDate

コンテンツアイテム(Content item)の最終更新時間。

使用: 任意(OPTIONAL)

データタイプ: xs:dateTime

6.10.1. resources の例

例6.7.スクリプトのURIを使用してリソースインスタンス

この例は、 uri属性がリソースの名前を公開しないスクリプトを参照するリソースのインスタンスを示している。

<resources xmlns="http://www.daisy.org/ns/daisy-online/">
   <resource mimeType="text/xml" size="123456" 
    uri="https://example.com/content/get.php?a123891"
    localURI="package.opf"/>
  <resource mimeType="application/x-dtbncx+xml" size="123456" 
    uri="https://example.com/content/get.php?a123892"
    localURI="nav.ncx"/>
  <resource mimeType="application/smil" size="567890" 
    uri="https://example.com/content/get.php?a123893"
    localURI="chapter_1.smil"/>
  <resource mimeType="audio/mpeg" size="123456789" 
    uri="https://example.com/content/get.php?a123894"
    localURI="chapter_1.mp3"/>
  <resource mimeType="image/jpeg" size="23456" 
    uri="https://example.com/content/get.php?a123895" 
    localURI="./images/sun001.jpg"/> 
</resources>

6.11. serviceAttributes タイプ(Type)

サービス(Service)のプロパティ。

指定されたプロパティは、セッション(Session)の間は不変でなければならない(MUST)。

使用されるオペレーション

getServiceAttributes (response)

コンテンツモデル

( serviceProvider?, service?, supportedContentSelectionMethods, supportsServerSideBack, supportsSearch, supportedUplinkAudioCodecs, supportsAudioLabels, supportedOptionalOperations )

6.11.1. serviceAttributes の例

例6.8. 最小限の図書館サービス(Service)のためのserviceAttributes

この例は、out-of-bandコンテンツ(Content)選択方式のみをサポートするサービス(Service)のためのserviceAttributesを示している。

<serviceAttributes xmlns="http://www.daisy.org/ns/daisy-online/">
  <serviceProvider id="uk.com.example" />
  <service id="uk.com.example.libraryServiceBasic" />
  <supportedContentSelectionMethods>
    <method>OUT_OF_BAND</method>
  </supportedContentSelectionMethods>
  <supportsServerSideBack>false</supportsServerSideBack>
  <supportsSearch>false</supportsSearch>
  <supportedUplinkAudioCodecs>
    <codec>audio/mpeg</codec>
  </supportedUplinkAudioCodecs>
  <supportsAudioLabels>true</supportsAudioLabels>
  <supportedOptionalOperations>
    <operation>SET_BOOKMARKS</operation>
    <operation>GET_BOOKMARKS</operation>
    <operation>SERVICE_ANNOUNCEMENTS</operation>
  </supportedOptionalOperations>
</serviceAttributes>

例6.9. より充実したサービス(Service)のためのserviceAttributes

この例では、コンテンツ(Content)選択方式両方をサポートし、[PDTB2] を使用して保護されたコンテンツ(Content)の一部または全てを提供するサービス(Service)のためのserviceAttributesを示している。

<serviceAttributes xmlns="http://www.daisy.org/ns/daisy-online/">
  <serviceProvider id="gy-zenith" />
  <service id="gy-zenith-libraryServiceDeluxe" />
  <supportedContentSelectionMethods>
    <method>BROWSE</method>
    <method>OUT_OF_BAND</method>
  </supportedContentSelectionMethods>
  <supportsServerSideBack>true</supportsServerSideBack>
  <supportsSearch>true</supportsSearch>
  <supportedUplinkAudioCodecs>
    <codec>audio/mpeg</codec>
  </supportedUplinkAudioCodecs>
  <supportsAudioLabels>true</supportsAudioLabels>
  <supportedOptionalOperations>
    <operation>DYNAMIC_MENUS</operation>
    <operation>SET_BOOKMARKS</operation>
    <operation>GET_BOOKMARKS</operation>
    <operation>SERVICE_ANNOUNCEMENTS</operation>
    <operation>PDTB2_KEY_PROVISION</operation>
  </supportedOptionalOperations>
</serviceAttributes>

6.12. userResponses タイプ(Type)

サービス(Service)が提供される質問に対するユーザー(User)の回答のセット。

userResponsesタイプの参考となる例については、[Dynamic Menus Primer]を参照すること。

使用されるオペレーション

getQuestions (parameter)

コンテンツモデル

( userResponse+ )

6.13. 要素のリファレンス

additionalTransferProtocols

HTTPとHTTPSを越えて、リーディングシステム(Reading System)によってサポートされている追加の転送プロトコルを指定する。

コンテンツモデル: ( protocol+ )

親要素: config

announcement

サービス(Service)アナウンス。

プロパティ(Property)

コンテンツモデル: ( label )

親要素: announcements

属性(Attribute)

id

このアナウンスメントの識別子。この識別子は、セッション(Session)の間のみ有効である。

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

type

このアナウンスメントの性質を示す値。

使用: 任意(OPTIONAL)

一覧:

  • WARNING

  • ERROR

  • INFORMATION

  • SYSTEM

初期値: INFORMATION

priority

このアナウンスメントの優先順位。 1が優先順位が最も高く、 3が優先順位が最も低い。

使用: 任意(OPTIONAL)

整数設定:

  • 最小値: 1

  • 最大値: 3

初期値: 3

audio

プロパティ(Property)

コンテンツモデル: 空の要素

親要素: label

属性(Attribute)

uri

labelのaudioコンポーネントのURI。

使用: 必須(REQUIRED)

データタイプ: xs:anyURI

rangeBegin

uri属性で名付けられるリソースにおけるaudio labelの開始点のバイトオフセット。rangeBegin属性が存在しない場合、開始点のオフセットは0である 。

使用: 任意(OPTIONAL)

データタイプ: xs:long

rangeEnd

uri属性で名付けられるリソースにおけるaudio labelの終了点のバイトオフセット。rangeBegin属性が存在しない場合、終了点はリソースの最後のバイトである 。

使用: 任意(OPTIONAL)

データタイプ: xs:long

size

labelの音声データのサイズ(バイト数)。

使用: 任意(OPTIONAL)

データタイプ: xs:long

bandwidth

そのセッション(Session) にリーディングシステム(Reading System)が割り当てる帯域幅の毎秒キロビットでの推定値。

プロパティ(Property)

データタイプ: pe: xs:int

親要素: config

choice

プロパティ(Property)

コンテンツモデル: ( label )

親要素: choices

属性(Attribute)

id

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

choices

プロパティ(Property)

コンテンツモデル: ( choice+ )

親要素: multipleChoiceQuestion

codec

コーデックの[MIME]タイプ。

プロパティ(Property)

データタイプ: xs:string

親要素: supportedUplinkAudioCodecs

contentFormat

[Dublin Core] Format要素の規定に従うこの要素の内容

プロパティ(Property)

データタイプ: xs:string

親要素: supportedContentFormats

contentItem

単一のコンテンツアイテム(Content item)。

プロパティ(Property)

コンテンツモデル: ( label )

親要素: contentList

属性(Attribute)

id

このコンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)。

使用: 必須(REQUIRED)

データタイプ: xs:string

lastModifiedDate

コンテンツアイテム(Content item)の最終更新時刻。

使用: 任意(OPTIONAL)

データタイプ: xs:dateTime

contentListRef

contentListの識別子。

questions要素の子要素としてcontentListRefは、動的メニューを構成する一連の質問のエンドポイントを示している。

プロパティ(Property)

データタイプ: xs:NMTOKEN

親要素: questions

data

オーディオユーザー(User)レスポンスのbase64でエンコードされたデータ。

サービス(Service)は[RIFF WAVE]フォーマットの音声を受け入れなければならない(MUST)。サービス(Service) は追加の音声フォーマットをサポートしてもよい(MAY)。その場合、サービス(Service) はserviceAttributesにそれらのフォーマットを明示しなければならない(MUST)。

プロパティ(Property)

認められた値: xs:base64Binary

親要素: userResponse

input

プロパティ(Property)

コンテンツモデル: 空要素

親要素: inputTypes, supportedInputTypes

属性(Attribute)

type

使用: 必須(REQUIRED)

一覧:

  • TEXT_NUMERIC

    リーディングシステム(Reading System)は、数値の入力をサポートしている。

    サービス(Service)は、質問に数値のみによる応答を認める。

  • TEXT_ALPHANUMERIC

    リーディングシステム(Reading System)は、テキストと数値の入力をサポートしている。

    サービス(Service)は、質問にテキストと数値による応答を認める。

  • AUDIO

    リーディングシステム(Reading System)は、音声入力をサポートしている。

    サービス(Service)は、質問に音声による応答を認める。

inputQuestion

テキストまたは音声による応答を受け付ける入力フィールド。

プロパティ(Property)

コンテンツモデル: ( inputTypes, label )

親要素: questions

属性(Attribute)

id

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

inputTypes

サービス(Service)が質問への応答をどの入力タイプで受け入れるかを指定する。

プロパティ(Property)

コンテンツモデル: ( input+ )

親要素: inputQuestion

item

プロパティ(Property)

データタイプ: xs:string

親要素: keyRing, read

label

テキストと任意で音声を含む多目的ラベル。

相互運用性を最大限確保するために、リーディングシステム(Reading System)は、ユーザーへのサービス(Service)からメッセージを処理するためにaudio labelを要求してもよい(MAY)ため、サービス(Service)はaudio labelの提供をサポートするべきである(SHOULD)。

プロパティ(Property)

コンテンツモデル: ( text, audio? )

親要素: announcement, choice, contentItem, contentList, inputQuestion, multipleChoiceQuestion, questions, service, serviceProvider

属性(Attribute)

xml:lang

labelの言語。

使用: 必須(REQUIRED)

dir

テキストの方向。

使用: 任意(OPTIONAL)

一覧:

  • ltr

    左から右。

  • rtl

    右から左。

manufacturer

リーディングシステム(Reading System)の制作者。

プロパティ(Property)

データタイプ: xs:string

親要素: readingSystemAttributes

meta

任意のメタデータ要素。Dublin Core以外のスキームからの独自のメタデータフィールドを可能にする。

プロパティ(Property)

コンテンツモデル: 空要素

親要素: metadata

属性(Attribute)

name

使用: 必須(REQUIRED)

データタイプ: xs:string

content

使用: 必須(REQUIRED)

データタイプ: xs:string

metadata

コンテンツアイテム(Content item)の書誌情報およびその他のメタデータ。

Dublin Core名前空間内の要素は、[Dublin Core]によって規範的に定義されている。Dublin Coreのidentifier要素の値は、コンテンツアイテム(Content item)のコンテンツ識別子(Content Identifier)と一致しなければならない(MUST)。

追加の非Dublin Coreメタデータを一般的なmeta要素を使用して提供してもよい(MAY)。

meta要素のname属性にあるプレフィックス pdtb2:[PDTB2]のプロパティを参照するために予約されている。

meta要素のname属性にあるpdtb2:specVersionという値はコンテンツアイテム(Content item)が[PDTB2]を使用して保護されていることを意味している。

プロパティ(Property)

コンテンツモデル: ( dc:title, dc:identifier, dc:publisher?, dc:format, dc:date?, dc:source?, dc:type*, dc:subject*, dc:rights*, dc:relation*, dc:language*, dc:description*, dc:creator*, dc:coverage*, dc:contributor*, narrator*, size, meta* )

この要素は、拡張可能である。

親要素: contentMetadata

method

プロパティ(Property)

認められた値:

親要素: supportedContentSelectionMethods

mimeType

プロパティ(Property)

コンテンツモデル: 空要素

親要素: supportedMimeTypes

属性(Attribute)

type

[MIME]タイプ。

使用: 必須(REQUIRED)

データタイプ: xs:string

xml:lang

使用: 任意(OPTIONAL)

model

リーディングシステム(Reading System)のモデル名または名称。

プロパティ(Property)

データタイプ: xs:string

親要素: readingSystemAttributes

multipleChoiceQuestion

プロパティ(Property)

コンテンツモデル: ( label, choices )

親要素: questions

属性(Attribute)

id

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

allowMultipleSelections

この質問に対するユーザー(User)の応答に複数の選択肢が許可されるかどうかを指定する。

使用: 任意(OPTIONAL)

データタイプ: xs:boolean

初期値: false

narrator

音声コンテンツ(Content)の場合の、読み上げ者のの名前。

プロパティ(Property)

データタイプ: xs:string

親要素: metadata

operation

以下で定義されるサポートが任意である(OPTIONAL)オペレーションの1つまたはグループ。

プロパティ(Property)

認められた値:

  • SET_BOOKMARKS

    このサービス(Service)はsetBookmarksオペレーションをサポートする。

  • GET_BOOKMARKS

    このサービス(Service)はgetBookmarksオペレーションをサポートする。

  • DYNAMIC_MENUS

    このサービス(Service)はgetQuestionsオペレーションをサポートする。

  • SERVICE_ANNOUNCEMENTS

    このサービス(Service)はgetServiceAnnouncementsオペレーションとmarkAnnouncementsAsReadオペレーションをサポートする。

  • PDTB2_KEY_PROVISION

    このサービス(Service)はgetKeyExchangeObjectオペレーションをサポートする。

親要素: supportedOptionalOperations

preferredUILanguage

サービス(Service)とコミュニケーションを取るためのユーザー(User)の推奨言語。

プロパティ(Property)

データタイプ: xs:language

親要素: config

protectionFormat

プロパティ(Property)

認められた値:

親要素: supportedContentProtectionFormats

protocol

転送プロトコルの識別子。識別子はプロトコルの仕様で規定されている。

プロパティ(Property)

データタイプ: xs:string

親要素: additionalTransferProtocols

requiresAudioLabels

リーディングシステム(Reading System)がサービス(Service)から提供されるメッセージのためにaudio labelを要求するかどうか(すなわち、label の子要素であるaudio要素が要求されるかどうか)を指定する。

サービス(Service)のlabelでのaudioのサポートの宣言については、serviceAttributesにあるsupportsAudioLabels要素を参照すること。

リーディングシステム(Reading System)がaudio labelが要求し、サービス(Service)がaudio labelをサポートしていない場合は、リーディングシステム(Reading System)はこのセッションの初期化を継続するかどうかを決定しなくてはならない(MUST)。セッションがこのシナリオで確立されている場合、サービス(Service)は、そのサービス(Service)が提供する各labelaudio要素を含むことが要求されない。

プロパティ(Property)

データタイプ: xs:boolean

親要素: config

resource

プロパティ(Property)

コンテンツモデル: 空要素

親要素: resources

属性(Attribute)

uri

リソースのURI。

使用: 必須(REQUIRED)

データタイプ: xs:anyURI

mimeType

リソースの[MIME]タイプ。

使用: 必須(REQUIRED)

データタイプ: xs:string

size

バイト単位でのリソースのサイズ。

使用: 必須(REQUIRED)

データタイプ: xs:long

localURI

リソースのローカル相対パス。

この属性の値は、コンテンツアイテム(Content item)のルートディレクトリからの相対URIである。

使用: 必須(REQUIRED)

データタイプ: xs:anyURI

lastModifiedDate

リソースの最終更新日時。

使用: 任意(OPTIONAL)

データタイプ: xs:dateTime

sample

ユーザー(User)がコンテンツアイテム(Content item)の発行なしに取得してもよい(MAY)コンテンツアイテム(Content item)のサンプル。

プロパティ(Property)

コンテンツモデル: 空要素

親要素: contentMetadata

属性(Attribute)

id

サンプルのコンテンツ識別子(Content Identifier)。

リーディングシステム(Reading System)は、パラメータとしてこの識別子でgetContentResourcesを呼び出すことでサンプルのリソースリストを取得してもよい(MAY)。リーディングシステム(Reading System)はサンプルの識別子を使用して、issueContentを呼び出してはいけない(MUST NOT)。

使用: 必須(REQUIRED)

データタイプ: xs:string

serialNumber

もし利用可能な場合に、リーディングシステム(Reading System)のシリアル番号。

プロパティ(Property)

データタイプ: xs:string

親要素: readingSystemAttributes

service

サービス(Service)のID。

プロパティ(Property)

コンテンツモデル: ( label? )

親要素: serviceAttributes

属性(Attribute)

id

サービス(Service)の識別子。

この仕様は、この識別子で使用される特定のスキームを要求しない。サービス(Service)はアクティブである間は、この識別子は変更されるべきではない(SHOULD NOT)。そして、その識別子は普遍的にユニークであるべきである(SHOULD)。

推奨される(RECOMMENDED)表現形式は、[ISO 3166]による国コード、続いてその国の中でユニークなエージェンシーコード、続いてプロバイダによって提供されるサービス(Service)の中でユニークなサービス(Service)コードで構成されるハイフンで区切られた文字列である。例えば、us-afb-onlineLibrary である。

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

serviceProvider

サービス(Service)プロバイダのID。

プロパティ(Property)

コンテンツモデル: ( label? )

親要素: serviceAttributes

属性(Attribute)

id

サービス(Service)プロバイダの識別子。

この仕様は、この識別子に使用する特定のスキームを要求しない。サービスプロバイダ(Service Provider)がアクティブである間は、識別子は変更されるべきではない(SHOULD NOT)。そして、識別子は普遍的にユニークであるべきである(SHOULD)。

推奨される(RECOMMENDED)表現形式は、[ISO 3166]による国コード、続いてその国の中でユニークなエージェンシーコードで構成されるハイフンで区切られた文字列である。例えば、 us-afb である。

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

size

コンテンツアイテム(Content item)を構成するリソースのバイト単位での合計サイズ。

プロパティ(Property)

データタイプ: xs:long

親要素: metadata

supportedContentFormats

リーディングシステム(Reading System)がサポートするコンテンツ(Content)のフォーマットを指定する。サービス(Service)は、リーディングシステム(Reading System)に提供するフォーマットの選択にこの情報を使用してもよい(MAY)。このドキュメントでは、このリストが空の場合のサービス(Service)の挙動を指定しない。

プロパティ(Property)

コンテンツモデル: ( contentFormat* )

親要素: config

supportedContentProtectionFormats

もしあれば、リーディングシステム(Reading System)がサポートするコンテンツ(Content)保護(デジタル著作権管理 : Digital Rights Management) 規格を指定する。

プロパティ(Property)

コンテンツモデル: ( protectionFormat* )

親要素: config

supportedContentSelectionMethods

このサービス(Service)でサポートされているコンテンツ(Content)選択方式 のリスト。サービス(Service)は2つの方式のうち少なくとも1つの方式はサポートしなければならない(MUST)。

プロパティ(Property)

コンテンツモデル: ( method{1, 2} )

親要素: serviceAttributes

supportedInputTypes

リーディングシステム(Reading System)がサポートしているユーザ(User)のサービス(Service)への入力の方法。

リーディングシステム(Reading System)がどの方法の入力方法もサポートしていない場合は、nputTypes要素が空でなければならない(MUST)。

プロパティ(Property)

コンテンツモデル: ( input* )

親要素: config

supportedMimeTypes

リーディングシステム(Reading System)がサポートする[MIME]タイプを指定する。

これは、コンテンツ(Content)とサービス(Service)のメッセージ(label)両方に適用される。

サービス(Service)は、labelとコンテンツ(Content)としてリーディングシステム(Reading System)に提供するリソースタイプを選択するためにこの情報を使用してもよい(MAY)。supportedContentFormatsでのコンテンツ(Content)フォーマットによってサポートが暗示されているコンテンツ(Content)タイプはここに含める必要はない。この仕様では、このsupportedMimeTypesとsupportedContentFormatsのリストの両方が空の場合のサービス(Service)の挙動を指定しない。

プロパティ(Property)

コンテンツモデル: ( mimeType* )

親要素: config

supportedOptionalOperations

(もしあれば)サービス(Service)によってサポートされているオプションの(OPTIONAL)オペレーションを指定する。

プロパティ(Property)

コンテンツモデル: ( operation* )

親要素: serviceAttributes

supportedUplinkAudioCodecs

[RIFF WAVE] に加えて(もしあれば)userResponsesでサポートされているオーディオコーデックのリスト。

プロパティ(Property)

コンテンツモデル: ( codec* )

親要素: serviceAttributes

supportsAudioLabels

このサービス(Service)がlabelでのaudioの包含をサポートするかどうかを指定する。

この要素の値がtrueであり、リーディングシステム(Reading System)の最も最近のsetReadingSystemAttributesに対する呼び出しでreadingSystemAttributesrequiresAudioLabels要素がtrueである場合は、サービス(Service)は自身が提供する各labelaudio要素を含まなければならない(MUST)。

プロパティ(Property)

データタイプ: xs:boolean

親要素: serviceAttributes

supportsMultipleSelections

リーディングシステム(Reading System)がmultipleChoiceQuestionのための複数選択式をサポートしているかどうかを指定する 。

この要素をfalseに設定するならば、サービス(Service)はtrueとセットしたallowMultipleSelections属性といっしょにmultipleChoiceQuestionをリーディングシステム(Reading System)に出してはならない(MUST NOT)。

プロパティ(Property)

データタイプ: xs:boolean

親要素: config

supportsSearch

予約されたパラメータsearchを持つgetQuestionsがサービス(Service)によってサポートされているかどうかを指定する。

プロパティ(Property)

データタイプ: xs:boolean

親要素: serviceAttributes

supportsServerSideBack

予約されたパラメータbackを持つgetQuestionsがサービス(Service)によってサポートされているかどうかを指定する。

プロパティ(Property)

データタイプ: xs:boolean

親要素: serviceAttributes

text

labelのテキストコンポーネント。

プロパティ(Property)

データタイプ: xs:string

親要素: label

userResponse

質問に対する回答 。questionID属性の値が以下で予約された識別子の1つでない限り、(inputQuestionまたはmultipleChoiceQuestionへの応答のための)value属性または(音声ベースの応答のための)data要素のいずれかが存在しなければならない(MUST)。

userResponses要素が、複数選択が認められているmultipleChoiceQuestionへの応答である場合、複数のuserResponse要素は、それぞれの選択を表現するために使用されなくてはならない(MUST)(それぞれのuserResponseはquestionID属性を通して同じ質問を参照する)。

プロパティ(Property)

コンテンツモデル: ( data? )

親要素: userResponses

属性(Attribute)

questionID

回答される質問の識別子。

以下で定義されるように、この属性の次の3つの値が予約されている。

  • default

    サービス(Service)からルート質問(メインメニュー)。(この値は、動的メニューのオペレーションを初期化するために使用される。回答された質問には反映されない)。

    動的メニューをサポートするサービス(Service)は、この予約された識別子をサポートしなければならない(MUST)。

  • search

    サービス(Service)の検索メニュー。

    サービス(Service)は、search予約済識別子をサポートすることは求められていない。サービス(Service)はこの識別子をサポートしているかどうかをserviceAttributesで明示的に宣言しなくてはならない(MUST)。

  • back

    動的メニューオペレーションのシーケンスの中で、サービス(Service)からの前の質問。

    サービス(Service)はback予約済識別子をサポートすることは求められていない。サービス(Service)は、この識別子をサポートしているかどうかをserviceAttributesで明示的に宣言しなくてはならない(MUST) 。

使用: 必須(REQUIRED)

データタイプ: xs:NMTOKEN

value

inputQuestionの場合には、この属性はテキスト形式のレスポンスを格納している。multipleChoiceQuestionの場合には、この属性は選択肢のIDが格納している。

使用: 任意(OPTIONAL)

データタイプ: xs:string

version

リーディングシステム(Reading System)のバージョン。

プロパティ(Property)

データタイプ: xs:string

親要素: readingSystemAttributes

リファレンス

引用規定

[DAISY 2.02] DAISY 2.02 Specification . Markus Gylling, et al. 28 February 2001.

[Document-Literal Conformance] Child Element for Document-Literal Bindings (part of [WS-I Basic Profile 1.1]) . Keith Ballinger, et al. 24 August 2004.

[Dublin Core] Dublin Core Metadata Element Set, Version 1.1 . Dublin Core Metadata Initiative. 14 January 2008.

[HTTP 1.1] HyperText Transfer Protocol 1.1, RFC 2616 . R. Fielding, et al. June 1999.

[HTTP Cookies] HTTP cookies in WS-I Basic Profile 1.1 (part of [WS-I Basic Profile 1.1]) . Keith Ballinger, et al. 24 August 2004.

[MIME] Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, RFC 2046 . N. Freed, et al. November 1996.

[MTOM] SOAP Message Transmission Optimization Mechanism . M. Gudgin, et al. January 2005.

[PDTB2] DAISY Protected Digital Talking Book 2 . Neil Bernstein. George Kerscher. January 2005.

[RFC 2109] HTTP State Management Mechanism . D. Kristol. L. Montulli. February 1997.

[RFC 2119] Key words for use in RFCs to Indicate Requirement Levels . S. Bradner. March 1997.

[RFC 2396] Uniform Resource Identifiers (URI): Generic Syntax . T. Berners-Lee, et al. August 1998.

[RFC 2617] HTTP Authentication: Basic and Digest Access Authentication . J. Franks, et al. June 1999.

[RIFF WAVE] Multimedia Programming Interface and Data Specifications 1.0 (Unofficial transcript) . IBM Corporation. Microsoft Corporation. August 1991.

[SOAP 1.1] Simple Object Access Protocol 1.1 . Don Box, et al. 8 May 2000.

[SSL 3.0] Secure Sockets Layer 3.0 . Alan O. Freier, et al. 18 November 1996.

[TLS 1.0] Transport Layer Security 1.0, RFC 2246 . T. Dierks. C. Allen. January 1999.

[WS-I Basic Profile 1.1] WS-I Basic Profile 1.1 . Keith Ballinger, et al. 24 August 2004.

[WS-I Basic Profile 1.1 Conformance Targets] WS-I Basic Profile 1.1 Conformance Targets (part of [WS-I Basic Profile 1.1]) . Keith Ballinger, et al. 24 August 2004.

[WSDL 1.1] Web Services Definition Language 1.1 . Erik Christensen, et al. 15 March 2001.

[XML Schema 1] XML Schema Part 1: Structures Second Edition . Henry S. Thompson, et al. 28 October 2004.

[XML Schema 2] XML Schema Part 2: Datatypes Second Edition . P. V. Biron. Ashok Malhotra. 28 October 2004.

[Z39-86.2005] ANSI/NISO Z39-86.2005 - Specifications for the Digital Talking Book . Michael Moodie, et al. 21 April 2005.

[Z39-86.2005-BOOKMARKS] Portable Bookmarks and Highlights (part of [Z39-86.2005]) . Michael Moodie, et al. 21 April 2005.

参考規定

[Dynamic Menus Primer] DAISY Online Delivery Protocol - Dynamic Menus Primer . Kenny Johar, et al. 2 April 2010.

[Z39-86.2002] ANSI/NISO Z39-86.2002 - Specifications for the Digital Talking Book . Michael Moodie, et al. 6 March 2002.

付録 A. WSDL 抽象定義

この付録は規範的である。

付属のdo-wsdl-10.wsdlドキュメントで定義された[WSDL 1.1]エンティティは準拠する全てのサービス(Service)が必ず守らなくてはならない(MUST)抽象的なWebサービス契約を構成する。

サービスプロバイダ(Service Provider)は、いくつかのURIWSDLドキュメントを公開しなければならない(MUST)。WSDL ドキュメントは http://www.daisy.org/projects/daisy-online-delivery/do-wsdl-10.wsdl を名前空間 http://www.daisy.org/ns/daisy-online/にインポートしなくてはならない(MUST)。そのWSDLドキュメントは名前空間 http://www.daisy.org/ns/daisy-online/DaisyOnlineServiceに結びつけられた1つのportのあるserviceを定義しなくてはならない(MUST)。

例A.1."example"が公開したWSDLドキュメント

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:tns="http://www.daisy.org/ns/daisy-online/"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             targetNamespace="http://www.daisy.org/ns/daisy-online/">

  <import namespace="http://www.daisy.org/ns/daisy-online/"
          location="http://www.daisy.org/projects/daisy-online-delivery/do-wsdl-10.wsdl"/>
  
  <service name="example">
    <documentation>
      Example DAISY Online Service
    </documentation>

    <port name="examplePort" binding="tns:DaisyOnlineService">
      <soap:address location="http://example.org/daisy-online/"/>
    </port>
  </service>
</definitions>

付録 B. 謝辞

この付録は参考情報である

次に挙げる個人はこの仕様の発行時のDAISY Online Working Groupの優良メンバーだった。

次に挙げる個人の、DAISY Online Working Groupの元メンバーとして、または個々の貢献者としての貢献に対して感謝する。