RDFa
RDFa 是 W3C 标准,将 RDF 语义数据嵌入 HTML 属性,实现内容与语义的紧密绑定。
RDFa 基础
RDF 三元组
text
RDF数据模型 = 三元组:
- 主体(Subject):被描述的资源
- predicates(Predicate):属性/关系
- 客体(Object):属性值或另一个资源
示例:
张三(S) - 职业(P) - 前端工程师(O)
RDFa 属性
| 属性 | 用途 |
|---|---|
| vocab | 指定词汇表URL |
| typeof | 定义资源类型 |
| property | 定义属性 |
| resource | 定义资源URI |
| rel | 定义关系(指向另一资源) |
| rev | 定义反向关系 |
| datatype | 指定数据类型 |
| content | 指定属性值(替代可见内容) |
RDFa 1.1 基本语法
简洁模式
HTML
<div vocab="https://schema.org/" typeof="Person">
<span property="name">张三</span>
<span property="jobTitle">前端工程师</span>
<span property="email">zhangsan@example.com</span>
</div>
属性解析
text
vocab="https://schema.org/" → 指定Schema.org词汇表
typeof="Person" → 主体类型为Person
property="name" → 属性名为name,值为"张三"
复杂结构
嵌套资源
HTML
<div vocab="https://schema.org/" typeof="Article">
<h1 property="headline">语义化HTML指南</h1>
<div property="author" typeof="Person">
<span property="name">小智</span>
<span property="jobTitle">技术作者</span>
</div>
<time property="datePublished" datetime="2026-05-17">
2026年5月17日
</time>
</div>
关系链接
HTML
<div vocab="https://schema.org/" typeof="Person" resource="#作者1">
<span property="name">张三</span>
<a rel="url" href="https://zhangsan.com">个人主页</a>
<a rel="knows" resource="#作者2">认识李四</a>
</div>
RDFa Lite(简化版)
RDFa Lite 属性
HTML
<div vocab="https://schema.org/" typeof="LocalBusiness">
<span property="name">科技公司</span>
<span property="address">北京市朝阳区</span>
<span property="telephone">010-12345678</span>
</div>
RDFa Lite 仅使用 5 个属性:
- vocab
- typeof
- property
- resource
- prefix
多词汇表混用
prefix 定义
HTML
<div prefix="schema: https://schema.org/
foaf: http://xmlns.com/foaf/0.1/"
typeof="foaf:Person">
<span property="foaf:name">张三</span>
<span property="schema:jobTitle">前端工程师</span>
</div>
常用词汇表
| 词汇表 | URL | 用途 |
|---|---|---|
| Schema.org | https://schema.org/ | 通用结构化数据 |
| FOAF | http://xmlns.com/foaf/0.1/ | 人物/朋友关系 |
| Dublin Core | http://purl.org/dc/terms/ | 文档元数据 |
| SIOC | http://rdfs.org/sioc/ns | 社交内容 |
RDFa 与其他方式对比
| 特性 | RDFa | Microdata | JSON-LD |
|---|---|---|---|
| 标准 | W3C | WHATWG | W3C |
| 与HTML关系 | 紧密嵌入 | 紧密嵌入 | 分离 |
| 表达能力 | 完整RDF | 有限 | 完整 |
| 学习成本 | 高 | 中 | 低 |
| 搜索引擎支持 | 支持 | 支持 | 推荐 |
完整示例
产品页面
HTML
<div vocab="https://schema.org/" typeof="Product" resource="#产品1">
<h1 property="name">iPhone 15 Pro</h1>
<img property="image" src="iphone.jpg" alt="产品图">
<div property="offers" typeof="Offer">
<span property="price" content="5999">¥5999</span>
<meta property="priceCurrency" content="CNY">
<link property="availability" href="https://schema.org/InStock">
</div>
<div property="aggregateRating" typeof="AggregateRating">
<span property="ratingValue">4.5</span>
<span property="reviewCount">128</span>条评价
</div>
</div>
使用 content 属性
HTML
<!-- 可见内容与语义值不同 -->
<span property="price" content="5999">¥5999元</span>
<!-- 隐藏元数据 -->
<meta property="priceCurrency" content="CNY">
注意:RDFa 属性内容应与可见内容一致,仅在必要时使用 content 属性覆盖。
要点总结
- RDFa 基于 RDF 三元组模型,语义表达完整
- vocab 指定词汇表,typeof 定义类型,property 定义属性
- rel 定义指向其他资源的关系
- prefix 可混用多个词汇表
- 内容与语义紧密绑定,适合语义化增强场景
📝 发现内容有误?点击此处直接编辑