Context

As part of release 6.0.0, inQuiry building block is releasing newer versions of it’s components; QuML Editor, QuML Player and Microservice.

Behaviour of the System post 6.0.0 release is explained below.

There are 2 major changes that is part of this release

  • Aligning inQuiry to latest QuML 1.1

  • Additional support for Multi Lingual

    • API is extended to support multiple languages and no changes to inQuiry editor / player

Component Versions vs QuML compatibility

Component

Component version (V1)

Component version (V2)

QuML Editor

QuML 1.0

QuML 1.1

QuML Player

QuML 1.0

QuML 1.1

inQuiry Microservice (API)

QuML 1.0

QuML 1.1

QuML 1.0 for read only

  1. inQuiry Microservice provides a capability of reading the old Questions and QuestionSets that are in QuML 1.0.
  2. The Questions and QuestionSets in QuML 1.0 will be temporarily transformed to QuML 1.1 format by the read APIs

Support for V1 components will be deprecated in 6 months post the release of 6.0.0

Component Versions vs API Version compatibility

Component

API (V1)

API (V2)

Editor (V1)

Allowed

Not permitted

Player (V1)

Allowed

Not permitted

Editor (V2)

Not permitted

Allowed

Player (V2)

Not permitted

Allowed

Behaviour of V2 Consumption APIs when requesting for Old or New Question / QuestionSet identifier

Scenario

QuestionSet Read

Question List

Old Question / QuestionSet identifier

Allowed

temporarily transformed to QuML 1.1

Allowed

temporarily transformed to QuML 1.1

New Question / QuestionSet identifier

Allowed

Allowed

Behaviour of V2 Create and Update APIs given the specific format of Question / QuestionSet

QuML version

QuestionSet Create

QuestionSet Update

Question Create

Question Update

Review

Publish

Questions / QuestionSets in QuML 1.0 format

Not permitted

Not permitted

Not permitted

Not permitted

Not permitted

Not permitted

Questions / QuestionSets in QuML 1.1 format

Allowed

Allowed

Allowed

Allowed

Allowed

Allowed

To edit Questions / QuestionSets created in QuML 1.0 using the V2 system, the Question / QuestionSet should be migrated to QuML 1.1

V1 (Editor/Player/Microservice) will be deprecated in 6 months post the release of 6.0.0

Changes for Making V2 QuML compliant

While the below table is a summary of changes, the details can be referenced from the below confluence pages

Attribute Name

Change summary

QuML 1.0 format

QuML 1.1 format

responseDeclaration

Changes are as follow,

  • maxScore

    • Now part of outcomeDeclaration

  • mapping

    • Is a JSON Object with keys as Value and Score

Changes are applicable to Multiple Choice Question and Multi-select MCQ

Not applicable for subjective question, hence no changes

Multiple Choice Question

1"responseDeclaration": { 2 "response1": { 3 "maxScore": 1, 4 "cardinality": "single", 5 "type": "integer", 6 "correctResponse": { 7 "value": "0", 8 "outcomes": { 9 "SCORE": 1 10 } 11 }, 12 "mapping": [ 13 { 14 "response": 0, 15 "outcomes": { 16 "score": 1 17 } 18 } 19 ] 20 } 21} 22

Multi-select MCQ

1"responseDeclaration": { 2 "response1": { 3 "maxScore": 1, 4 "cardinality": "multiple", 5 "type": "integer", 6 "correctResponse": { 7 "value": [1,0], 8 "outcomes": { 9 "SCORE": 1 10 } 11 }, 12 "mapping": [ 13 { 14 "response": 1, 15 "outcomes": { 16 "score": 0.5 17 } 18 }, 19 { 20 "response": 0, 21 "outcomes": { 22 "score": 0.5 23 } 24 } 25 ] 26 } 27}

Multiple Choice Question

1"responseDeclaration": { 2 "response1": { 3 "cardinality": "single", 4 "type": "integer", 5 "correctResponse": { 6 "value": 0 7 }, 8 "mapping": [ 9 { 10 "value": 0, 11 "score": 1 12 } 13 ] 14 } 15}, 16"outcomeDeclaration": { 17 "maxScore": { 18 "cardinality": "single", 19 "type": "integer", 20 "defaultValue": 1 21 } 22}

Multi-select MCQ

1"responseDeclaration": { 2 "response1": { 3 "cardinality": "multiple", 4 "type": "integer", 5 "correctResponse": { 6 "value": [1,0] 7 }, 8 "mapping": [ 9 { 10 "value": 1, 11 "score": 0.5 12 }, 13 { 14 "value": 0, 15 "score": 0.5 16 } 17 ] 18 } 19}, 20"outcomeDeclaration": { 21 "maxScore": { 22 "cardinality": "multiple", 23 "type": "integer", 24 "defaultValue": 1 25 } 26 } 27

timeLimits

Changes are as follow,

1timeLimits: { 2 "maxTime": "240", 3 "warningTime": "60" 4}
1{ 2 “timeLimits”: { 3 “questionSet”: { // time limits for the question set and for any member sets 4 “min”: <seconds>, 5 “max”: <seconds> 6 }, 7 “question”: { // time limits for the questions in the question set 8 “min”: <seconds>, 9 “max”: <seconds> 10 } 11 } 12}

maxScore

Changes are as follow,

  • maxScore

    • Now part of outcomeDeclaration

Question

1{ 2 maxScore: 1, 3 "responseDeclaration": { 4 "response1": { 5 "maxScore": 1, 6 ..... 7 } 8 } 9} 10 11 12 13 14 15 16 17

QuestionSet

1{ 2 ... 3 maxScore: 10, 4 ... 5} 6 7 8 9

Question level

1{ 2 "outcomeDeclaration": { 3 "maxScore": { 4 "cardinality": "single", 5 "type": "integer", 6 "defaultValue": 1 7 } 8 } 9} 10 11 12 13 14 15 16 17

QuestionSet

1{ 2 "outcomeDeclaration": { 3 "maxScore": { 4 "cardinality": "single", 5 "type": "integer", 6 "defaultValue": 1 7 } 8 } 9}

answer

  1. There is adopter specific use case where the answer property is non-mandatory, like the Survey, Observation. Considering this case, the answer is non-mandatory in 6.0.0 release. This will need further enhancement to override answer property as mandatory or not at the QuestionSet level. Tentative time line for this change to affect is in release 6.2.0

Changes are as follow,

  • answer

    • is mandatory for all types of questions

    • answers will be concatenated together under an HTML element

    • supports multi-lingual

    • More details here

1"answer": "<p>This is test data</p>"

Only used for Subjective

Subjective

Single Language:

1anwser: '<div class="anwser-container"> 2 <div class="anwser-body"> 3 <p>Delhi</p> 4 </div> 5</div>'

Multi Language:

1answer: { 2 en: "<div class="anwser-container"> 3 <div class="anwser-body"> 4 <p>Delhi</p> 5 </div> 6 </div>", 7 hi: "<div class="anwser-container"> 8 <div class="anwser-body"> 9 <p>दिल्ली</p> 10 </div> 11 </div>" 12}

MCQ

Single Language:

1anwser: `<div class="anwser-container"> 2 <div class="anwser-body"> 3 <p>Delhi</p> 4 </div> 5</div>'

Multi Language:

1answer: { 2 en: "<div class="anwser-container"> 3 <div class="anwser-body"> 4 <p>Delhi</p> 5 </div> 6 </div>", 7 hi: "<div class="anwser-container"> 8 <div class="anwser-body"> 9 <p>दिल्ली</p> 10 </div> 11 </div>" 12}

MMCQ

Single Language:

1anwser: `<div class="anwser-container"> 2 <div class="anwser-body"> 3 <p>Delhi</p> 4 </div> 5 <div class="anwser-body"> 6 <p>Bangalore</p> 7 </div> 8</div>'

Multi Language:

1answer: { 2 en: "<div class="anwser-container"> 3 <div class="anwser-body"> 4 <p>Delhi</p> 5 </div> 6 <div class="anwser-body"> 7 <p>bangalore</p> 8 </div> 9 </div>", 10 hi: "<div class="anwser-container"> 11 <div class="anwser-body"> 12 <p>दिल्ली</p> 13 </div> 14 <div class="anwser-body"> 15 <p>बैंगलोर</p> 16 </div> 17 </div>" 18}

interactions

Changes are as follows,

  • validation

    • Moved under response<1> attribute

1"interactions": { 2 "response1": { 3 "type": "choice", 4 "options": [ 5 { 6 "label": "<p>New Delhi</p>", 7 "value": 0 8 }, 9 { 10 "label": "<p>Mumbai</p>", 11 "value": 1 12 } 13 ] 14 }, 15 "validation": { 16 "required": "Yes" 17 } 18}
1"interactions": { 2 "response1": { 3 "type": "choice", 4 "options": [ 5 { 6 "label": "<p>New Delhi</p>", 7 "value": 0 8 }, 9 { 10 "label": "<p>Mumbai</p>", 11 "value": 1 12 } 13 ], 14 "validation": { 15 "required": "Yes" 16 } 17 } 18}

solutions

Changes are as follows,

  • solutions

    • Change of type from array to object

    • supports multi-lingual

Image + Text

1"solutions": [ 2 { 3 "id": "7015c7e4-461a-4032-b29e-fbb7e8155e44", 4 "type": "html", 5 "value": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>" 6 } 7]

Video

1"solutions": [ 2 { 3 "id": "70c82bf5-9459-4c43-8897-0e58b7e1da62", 4 "type": "video", 5 "value": "do_2137930190247526401388" 6 } 7]

Image + Text

1"solutions": { 2 "7015c7e4-461a-4032-b29e-fbb7e8155e44": "<figure class=\"image\"><img src=\"/assets/public/content/assets/do_2137916546057256961374/indiagate.jpeg\" alt=\"indiaGate\" data-asset-variable=\"do_2137916546057256961374\"></figure>", 3} 4 5 6 7// Key = UUID / Solution ID

Video

1"solutions": { 2 "70c82bf5-9459-4c43-8897-0e58b7e1da62": "<video data-asset-variable="do_2137930187513200641386" width="400" controls="" poster="/assets/public/content/assets/do_2137930188655902721387/gateway-of-india.jpg"> <source type="video/mp4" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> <source type="video/webm" src="/assets/public/content/assets/do_2137980528723230721410/sample-5s.mp4"> </video>", 3} 4 5 6 7// Key = UUID

Multi Language

1{ 2 "solutions": { 3 "solution_1": { 4 "en": "<div>...</div>", 5 "hi": "<div>...</div>" 6 }, 7 "solution_2": { 8 "en": "<div>...</div>", 9 "hi": "<div>...</div>" 10 } 11 } 12}

feedback

Changes are as follows,

  • feedback

    • mapping as part of outcomeDeclaration

    • supports multi-lingual

Currently not used in inQuiry

1“feedback”: { 2 “70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<h1>Well done!!!</h1>”, 3 “70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<h1>Better luck next time!!!</h1>” 4 “70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<h1>You need to work harder!!!</h1>” 5} 6 7// key = UUID 8 9// Referenced from outcomeDeclaration 10"outcomeDeclaration": { 11 "feedback": { 12 "cardinality": "single", 13 "type": "string", 14 "defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62" 15 } 16}

Multi Language

1{ 2 "feedback": { 3 "feedback_1": { 4 "en": "<div>...</div>", 5 "hi": "<div>...</div>" 6 }, 7 "feedback_2": { 8 "en": "<div>...</div>", 9 "hi": "<div>...</div>" 10 } 11 } 12}

hints

Changes are as follows,

  • hints

    • mapping as part of outcomeDeclaration

    • supports multi-lingual

1// Question Metadata 2{ 3 hints: { 4 en : "string" 5 } 6} 7 8 9 10 11 12 13 14 15 16 17
1“hints”: { 2 “70c82bf5-9459-4c43-8897-0e58b7e1da62”: “<HTML>...</HTML>”, 3 “70c82bf5-9459-4c43-8897-0e58b7e1da63”: “<HTML>...</HTML>” 4 “70c82bf5-9459-4c43-8897-0e58b7e1da64”: “<HTML>...</HTML>” 5} 6 7// key = UUID 8 9// Referenced from outcomeDeclaration 10"outcomeDeclaration": { 11 "hint": { 12 "cardinality": "single", 13 "type": "string", 14 "defaultValue": "70c82bf5-9459-4c43-8897-0e58b7e1da62" 15 } 16}

Multi Language

1{ 2 "hints": { 3 4 "hint_1": "<div>...</div>", 5 6 "hint_2": { 7 "en": "<div>...</div>", 8 "hi": "<div>...</div>" 9 } 10 } 11}

instructions

Changes are as follows,

  • instructions

    • Change of type from object to string

    • supports multi-lingual

Question

1{ 2 instructions: { 3 en : "<html>...</html>" 4 } 5}

QuestionSet

1{ 2 instructions: { 3 default : "<html>...</html>" 4 } 5}

Question

1instructions: : "<html>" 2 3 4 5

QuestionSet

1instructions: : "<html>" 2 3 4 5

Multi Lingual

1{ 2 instructions: { 3 en : "<html>...</html>" 4 } 5}

showSolutions

Changes are as follows,

  • showSolutions

    • Change of type from string to boolean

1{ 2 showSolutions: "Yes" 3}
1{ 2 showSolutions: true 3}

showTimer

Changes are as follows,

  • showTimer

    • Change of type from string to boolean

1{ 2 showTimer: "Yes" 3}
1{ 2 showTimer: true 3}

showFeedback

Changes are as follows,

  • showFeedback

    • Change of type from string to boolean

1{ 2 showFeedback: "Yes" 3}
1{ 2 showFeedback: true 3}

showHints

Changes are as follows,

  • showHints

    • Change of type from string to boolean

1{ 2 showHints: "Yes" 3}
1{ 2 showHints: true 3}

bloomsLevel

Changes are as follows,

  • bloomsLevel

    • renamed to complexityLevel

    • Change of type from string to array

1bloomsLevel: "apply"
1complexityLevel: ["apply"]

media

Changes are as follows,

  • media

    • this is a spec updation only and no changes in editor / player / api

No changes to the format

No changes to the format