{"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"thinker-markus-lanthaler","urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/thinker-markus-lanthaler/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"thinker-markus-lanthaler","title":"Markus Lanthaler — Hydra and Machine-Readable Web Operations","register":"standard","tags":["oip","kimi-import","self-explaining","voxel","thinkers","thinker-markus-lanthaler"],"updated_at":"2026-07-15T04:20:41.297Z","body_excerpt":"<!-- hierarchy:nav -->\n> **Path:** [OIP](https://miscsubjects.com/a/oip) › [Thinker Reference](https://miscsubjects.com/a/oip-thinker-reference) › [Thinkers](https://miscsubjects.com/a/oip-thinkers) › **Markus Lanthaler — Hydra and Machine-Readable Web Operations**\n>\n> **Shelf:** Thinkers · **Traversal:** self-explaining · hierarchical · voxel-ready\n> **Machine root:** [OIP tree](https://miscsubjects.com/api/dispatch?map=1&format=markdown) · [Registry](https://miscsubjects.com/api/dispatch?registry=1)\n\n# Markus Lanthaler — Hydra and Machine-Readable Web Operations\n\n## §SELF — thinker-markus-lanthaler\n\n**What this page is:** A profile of Markus Lanthaler and the Hydra vocabulary for machine-readable web APIs.\n**What it explains:** How Hydra makes REST API responses self-describing so machines can discover available operations without prior documentation.\n**Why read it:** To understand the closest standardized technology to OIP's goals, and how OIP can inherit Hydra's vocabulary for object descriptions and operations.\n\n### What Hydra Is\n\nHydra is a vocabulary (a defined set of terms) for describing hypermedia-driven web APIs in RDF (Resource Description Framework, a standard data model for structured data on the web). It was developed by the Hydra W3C Community Group, led by Markus Lanthaler at Graz University of Technology in Austria. Hydra lets an API response include machine-readable descriptions of what operations are available on the returned resources.\n\n### The Problem Lanthaler Solved\n\nA conventional REST API returns data but does not tell the client what it can do with that data. The client must be programmed with out-of-band knowledge — API documentation, SDKs, or hardcoded URL patterns. This breaks when the API changes. Lanthaler asked: what if the response itself described the available operations? Then a generic client could interact with any Hydra-described API without prior knowledge.\n\n### The Key Idea\n\nA Hydra response contains four elements: (1) Operation descriptions — what HTTP methods (GET, POST, PUT, DELETE) are available and what inputs each requires and what outputs each produces, (2) Supported properties — what fields the resource has, their types, and whether they are required, (3) Links — how to navigate to related resources via URL, (4) Status codes — what each possible response means. A machine reading a Hydra response can construct valid requests without ever having seen that API before.\n\n### What Hydra Provides\n\n- `hydra:Operation`: Describes an action available on a resource, including method, expected input format, and possible outputs.\n- `hydra:supportedProperty`: Lists the properties of a resource, their data types, and constraints.\n- `hydra:Link`: Defines navigable relationships between resources.\n- `hydra:StatusCodeDescription`: Explains what each HTTP status code means in the context of that specific operation.\n- `hydra:ApiDocumentation`: A discoverable document that describes the entire API in one place.\n\n### What Lanthaler Got Right\n\n- Hydra makes REST APIs self-describing. This eliminates the need for separate API documentation as a prerequisite for machine interaction.\n- The vocabulary is built on RDF, so it inherits the entire Linked Data ecosystem — existing parsers, reasoners, and query engines work with Hydra out of the box.\n- The design separates the data (the resource) from the affordances (what you can do with it), which matches how hypermedia works on the human web.\n- Hydra is standardized through a W3C Community Group, giving it institutional stability and a defined governance process.\n\n### What Lanthaler Got Wrong or Left Unfinished\n\n- Adoption has been limited. Most API developers still prefer OpenAPI/Swagger specifications, which are more widely supported by tooling even though they are not self-describing in responses.\n- Hydra does not define a standard for authentication or authorization. A machine can see what operations are available but cannot determine whether it is permi","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[],"sources":[],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"thinker-markus-lanthaler","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":0,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":0,"claims_total":0,"sources":0,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}