https://github.com/RubenVerborgh/Hydra-Architecture-Diagram
https://github.com/RubenVerborgh/Hydra-Architecture-Diagram
architecture-diagram hydra json-ld rdf web-api
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/RubenVerborgh/Hydra-Architecture-Diagram
- Owner: RubenVerborgh
- Archived: true
- Created: 2016-12-30T15:20:15.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-06-28T13:41:08.000Z (almost 8 years ago)
- Last Synced: 2024-11-04T10:43:37.849Z (6 months ago)
- Topics: architecture-diagram, hydra, json-ld, rdf, web-api
- Language: TeX
- Size: 142 KB
- Stars: 6
- Watchers: 7
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-starred - RubenVerborgh/Hydra-Architecture-Diagram - (others)
README
# Hydra Architecture Diagram
This repository contains work in progress for an architecture diagram of the [Hydra Core Vocabulary](http://www.hydra-cg.com/spec/latest/core/).
## Overview

An arrow represents a dependency from a component on another.
## Components
### Web API
**Web APIs consist of resources and collections.**#### Defined by Hydra
- structural description of an API
- metadata of an API### Resources
**Resources are the atoms of (Hydra-enabled) REST Web APIs.**Resources can have one or more representations.
If those representations are RDF-based formats (or support embedding RDF),
then they describe the resource using elements from the Hydra Core Vocabulary.#### Defined by Hydra
- how resources can incorporate Hydra descriptions and/or controls
- in particular, how descriptions and controls can be separated from data
- describing representations
- properties that a resource representation will list#### Dependencies
- on Errors, since resources can generate errors### Collections
**Collections are sets of resources and associated behavior.**Collections can contain zero or more resources.
Collections are resources themselves.#### Defined by Hydra
- describing kinds of collections
- properties of their elements (type etc.)
- describing representations
- (optional) properties of resources that a collection representation will list
- describing operations on collections
- creation
- addition
- deletion#### Dependencies
- on Resources, since a collection is a resource and contains resources### Errors
**Errors describe what can go wrong during the interaction with a resource,
and possible ways to address it.**#### Defined by Hydra
- types of errors
- error metadata
- possible causes
- possible fixes
- connecting errors to resources#### Dependencies
none### Fields
**Fields are places where clients can provide input.**#### Defined by Hydra
- parameter description
- name
- constraints
- range
- validation#### Dependencies
none### URI Templates
**URI Templates express how field values are combined into an URL.**#### Defined by Hydra
- field serialization#### Dependencies
- on Fields, since they are needed to fill out templates### Entity Bodies
**Entity Bodies express how field values are combined into a request body (e.g., for `POST`/`PUT`/`PATCH`).**#### Defined by Hydra
- entity structure
- JSON-LD and other RDF formats
- non-RDF formats
- field serialization#### Dependencies
- on Fields, since they are needed to fill out entity bodies### Paging
**Pages partition collections into subsets such that
each child resource appears on exactly one page.**Pages (only) change [application state](https://www.safaribooksonline.com/library/view/restful-web-services/9780596529260/ch04s05.html#id3189296).
#### Defined by Hydra
- page navigation
- next, previous
- first, last
- jump to specific page
- page metadata
- current page number
- total number of pages
- number of items per page
- ordering
- based on resource attributes
- client-initiated paging
- determine ordering
- determine number of items per page#### Dependencies
- on Collections, since they are being paged
- on URI Templates, since some paging options require generating a page URI### Filtering
**Filters select subsets of collections based on resource attributes.**Filters (only) change [application state](https://www.safaribooksonline.com/library/view/restful-web-services/9780596529260/ch04s05.html#id3189296).
#### Defined by Hydra
- availability of filters
- conditions for applying a filter
- the effect of a filter
- how a filter maps input values to a selection#### Dependencies
- on Collections, since they are being filtered
- on URI Templates, since some filters require generating a page URI
- on Fields, since they relate the filter to its effect### Actions
**Actions express manipulations of resources through representations.**Actions change [resource state](https://www.safaribooksonline.com/library/view/restful-web-services/9780596529260/ch04s05.html#id3189296).
#### Defined by Hydra
- availability of actions
- conditions for executing an action
- the effect of executing an action#### Dependencies
- on Resources, since actions can be executed on them
- on Collections, since actions can be executed on them
- on Fields, since they relate the action to its effect
- on Entity Bodies, since some actions require sending a request body