JSON-LD (JavaScript Object Notation for Linked Data) is a method of encoding structured data using JSON syntax. It allows web pages to embed machine-readable descriptions of their content — what kind of thing a page describes, who created it, when it was published — alongside the human-readable HTML.

How it works

A JSON-LD block is placed inside a <script type="application/ld+json"> tag in the page’s <head> or <body>. It contains a JSON object with a @context (typically https://schema.org) and a @type declaring what kind of thing is being described.

Example for a research article:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "What makes a Web platform robust?",
  "author": { "@type": "Person", "name": "emsenn" },
  "datePublished": "2025-12-13"
}

Search engines and AI systems parse this block to understand the page without needing to interpret the prose. A page about a defined term can declare itself a DefinedTerm; a curriculum page can declare itself a LearningResource; a page about a person can use the Person type.

Why it matters

Without structured data, a crawler sees only text. It can infer meaning from context, but inference is noisy. JSON-LD removes the ambiguity: the page states what it is. This is the difference between a search engine guessing “this page seems to define something” and knowing “this page defines the term ‘closure operator’ in the domain of mathematics.”

For a research site operating at the boundary of established fields — where concepts are new and naming conventions are unfamiliar — structured data bridges the gap between what the site says and what machines understand.

Relationship to Schema.org

Schema.org provides the vocabulary that JSON-LD uses. Schema.org defines types (Article, DefinedTerm, Person, LearningResource, WebSite, BreadcrumbList) and properties (headline, author, datePublished, description). JSON-LD is the encoding format; Schema.org is the dictionary.

How this site uses JSON-LD

emsenn.net emits per-page JSON-LD in the <head> element, generated at build time by the Quartz static site generator. The type is selected based on the page’s path within the vault:

Path patternSchema.org typeRationale
*/terms/*, */concepts/*DefinedTermThese pages define specific terms or concepts
*/people/*PersonBiographical entries
*/curricula/*LearningResourceLesson and curriculum pages
Everything elseArticleDefault: a piece of writing
Site rootWebSiteIdentifies the site itself

Multi-level pages also emit a BreadcrumbList so search engines and AI systems understand the hierarchical structure (e.g., Mathematics → Objects → Posets → Curricula → Heyting Algebras).

See also: robots.txt, structured data, Schema.org.