This document describes a maturity model to uplift existing API's to semantically rich API's.

Introduction

TODO

Audience

TODO

Goals

TODO

Terminology

Resource

TODO

Semantic Web

TODO

URI

TODO

Structured Data

TODO

Level 1: Globally unique identifiers

The Semantic Web is built around the basic principle that we need to use the same names when we publish information about the same things. This does not only account for identifying real-world objects like a person or a building, but also for attribute/relationship names and more abstract concepts like a person's gender or interest. Doing this allows a machine to interpret how multiple sources of information relate to each other.

Create URIs

If data publishers want other organizations to be able to link to this beer (e.g. a beer review website), they should provide globally unique identifiers. Documents created by other organizations and published on external domains will then be able to provide link references to these resources.

The URI standard offers a uniform syntax for globally unique identifiers, which can be used to .....

TODO

Consistent URIs across multiple documents

Data is typically published in many forms, like HTML web pages and JSON(-like) documents provided by APIs or other services. In many cases, multiple documents provide the same information about the same thing(s), but in a different format and accessible via different interfaces and protocols.

Because multiple documents (accessible by different URIs) are describing the same thing, it's important that all documents contain references to the same globally unique identifier (URI) for the thing. Hence it's crucial that there is a clear distinction between a thing and the document(s) describing this thing.

By creating URIs for things, in addition to URIs for documents, data consumers can discover that multiple sources of information are describing the same thing and other data publishers will be able to link to the thing itself instead of an individual document describing the thing.

Upcoming API standards like GraphQL and gRPC do not follow REST principles, which (among other aspects) means that documents are not accessible by its URI. Therefore, it's even more important to include URIs in API responses, regardless of the exchange protocol or the document format.

URIs can be treated as opaque strings, and thus every standard supporting the string data-type (which is literally any standard) should be able to handle URIs as values.

Different URIs for different things

Documents often describe more than one thing, such as related resources or a collection of things. In addition, documents might contain links to other things (or documents) without describing the thing itself in the document. In both cases, the document should provide references to the corresponding URIs.

Guidelines

TODO

How to create good URIs

TODO