JSON-LD Examples

Structured data examples for SEO and discoverability

Scholarly Article — Root (latest) page
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "ScholarlyArticle", "@id": "https://nobleid.org/20092025/7X9K2Q", "identifier": [ "ark:/nobleid/20092025/7X9K2Q" ], "headline": "Climate impacts in 2025", "author": [ { "@type": "Person", "name": "A. Researcher", "identifier": "https://nobleid.org/p/ppid:abcd1234" }, { "@type": "Person", "name": "B. Collaborator" } ], "datePublished": "2025-09-20", "inLanguage": "en", "keywords": ["climate", "impact", "2025"], "license": "https://creativecommons.org/licenses/by/4.0/", "sameAs": [ "https://publisher.org/articles/123" ], "isBasedOn": "https://publisher.org/articles/123", "encoding": [ { "@type": "MediaObject", "contentUrl": "https://publisher.org/articles/123.pdf", "encodingFormat": "application/pdf" } ] } </script>
Scholarly Article — Pinned version (v2) page
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "ScholarlyArticle", "@id": "https://nobleid.org/20092025/7X9K2Q:v2", "identifier": [ "ark:/nobleid/20092025/7X9K2Q", "ark:/nobleid/20092025/7X9K2Q:v2" ], "version": "v2", "headline": "Climate impacts in 2025 (Revised)", "author": [ { "@type": "Person", "name": "A. Researcher", "identifier": "https://nobleid.org/p/ppid:abcd1234" }, { "@type": "Person", "name": "B. Collaborator" } ], "datePublished": "2025-09-20", "dateModified": "2025-10-01", "inLanguage": "en", "license": "https://creativecommons.org/licenses/by/4.0/", "sameAs": ["https://publisher.org/articles/123"], "isBasedOn": "https://publisher.org/articles/123", "encoding": [ { "@type": "MediaObject", "contentUrl": "https://publisher.org/articles/123-v2.pdf", "encodingFormat": "application/pdf" } ] } </script>
Dataset page
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Dataset", "@id": "https://nobleid.org/20092025/7X9K2Q", "identifier": ["ark:/nobleid/20092025/7X9K2Q"], "name": "Global rainfall anomalies, 1990–2025", "creator": [ { "@type": "Person", "name": "A. Researcher", "identifier": "https://nobleid.org/p/ppid:abcd1234" } ], "datePublished": "2025-09-20", "inLanguage": "en", "keywords": ["rainfall","climate","anomaly"], "license": "https://creativecommons.org/licenses/by/4.0/", "sameAs": ["https://repo.example.edu/datasets/xyz"], "distribution": [ { "@type": "DataDownload", "contentUrl": "https://repo.example.edu/datasets/xyz.csv", "encodingFormat": "text/csv" } ] } </script>
NobleID-P Person page (public profile)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Person", "@id": "https://nobleid.org/p/ppid:abcd1234", "name": "A. Researcher", "identifier": [ "ppid:abcd1234", "https://orcid.org/0000-0002-1825-0097" ], "affiliation": { "@type": "Organization", "name": "Example University", "identifier": "https://ror.org/01bj3aw26" }, "sameAs": [ "https://scholar.google.com/citations?user=XXXX", "https://orcid.org/0000-0002-1825-0097" ] } </script>
Page-head helpers (SEO/citation)
Add these in the <head> of article/dataset pages
<link rel="canonical" href="https://publisher.org/articles/123" /> <link rel="alternate" type="application/vnd.citationstyles.csl+json" href="https://nobleid.org/20092025/7X9K2Q:v2?format=csl-json" /> <link rel="alternate" type="application/x-bibtex" href="https://nobleid.org/20092025/7X9K2Q:v2?format=bibtex" /> <link rel="alternate" type="application/x-research-info-systems" href="https://nobleid.org/20092025/7X9K2Q:v2?format=ris" /> <meta name="nobleid" content="ark:/nobleid/20092025/7X9K2Q" />
Update-Checker widget (drop-in)
Paste near the end of <body> on your article/dataset template
<link rel="preload" href="https://cdn.nobleid.org/widget.js" as="script" crossorigin> <script src="https://cdn.nobleid.org/widget.js" data-ark="ark:/nobleid/20092025/7X9K2Q" <!-- set to the root ARK --> data-style="badge" <!-- badge | inline --> integrity="sha384-REPLACE_WITH_REAL_SRI" crossorigin="anonymous" async></script>
CSP (example)
Content Security Policy configuration for the widget
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.nobleid.org 'strict-dynamic' 'unsafe-inline'; connect-src 'self' https://nobleblocks.org https://nobleid.org; img-src 'self' data:; style-src 'self' 'unsafe-inline';

(If you use nonces instead of SRI, drop the integrity attribute and add your nonce="..." to the script tag.)

What it does

Calls:

GET https://nobleblocks.org/api/v1/nobleid/check-update?ark=ark:/nobleid/20092025/7X9K2Q

Renders:

"Up-to-date" or "New version available" with a link to the latest.

No cookies, respects Do-Not-Track, accessible (ARIA role="status").

Quick validation tips
  • • Test JSON-LD with Google's Rich Results / SDTT; expect the object type to be recognized (ScholarlyArticle/Dataset/Person)
  • • Verify the badge by publishing v2; it should flip within your cache window (60–120s)
  • • Keep the root ARK in the widget (:vN is only for pinned links)