KnockOut Mapping Jierarchical JS object

Intento crear modelos de vista usando el complemento de mapeo KnockOut,

Este es el objeto. Básicamente, debajo hay una oración con palabras.

var data = {
name: 'Example Title',
sentences: [
    {id: 1, words: [{text: 'word1'}, {text: 'word2'}]},
    {id: 2, words: [{text: 'word3'}, {text: 'word4'}]}
           ]};

Me gustaría tener tres modelos de vista,

Article debe contener oraciones, una oración debe contener palabras

var ArticleViewModel = function(data) 
{
  var self = this;
  self.id = ko.observable(data.id);
  self.sentences = ko.observableArray([]);
}

var SentenceViewModel = function(data) 
{
  var self = this;
  self.id = ko.observable(data.id);
  self.words = ko.observableArray([]);
}

var WordViewModel = function(data) 
{
  var self = this;
  self.id = ko.observable(data.id);
  self.text = ko.observable(data.text);
}

Me gustaría poner esto en Ver como se muestra a continuación;

<p data-bind="foreach:sentences">
  <span data-bind="foreach:words">
     <span data-bind="text:text">
  </span>
</p>

Ni siquiera estoy seguro de lo que estoy tratando de lograr es factible, pero creo que necesito mapeos, pero no puedo hacer que esto funcione,

aquí hay una prueba mía, tal vez ayudará a comprender mejor mi problema,http: //jsfiddle.net/sureyyauslu/2wTjy/6

Muchas gracias por adelantado..

Respuestas a la pregunta(2)

Su respuesta a la pregunta