首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Schema.org 语法(3)

Schema.org 语法(3)

使用                Microdata 的读书俱乐部示例Microdata 版本基于同样的 HTML 页面设计。
清单 2. bookclub-udata.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<main itemscope itemtype="http://schema.org/Organization">
<h1 itemprop="name">Geo Book Club</h1>
<div itemscope itemprop="member" itemtype="http://schema.org/Person" id="ang">
Founding member <span itemprop="name">Alice Ng</span> welcomes you!
</div>

<div itemprop="event" itemscope itemtype="http://schema.org/Event" id="GBC_mtg_2">
  Please join us for our next meeting where we shall discuss the novel
  <span itemprop="about" itemscope itemtype="http://schema.org/Book">
    <u itemprop="name">Things Fall Apart</u> by
    <a itemprop="author" itemscope itemtype="http://schema.org/Person" href="http://enwp.org/Chinua_Achebe">
      <span itemprop="name">Chinua Achebe</span>
    </a> (ISBN: <span itemprop="isbn">9780393932195</span>)
  </span>
  <img itemprop="image" src="TFA_cover.jpg">
</div>

We hope you've been able to attend our past meetings
<ul>
  <li itemprop="event" itemscope itemtype="http://schema.org/Event" id="GBC_mtg_1">
    …
  </li>
</ul>

</main>




了解神奇的属性Microdata 中的特殊属性更少。这个示例使用了 5 个已定义的属性中的 3 个。Microdata 未遵循 RDF 模型,而仅和                Schema.org 的目的相近。数据项是 Microdata 中描述的主要单位。
  • itemscope - 没有值,但将相关属性标记为数据项。
  • itemtype - 为 itemscope 所表示的项指定一种类型。通常指定为一个完整                    URL。
  • itemprop - 在一个项上指定一个属性。通常指定为一个相对                    URL,并使用与该项类型相关的词汇表来解释。
这个示例使用了 HTML id 属性,这是考虑到 Microdata                与标识符之间有一种奇怪的模糊联系。它还定义了一个预期在整个 web 中使用的 itemid                属性,但在某种程度上并不能真正与 URL 概念联系起来。例如,如果您想引用来自同一文档其他地方的某个项,必须使用 id                而不是 itemid。甚至 Microdata 规范中的基础示例也使用了统一资源名称 (URN) 而不是 URL。
用 JSON-LD                表示的读书俱乐部示例JSON-LD 是一种完全不同的方法。尽管 Schema.org 推荐将它嵌入在 HTML 中,但这种集成无法像在 RDFa 和 Microdata                中那样无缝执行。您会在一个 script 标签中创建一个具有这种单独的 JSON 格式的孤岛。
清单 3. bookclub.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<script type="application/ld+json">
{
  "@context" : "http://schema.org",
  "@type" : "Organization",
  "name" : "Geo Book Club",
  "member" : [{
    "@type" : "Person",
    "@id" : "ang",
    "name" : "Alice Ng"
    }],
  "event" : [{
    "@type" :"Event",
    "@id" : "GBC_mtg_2",
    "about" : {
      "@type" :"Book",
      "name" : "Things Fall Apart",
      "isbn" : "9780393932195",
      "author" : {
        "@id" : "http://enwp.org/Chinua_Achebe",
        "@type" : "Person",
        "name" : "Chinua Achebe"
      },
      "image" : {
        "@id" : "TFA_cover.jpg"
      }
    }
  },{
    "@type" : "Event",
    "@id" : "GBC_mtg_1"
  }]
}
</script>




可以将这个 script 元素插入到文档中您喜欢的任何地方,但我建议将它放在 head                元素内,除非有将它放在其他地方的理由。
JSON-LD 是一种完整的 RDF 格式。@context 键为类型和属性建立了词汇表。属性被表示为 JSON                字段,但名称以 @ 开头的属性除外;这些属性具有特殊含义。@id 和                @type 字段分别提供了资源 ID 和类型。资源间的关系是通过以 JSON 对象作为字段值来表示的,这会形成一种与                HTML 类似的嵌套结构。多个属性是使用 JSON 列表来表示的。
挑选一种格式您一定想要学习并重点研究一种 Schema.org 格式。那么问题来了:您会选择哪一种格式?
我推荐首先使用 RDFa,因为它提供了最丰富、最一致的 RDF 模型。Microdata                稍微简单一些,但不足以显著简化维护工作或找到可以处理它的开发人员。
您还可以使用 JSON-LD 获得完整的 RDF 模型,但随后您实际需要处理一种与 HTML                不同的格式,会遇到协作和人员配置问题。您还可以将元数据与内容分离,这可能使得二者不断分化并失去一致性。对于 RDFa 和                Microdata,添加属性并继续利用 HTML 元素嵌套会使内容与数据间的联系变得更加明显。所以,您不太可能忽视对它们的协同处理。
您必须考虑的一点是:您选择的格式受支持的广泛程度如何?目前,似乎对所有 3 种格式的支持程度都差不多。JSON-LD                或许是最后才流行起来的,但最近几年对它的支持正不断增加。
返回列表