Skip to content

Overview

Michael Koster edited this page Jan 22, 2016 · 4 revisions

Overview of this resource

This is the home of the MachineHypermediaToolkit demonstrator and evaluation guide.

MachineHypermediaToolkit is an experimental implementation of a web scalable hyperlink driven system for connected things and the information from connected things. The principle of Hypermedia As The Engine Of Application State, or HATEOAS, is used in the discovery of resources, and in the interaction between applications and resources, over networks of any scale.

The demonstrator and toolkit includes a system level framework of tools to demonstrate the entire hypermedia "life cycle" in the system, from modeling tools used to construct consistent hypermedia design patterns and vocabularies, to client side scripting engines that use hypermedia as a universal pluggability layer between applications and things.

There are four areas of development

Hypermedia Design of the Web API

  • How content formats, resource types, and collections are used
  • How discovery is driven by HATEOAS
  • How application interaction is driven by HATEOAS

Model driven construction of resources

  • Abstraction using the W3C Web of Things, or WoT, Interaction model
  • High level abstraction consisting of Events, Actions, and Properties
  • "Schemas" define potential relationships between typed elements
  • Models use schemas to generate configured instances of schema elements
  • Hypermedia resource templates are generated from models
  • Public resource for schemas and example models at http://thingschema.org

Thing Object Model and Program API for scripting application logic

  • High level Program API based on events, actions, and properties
  • Discovery using filter templates to select resource types from schema vocabulary
  • Thing Object Model renders an abstract interface to events, actions, and properties
  • Deferred interface allows chaining of asynchronous requests/response handlers

Abstraction of REST Protocols

  • Common CRUD definition
  • Normalizes between HTTP and CoAP REST protocols, adds REST layer to websockets, MQTT
  • Enables web linking across different protocols

(Home)