vocab属性必须置于rdfa作用域元素(如)上,末尾斜杠不可省略,需配合property/typeof使用;混用prefix时须严格区分无冒号(走vocab)与带冒号(走prefix)的property写法。

vocab属性必须放在有RDFa语义作用域的元素上
单独写 vocab 不起作用——它不是全局配置,而是作用于当前元素及其后代。如果你把它加在 或某个 <div> 上,那这个容器内所有未带命名空间前缀的 <code>property、typeof 才会自动拼接该 vocab 值作为 URI 前缀。
常见错误是把 vocab 放在 <meta> 或 <link> 里,这些标签不参与 RDFa 解析作用域,浏览器和爬虫直接忽略。
-
vocab必须配合property或typeof使用才有意义;光声明不调用等于没写 - 推荐放在最外层语义容器(如
@#@#@#@#@#@#@#@#@#@0 输入 HTML,看解析出的谓词 URI 是否可访问、是否匹配预期 - 不要用短链接或重定向地址(如 bit.ly),RDFa 解析器不会跟随跳转,必须是最终稳定 URI
- 自建词汇表时,确保该 URI 返回 HTTP 200 且内容为 RDF 描述(如 Turtle 或 RDF/XML),否则搜索引擎可能拒绝索引
vocab与prefix混用时,property写法必须严格区分
一旦同时用了 vocab 和 prefix,就进入「双命名空间模式」:未带冒号的 property 走 vocab,带冒号的走 prefix 映射。但很多人误以为 property="schema:name" 是合法写法——其实 schema: 是 prefix 定义的别名,不是 vocab 的一部分。
正确写法只有一种组合:
<div vocab="https://schema.org/" prefix="foaf: http://xmlns.com/foaf/0.1/"> <li> <code><p property="name">张三</p>→ 解析为https://schema.org/name-
<p property="foaf:name">Zhang San</p>→ 解析为http://xmlns.com/foaf/0.1/name - 用 RDFa Play 查看三元组列表,确认
predicate字段是完整 URI 且拼接正确 - Chrome DevTools 的 Elements 面板里,右键「Copy » Copy outerHTML」粘贴到验证工具,避免手动复制遗漏空格或编码
- 如果
property值被解析成文档 URL + 属性名(如https://example.com/#page-name),说明主语没显式声明,vocab 也没生效——此时about或resource缺失才是根因
错误写法:property="schema:name" 或 property="https://schema.org/name" —— 前者因 schema: 未在 prefix 中定义而失效,后者虽是完整 URI 但绕过了 vocab 机制,且易出错(手误少字符、协议写错等)。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
Google Structured Data Testing Tool 不校验 vocab 语法,只看最终三元组
Google 的测试工具(现为 Rich Results Test)只验证最终提取出的结构化数据是否符合 schema.org 类型要求,它**不报错 vocab 写法问题**。这意味着你可能看到“Valid”提示,但实际三元组主语/谓词错位,导致 Yandex 或 Bing 拒绝解析,或知识图谱无法关联。
真正要验证 vocab 是否生效,得看解析器输出的原始 RDF:
vocab 本身不解决主语缺失问题,它只管谓词拼接。三元组崩坏往往不是 vocab 写错了,而是 resource 和 property 没配对,或者作用域没包住内容节点。










