3. In a workspace store
function (kb, subject, path) {
      if (path.length === 0) return [ subject ]
      var oo = kb.each(subject, path[0])
      var res = []
      for (var i = 0; i < oo.length; i++) {
        res = res.concat(followeach(kb, oo[i], path.slice(1)))
      }
      return res
    }