Skip to content
Dave Reynolds edited this page Sep 2, 2016 · 12 revisions

Streaming API v.2

Under development.

Sapi provides a library and starter application for creating APIs over RDF data. It is aimed at providing customizable REST-style APIs that are easy to use (focus on idiomatic JSON and CSV formats) and high performance. Key features are:

  • Streaming throughout, can deliver large result sets.
  • Supports large queries (can POST query as well as GET resource with query parameters)
  • Support for long running queries - management of query pipeline, asynchronous queries.
  • Supports configurable HTML render, different endpoints can have different renders.
  • Flexible - can use as a component library customizing the processing at each stage, use a generic implementation configured via yaml/json files or mix and match both.
  • Can work with alternative stores (e.g. MongoDB).

This is a complete restructuring of the initial sapi design. It supports all the existing sapi use cases but is not backward compatible - both specifications and API calls need to be updated. Compared to the initial sapi design it should have a clearer API structure, DRYer specifications and additional functionality (POST queries, async queries, alternative backends).

Compared to Elda it is designed to be more scalable, and more flexible (use from code) at the expense of providing a less rich API out of the box.

Compared to dsapi it is intended for customer visible APIs, including the option of API-is-the-UI rendering, whereas dsapi is intended for backend use. It is also neutral on the data model (doesn't assume a cube like structure) so provides less richness of query out of the box but gains flexibility in return.

Configuration and use

Design notes