Audiobooks

W3C Candidate Recommendation

This version:
https://www.w3.org/TR/2020/CR-audiobooks-20200909/
Latest published version:
https://www.w3.org/TR/audiobooks/
Latest editor's draft:
https://w3c.github.io/audiobooks/
Implementation report:
https://www.w3.org/publishing/groups/publ-wg/implementation/results.html
Previous version:
https://www.w3.org/TR/2020/CR-audiobooks-20200730/
Editors:
Wendy Reid (Rakuten/Kobo)
Matt Garrish (DAISY Consortium)
Participate:
GitHub w3c/audiobooks
File a bug
Commit history
Pull requests

Please check the errata for any errors or issues reported since publication.


Abstract

This specification describes the requirements for the creation of audiobooks, using a profile of the Publication Manifest specification.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.

This document was published by the Publishing Working Group as a Candidate Recommendation. This document is intended to become a W3C Recommendation.

GitHub Issues are preferred for discussion of this specification. Alternatively, you can send comments to our mailing list. Please send them to public-publ-wg@w3.org (archives).

W3C publishes a Candidate Recommendation to indicate that the document is believed to be stable and to encourage implementation by the developer community. This Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than 31 March 2020.

Please see the Working Group's implementation report.

Publication as a Candidate Recommendation does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

This document is governed by the 1 March 2019 W3C Process Document.

1. Introduction

This section is non-normative.

An Audiobook is a collection of audio resources grouped together by a reading order, metadata, and resources, all contained in a manifest. This Audiobook can live on the Open Web Platform, or as a packaged entity.

This specification is intended to standardize the audiobooks distribution model on the web and between businesses. It should facilitate different user agent architectures for the consumption of Audiobooks. The primary goal is to bring clarity to a part of the publishing industry currently underserved by standards, while opening Audiobooks to the Open Web Platform and new user agents. This specification does not outline what file types or formats should be used by content creators, only a manifest format for delivering them.

This specification does not define how user agents are expected to render Audiobooks. Details about the types of affordances that user agents can provide to enhance the reading experience for users are instead defined in [pwp-ucr].

2. Terminology

Terms with meanings specific to the publishing industry are capitalized in this document (e.g., "Reading System"). A complete list of these terms and definitions is provided in [pub-manifest].

Only the first instance of a term in a section is linked to its definition.

In addition, the following terminology is defined for use in this specification:

Supplemental Content

Supplemental content is any content relating to the audiobook content but not required for the full experience of the publication. Examples of supplemental content include photographs, charts, or data relating to topics mentioned in the audiobook.

3. Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words MAY, MUST, MUST NOT, RECOMMENDED, REQUIRED, and SHOULD in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

4. Construction

4.1 Primary Entry Page

The primary entry page is an HTML resource that represents the preferred starting resource of an Audiobook and enables discovery of its manifest. It typically introduces the audiobook and provides access to the content.

The primary entry page MUST include either a link to the manifest or embed the manifest [pub-manifest]. It also SHOULD contain the table of contents.

An Audiobook MUST include a primary entry page except when packaging allows alternative discovery of the manifest. When present, the page MUST be included in the resource list.

4.2 Table of Contents

The table of contents provides a hierarchical list of links that reflects the structural outline of the major sections of the Audiobook and any supplemental content it may contain.

The table of contents is expressed via an [html] element (typically a nav element) in one of the resources. This element MUST be identified by the role attribute [html] value "doc-toc" [dpub-aria-1.0].

If the table of contents is located in the primary entry page, the table of contents MUST be the first element in the document — in document tree order [dom] — with that role value. Otherwise, the manifest SHOULD identify the resource that contains the structure.

If the table of contents is not located in the primary entry page, the manifest SHOULD identify the resource that contains the structure.

When an Audiobook contains additional resources (i.e. supplemental content):

Note

When including supplemental content, be aware that users might not have access to this content unless it is linked to from the table of contents. It is strongly advised to provide links to all content that is not in the default reading order.

5. Manifest

5.1 Introduction

This section is non-normative.

The Audiobook manifest is defined by a set of properties that describe the basic information a user agent requires to process and render an Audiobook. These properties are categorized in the Publication Manifest [pub-manifest]. Where these properties are extended from the Publication Manifest is specified in this section.

Note

The Audiobook manifest is defined as a specific "shape" of [json-ld11]. This shape is also defined, informally, through a JSON schema [json-schema] that expresses the constraints defined in this specification. This schema is maintained at https://www.w3.org/ns/pub-schema/audiobooks/.

5.2 Requirements

The requirements for the expression of Audiobook properties and resource relations are defined as follows:

Note

The list of properties uses the formal names for each property as described in [schema.org] and [pub-manifest]. A descriptive label is included in parentheses where the purpose of these properties might be unclear.

REQUIRED:
RECOMMENDED:
Note

Some properties are implicitly required, as they are compiled from alternative information when not explicitly authored. Refer to the internal representation data models [pub-manifest] for more information (the Audiobooks representation only differs in the default value for the type term).

5.3 Manifest Contexts

An Audiobook manifest has to start by setting the JSON-LD context [json-ld]. The context has the following two major components:

Example 1 : The context declaration.
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	…
}

To add the global language and direction of the manifest metadata, language and direction declaration [pub-manifest] can also be added to the context:

Example 2 : Declaring French as the default language for the manifest
{
	"@context" : [
		"https://schema.org",
		"https://www.w3.org/ns/pub-context",
		{"language":"fr"}
	]
	...
}

5.4 Publication Conformance

The conformance URL expressed in the conformsTo term [pub-manifest] MUST be "https://www.w3.org/TR/audiobooks/".

Example 3 : Setting a publication's type to Audiobook.
{
		"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
		"conformsTo" : "https://www.w3.org/TR/audiobooks/"
		…
}

5.5 Publication Type

The Publication Type is defined using the type term [pub-manifest].

Example 4 : Setting a publication's type to Audiobook.
{
    "@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
    "type"     : "Audiobook"
    …
}

If a type is not specified, Audiobook [schema.org] is assumed as the default.

5.6 Properties

5.6.1 Creators

A creator is an individual or entity responsible for the creation of the Audiobook. The Audiobooks profile can use the full list of creators defined in [pub-manifest].

The creators list includes two recommended creators for Audiobooks:

Example 5 : Author of a book
{
    "conformsTo" : "https://www.w3.org/TR/audiobooks/",
    "@context" : ["https://schema.org","https://www.w3.org/ns/pub-context"],
		"type" : "Audiobook",
    …
    "url" : "https://publisher.example.org/janeeyre",
    "author" : {
        "type" : "Person",
        "name" : "Charlotte Bronte"
    }
}
Example 6 : Author and Narrator of an Audiobook
{
		"conformsTo" : "https://www.w3.org/TR/audiobooks/";
		"@context": ["https://schema.org", "https://www.w3.org/ns/pub-context"],
		…
		"url"	: "https://publisher.example.org/janeeyre",
		"author" : {
				"type": "Person",
				"name": "Charlotte Bronte"
		}
		"readBy" : {
				"type": "Person",
				"name": "Ivan Herman",
				"id"	: "https://www.w3.org/People/Ivan/"
		}
}

5.6.2 Duration

A duration is the length of the audio resources in an Audiobook. The duration property is fully defined in Publication Manifest [pub-manifest].

Duration SHOULD be expressed for the entirety of the audiobook as part of the manifest, and SHOULD be present at the item level in the default reading order.

When a content creator specifies both the duration for the audiobook and item-level duration in the default reading order the resource-level duration SHOULD be equal to the sum of the durations of the items in the reading order.

Example 7 : Duration of an Audiobook in Seconds
{
		"conformsTo" : "https://www.w3.org/TR/audiobooks/",
		"@context" : ["https://schema.org","https://www.w3.org/ns/pub-context"],
		…
		"url" : "https://publisher.example.org/janeeyre",
		"author" : {
				"type"  : "Person",
				"name"  : "Charlotte Bronte"
		},
		"duration" : "PT12345.235S"
}

5.7 Default Reading Order

The default reading order [pub-manifest] is a specific progression through the audio resources in the audiobook.

The default reading order MUST contain at least one audio resource, which MAY be identified by the type of LinkedResource [pub-manifest]. The default reading order MUST NOT contain non-audio resources.

An audio resource can be referenced in its entirety via a URL [url], or for content where multiple chapters occupy a single file by using media fragments [media-frags] to locate the exact starting and end points.

Note

It is important to note that a resource cannot be referenced more than once in the reading order. In the case where an audio file represents the content of multiple chapters or sections of the book, the table of contents can be used to specify the starting and ending points of those chapters in the larger audio file, as demonstrated in this example.

Note

Annotations can also use media fragments to identify the location of the annotation in the resource, and are compatible with the Web Annotations model. This method will only apply to audiobook manifests that are not packaged.

Example 8 : Audiobook Reading Order for a Single Resource
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url" : "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"readingOrder" : [{
		"type" : "LinkedResource",
		"url" : "audio/janeeyre.mp3",
		"encodingFormat" : "audio/mp3",
		"name" : "Jane Eyre",
		"duration" : "PT124503.123S"
	}]
}
Example 9 : Audiobook Reading Order for Multiple Resources using Media Fragments
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url" : "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"readingOrder" : [{
		"type": "LinkedResource",
		"url" : "audio/part001.wav#t=0,457.931",
		"encodingFormat" : "audio/vnd-wav",
		"name" : "Chapter 1",
		"duration" : "PT457.931S"
	}, {
		"type" : "LinkedResource",
		"url" : "audio/part002.wav#t=12.741",
		"encodingFormat" : "audio/vnd-wav",
		"name" : "Chapter 2",
		"duration" : "PT234.245S"
	}]
}

5.8 Resource List

The resource list enumerates any additional resources used in the processing and rendering of an audiobook that are not listed in the reading order. It is expressed using the resources property.

If an audiobook includes supplemental content it MUST be referenced in the resource list.

Example 10 : Audiobook with Supplemental Content
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url" : "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"resources" : [
		"cover.jpg",
		"portrait_CB.jpg",
		"supplement.pdf"
	]
}

5.9 Audiobook Previews

Previews are a common way to provide users an experience of the full content before purchasing or downloading the full audiobook.

A preview is identified using the preview link relation, as defined in [pub-manifest].

Previews MAY be located externally or included as a resource of the audiobook.

Example 11 : Audiobook with an External Preview
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url"	: "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"resources" : [{
		"type" : "LinkedResource",
		"url" : "https://publisher.example.org/jane-eyre-preview.wav",
		"encodingFormat" : "audio/wav",
		"rel" : "preview"
	}]
}
Example 12 : Audiobook with an Internal Preview
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url"	: "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"resources" : [{
		"type" : "LinkedResource",
		"url"	: "preview.wav",
		"encodingFormat" : "audio/wav",
		"rel"	: "preview"
	}]
}

5.10 Packaging

This section is non-normative.

Audiobooks will be packaged using the method described in the Lightweight Packaging Format [lpf] note.

5.11 Accessibility

This section is non-normative.

The history of the audiobook is rooted in the world of accessibility. Both purely audio publications and publications that synchronize text and audio playback have long been used to assist users with alternative reading needs and preferences.

An approach for accessible synchronized media in publications is currently being done by the Synchronized Multimedia for Publications Community Group. Refer to the work of that group for more information about creating such content and incorporating it into an Audiobook.

Alternatively, a content creator can provide the text equivalent as HTML [html] resources in the resources.

Example 13 : Audiobook with Alternate Text
{
	"@context" : ["https://schema.org", "https://www.w3.org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"url" : "https://publisher.example.org/janeeyre",
	"name" : "Jane Eyre",
	"readingOrder" : {
		"type" : "LinkedResource",
		"url" : "audio/part001.wav#t=0",
		"encodingFormat" : "audio/vnd-wav",
		"name" : "Chapter 1",
		"duration" : "PT457.931S",
		"alternate" : {
			"type" : "LinkedResource"
			"url" : "text/part001-1.html",
			"encodingFormat" : "text/html"}
	},
	"resources" : [{
     "type": "LinkedResource",
     "url": "text/part001-1.html",
     "encodingFormat" : "text/html"
   }...
	]
}

6. Manifest Processing

This section depends on the Infra Standard [infra].

The specification extends the Publication Manifest processing algorithms [pub-manifest] as follows:

Generating the Internal Representation

The following extension steps are added for Audiobook manifests:

  1. (§ 4.1 Primary Entry Page and § 4.2 Table of Contents) If document is not defined or does not include an [html] element with the role doc-toc:

    1. let toc be a boolean value set to false.

    2. for each resource of processed["resources"], if resource["rel"] is defined and contains the value contents, set toc to true, then break.

    3. if toc is not true, validation error.

    Explanation

    This step checks for a table of contents in the resource list when an Audiobook manifest is not linked to a primary entry page (i.e., when document is not defined) or the entry page does not include a table of contents.

  2. (§ 5.6.2 Duration) Check the duration of the publication as follows:

    1. Let resourceDuration hold the total duration of individual resources.

    2. For each resource of data["readingOrder"]:

      1. if resource["duration"] is not defined, validation error.

      2. otherwise, if resource["duration"], add resource["duration"] to resourceDuration.

    3. If the values cannot be compared because data["duration"] is not set, validation error.

      Otherwise, if resourceDuration does not specify the same total duration as data["duration"], validation error.

    Explanation

    This steps checks both that all resource in the reading order specify a duration and that the sum of all those durations matches the total duration for the publication.

    A validation error is only emitted while checking each resource if the resource does not specify a duration. The validity of the durations [pub-manifest] is already checked in the publication manifest algorithm so does not need to be repeated.

Data Validation

The following extension steps are added for Audiobook manifests:

  1. (§ 5.7 Default Reading Order) Check the reading order as follows:

    1. If data["readingOrder"] is not set, fatal error.

    2. For each resource in data["readingOrder"], if resource is not an audio resource, validation error, remove resource from data["readingOrder"].

    3. If data["readingOrder"] is an empty list, fatal error.

    Explanation

    This step ensures that only audio resources are listed in the reading order and removes any that are not.

    If the reading order does not contain any entries after checking each resource, a fatal error is returned as the publication is not a valid audiobook.

  2. (§ 5.5 Publication Type) If data["type"] is not set or is an empty list, validation error, set to « "Audiobook" ».

    Explanation

    This step sets the default type of the publication to Audiobook when a type property has not been specified.

  3. (§ 5.2 Requirements) Check that each of the following properties is set. If not, issue a validation error for each one.

    • data["abridged"]
    • data["accessMode"]
    • data["accessModeSufficient"]
    • data["accessibilityFeature"]
    • data["accessibilityHazard"]
    • data["accessibilitySummary"]
    • data["author"]
    • data["dateModified"]
    • data["datePublished"]
    • data["id"]
    • data["inLanguage"]
    • data["name"]
    • data["readBy"]
    • data["readingProgression"]
    • data["resources"]
    • data["url"]
    Explanation

    This step checks that all the recommended properties have been set. For more information about these, refer to § 5.2 Requirements.

  4. (§ 5.2 Requirements) If no resource in data["readingOrder"] or data["resources"] has a rel entry that contains the relation cover, validation error.

    Explanation

    This step checks the reading order and resource list to verify that a cover has been specified (i.e., an resource has the value cover in its rel property).

7. User Agent Processing of Machine-Processable Table of Contents

This section is non-normative.

This specification extends the Publication Manifest’s User Agent Processing Algorithm for Machine-Processable Table of Contents [pub-manifest] to locate a table of content element as follows:

  1. If the primary entry page is available, then execute the algorithm locating the table of content element on the primary entry page.
  2. If the previous step is not successful, locate the relevant resource, if available, in the manifest as described in § 4.8.1.3 Table of Contents in [pub-manifest], and execute the same algorithm on that resource.

See also § 4.2 Table of Contents for further details.

8. Security and Privacy Considerations

As Audiobooks is a profile of Publication Manifest [pub-manifest], all security and privacy considerations detailed in that specification are applicable to this profile.

This profile acknowledges the following considerations:

9. User Agent Behaviors for Audiobooks

This section is non-normative.

This section outlines the expected user agent behaviors for implementation of audiobooks. For processing instructions, user agents should refer to the Processing a Manifest section of the Publication Manifest [pub-manifest] specification, and conform to any behavior described there.

All user agent behaviors described in this section are intended to provide implementors with guidance, not strict requirements. Behaviors in this document are taken mainly from the Use Cases and Requirements [pwp-ucr] note published by the working group.

9.1 Opening and Navigating the Contents of an Audiobook

When a user agent opens an Audiobook, and the manifest processes according to the rules laid out in Publication Manifest [pub-manifest], it should be opened by the User Agent. The Reading Order or, if available, Table of Contents should be accessible to the user. A User Agent should be able to provide a list of the contents of the audiobook available to the user when requested. If a non-audio resource is present in the Reading Order, the User Agent can choose to present it to the user or skip it.

User agents should provide a means of rendering non-audio resources within the Reading Order and Resource list. If the content cannot be rendered by the user agent, it is recommended that the user agent inform the user that the content is present but cannot be rendered.

The Primary Entry Page is intended to be, when available, the entry point to the audiobook. If a content creator has provided a primary entry page, and the User Agent is capable of rendering or processing HTML content, it should be the first thing presented to the user. The Primary Entry Page may or may not contain a Table of Contents, if included using the role="doc-toc" it should be treated as the Table of Contents. If the Table of Contents is a separate document, it can be rendered however the User Agent chooses as long as it meets the requirements laid out above. If no Table of Contents is included in the Primary Entry Page or elsewhere, the User Agent should refer to the Reading Order.

9.2 Audiobook Playability

As outlined in the Use Cases and Requirements [pwp-ucr] note, an audiobook must be navigable in the User Agent. This means that a User Agent must provide methods for the user to move through the audiobook in a linear or non-linear fashion by either moving through the Reading Order seamlessly or by accessing the Table of Contents. The User Agent should also allow the user to move through individual audio files in short time increments.

For an audiobook, the User Agent should provide a player interface [pwp-ucr] that will allow the user to navigate, play, or pause the audiobook. This interface can be represented to the user in any way (i.e. physical buttons, visual interface, keyboard input, or voice commands), but should be accessible at any point in the listening experience.

9.3 Audiobook Packaging and Offlining

The Use Cases and Requirements [pwp-ucr] note recommends that content be available offline and that any packaged formats should not affect the iterations of the publications. This means that even if the content is copied many times to many users via multiple User Agents, the core manifest and its identifier are never changed.

This specification recommends the Lightweight Packaging Format [lpf] for packaging audiobook content, but this is not a requirement. Audiobook User Agents should be able to ingest LPF files for play, and should display content according to the requirements and recommendations in this document.

If a User Agent is serving the content directly from their service (i.e. as a retailer or repository of content), it is recommended that they provide a method for offlining or downloading the content to the user. This can be in any format they choose, but the audiobook should be complete and valid and the contents listed in the manifest should be served in their entirety. Even if a User Agent does not support the display of a certain resource (i.e. an image file or data table), it should still be available to the user for download.

This specification does not provide a method for content creators to protect or watermark their content, as there are existing methods available in the market today. User Agents who work with content creators that wish to protect or limit the distribution of their content can choose a method that works best for their requirements.

9.4 Audiobooks Accessibility

This specification recommends and provides a method for content creators to create fully accessible audiobooks. User Agents should use this information, in the section on Accessibility, to implement accessible audiobook interfaces. It is recommended that User Agents provide accessible player interfaces, as well as a method for content creators who have provided alternate content to have that content displayed.

10. Change Log

10.1 Substantive changes since the previous version

10.2 Other substantive changes since Candidate Recommendation

For a complete list of issues addressed, refer to the GitHub tracker.

A. Manifest Examples

This section is non-normative.

A.1 Simple Audiobook

A manifest for an audiobook. The canonical version of this manifest is also available.

{
  "@context": ["https://schema.org", "https://www.w3.org/ns/pub-context"],
  "conformsTo" : "https://www.w3.org/TR/audiobooks/",
  "type": "Audiobook",
  "id": "https://librivox.org/flatland-a-romance-of-many-dimensions-by-edwin-abbott-abbott/",
  "url": "https://w3c.github.io/wpub/experiments/audiobook/",
  "name": "Flatland: A Romance of Many Dimensions",
  "author": "Edwin Abbott Abbott",
  "readBy": "Ruth Golding",
  "publisher": "Librivox",
  "inLanguage": "en",
  "dateModified": "2018-06-14T19:32:18Z",
  "datePublished": "2008-10-12",
  "duration": "PT15153S",
  "license": "https://creativecommons.org/publicdomain/zero/1.0/",

  "resources": [
    {
      "rel": "cover",
      "url": "http://ia800704.us.archive.org/9/items/LibrivoxCdCoverArt12/Flatland_1109.jpg",
      "encodingFormat": "image/jpeg"
    },{
      "rel": "contents",
      "url": "toc.html",
      "encodingFormat": "text/html"
    }
  ],

  "readingOrder": [
    {
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_1_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1371,
      "name": "Part 1, Sections 1 - 3"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_2_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1669,
      "name": "Part 1, Sections 4 - 5"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_3_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1506,
      "name": "Part 1, Sections 6 - 7"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_4_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1669,
      "name": "Part 1, Sections 8 - 10"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_5_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1506,
      "name": "Part 1, Sections 11 - 12"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_6_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1798,
      "name": "Part 2, Sections 13 - 14"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_7_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1225,
      "name": "Part 2, Sections 15 - 17"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_8_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1371,
      "name": "Part 2, Sections 18 - 20"
    },{
      "url": "http://www.archive.org/download/flatland_rg_librivox/flatland_9_abbott.mp3",
      "encodingFormat": "audio/mpeg",
      "duration": 1659,
      "name": "Part 2, Sections 21 - 22"
    }
  ]
}

A.2 Audiobook with Supplemental Content

A manifest for an audiobook with supplemental content.

{
	"@context" : ["https://schema.org", "https://www.w3/org/ns/pub-context"],
	"conformsTo" : "https://www.w3.org/TR/audiobooks/",
	"id" : "https://publisher.example.com/janeeyre",
	"url" : "https://publisher.example.com/janeeyre",
	"name" : "Jane Eyre",
	"author" : "Charlotte Bronte",
	"readBy" : "Jane Doe",
	"duration" : "PT123456.789S",
	"abridged" : false,
	"inLanguage" : "en",
	"dateModified" : "2019-03-29T15:59:00Z",
	"datePublished" : "2019-03-29",

	"readingOrder": [
		{"url": "audio/chapter001.aac", "encodingFormat": "audio/aac", "name": "Chapter 1", "duration": "PT1234.567S"},
		{"url": "audio/chapter002.aac", "encodingFormat": "audio/aac", "name": "Chapter 2", "duration": "PT890.123S"},
		{"url": "audio/chapter003.aac", "encodingFormat": "audio/aac", "name": "Chapter 3", "duration": "PT456.789S"},
		{"url": "audio/chapter004.aac", "encodingFormat": "audio/aac", "name": "Chapter 4", "duration": "PT987.654S"},
		{"url": "audio/chapter005.aac", "encodingFormat": "audio/aac", "name": "Chapter 5", "duration": "PT321.987S"}
	],

	"resources": [
	{"rel": "cover", "url": "images/cover.jpg", "encordingFormat": "image/jpeg"},
	{"rel": "contents", "url": "toc.html", "encodingFormat": "text/html"},
	{"url": "haworth_house.pdf", "encodingFormat": "application/pdf"}
	]
}

B. Table of Contents Examples

This section is non-normative.

B.1 Primary Entry Page with a Table of Contents

A primary entry page with a simple table of contents for an audiobook.

	<head><script type="application/ld+json">
    {
        "@context" : ["https://schema.org","https://www.w3.org/ns/pub-context"],
        "conformsTo" : "https://www.w3.org/TR/audiobooks/",
        …
        "url" : "https://publisher.example.org/janeeyre",
        …
    }
    </script></head>
<body><section role="doc-toc">
			<ol>
			 <li><a href="audio/chapter001.wav">Chapter 1. There was no possibility of taking a walk that day...</a></li>
			 <li><a href="audio/chapter002.wav">Chapter 2. I resisted all the way:...</a></li>
			 <li><a href="audio/chapter003.wav">Chapter 3. The next thing I remember is,...</a></li></ol>
    </section></body>

B.2 Simple Table of Contents

A table of contents for a simple audiobook.

<nav role="doc-toc">
	 <h2>JANE EYRE</h2>

	 <ol>
		<li><a href="audio/chapter001.mp3">Chapter 1. There was no possibility of taking a walk that day...</a></li>
		<li><a href="audio/chapter002.mp3">Chapter 2. I resisted all the way:...</a></li>
		<li><a href="audio/chapter003.mp3">Chapter 3. The next thing I remember is,...</a></li></ol>
	</nav>

B.3 Table of Contents with Media Fragments

A table of contents using media fragment references to locations in a single audio track.

<nav role="doc-toc">
	<h2>JANE EYRE</h2>

	<ol>
		<li><a href="https://example.publisher.org/janeeyre/part001.mp3#t=0,456.788">Chapter 1</a></li>
		<li><a href="https://example.publisher.org/janeeyre/part001.mp3#t=456.789,1234.566">Chapter 2</a></li>
		<li><a href="https://example.publisher.org/janeeyre/part001.mp3#t=1234.567">Chapter 3</a></li>
	</ol>
</nav>

C. Acknowledgements

This section is non-normative.

The editor would like to thank the members of the Publishing Working Group for their contributions to this specification:

The Working Group would also like to thank the members of the Digital Publishing Interest Group for all the hard work they did paving the road for this specification.

D. References

D.1 Normative references

[dom]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[dpub-aria-1.0]
Digital Publishing WAI-ARIA Module 1.0. Matt Garrish; Tzviya Siegman; Markus Gylling; Shane McCarron. W3C. 14 December 2017. W3C Recommendation. URL: https://www.w3.org/TR/dpub-aria-1.0/
[html]
HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[json-ld]
JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 16 January 2014. W3C Recommendation. URL: https://www.w3.org/TR/json-ld/
[media-frags]
Media Fragments URI 1.0 (basic). Raphaël Troncy; Erik Mannens; Silvia Pfeiffer; Davy Van Deursen. W3C. 25 September 2012. W3C Recommendation. URL: https://www.w3.org/TR/media-frags/
[pub-manifest]
Publication Manifest. Matt Garrish; Ivan Herman. 2018-08-16. URL: https://www.w3.org/TR/pub-manifest/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://tools.ietf.org/html/rfc8174
[schema.org]
Schema.org. URL: https://schema.org
[url]
URL Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/

D.2 Informative references

[json-ld11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 7 May 2020. W3C Proposed Recommendation. URL: https://www.w3.org/TR/json-ld11/
[json-schema]
JSON Schema: core definitions and terminology. K. Zyp. Internet Engineering Task Force (IETF). 31 January 2013. Internet-Draft. URL: https://tools.ietf.org/html/draft-zyp-json-schema
[lpf]
Lightweight Packaging Format (LPF). Laurent Le Meur. 2018-08-07. URL: https://w3c.github.io/lpf/
[pwp-ucr]
Web Publications Use Cases and Requirements. Franco Alvarado; Joshua Pyle. W3C. 13 August 2019. W3C Note. URL: https://www.w3.org/TR/pwp-ucr/