数据模型

下面是 schema.org 所使用的数据模型的探讨。

我们所用的数据模型非常具有通用性,它衍生于 RDF Schema (RDF 也是由 CycL 派生而来,而 CycL 又是来自……)。

  1. 我们有一套类型集合,以多层次的继承结构组织起来,每一种类型都可能是很多类型的子类。
  2. 我们有一套属性集合,
    1. 每一种属性都可能应用于一个或多个类型。即属性用在类型的实例上。
    2. 每一种属性都可能限定用于一个或多个类型。即属性的值至少应该是一种或多种类型的实例。

允许多个类型的做法是具有实际意义的。当然,限定属性应用于单个类型是很容易理解的,也更容易实现,但在实际中,这样将不得不定义很多类型,来充当某些属性的主体和应用范围。

和其他很多标记系统类似,这里的 schema 具有可扩展性(例如名为“类型”、“属性”的类型,以及名为“范围”、“主体”的属性),从而使得 schema 可以自我解释。 这样的可自我解释的系统我们维护了一个 微数据版本 以及一个实验性的 RDFa 版本。 同时还有一个 OWL 版本,但并不保持更新。

本站所展示的类型层次结构并不是想要成为一个全世界的“本体”(global ontology)。它仅仅包含了我们(Microsoft, Yahoo!, Google 和 Yandex)认为我们搜索引擎近期可以做些特殊处理的实体。

一致性

我们希望获得所有的标记,但是必须借助于模式,在实践中,我们期望大多数数据不用那么做。我们期望schema.org的属性与新类型一起使用。同样也常常希望,如果我们想要得到Person,Place,Organization或者其它Thing的子类类型中的属性 ,就可以得到一个文本字符串。在“数据聊胜于无”的精神下,我们会接受该标记并做到最好。

映射到RDFa Lite

我们使用的微数据可以轻松地映射到 RDFa Lite中去。实际上,所有的 Schema.org 在RDFa Lite的语法中使用。RDFa Lite版本的标记看起来与微数据版本是同构的。下面给出的是一个 RDFa Lite标记标记的Product类型例子。
<div vocab="http://schema.org/" typeof="Product">
  <img property="image" src="dell-30in-lcd.jpg" />
  <span property="name">戴尔外星人30寸LCD显示屏</span>

  <div property="aggregateRating"
    typeof="AggregateRating">
    <span property="ratingValue">87</span>
...分之...<span property="bestRating">100</span>
    基于 <span property="ratingCount">24</span> 用户评价
  </div>

  <div property="offers" typeof="AggregateOffer">
    <span property="lowPrice">$1250</span>
    to <span property="highPrice">$1495</span>
    from <span property="offerCount">8</span> 经销商
  </div>

  Sellers:
  <div property="offers" typeof="Offer">
    <a property="url" href="save-a-lot-monitors.com/dell-30.html">
     中关村电脑大世界 - $1250</a>
  </div>
  <div property="offers" typeof="Offer">
    <a property="url" href="jondoe-gadgets.com/dell-30.html">
     广埠屯电脑资讯广场 - $1350</a>
  </div>
  ...
</div>

更具体地说, itempropproperty替代. itemscope被放弃而 itemtypetypeof替代。除此之外, 属性 vocab="http://schema.org/" 及其值被添加到主体或其他封闭标签中。

最后更新时间:2012年6月6日