如何正确使用 JSON-LD 中的 @graph 关键字组织多类型结构化数据

轻枫小哥_4471

轻枫小哥_4471

2026-08-16

677人浏览

原创

如何正确使用 JSON-LD 中的 @graph 关键字组织多类型结构化数据

@graph 是 JSON-LD 的核心特性,允许在单个 块中并列声明多个不同类型的 Schema.org 实体(如 MedicalCondition、Person、Review、VideoObject),无需嵌套或强制同构,完全符合规范且被所有主流搜索引擎(Google、Bing、Yandex)及 AI Agent 工具链(如 MCP、GraphRAG)所支持。

`@graph` 是 json-ld 的核心特性,允许在单个 `<script type="application/ld+<a style=" color: text-decoration:underline title="json" href="https://m.php.cn/zt/15848.html" target="_blank">json">` 块中并列声明多个不同类型的 schema.org 实体(如 `medicalcondition`、`person`、`review`、`videoobject`),无需嵌套或强制同构,完全符合规范且被所有主流搜索引擎(google、bing、yandex)及 ai agent 工具链(如 mcp、graphrag)所支持。</script>

在结构化数据实践中,@graph 并非限制性容器,而是一个语义图(Semantic Graph)的顶层声明机制——它明确告诉解析器:接下来的数组是一组相互关联(或独立)的 RDF 资源节点(resources),每个节点可拥有任意 @type,彼此通过属性(如 author、itemReviewed、video)建立显式或隐式链接。这正契合 Schema.org “实用主义本体”的设计哲学:不强求类型统一,而强调语义可连接性。

✅ 正确用法示例(精简可运行版):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "MedicalCondition",
      "@id": "https://example.com/condition/hypertension",
      "name": "高血压",
      "signOrSymptom": [
        { "@type": "MedicalSign", "name": "头痛" },
        { "@type": "MedicalSign", "name": "头晕" }
      ],
      "possibleTreatment": [
        { "@type": "MedicalTherapy", "name": "ACE抑制剂" }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://example.com/doctors/dr-zhang",
      "name": "张医生",
      "jobTitle": "心血管内科主任医师",
      "affiliation": {
        "@type": "Organization",
        "name": "仁济医院"
      }
    },
    {
      "@type": "Review",
      "author": { "@id": "https://example.com/doctors/dr-zhang" },
      "itemReviewed": { "@id": "https://example.com/condition/hypertension" },
      "reviewRating": {
        "@type": "AggregateRating",
        "ratingValue": "4.9",
        "reviewCount": 127
      }
    },
    {
      "@type": "VideoObject",
      "name": "高血压日常管理指南",
      "uploadDate": "2026-07-15",
      "duration": "PT8M32S",
      "thumbnailUrl": ["https://example.com/thumbs/hypertension-guide.jpg"],
      "embedUrl": "https://example.com/embed/hypertension-video"
    }
  ]
}
</script>

? 关键要点说明:

Json Schema Toolkit
Json Schema Toolkit

使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。

下载
  • 类型无限制:@graph 数组内可自由混合 MedicalCondition、Person、Review、VideoObject 等任意 Schema.org 类型,无需“相同类型”前提——Stack Overflow 上的误解源于混淆了 @graph 与 RDF 图的底层模型约束(RDF 允许异构三元组),而 JSON-LD 的 @graph 正是为表达此类异构图而设计。
  • ID 链接是关键:为实现跨实体语义关联(如“张医生撰写了关于高血压的视频评论”),应为各实体设置唯一 @id,并在引用属性(如 author、itemReviewed)中直接使用该 ID。这比嵌套对象更清晰、更利于知识图谱抽取和 Agent 工具调用。
  • 避免常见错误:
    • ❌ 不要省略 @context 或拼错(如 "https://schema.org" 缺少末尾 /);
    • ❌ @type 值必须是合法 Schema.org 类型名(如 "Person",而非 "Perosn" ——原文中存在拼写错误);
    • ❌ Review 和 VideoObject 中的数值字段(如 ratingValue、userInteractionCount)必须为数字,不可留空或写为逗号;
    • ❌ 多个 Review 实体无需重复定义相同结构,应确保每个 @id 唯一且 itemReviewed 指向有效目标。

? 进阶提示:面向 AI Agent 的现代 GEO(生成式引擎优化)已将 @graph 视为标准实践。Agent 通过 MCP 协议读取结构化数据时,依赖 @graph 提供的完整实体拓扑来构建上下文图谱。因此,一个精心组织的 @graph 不仅提升搜索富摘要(Rich Results)展示率,更是打通 LLM 工具调用与知识推理的关键基础设施。

综上,你原始代码中使用 @graph 包裹多种类型实体的思路完全正确——只需修正拼写、补全必填字段、添加 @id 并验证语法,即可成为符合 Google Rich Results Test、Microsoft GraphRAG 及各类 Agent 解析器要求的高质量结构化数据标记。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

js json

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

5455

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3132

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2790

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

2819

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

4699

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

2761

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

2569

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2308

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2308

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.7万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.8万人学习