Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d946a7a
Add JSON-LD graph manager design doc
hparra Apr 18, 2026
4fe80ed
Restructure JSON-LD graph manager doc into parts, add ops sections
hparra Apr 18, 2026
16ca80b
Address Copilot review: fix ingestMode enum, security bullet wording,…
hparra Apr 19, 2026
cbc0b82
docs(json-ld): restructure with mermaid diagrams, quickstart, glossary
hparra Apr 20, 2026
8a13521
docs(json-ld): remap sections to academic-paper structure
hparra Apr 20, 2026
e327cdb
docs(json-ld): tighten doc, externalize requirements, drop provenance
hparra Apr 28, 2026
e80658d
fix(json-ld): address Copilot review -- grammar, double-the, double-s…
hparra Apr 28, 2026
9ff0d82
feat(json-ld): implement JsonLdGraphManager runtime
hparra Apr 28, 2026
3063d4b
feat(json-ld): add jsonld-graph-manager-debug query param for lifecyc…
hparra Apr 28, 2026
0ab0247
feat(json-ld): add Organization synthesis, inline extraction, and deb…
hparra Apr 28, 2026
368b6dd
fix(json-ld): address ESLint feedback
hparra Apr 28, 2026
13130f4
fix(json-ld): address Copilot review round 2
hparra Apr 28, 2026
3c6e524
feat(json-ld): Product->SoftwareApplication transform, Offer hoisting…
hparra Apr 29, 2026
f1fd8f6
docs(json-ld): co-locate design doc with manager source
hparra May 5, 2026
73f23da
refactor(json-ld): move manager into its own folder
hparra May 5, 2026
bc28afa
fix(json-ld): always emit baseline WebPage + Organization graph
hparra May 5, 2026
24d0168
docs(json-ld): absorb requirements sheet into design doc; add per-typ…
hparra May 8, 2026
8a358ab
refactor(json-ld): move design notes from JS comments into requirements
hparra May 8, 2026
a907365
feat(json-ld): subtype preservation, cross-page rewrite, ImageObject …
hparra May 8, 2026
0793cd2
fix(json-ld): subtype-aware injectLinks (mainEntity + linksBack)
hparra May 8, 2026
296f9ed
feat(json-ld): hoist AggregateRating as a top-level singleton
hparra May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
433 changes: 433 additions & 0 deletions libs/features/jsonld-graph-manager/jsonld-graph-manager.js

Large diffs are not rendered by default.

995 changes: 995 additions & 0 deletions libs/features/jsonld-graph-manager/jsonld-graph-manager.md

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions libs/utils/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -2526,6 +2526,12 @@ async function decorateDocumentExtras() {
}

async function documentPostSectionLoading(config) {
const jsonLdFlag = (PAGE_URL.searchParams.get('jsonld-graph-manager') || getMetadata('jsonld-graph-manager') || '').toLowerCase();
if (jsonLdFlag === 'true') {
const { default: initJsonLd } = await import('../features/jsonld-graph-manager/jsonld-graph-manager.js');
await initJsonLd();
}

const injectBlock = getMetadata('injectblock');
if (injectBlock) {
import('./injectblock.js').then((module) => module.default(injectBlock));
Expand Down
1,068 changes: 1,068 additions & 0 deletions test/features/jsonld-graph-manager/jsonld-graph-manager.test.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<!-- Script present at boot time -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Boot Article"
}
</script>
25 changes: 25 additions & 0 deletions test/features/jsonld-graph-manager/mocks/editorial.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Adobe",
"url": "https://www.adobe.com/"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Remove Objects",
"description": "Step-by-step guide."
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.adobe.com/" }
]
}
</script>
40 changes: 40 additions & 0 deletions test/features/jsonld-graph-manager/mocks/merch-card.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!-- Merch-card-style Product producer payload (per json-ld.md Appendix A.3). -->
<!-- The graph manager must transform this into a SoftwareApplication, hoist the Offer, -->
<!-- keep the anonymous Brand inline, and canonicalize the seller alias #org → #organization. -->
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"@id": "https://main--cc--adobecom.aem.page/drafts/axel/document5#product",
"name": "Photoshop",
"brand": {
"@type": "Brand",
"name": "Adobe"
},
"offers": [
{
"@type": "Offer",
"@id": "https://main--cc--adobecom.aem.page/drafts/axel/document5#offer",
"url": "https://main--cc--adobecom.aem.page/drafts/axel/document5",
"priceCurrency": "USD",
"price": "662.9",
"availability": "https://schema.org/InStock",
"category": "Subscription",
"seller": { "@id": "https://www.adobe.com/#org" },
"itemOffered": { "@id": "https://main--cc--adobecom.aem.page/drafts/axel/document5#product" },
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "662.9",
"priceCurrency": "USD",
"billingDuration": "P1Y",
"billingIncrement": 1,
"priceWithoutDiscount": "779.88"
}
}
],
"image": [
"https://www.adobe.com/cc-shared/assets/img/product-icons/svg/creative-cloud.svg?format=png&width=800&height=800",
"https://www.adobe.com/cc-shared/assets/img/product-icons/svg/photoshop.svg?format=png&width=800&height=800"
]
}
</script>
26 changes: 26 additions & 0 deletions test/features/jsonld-graph-manager/mocks/multi-producer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!-- Producer A (boot DOM): Organization with producer-only sameAs -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Adobe",
"url": "https://www.adobe.com/",
"sameAs": "https://en.wikipedia.org/wiki/Adobe_Inc."
}
</script>
<!-- Producer B (runtime): Organization with conflicting name -->
<script type="application/ld+json" data-producer="runtime">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Adobe Inc.",
"url": "https://www.adobe.com/"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Test Article"
}
</script>
25 changes: 25 additions & 0 deletions test/features/jsonld-graph-manager/mocks/product.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Adobe",
"url": "https://www.adobe.com/"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Adobe Photoshop",
"applicationCategory": "DesignApplication"
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Products", "item": "https://www.adobe.com/products/" }
]
}
</script>
Loading