IMS Global APIP to QTI 3 Migration

IMS Global APIP to QTI 3 Migration

IMS Candidate Final Public
Version 3.0
IMS Candidate Final Public
Date Issued: 20 July 2020
Status: This document is for review and adoption by the IMS membership.
This version: https://www.imsglobal.org/spec/qti/v3p0/migr/

IPR and Distribution Notice

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the specification set forth in this document, and to provide supporting documentation.

IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on IMS's procedures with respect to rights in IMS specifications can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

The following participating organizations have made explicit license commitments to this specification:

Org name Date election made Necessary claims Type
HMH September 16, 2019 No RF RAND (Required & Optional Elements)

Use of this specification to develop products or services is governed by the license with IMS found on the IMS website: http://www.imsglobal.org/speclicense.html.

Permission is granted to all parties to use excerpts from this document as needed in producing requests for proposals.

The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.

THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTER'S OWN RISK, AND NEITHER THE CONSORTIUM, NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

Public contributions, comments and questions can be posted here: http://www.imsglobal.org/forums/ims-glc-public-forums-and-resources.

© 2020 IMS Global Learning Consortium, Inc. All Rights Reserved.

Trademark information: http://www.imsglobal.org/copyright.html

Abstract

This document is a brief guide to migrating Accessible Portable Item Protocol® (APIP®) information into Question & Test Interoperability® (QTI®) v3 information for both AccessForAll® Personal Needs and Preferences (PNP) candidate profiles and items.

1. Introduction

This guide assumes familiarity with APIP concepts. These concepts are explained in detail in the APIP Best Practice and Implementation Guide .

The first part of this document focuses on the differences between Access for All (AfA) 2.0 PNP used with APIP and the AfA 3.0 PNP used with QTI 3. Throughout this document, we refer to these as the APIP PNP and QTI 3 PNP.

The rest of the document focuses on the changes when moving an item from using APIP to QTI 3. Additionally, it provides several specific examples on how to transform the APIP audience-specific content of an assessment item into the support-specific content of QTI 3. This guide does not have information around changes outside the itemBody or apipAccessibility nodes.

1.1 Key Changes

There are a number of changes between APIP and QTI 3. Some of the key changes include new namespace and schema location, shifting to lower-case naming conventions, the use of web-friendly names for elements, catalogs rather than access elements, and the removal of inclusion orders.

1.1.1 Namespace and schema location

When migrating content from APIP to QTI 3, you'll need to use the new QTI 3 namespace, as shown below.

xmlns="http://www.imsglobal.org/xsd/qti/qtiv3p0/imsafa3p0pnp_v1p0"

For schema location, use:

xsi:schemaLocation="http://www.imsglobal.org/xsd/qti/qtiv3p0/imsafa3p0pnp_v1p0
https://purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqtiv3p0_afa3p0pnp_v1p0.xsd"

1.1.2 Lower-case naming conventions

Both QTI 3 PNP and QTI 3 use more "web-components friendly" lower-case, dash-separated naming conventions, rather than the camelCase conventions of QTI 2.1 and APIP.

As an example, instead of naming a support "keyWordEmphasis" (from APIP PNP), QTI 3 uses the name "keyword-emphasis".

Section § 2.1 Style Differences in APIP PNP (AfA v2.0) to QTI 3 PNP (AfA v3.0) provides more details about these style changes.

1.1.3 Web-components friendly element names

The QTI 3 examples in this document include content within the qti-item-body. All QTI-specific element names use the newer QTI 3 element prefixes, "qti-", for any non-HTML elements. An example would be using <qti-prompt> instead of <prompt>.

For attributes that used camelCase conventions in APIP (QTI 2.1 and 2.2), the names have been changed to the lower-case-dash-separated convention (kebab case), but they do not have a "qti-" prefix. The attribute "timeDependent" in APIP is now "time-dependent" in QTI 3. The vocabularies used within the attributes retain their camelCase spelling.

The Packaging manifest still uses the camelCase naming, as it is based on the Content Packaging standard, not the QTI 3 standard.

1.1.4 Sequence of elements in an assessmentItem

A slight adjustment has been made to the sequence of elements in the qti-assessment-item structure to adjust for the merger of the QTI and APIP information models, and for the QTI 3 additions. The QTI 3 sequence is as follows:

  1. qti-context-declaration (new to QTI 3)
  2. qti-response-declaration
  3. qti-outcome-declaration
  4. qti-template-declaration
  5. qti-template-processing
  6. qti-assessment-stimulus-ref
  7. qti-companion-materials-info
  8. qti-stylesheet
  9. qti-item-body
  10. qti-catalog-info (new to QTI 3)
  11. qti-response-processing
  12. qti-modal-feedback

1.1.5 Catalogs rather than access elements

In QTI 3, support-specific content is stored in "cards" within "catalogs". Catalogs are referenced by id from the qti-item-body content. You point fromthe qti-item-body tothe qti-catalog, which is the reverse direction of APIP. The cards contain the content (or point to a file or resource), and each card uses a support attribute to identify which support it contains. A catalog can contain any number of supports, but only one card for each support is allowed in any single catalog.

The access element has been replaced with the qti-catalog element. The individual audience-specific nodes within the relatedElementInfo node have been replaced by the cards in the catalog.

Section § 3. Support-Specific Content explores catalogs in more detail.

Catalogs can also be referenced from within the qti-content-body of a qti-rubric-block, which can be placed in Tests, Sections, and within an assessment item's qti-item-body.

1.1.6 Removal of Inclusion Orders

Inclusion orders are not used in QTI 3. Instead, the order of presentation is the document order (DOM). Additional or replacement content for specific supports is added by making a reference to that content in the qti-item-body. This is explored in more detail in Sections § 4. APIP Features Used in Content without Inclusion Orders and § 5. APIP Features with Inclusion Orders.

A Note About Examples

To keep this guide as brief as possible, only code snippets are used in the examples.In some cases, the example code includes points of ellipsis (...) to indicate there is more code required for a valid instance of an assessment item. We also represent the <assessmentItem> (or <qti-assessment-item> in QTI 3) element as a simple element, without including the required attributes. An actual QTI 3 item will have the qti-assessment-item node with the opening element looking more like:

<qti-assessment-item xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0   
https:/purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd" 
identifier="QTI3_example" title="assesst menItem Example" 
time-dependent="false" xml:lang="en-US">

1.1.7 Conformance Statements

This document is an informative resource in the Document Set of the QTI v3.0 specification [QTI-30]. As such, it does not include any normative requirements. Occurrences in this document of terms such as MAY, MUST, MUST NOT, SHOULD or RECOMMENDED have no impact on the conformance criteria for implementors of this specification.

2. PNP Mapping

2.1 Style Differences in APIP PNP (AfA v2.0) to QTI 3 PNP (AfA v3.0)

While both APIP PNP and QTI 3 PNP use XML for the candidate preferences, QTI 3 PNP uses a "flatter" style that more directly states specific supports, rather than as a subset of a larger, more abstract classification.

In addition, QTI 3 PNP, as well as QTI 3 more generally has moved to the more "web-friendly" lower-case, dash separated naming conventions, rather than the camelCase conventions of QTI 2.1 and APIP.

For example, to assign a candidate to the language guidance feature in an QTI 3 PNP, you simply state:

<linguistic-guidance/>

Below is an example of a complete QTI 3 PNP instance. The remainder of the examples assume the statements are made within a valid PNP.

Complete QTI 3 PNP

<?xml version="1.0" encoding="UTF-8"?>
<access-for-all-pnp xmlns="http://www.imsglobal.org/xsd/qtiv3p0/imsafa3p0pnp_v1p0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/qtiv3p0/imsafa3p0pnp_v1p0 
https://purl.imsglobal.org/spec/qti/v3p0/schema//xsd/imsqtiv3p0_afa3p0pnp_v1p0.xsd">

 <linguistic-guidance/>

</access-for-all-pnp>

2.2 The APIP assignedSupport Parameter

The assignedSupport parameter of APIP PNP has been removed in QTI 3. In an QTI 3 PNP, stating a support assigns the support for the candidate.

In QTI 3, if you wish to explicitly prohibit a candidate from receiving a particular support, the support should be listed in the prohibit-set within the PNP.

An example QTI 3 PNP statement prohibiting a support:

<prohibit-set>
        <linguistic-guidance/>
</prohibit-set>

2.3 The APIP activateByDefault Parameter

Many APIP PNP features also included a parameter called "activateByDefault" with a vocabulary of true or false. In QTI 3 PNP, to make a specific instruction for the computer delivery system to activate or not activate a particular support when a testing session initializes, the feature should ALSO be listed in the activate-at-initialization-set (equivalent to activateByDefault = true) or the activate-as-option-set (equivalent to activateByDefault = false). You are not required to put any support in either of these sets, but you may optionally add a support to these sets to add clarity of intent. It is intended to be used as explicit instructions, usually where the default behavior is not favorable to the candidate.

For example, if a spoken support is normally active when a candidate starts their test and a particular candidate is overwhelmed by the feature if provided that support when their test starts, you can assign them to the activate-as-option-set. This will allow the candidate to activate the spoken support when they want it.

To do this, you must assign them the support and add them to the activate-as-option-set.

Example APIP PNP assignment and activation preferences:

<content>
   <apip:apipContent>          
      <apip:spoken>
          <apip:assignedSupport>true</apip:assignedSupport>
     <apip:activateByDefault>true</apip:activateByDefault>
  <apip:userSpokenPreference>TextOnly</apip:userSpokenPreference>
      </apip:spoken>
     </apip:apipContent>
 </content>

Example QTI 3 PNP assignment and activation preferences:

<spoken>
     <reading-type>computer-read-aloud</reading-type>
</spoken>
<activate-as-option-set>
     <spoken/>
</activate-as-option-set>

If you had wanted to ensure the candidate had the support when the test starts, use the activate-at-initialization-set:

<spoken>
     <reading-type>computer-read-aloud</reading-type>
</spoken>
<activate-at-initialization-set>
     <spoken/>
</activate-at-initialization-set>

You don't have to assign a support to any of the sets if the support is expected to be provided using the default behavior. In that case, the QTI 3 PNP includes:

<spoken>
     <reading-type>computer-read-aloud</reading-type>
</spoken>

2.4 Feature Mapping

The table below maps the APIP PNP Vocabulary to the QTI 3 PNP Vocabulary.

The QTI 3 PNP is a profile of the fuller set of features available in the AfA 3.0 standard. Some features are not available in QTI 3, for a variety of reasons. As an example, there are some features not within the QTI PNP that may be of interest to some implementers, including alternate representations, where a user's requirements are matched with available resources.

When the table mentions that the feature is not available in AfA 3.0, it means the feature is not a part of the QTI 3 PNP, or the larger set of AfA 3.0 features. There is an extension mechanism for QTI 3 PNP, so while there may not be a specific pre-defined feature, you can use the extension mechanism to continue including the APIP feature in a candidate's QTI 3 PNP.

Table 1: APIP to QTI 3 PNP Feature Mapping

Feature Name APIP PNP Vocabulary QTI 3 PNP Vocabulary
Additional Testing Time

control → apipControl

additionalTestingTime

       timeMultiplier (time/unlimited, opt)

<additional-testing-time>

To specify an amount of time, use the optional parameter:

<time-multiplier>

To specify an unlimited amount of extra time, use the parameter:

<unlimited>

Note: there is an additional parameter <fixed-minutes> in QTI 3.

Alternate Representation

content → apipContent

     alternativeRepresentations

None, use AfA methods outside the QTI 3 Profile. Many of the QTI 3 profile features are alternative representation supports themselves.
Alternate Text and Background Colors

display → apipDisplay

  apipScreenEnhancement

     foregroundColour

colour (hexadecimal, opt)

display → apipDisplay

  apipScreenEnhancement

      backgroundColour

colour (hexadecimal, opt)

Use <text-appearance> for the concept of changing the presentation colors.

Optional:Use the  <font-color> parameter to specify a color for the text using hex notation.

Optional:Use the <background-color> parameter to specify a color for the background using hex notation.

Auditory Calming

display → apipDisplay

   auditoryBackground

Removed from AfA. Use the extension mechanism of AfA 3.0 to enable this feature.
Braille

display

  braille

    brailleGrade ( opt)

    numberOfBrailleDots ( opt)

    numberOfBrailleCells ( opt)

    brailleDotPressure ( opt)

    brailleStatusCell ( opt)

Use <braille> to assign user to this feature. The default <delivery-mode> is "refreshable" which maps directly to the APIP expectation of computer delivery.

Use <grade> for brailleGrade.

Use the extension <ext:> to add refreshable braille preferences like numberOfBrailleDots.

Chunking

Experimental Feature

content  → apipContent

   chunking

Not available in AfA 3.0
Cognitive Guidance

content → apipContent

  cognitiveGuidance

Not available in AfA 3.0. QTI 3 assumes there are a number of supports that could aid the various cognitive issues for candidates, and those supports should be assigned according to the needs of the candidate.
Color Overlay

display → apipDisplay

  apipScreenEnhancement

    colourOverlay

      colour (hexadecimal, opt)

Use <text-appearance> for the concept of changing the presentation colors.

Optional:Use the  <font-color> parameter to specify a color for the text using hex notation.

Optional:Use the <background-color> parameter to specify a color for the background using hex notation.

Encouraging Prompts

Experimental Feature

display  → apipDisplay

  encouragement

    soundFileHref

    textMessageString

Not available in AfA 3.0
Increased White Space

Experimental Feature

display

screenEnhancement  →       apipScreenEnhancement

  increasedWhiteSpacing

Use the <text-appearance> feature, then use either/both of these parameters:

<line-spacing><letter-spacing>

Item Translation

content → apipContent

  itemTranslationDisplay  [language]

<item-translation xml:lang="###"> where "###" = ISO 639-3
Keyword Emphasis

content→ apipContent

   keywordEmphasis

<keyword-emphasis>
Keyword Translation

content → apipContent

  keyWordTranslations  [language]

Use <keyword-translation lang="###">, where language assignment uses ISO 639-3.
Language Learner Guidance

content → apipContent

   languageLearner

Use the <language-guidance> for content specifically created for this audience.

Assign the candidate to other QTI 3 features that may ALSO benefit the candidate.

Line Reader

control → apipControl

  lineReader

    colour (hexadecimal, opt)

Use <line-reader> for the assignment.

If you want to include a specific color, use the parameter <highlight-color> using hexidecimal notation.

Magnification

display → apipDisplay

  apipScreenEnhancement

    Magnification

display

  screenEnhancement

    magnification (magnification    amount)

Use the <magnification> feature for assignment.

For the magnification amount, use the magnification parameter <all-content> and use a multiplying number (i.e. 1.5).

Masking, Answer

display → apipDisplay

  masking

    maskingType=AnswerMask

<answer-masking/>
Masking, Custom

display → apipDisplay

  masking

    maskingType=CustomMask

Removed from AfA. Use the extension mechanism of AfA 3.0 to enable this feature.
Negatives Removed (Item Variant)

Experimental Feature

content  → apipContent

  negativesRemoved

Not available in AfA 3.0
Reduced Answer Choices

Experimental Feature

content  → apipContent

   reducedAnswers

Not available in AfA 3.0
Reverse Contrast

display → apipDisplay

  apipScreenEnhancement

    invertColourChoice

Use <invert-display-polarity> for the concept.

To specify a color for the foreground, use the <foreground> parameter in hexadecimal

Scaffolding

Experimental Feature

content  → apipContent

  scaffolding

Not available in AfA 3.0
Screen Reader

display

   screenReader (opt)

      usage (required, preferred, optionally use, prohibited)

speechRate

pitch

volume

linkIndication (speak link, different voice, sound effect, none)

Use the <spoken> feature, then use the <reading-type> parameter using the "screen-reader" vocabulary.

There is no "usage" in AfA 3.0.

pitch= <pitch>

volume= <volume>

linkIndication= <link-indication>

Sign Language

content → apipContent

  signing

signingType (ASL, SignedEnglish)

Use the <sign-language> feature, and then use the ISO 639-3 for the language assignment.

For ASL, the feature and language is listed as <sign-language lang="ase"/>.

For SignedEnglish (United States), the feature and language is listed as <sign-language lang="eng-US"/>.

Note: British Sign Language is "bsl".

Simplified Language (Whole Item Variant)

content → apipContent

  simplifiedLanguageMode

Not available in AfA 3.0.

QTI 3 has a <simplified-language-portions> feature which includes only those parts of the content that required simplification in the same item file, not in a separate variant.

Spoken (Read Aloud)

content  → apipContent

  spoken

spokenSourcePreference  (Human, Synthetic)  

readAtStartPreference

userSpokenPreference (TextOnly, TextGraphics,   NonVisual, GraphicsOnly)  

directionsOnly

For the spoken feature, use the <spoken> feature.

Then use the <reading-type> parameter and use the "computer-read-aloud" vocabulary. This is used in place of the userSpokenPreference of APIP. For mapping, you can assume TextOnly and TextGraphics are assigned to reading-type:computer-read-aloud, and the NonVisual is assigned to the reading-type: screen-reader, but the exact mapping may be different for specific programs.

For directionsOnly, use the <spoken> parameter <restriction-type> and use the "directions-only" vocabulary.

There is no readAtStartPrefence in AfA 3.0.

There is no spokenSourcePreference in AfA 3.0.

Structured Masking Experimental Feature Not available in AfA 3.0
Tactile

display

  tactile

<tactile>

3. Support-Specific Content

Content intended only for specific audiences, referred to as support-specific content (sometimes called "dormant" content), is handled differently between APIP and QTI 3.

In APIP, support-specific content is stored in audience-specific nodes within access elements. The access elements have a contentLinkInfo node to identify which part of the default content within the itemBody that the access element is supporting. In access elements, you point from the access element to the itemBody content.

In QTI 3, support-specific content is stored in cards (element qti-card) within catalogs (element qti-catalog). Catalogs are referenced by id from the qti-item-body content. You point from the qti-item-body to the qti-catalog, which is the reverse direction of APIP. The cards contain the content (or point to a file or resource), and each card uses a support attribute to identify which support it contains. A catalog can contain any number of supports, but only one card for each support is allowed in any single catalog.

The access element has been replaced with the catalog. The individual audience-specific nodes within the relatedElementInfo node have been replaced by the cards in the catalog.

A note about the supports allowed for cards: In addition to the pre-defined supports from the QTI 3 PNP candidate profile (see Table 1), you can put anything you want in that support attribute if you use the extension prefix. Example:

support= "ext:my-organization-any-text-you-want"

A reminder to implementers that it is best practice to use the lower-case, dash-separated naming convention of QTI 3 in the attribute string. You may also want to include an organizational prefix to prevent namespace clashes, and to be able to understand where the term came from.

You can put all kinds of content in the card for a "custom" support. However, that content may not be understood by other vendors automatically, as it is not part of the predefined supports of QTI 3. Likely, it would just be ignored.

We show an example of these custom supports in a spoken example in Section § 5.1 Spoken where the support (and card content) are used internally by the vendor, where the content is used to render pre-recorded sound files, with the intention of delivering the sound files to candidates.

4. APIP Features Used in Content without Inclusion Orders

There are several APIP features where content is provided for specific audiences without the use of inclusion orders. This section will cover the following features:

  • Item Translation
  • Language Learner Guidance
  • Keyword Emphasis
  • Keyword Translation

4.1 Item Translation

APIP uses an item variant to provide a complete translation of item content. The same is true in QTI 3.

4.2 Language Learner Guidance

The Language Learner Guidance of APIP is most directly associated with the QTI 3 linguistic-guidance term. Any content specifically authored for the language learner audience should be translated into content for the linguistic-guidance support. There is a recognition in QTI 3 that any number of supports might useful to language learners, and additional content that helps explain the use of language is only one of them.

Example of APIP Language Learner Guidance Content

<assessmentItem><itemBody><prompt id="prompt1">Indicate which of the following statements are accurate.</prompt></itemBody>
<apip:apipAccessibility>
   <apip:accessElement identifier="ae029">
     <apip:contentLinkInfo qtiLinkIdentifierRef="prompt1">
         <apip:textLink>
           <apip:wordLink>8</apip:wordLink>
         </apip:textLink>
      </apip:contentLinkInfo>
      <apip:relatedElementInfo>
        <apip:guidance>
            <apip: languageLearnerSupport>
              <apip:supportOrder>1</apip:supportOrder>
              <apip:textString contentLinkIdentifier="note029">                  
                Accurate means correct. </apip:textString>
             </apip:languageLearnerSupport>
         </apip:guidance>
        </apip:relatedElementInfo>
   </apip:accessElement>
</apip:apipAccessibility>
</assessmentItem>

In QTI 3, you need to make a reference from the word (by use of a span element) within the prompt tothe catalog(this example retains the identifier name from the APIP code), then put the content in a card with the linguistic-guidance support, as shown in the following code:

Example of QTI 3 Language Learner Guidance (linguistic-guidance) Content

<qti-assessment-item><qti-item-body><qti-prompt id="prompt1">Indicate which of the following statements are <span 
data-catalog-idref=" ae029">accurate.</span></qti-prompt></qti-item-body>
<qti-catalog-info>
<qti-catalog id="ae029">
      <qti-card  support="linguistic-guidance">
        <qti-html-content>
            <p>Accurate means correct.</p>
         </qti-html-content>
      </qti-card>
   </qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

Note that in QTI 3, the supportOrder node is no longer used for linguistic-guidance, as the order is assumed to be the order of the content within the qti-item-body. Also, as a reminder, all QTI 3 specific elements (non-HTML5 elements) use a "qti-" prefix, so the <prompt> element is changed to <qti-prompt> in QTI 3.

4.3 Keyword Emphasis

In QTI 3, the notation of keyword emphasis is moved directly to the itemBody content.

Example of APIP Keyword Emphasis

<assessmentItem><itemBody><prompt id="prompt1">Indicate which of the following statements are 
<span id="span1">accurate</span>.</prompt></itemBody>
<apip:apipAccessibility>
   <apip:accessElement identifier="span1">
     <apip:contentLinkInfo qtiLinkIdentifierRef="o">
         <apip:objectLink/>
           </apip:contentLinkInfo>
      <apip:relatedElementInfo>
 <apip:keyWordEmphasis/>
      </apip:relatedElementInfo>
   </apip:accessElement>
</apip:apipAccessibility>
</assessmentItem>

In QTI 3, you use the QTI 3 specific class "qti-keyword-emphasis" on the element that you would like to have emphasis for only those candidates who have been assigned the keyword-emphasis support in their PNP.

Example of QTI 3 Keyword Emphasis

<qti-assessment-item><qti-item-body><qti-prompt id="prompt1">Indicate which of the following statements are 
<span class="qti-keyword-emphasis">accurate</span>.</qti-prompt></qti-item-body>
</qti-assessment-item>

4.4 Keyword Translation

In QTI 3, translated content is moved into cardEntry nodes.

Example of APIP Keyword Translation

<assessmentItem><itemBody><prompt id="prompt1">Indicate which of the following statements are 
<span id="span1">accurate.</prompt></itemBody>
<apip:apipAccessibility>
   <apip:accessElement identifier="ae029">
     <apip:contentLinkInfo qtiLinkIdentifierRef="span1">
         <apip:objectLink/>
      </apip:contentLinkInfo>
      <apip:relatedElementInfo>
<apip:keyWordTranslation>
 <apip:definitionId xml:lang="es">
<apip:textString contentLinkIdentifier="kwt1">preciso</apip:textString>
                </apip:definitionId>
                 <apip:definitionId xml:lang="d">
<apip:textString contentLinkIdentifier="kwt2">genau</apip:textString>
                </apip:definitionId>
</apip:keyWordTranslation>
      </apip:relatedElementInfo>
   </apip:accessElement>
</apip:apipAccessibility>
</assessmentItem>

While in QTI 3, you don't put the translation content directly in the keyword-translation card, rather, the different languages are stored in different qti-card-entry nodes. You can also provide a pre-recorded sound file of the translated word, either as a link within the qti-html-content, or as a separate qti-file-href reference.

Example of QTI 3 Keyword Translation

<qti-assessment-item><qti-item-body><qti-prompt id="prompt1">Indicate which of the following statements are 
<span data-catalog-idref="ae029">accurate.</span></qti-prompt></qti-item-body>
<qti-catalog-info>
   <qti-catalog id="ae029">
<qti-card support="keyword-translation">
        <qti-card-entry xml:lang="es">
           <qti-html-content>
             preciso
           </qti-html-content>
        </qti-card-entry>
        <qti-card-entry xml:lang="de">
           <qti-html-content>
             genau
           </qti-html-content>
        </qti-card-entry>
      </qti-card>
   </qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

4.5 All Together Now

Three of the above features are to support the single word "accurate". In QTI 3, the supports can be contained in a single catalog. Similarly, in APIP all the supports can be stored in a single access element.

APIP code for the Language Learner Guidance, Keyword Emphasis, and Keyword Translations

<assessmentItem><itemBody><prompt id="prompt1">Indicate which of the following statements are 
<span id="span1">accurate</span>.</prompt></itemBody>
<apip:apipAccessibility>
   <apip:accessElement identifier="ae029">
     <apip:contentLinkInfo qtiLinkIdentifierRef="o">
         <apip:objectLink/>
      </apip:contentLinkInfo>
      <apip:relatedElementInfo>
        <apip:keyWordEmphasis/>
        <apip:guidance>
            <apip:languageLearnerSupport>
              <apip:supportOrder>1</apip:supportOrder>
              <apip:textString contentLinkIdentifier="note029"> 
                 Accurate means correct.</apip:textString>
             </apip:languageLearnerSupport>
         </apip:guidance>
           <apip:keyWordTranslation>
              <apip:definitionId xml:lang="es">
<apip:textString contentLinkIdentifier="kwt1">preciso</apip:textString>
               </apip:definitionId>
               <apip:definitionId xml:lang="de">
<apip:textString contentLinkIdentifier="kwt2">genau</apip:textString>
               </apip:definitionId>
    </apip:keyWordTranslation>
        </apip:relatedElementInfo>
   </apip:accessElement>
</apip:apipAccessibility>
</assessmentItem>

QTI 3 example with Two of the Supports in a Single Catalog and keyword-emphasis is a Special QTI 3 Class on the Span.

<qti-assessment-item><qti-item-body><qti-prompt id="prompt1">Indicate which of the following statements are 
<span data-catalog-idref="ae029" class="qti-keyword-emphasis">accurate.</span>
</qti-prompt></qti-item-body>
<qti-catalog-info>
   <qti-catalog id="ae029">
      <qti-card support="keyword-translation">
        <qti-card-entry xml:lang="es">
           <qti-html-content>preciso</qti-html-content>
        </qti-card-entry>
        <qti-card-entry xml:lang="de">
           <qti-html-content>genau</qti-html-content>
        </qti-card-entry>
      </qti-card>
        <qti-card support="linguistic-guidance">
        <qti-html-content>
            <p>Accurate means correct.</p>
         </qti-html-content>
      </qti-card>
   </qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

5. APIP Features with Inclusion Orders

One of the biggest changes between APIP and QTI 3 is the removal of inclusion orders. Instead, the order of presentation is the document order (DOM). Additional or replacement content for specific supports is added by making a reference to that content in the itemBody.

Many of the APIP features required not only access elements with audience-specific content, but also required the use of inclusion orders. There are inclusion orders for the following APIP audiences:

  • Spoken, TextOnly
  • Spoken, TextGraphics
  • Spoken, NonVisual
  • Spoken, GraphicsOnly
  • Braille
  • Sign Language

However, in the vast majority of real-world use cases the order prescribed in the APIP inclusion orders was the order of the itemBody content. In addition, the many different audiences were difficult to coordinate or edit.

In QTI 3, the document order is the order of presentation for all candidates. If you have additional content, or replacement content for specific supports, you make a reference to that content from the itemBody at the place and time it should be presented to the candidate.

QTI 3 has no more defaultOrder and onDemandOrder concepts because of the elimination of inclusion orders. For conversion purposes, they should be blended into a single order, that of the DOM, because the reference will be switched fromthe qti-item-body content tothe qti-catalog. The catalogs can be listed within the qti-catalog in any order, meaning the qti-catalog order does not affect the presentation order. Only the DOM dictates the order.

5.1 Spoken

One of the major differences in the spoken support between APIP and QTI 3 is what text is read out loud by text-to-speech (TTS) engine for candidates by default. In QTI 3, the expectation has shifted to assuming the default content (the qti-item-body content) is used by a TTS engine to read out loud.There are no inclusion orders or access elements, assuming that the text to be read aloud exactly matches the text written in the qti-item-body.

5.1.1 Spoken PNP

In APIP, a candidate's PNP can indicate a spoken userSpokenPreference or assign the candidate to a screenReader preference. It is possible to assign a candidate to both of these preferences, which can be confusing for a delivery system to interpret.

There are methods to directly transform access element content from APIP into QTI 3 catalog content, but the transformation will not provide any of the efficiencies of QTI 3 and any inclusion order information is lost in QTI 3. This is demonstrated in the example code below.

In QTI 3, a candidate is assigned to a spoken reading-type, either computer-read-aloud or screen-reader. The userSpokenPreference concepts are represented differently in QTI 3, where all of the userSpokenPreference audiences are represented by the reading-type "computer-read-aloud".  All content is assumed to be accessible by the candidate, unless specifically restricted in their PNP. Those restrictions are stated in the restriction-type property. In addition, the PNP can contain specific requests for the accessibility content provided in alt text or long descriptions.

See the table below for a possible mapping between the expected APIP audiences and QTI 3 supports. Specific programs may differ on what supports they usefor the various APIP userSpokenPreferences.

Spoken PNP Mapping

APIP PNP spoken userSpokenPreference QTI 3 PNP notation
TextOnly
<spoken>
<reading-type>computer-read-aloud</reading-type>
</spoken>
TextGraphics
<spoken>
<reading-type>computer-read-aloud</reading-type>
</spoken>
<alternative-text/>
NonVisual*
<spoken>
<reading-type>screen-reader</reading-type>
</spoken>
<alternative-text/>
<long-description/>
DirectionsOnly
<spoken>
<reading-type>computer-read-aloud</reading-type>
<restriction-type>directions-only</restriction-type>
</spoken>

*Alternatively, the NonVisual audience could be assigned to computer-read-aloud reading-type, though it is more likely that NonVisual learners regularly use a screen reader that they are familiar with.

5.1.2 Spoken Content

For QTI 3 content or in the QTI 3 PNP, there is no spokenSourcePreference anymore (Human/synthetic). You can use PNP extensions for the candidate preference. In the QTI 3 item content, you will then use data- attributes in qti-card-entry elements to differentiate between human and synthetic sourced recordings (example: <qti-card-entry data-recording-source="human">).

Below is a simple example that demonstrates the major differences between APIP and QTI 3 for the spoken support.

APIP spoken support example

<assessmentItem>
...
<itemBody id="content5">
  <p id="content2">Answer the following question.</p>
  <choiceInteraction maxChoices="1" minChoices="0" id="content1" shuffle="false" 
  responseIdentifier="RESPONSE">
  <prompt id="content6">Sigmund Freud and Carl Jung both belong to the psychoanalytic 
  school of psychology.</prompt>
  <simpleChoice id="content8" fixed="true" showHide="show" identifier="true">
    <p id="content7">True</p>
  </simpleChoice>
  <simpleChoice id="content4" fixed="true" showHide="show" identifier="false">
    <p id="content3">False</p>
  </simpleChoice>
  </choiceInteraction>
</itemBody>
...
<apipAccessibility xmlns="http://www.imsglobal.org/xsd/apip/apipv1p0/imsapip_qtiv1p0">
<inclusionOrder>
  <textOnlyDefaultOrder>
    <elementOrder identifierRef="accessElement1">
    <order>1</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement2">
    <order>2</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement3">
    <order>3</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement4">
    <order>4</order>
    </elementOrder>
  </textOnlyDefaultOrder>
  <textGraphicsDefaultOrder>
    <elementOrder identifierRef="accessElement1">
    <order>1</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement2">
    <order>2</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement3">
    <order>3</order>
    </elementOrder>
    <elementOrder identifierRef="accessElement4">
    <order>4</order>
    </elementOrder>
  </textGraphicsDefaultOrder>
</inclusionOrder>
<accessibilityInfo>
<accessElement identifier="accessElement1">
  <contentLinkInfo qtiLinkIdentifierRef="content2">
    <textLink>
      <fullString/>
    </textLink>
  </contentLinkInfo>
  <relatedElementInfo>
    <spoken>
      <spokenText contentLinkIdentifier="spokenAudioText1">Answer the following 
question.</spokenText>
      <textToSpeechPronunciation contentLinkIdentifier="spokenTextToSpeech1" 
      >Answer the following question.</textToSpeechPronunciation>
       </spoken>
  </relatedElementInfo>
  </accessElement>
    <accessElement identifier="accessElement2">
      <contentLinkInfo qtiLinkIdentifierRef="content6">
        <textLink>
          <fullString/>
        </textLink>
      </contentLinkInfo>
  <relatedElementInfo>
     <spoken>
    <spokenText contentLinkIdentifier="spokenAudioText2">Sigmund Freud and Carl Jung 
    both belong to the psychoanalytic school of psychology.</spokenText>
<textToSpeechPronunciation contentLinkIdentifier="spokenTextToSpeech2">Sigmund Froyd and Carl Young 
both belong to the psycho-analytic school of psychology.</textToSpeechPronunciation>
     </spoken>
    </relatedElementInfo>
  </accessElement>
  <accessElement identifier="accessElement3">
    <contentLinkInfo qtiLinkIdentifierRef="content7">
      <textLink>
        <fullString/>
      </textLink>
    </contentLinkInfo>
  <relatedElementInfo>
       <spoken>
        <spokenText contentLinkIdentifier="spokenAudioText3">True</spokenText>
      <textToSpeechPronunciation contentLinkIdentifier="spokenTextToSpeech3">
      True</textToSpeechPronunciation>
       </spoken>
  </relatedElementInfo>
</accessElement>
<accessElement identifier="accessElement4">
  <contentLinkInfo qtiLinkIdentifierRef="content3">
    <textLink>
      <fullString/>
    </textLink>
  </contentLinkInfo>
  <relatedElementInfo>
       <spoken>
    <spokenText contentLinkIdentifier="spokenAudioText4">False</spokenText>
    <textToSpeechPronunciation contentLinkIdentifier="spokenTextToSpeech4">
    False</textToSpeechPronunciation>
   </spoken>
    </relatedElementInfo>
</accessElement>
</accessibilityInfo>
</apipAccessibility>
</assessmentItem>

In the QTI 3 Code there are no access elements or inclusion orders. Note that the pronunciation differences are marked up using inline SSML notation.

QTI 3 Spoken Support Example

<qti-assessment-item 
... 
xmlns:ssml="http://www.w3.org/2010/10/synthesis"
... >
... 
<qti-item-body id="content5">
  <p id="content2">Answer the following question.</p>
  <qti-choice-interaction max-choices="1" min-choices="0" id="content1" 
  shuffle="false" response-identifier="RESPONSE">
  <qti-prompt id="content6">Sigmund <ssml:sub alias="Froyd">Freud</ssml:sub> and Carl
  <ssml:sub alias="young">Jung</ssml:sub> both belong to the <ssml:sub 
  alias="sigh-co-analytical">psychoanalytic<ssml:sub> school of psychology. 
  </qti-prompt>
  <qti-simple-choice id="content8" fixed="true" show-hide="show" identifier="true">
  <p id="content7">True</p>
  </qti-simple-choice>
  <qti-simple-choice id="content4" fixed="true" show-hide="show" identifier="false">
  <p id="content3">False</p>
  </qti-simple-choice>
  </qti-choice-interaction>
</qti-item-body>
</qti-assessment-item>

If you want to retain the APIP content, you can use the catalog methods of QTI 3. In this example, we have chosen to use the textToSpeechPronunciation textString as the content that should be read aloud for candidates requiring the spoken support.

QTI 3 Spoken Support Example Retaining the APIP Content

<qti-assessment-item ...>
...
<qti-item-body id="content5" data-catalog-idref="catalog1">
  <p id="content2">Answer the following question.</p>
  <qti-choice-interaction max-choices="1" min-choices="0" id="content1" 
  response-identifier="RESPONSE">
  <qti-prompt id="content6" data-catalog-idref="catalog2">Sigmund Freud and Carl Jung 
  both belong to the psychoanalytic school of psychology.</qti-prompt>
  <qti-simple-choice id="content8" fixed="true" show-hide="show" identifier="true">
  <p id="content7">True</p>
  </qti-simple-choice>
  <qti-simple-choice id="content4" fixed="true" show-hide="show" identifier="false">
  <p id="content3">False</p>
  </qti-simple-choice>
  </qti-choice-interaction>
</qti-item-body>
<qti-catalog-info>
  <qti-catalog id="catalog1">
    <qti-card support="spoken">
        <qti-html-content><p>Answer the following question.</p></qti-html-content>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog2">
    <qti-card support="spoken">
        <qti-html-content><p>Sigmund Froyd and Carl Young both belong to the psycho-analytic 
        school of psychology.</p></qti-html-content>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog3">
    <qti-card support="spoken">
      <qti-html-content>True</qti-html-content>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog4">
    <qti-card support="spoken">
      <qti-html-content>False</qti-html-content>
    </qti-card>
  </qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

If you want to restrict the catalog to only the computer-read-aloud reading-type (and allow the screen-reader users to access the default content), you can add an attribute to a qti-card-entry to clarify that the content is only intended for the reading-type computer-read-aloud. The qti-card-entry node is used when you need to further differentiate a preference or need from a broader support feature. Below is an alternate to  "catalog1" in the above example:

<qti-catalog id="catalog1">
    <qti-card support="spoken">
<qti-card-entry data-reading-type="computer-read-aloud">
      <qti-html-content>Answer the following question.</qti-html-content>
      <qti-card-entry>
    </qti-card>
</qti-catalog>

For pre-recorded sound files and to keep the reading script information of APIP (the spokenText string), you will need to use the catalog methods and supports that are not from the pre-defined set of QTI 3 supports.

The support "custom-text-to-speech-pronunciation" is used here as an internal storage device (and closely match the APIP textToSpeechPronunciation element name), where the sound files are generated from this content. The content within the custom-text-to-speech-pronunciation qti-card is not actually delivered to candidates.

You can also use a support named "custom-text-to-speech-ssml" (or whatever name works for you) to write SSML markup for TTS engines that support SSML for the generation of your pre-recorded sound files. Remember to use the "ext:" prefix for the custom support names.

QTI 3 Example with Pre-recorded Sound Files

<qti-assessment-item>
...
<qti-item-body id="content5" data-catalog-idref="catalog1">
  <p id="content2">Answer the following question.</p>
  <qti-choice-interaction max-choices="1" min-choices="0" id="content1" 
  response-identifier="RESPONSE">
    <qti-prompt id="content6" data-catalog-idref="catalog2">Sigmund Freud and 
    Carl Jung both belong to the psychoanalytic school of 
    psychology.</qti-prompt>
    <qti-simple-choice id="content8" fixed="true" show-hide="show" 
    identifier="true">
    <p id="content7">True</p>
    </qti-simple-choice>
    <qti-simple-choice id="content4" fixed="true" show-hide="show" 
    identifier="false">
    <p id="content3">False</p>
    </qti-simple-choice>
  </qti-choice-interaction>
</qti-item-body>
<qti-catalog-info>
  <qti-catalog id="catalog1">
<qti-card support="ext:custom-text-to-speech-pronunciation">
      <qti-html-content><p>Answer the following question.</p></qti-html-content>
    </qti-card>
    <qti-card support="spoken">
    <qti-card-entry data-reading-type="computer-read-aloud">
    <qti-file-href mime-type="audio/mpeg">
    pre-recorded-sound-files/item123catalog1.mp3</qti-file-href>
  </qti-card-entry>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog2">
    <qti-card support="ext:custom-text-to-speech-pronunciation">
<qti-html-content><p>Sigmund Froyd and Carl Young both belong to the psycho-analytic 
school of psychology.</p></qti-html-content>
    </qti-card>
    <qti-card support="spoken">
<qti-card-entry data-reading-type="computer-read-aloud">
<qti-file-href mime-type="audio/mpeg">pre-recorded-sound-files/item123catalog2.mp3</qti-file-href>
</qti-card-entry>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog3">
    <qti-card support="ext:custom-text-to-speech-pronunciation">
      <qti-html-content>True</qti-html-content>
    </qti-card>
     <qti-card support="spoken">
<qti-card-entry data-reading-type="computer-read-aloud">
<qti-file-href mime-type="audio/mpeg">pre-recorded-sound-files/item123catalog3.mp3</qti-file-href>
</qti-card-entry>
    </qti-card>
  </qti-catalog>
  <qti-catalog id="catalog4">
    <qti-card support="ext:custom-text-to-speech-pronunciation">
      <qti-html-content>False</qti-html-content>
    </qti-card>
     <qti-card support="spoken">
<qti-card-entry data-reading-type="computer-read-aloud">
<qti-file-href mime-type="audio/mpeg">pre-recorded-sound-files/item123catalog4.mp3</qti-file-href>
</qti-card-entry>
    </qti-card>
  </qti-catalog>        
</qti-catalog-info>
</qti-assessment-item>

5.1.3 Text-to-Speech Suppression in QTI 3

In QTI 3, if you wish to suppress some content from being read aloud to candidates, use the special "data-qti-suppress-tts" attribute and the standardized QTI 3 vocabulary (computer-read-aloud, screen-reader, all), which correlates to the spoken reading-type vocabulary.

QTI 3 Example with the Text-To-Speech (TTS) Suppression Attribute

<qti-assessment-item><qti-item-body>

<p>Below is a figure with <span class="inline-math" 
data-qti-suppress-tts="computer-read-aloud">12</span> boxes.</p>

<div id="figure1-with-labels">
  <img id="figure1" height="165" width="250" src="figure1.svg" alt="Figure showing 
  Rectangle ABCD divided into 12 equal area boxes. 4 of the boxes are shaded."/>
  <span id="labelA" data-qti-suppress-tts="screen-reader">Point A</span>
  <span id="labelB" data-qti-suppress-tts="screen-reader">Point B</span>
  <span id="labelC" data-qti-suppress-tts="screen-reader">Point C</span>
  <span id="labelD" data-qti-suppress-tts="screen-reader">Point D</span>
</div>

<qti-prompt>In the figure above, what fraction of the rectangle <em>ABCD</em> is 
shaded?</qti-prompt><qti-item-body>
...

5.2 Braille

Use of the default content is preferred in APIP, and remains so in QTI 3. While it is theoretically possible to convert any <brailleText> content to QTI 3 using custom support extensions, it is highly recommended that braille users access the qti-item-body content directly using screen reader software with a refreshable braille display, unless the user has a decided preference for embossed paper braille.

5.3 Sign Language

There are two types of sign language supported in APIP: ASL (American Sign Language) and Signed English. APIP uses the accessElements to refer to itemBody content and supply references to all or portions of video content. The accessElements containing these sign language supports are then listed in the appropriate inclusion order.

This method is particularly useful for associating default content to sign language content for candidates requiring/requesting sign language translations/representations.

ASL implementations in APIP frequently connect fairly large portions of the content to videos.  A single video can be used for the whole of the item/passage content, or one video can be associated with the stem and a separate video with the response options.

The APIP example below associates a video file for a candidate who has indicated that they need American Sign Language (ASL) for their assessment presentation (via their APIP PNP).

Sign Language in APIP Example

<assessmentItem><itemBody>
  <div class="stem" id="div1">
    <p>Grace walks 2 kilometres from her house on Maple Dr. to harmonica lessons 
    on Chestnut St.</p>
    <prompt>If Grace has lessons once a week, how many kilometres will she walk in a 
    year for her harmonica lessons?</prompt>
</div>
  <choice-interaction id="interaction1" response-identifier="RESPONSE" shuffle="false" 
max-choices="1" data-catalog-idref="cat17249_2">
     <simple-choice identifier="ChoiceA">
       About 200
     </simpleChoice>
     <simple-choice identifier="ChoiceB">
       About 100
     </simple-choice>
     <simple-choice identifier="ChoiceC">
       About 50
     </simple-choice>
   </choice-interaction>
</itemBody>

<apip:apipAccessibility>
<apip:inclusionOrder>
  <apip:aslDefaultOrder>
    <apip:elementOrder identifierRef="ae030">
       <apip:order>1</apip:order>
    </apip:elementOrder>
    <apip:elementOrder identifierRef="ae031">
       <apip:order>2</apip:order>
     </apip:elementOrder>
  </apip:aslDefaultOrder>
</apip:inclusionOrder>
<apip:accessibilityInfo> 
  <apip:accessElement identifier="ae1">
    <apip:contentLinkInfo qtiLinkIdentifierRef="div1">
        <apip:objectLink/>
    </apip:contentLinkInfo>
    <apip:relatedElementInfo>
      <apip:signing>
       <apip:signFileASL>
          <apip:videoFileInfo contentLinkIdentifier="video_001" mimeType="video/x-m4v">
                <apip:fileHref>asl/item123_1.m4v</apip:fileHref>
                <apip:startCue>00:00:00.0</apip:startCue>
                <apip:endCue>00:00:20.3</apip:endCue>
          </apip:videoFileInfo>
        </apip:signFileASL>
      </apip:signing>
    </apip:relatedElementInfo>
 </apip:accessElement>

 <apip:accessElement identifier="ae2">
    <apip:contentLinkInfo qtiLinkIdentifierRef="interaction1">
        <apip:objectLink/>
    </apip:contentLinkInfo>
    <apip:relatedElementInfo>
      <apip:signing>
       <apip:signFileASL>
          <apip:videoFileInfo contentLinkIdentifier="video_002" mimeType="video/x-m4v">
                   <apip:fileHref>asl/item123_2.m4v</apip:fileHref>
                   <apip:startCue>00:00:23.4</apip:startCue>
          </apip:videoFileInfo>
        </apip:signFileASL>
      </apip:signing>
    </apip:relatedElementInfo>
 </apip:accessElement>
 </apip:accessibilityInfo>
</assessmentItem>

In QTI 3, use the catalog methods for the content markup. In the example below, the support for this candidate is "sign-language" with an ASL language preference ("ase" in the ISO 639-3 standard), stated in the lang attribute in the qti-card-entry element. There are two catalogs for the two parts of this item content, where each part points to a catalog to support each div. The URIs for the video file references in the the first two catalogs use the Media Fragments URI 1.0 notation as recommended by the W3C as of 25 September, 2012. Alternatively, two separate videos could have been used for this example. The sequence of play is determined by the order of reference from the itemBody content, where references from the top of the document are played before references further down the document. The ASL qti-card-entry is also designated as the "default," so in the event that the PNP did not supply the required language, the ASL video will be delivered to the candidate.

QTI 3 Sign Language Example

<qti-assessment-item><qti-item-body>
  <div class="stem" data-catalog-idref="cat123_1">
    <p>Grace walks 2 kilometres from her house on Maple Dr. to harmonica lessons on 
    Chestnut St.</p>
    <qti-prompt>If Grace has lessons once a week, how many kilometres will she walk in 
    a year for her harmonica lessons?</qti-prompt>
</div>

<qti-choice-interaction response-identifier="RESPONSE" max-choices="1" 
data-catalog-idref="cat123_2">

     <qti-simple-choice identifier="ChoiceA">
       About 200
     </qti-simple-choice>
     <qti-simple-choice identifier="ChoiceB">
       About 100
     </qti-simple-choice>
     <qti-simple-choice identifier="ChoiceC">
       About 50
     </qti-simple-choice>
   </qti-choice-interaction> 
</qti-item-body>

<qti-catalog-info>

<qti-catalog id="cat123_1">
  <qti-card support="sign-language">
   <qti-card-entry xml:lang="ase" default>
    <qti-html-content>
      <video width="320" height="240" controls>
        <source src="asl/item123_1.m4v#t=00:00:00,00:00:20.3" type="video/mp4" />
      </video>
    </qti-html-content>
    </qti-card-entry> 
  </qti-card>
</qti-catalog>

<qti-catalog id="cat123_2">
  <qti-card support="sign-language">
   <qti-card-entry xml:lang="ase" default>
    <qti-html-content>
      <video width="320" height="240" controls>
        <source src="asl/item123_1.m4v#t=00:00:20.4" type="video/mp4" />
      </video>
    </qti-html-content>
    </qti-card-entry>
   </qti-card>
</qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

The QTI 3 example below shows how a single video that applies to the whole item can be referenced from the itemBody element. In this example, only one language option is available. Aqti-card-entry node is still used because additional language versions could be added later, and a presentation system will be coded to look for the lang attribute to clarify the specific language of the content. Using the lang attribute also removes any ambiguity that could occur in the future about who the video files are intended to support. The qti-card-entry contains a reference to a video, with multiple file formats supplied.

Sign Language for QTI 3 with a Single Video File for the Whole Item Example

<qti-assessment-item><qti-item-body data-catalog-idref="cat17249">
    <div class="stem">
    <p>Grace walks 2 kilometres from her house on Maple Dr. to harmonica lessons on 
    Chestnut St.</p>
  </div>
  <qti-choice-interaction response-identifier="RESPONSE" shuffle="false" max-choices="1">
<qti-prompt>If Grace has lessons once a week, how many kilometres will she walk in 
a year for her harmonica lessons?</qti-prompt>
  <qti-simple-choice identifier="ChoiceA">
       About 200
  </qti-simple-choice>
  <qti-simple-choice identifier="ChoiceB">
       About 100
  </qti-simple-choice>
  <qti-simple-choice identifier="ChoiceC">
       About 50
  </qti-simple-choice>
    </qti-choice-interaction>
</qti-item-body>

<qti-catalog-info>

<qti-catalog id="cat17249">
  <qti-card support="sign-language">
    <qti-card-entry xml:lang="ase" default>
        <qti-html-content>
  <video width="320" height="240" controls>
    <source src="asl_example.m4v" type="video/mp4" />
    <source src="asl_example.ogg" type="video/ogg" />
  </video>
        </qti-html-content>
    </qti-card-entry>
  </qti-card>
</qti-catalog>
</qti-catalog-info>
</qti-assessment-item>

6. Companion Materials and External Supplemental Accessibility

In QTI 3, the qti-companion-materials-info element is a top level element within qti-assessment-item instead of a node within apipAccessibility. Use of the node should be above the qti-item-body.

In QTI 3, readingPassage is no longer used within qti-companion-materials-info. Reading Passages should be represented as a shared stimulus file, which is referenced from the qti-assessment-stimulus-ref element.

QTI 3 Example of Companion Materials

<?xml version="1.0" encoding="UTF-8"?>
<qti-assessment-item xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 
  https:/purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd"
identifier="QTI3_CMexample" title="Companion Materials Example" time-dependent="false" 
xml:lang="en">

  <qti-response-declaration identifier="RESPONSE" cardinality="multiple" base-type="identifier">
            <qti-correct-response>
            <qti-value>option2</qti-value>
            <qti-value>option4</qti-value>
            </qti-correct-response>
         </qti-response-declaration>
        <qti-outcome-declaration identifier="SCORE" cardinality="single" base-type="float"/>

        <qti-companion-materials-info>
                   <qti-calculator>
                    <qti-calculator-type>Basic</qti-calculator-type>
                    <qti-description>Four function calculator</qti-description>
                   </qti-calculator>
         </qti-companion-materials-info>

         <qti-item-body>
              <p>Your content here.</p>
        </qti-item-body>

</qti-assessment-item>

QTI 3 Example of Shared Stimulus

<?xml version="1.0" encoding="UTF-8"?>
<qti-assessment-item xmlns="http://www.imsglobal.org/xsd/imsqtiasi_v3p0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqtiasi_v3p0 
  https:/purl.imsglobal.org/spec/qti/v3p0/schema/xsd/imsqti_asiv3p0_v1p0.xsd" 
identifier="QTI3_SSexample" title="Shared Stimulus Example" timeDependent="false" 
xml:lang="en" >

        <qti-response-declaration identifier="RESPONSE" cardinality="single" 
base-type="identifier">
                  <qti-correct-response>
                    <qti-value>option2</qti-value>
              </qti-correct-response>
         </qti-response-declaration>
        <qti-outcome-declaration identifier="SCORE" cardinality="single" base-type="float"/>

<qti-assessment-stimulus-ref identififier="Biography of Albert Pinkham Ryder" 
href="G10/passages/albert-pinkham-ryder" />

         <qti-item-body>
              <p>Your content here.</p>
        </qti-item-body>

</qti-assessment-item>

QTI 3 has removed the InfoControl element from assessment items. Use the companion materials where appropriate. If using companion materials doesn't fit with the use case, consider using a PCI for the functionality required.

7. Reference to Pronunciation Lexicons

QTI 3 does not reference pronunciation lexicons from within the qti-assessment-item file, but only makes the reference to PLS files from a content package, where the PLS file is assumed to apply to ALL the assessment content. There is no longer support for referencing CSS3 Speech files in QTI 3 packages, though because it is CSS, a reference to any stylesheet could be made from the stylesheet node. No IMS certified QTI 3 systems are expected to support CSS3 Speech.

QTI 3 Example of a Content Package Referencing a PLS file

<manifest identifier="QTI 3.0 PLS Packaging Example">
  <metadata>
    <schema>QTI 3.0 Item</schema>
    <schemaversion>3.0.0</schemaversion>
  </metadata>
  <organizations/>
  <resources>
    <resource type="imsqti_item_xmlv3p0" identifier="Resource1" href=" qtiv3p0_01.xml">
    <file href="qtiv3p0_CoreTest_VC_IP_01.xml"/>
    <dependency identifierref="SoundResource"/>
      <dependency identifierref="PLS1"/>
    </resource>
    <resource type="pls/qtiv3p0 " href="plsfile.pls" identifier="PLS1">
    <file href="plsfile.pls "/>
    </resource>
    <resource type="associatedcontent" href="Sound.mp3" identifier="SoundResource">
    <file href="Sound.mp3"/>
    </resource>
  </resources>
</manifest>

A. Revision History

This section is non-normative.

A.1 Version History

Version No. Release Date Comments
IMS Public Candidate Final 3.0 20 July 2020 The first draft release.

B. References

B.1 Normative references

[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

C. List of Contributors

The following individuals contributed to the development of this document:

Name Organization Role
Arjan AarninkCito
Vijay AmbatiACT, Inc.
Jérôme BogaertsOpen Assessment Technologies
Shiva BojjawarMcGraw-Hill Education
Catriona BuhayarNWEA
Jason CarlsonACT, Inc.
Gary DriscollETS
Michael FingerMeasured Progress
Paul GrudnitskiPearson
Mark HakkinenETS
Thomas HoffmannETSEditor
Rob HowardNWEA
Stephen KacsmarkInstructure
Justin MarksNWEA
Amy MarrichOpen Assessment Technologies
Mark McKellIMS Global
Mark MolenaarOpen Assessment Technologies
Brian MottersheadRiverscape Software
Nate OberQuestar
Padraig O'hiceadhaHoughton Mifflin Harcourt
Madeline RothbergWGBH
Colin SmytheIMS Global
Tjeerd Hans TerpstraCito
Travis ThompsonData Recognition Corporation
Jason WhiteETS

IMS Global Learning Consortium, Inc. ("IMS Global") is publishing the information contained in this document ("Specification") for purposes of scientific, experimental, and scholarly collaboration only.

IMS Global makes no warranty or representation regarding the accuracy or completeness of the Specification.

This material is provided on an "As Is" and "As Available" basis.

The Specification is at all times subject to change and revision without notice.

It is your sole responsibility to evaluate the usefulness, accuracy, and completeness of the Specification as it relates to you.

IMS Global would appreciate receiving your comments and suggestions.

Please contact IMS Global through our website at http://www.imsglobal.org.

Please refer to Document Name: IMS Global APIP to QTI 3 Migration 3.0

Date: 20 July 2020