// JSON PNP Schema Examples $Draft: 4.0 $ $date: Mon 13 Aug 2012 22:43 BST $
===============================================================================
Examples collected during construction of

JSON PNP Binding Schemas for IMS Access for All 3.0 Public Draft 1.0

Author: Andy Heath, Axelrod Access for All
        http://axelafa.com, andyheath@axelrod.plus.com

Date:   $DATE: 2012-08-13 22:43 $
===============================================================================

AfA 3.0 PNP Core VALID INSTANCES
================================


// empty instance is ok
// --------------------
{}


// --------------------
{
            "accessModeRequired" : [ {
                "existingAccessMode" : "visual",
                "adaptationRequest" : "textual"
                                      }
                                    ]
}


// --------------------
{
  "languageOfInterface" : [ "abc" ] ,
  "atInteroperable" : false ,
  "languageOfAdaptation" : [ "abc" ]
}

// note the problems with atInteroperable
// this validates despite atInteroperable
// being present twice with conflicting
// vaues.  The behaviour of javascript libraries
// with it is not predictable
// --------------------------------------------
{
  "languageOfInterface" : [ "abc" ],
  "atInteroperable" : true ,
  "atInteroperable" : false ,
  "languageOfAdaptation" : [ "abc" ],
  "accessModeRequired" : [ {
           "existingAccessMode" : "visual",
           "adaptationRequest" : "auditory"
                            }
                         ]
}

// this one demonstrates the "uniqueness" of keys problem even
// more - see the structure inside accessModeRequired
// -----------------------------------------------------------
{
  "languageOfInterface" : [ "abc" ],
  "atInteroperable" : true ,
  "atInteroperable" : false ,
  "languageOfAdaptation" : [ "abc" ],
  "accessModeRequired" : [ {
           "existingAccessMode" : "visual",
           "existingAccessMode" : "textual",
           "adaptationRequest" : "auditory"
                            }
                         ]
}


// various
// -------
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "auditory"
                             }
                           ],
    
    "adaptationTypeRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "e-book"
                                  }
                               ],
    "hazardAvoidance" : ["flashing", "sound"],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true,
    "inputRequirements" : "fullMouseControl" ,
    "educationalComplexityOfAdaptation" : "simplified"
}


AfA 3.0 PNP Core INVALID INSTANCES AND CHECKS
=============================================

// Both parts of accessModeRequired are required
// ---------------------------------------------
{
    "accessModeRequired" : [{ 
        "existingAccessMode" : "visual"
                             }
                            ]
}


AfA 3.0 PNP Full Model STRICT (no extensions allowed) VALID INSTANCES
=====================================================================
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "auditory"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             }
                           ],
    "hazardAvoidance" : [ "flashing", "sound" ],
    "adaptationDetailRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "realTime"
                                   }
                                 ],
    "adaptationMediaRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "MathML"
                                  }
                                ],
    "educationalLevelOfAdaptation" : ["sometimes clever - we all are" ],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true ,
    "inputRequirements" : "fullMouseControl",
    "educationalComplexityOfAdaptation" : "simplified"
}

AfA 3.0 PNP Full Model STRICT (no extensions allowed) INVALID INSTANCES
=======================================================================
// adaptationDetailRequired.adaptationRequest has value from wrong vocab
// ---------------------------------------------------------------------
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "auditory"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             }
                           ],
    "hazardAvoidance" : [ "flashing", "sound" ],
    "adaptationDetailRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                                   }
                                 ],
    "adaptationMediaRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "MathML"
                                  }
                                ],
    "educationalLevelOfAdaptation" : ["sometimes clever - we all are" ],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true ,
    "inputRequirements" : "fullMouseControl",
    "educationalComplexityOfAdaptation" : "simplified"
}

AfA 3.0 PNP Full Model RELAXED (extensions allowed) VALID INSTANCES
===================================================================
// note these extended attributes/properties
//
//      "existingAccessMode" : "ext:introverted",
//      "educationalComplexityOfAdaptation" : "ext:hard"
//      "hazardAvoidance" : [.. "ext:strongPerfume" ..]
//      "exerciseAndFun:preferredDanceStyle" : "Tango"
// --------------------------------------------------------
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "ext:introverted",
          "adaptationRequest" : "auditory"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             }
                           ],
    "hazardAvoidance" : [ "flashing", "sound", "ext:strongPerfume" ],
    "adaptationDetailRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "realTime"
                                    }
                                  ],
    "adaptationMediaRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "MathML"
                                  }
                                ],
    "educationalLevelOfAdaptation" : [ "sometimes clever - we all are" ],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true ,
    "inputRequirements" : "fullMouseControl",
    "educationalComplexityOfAdaptation" : "ext:hard",
    "exerciseAndFun:preferredDanceStyle" : "Tango"
}

AfA 3.0 PNP Full Model RELAXED (extensions allowed) INVALID INSTANCES
=====================================================================
// note missing colon in
//     "educationalComplexityOfAdaptation" : "exthard"
// ---------------------------------------------------
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "ext:introverted",
          "adaptationRequest" : "auditory"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             }
                           ],
    "hazardAvoidance" : [ "flashing", "sound", "ext:strongPerfume" ],
    "adaptationDetailRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "realTime"
                                    }
                                  ],
    "adaptationMediaRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "MathML"
                                  }
                                ],
    "educationalLevelOfAdaptation" : [ "sometimes clever - we all are" ],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true ,
    "inputRequirements" : "fullMouseControl",
    "educationalComplexityOfAdaptation" : "exthard",
    "exerciseAndFun:preferredDanceStyle" : "Tango"
}

// Note missing colon in
//     "exerciseAndFunpreferredDanceStyle" : "Tango"
// -------------------------------------------------
{
    "accessModeRequired" : [ { 
          "existingAccessMode" : "ext:introverted",
          "adaptationRequest" : "auditory"
                             },
                             { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "textual"
                             }
                           ],
    "hazardAvoidance" : [ "flashing", "sound", "ext:strongPerfume" ],
    "adaptationDetailRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "realTime"
                                    }
                                  ],
    "adaptationMediaRequired" : [ { 
          "existingAccessMode" : "visual",
          "adaptationRequest" : "MathML"
                                  }
                                ],
    "educationalLevelOfAdaptation" : [ "sometimes clever - we all are" ],
    "languageOfAdaptation" : [ "eng" ],
    "atInteroperable" : true ,
    "inputRequirements" : "fullMouseControl",
    "educationalComplexityOfAdaptation" : "ext:hard",
    "exerciseAndFunpreferredDanceStyle" : "Tango"
}

