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

Schema.org 信息模型简介(2)

Schema.org 信息模型简介(2)

网页的一种信息模型那么,所有这些对今天的 Web 开发人员意味着什么?一方面,它意味着您必须问:“我的内容到底是关于什么的?”
假设您在维护一个读书俱乐部的网站。您的页面是关于什么的?它们可能是关于图书、会议和会员的,而且您通过一套常规的描述来描述这些事物。例如:
  • 图书用标题、作者、ISBN、封面图片等词汇来描述。
  • 会议用时间/日期、地点和与会者来描述。
  • 会员通过他们的姓名、联系人信息和照片来描述。
一个人可能是俱乐部的会员,也可能是一本书的作者。在这种情况下,会员身份描述中的一些元素可能与作者身份的元素相同。考虑到这一点,您就可以对描述您的俱乐部的数据执行可视化,类似于面向对象编程中的数据组织方式。
图 2 显示了这个思维图的一部分,我在其中虚构了一个叫做 Geo Book Club 的俱乐部。
图 2. 读书俱乐部原始信息模型
那么,我们看到了什么?
Web 资源椭圆形代表 Web 资源(有点类似于面向对象的实例)。这种思维模式最重要的特征是,您可以从他们所描述的事物的角度 和他们提供的内容来考虑                URL。http://example.com/geobookclub 是 Geo Book Club                    的网站。在这个模型中,我将它也视为一个事物,即一个俱乐部。资源类型描述了该事物所属的类型,我使用了一个用大写字母表示的前导行,在图中表明了这一点。
资源类型组织与特定事物相关的属性的约定。例如,某个人不会与 ISBN 联系在一起。资源类型对数据模式进行控制,使应用程序能够更有效地理解数据。
关系箭头显示了对象之间的关系或链接。将您希望提升为明确关系的每个链接都标出来很重要。您并不只是想要表明图书“Things Fall                Apart”与作者“Chinua Achebe”相关。而是更加明确地表明:图书“Things Fall                Apart”由作者“Chinua Achebe”所著。因为一本书可能有其他相关人员,比如编辑或插画家,标出明确的关系有助于 Web                应用程序准确地处理数据。
有时,某个关系的值仅是文本,而不是另一种 Web                资源。该图将这些值显示在矩形中,并将其称为文字。文字也可以是数字、日期、布尔值和其他类型的基本数据。
额外信息图中云状图形只是对本教程不需要的细节的一种方便的标记。我使用它们来表明一个俱乐部可以有多场会议,但在本系列中,我们只关心第二场会议的细节。云状图形意味着可以有多场会议,每场会议都有一个单独的关系。
您可以设想一种使用某种容器对象来建模此情形的方法,比如使用“membership”来保存会员,或者使用“schedule”来保存事件。但是,容器很快会变得很复杂。Schema.org                注重简单性,所以约定通常只是表示一个关系的多个实例。
图书封面是一个有趣的特例。首先,它是一个链接到图像文件的 Web URL。Schema.org 允许您在关系中包含不同类型的 Web                URL,包括图像和其他非文本媒体对象。而且这里还有未指定资源类型。在诸如此类的情况下,虽然 Schema.org                也提供了一种更全面的方法来表达这些媒体关系,但在需要时,您可以为关系赋予权重值。
模型的 RDF 版本如果您能理解上述模型,那么您对 RDF 的理解就差不多足以让您开始使用 Schema.org 了。请记住两个考虑因素。
  • 所有关系都必须是 URL,而不是简单的字符串,比如“member”和“author”。这些 URL 在 RDF                        中的正式名称是谓词,但 Schema.org                    采用了术语“属性”,并为它定义的每个属性都提供一个网页。这样,一个人(甚至一台机器)可以直接访问关系的                    URL,并看到一段可读的描述。
  • 资源类型是使用一个特殊的 RDF 谓词                    http://www.w3.org/1999/02/22-rdf-syntax-ns#type                    来表达的,这个谓词通常缩写为 rdf:type。此关系的值称为 RDF 类。
图 3 显示了 Geo Book Club                模型的子集,演示了完整表达的谓词和类型/类关系。可以想象,如果我将所有数据都放在整个图中,它会有多乱。
图 3. 包含完整 RDF 谓词和类型信息的读书俱乐部信息模型摘要
没有专门针对一个读书俱乐部的 Schema.org 类,所以我使用了一个针对组织的类。顺便说一下,Schema.org 没有打算为每个人可能希望在                Web 上表达的任何事物都提供一个全面模型。但是,如果足够多的读书俱乐部组织者聚集在一起,并决定设计 Schema.org                扩展来满足他们的需求,这些扩展最终可能被整合到核心 Schema.org 模型中。大致共识和实际用途是 Schema.org                变革过程中最重要的推动因素。
让模型适合 Schema.org下图显示了一个与 Schema-org 一致的模型。我使用两个缩写词来减少杂乱:
  • 来自 RDF 的 URL 缩写约定:一个前缀后跟一个冒号,并以 URL                    结尾。http://www.w3.org/1999/02/22-rdf-syntax-ns#type 变成                    rdf:type,http://schema.org/member 变成                    schema:member。
  • 资源类型缩写词:第二个缩写词用于指定位于资源标识符下方括号内的资源类型。
图 4. 读书俱乐部 Schema.org 信息模型
除了更改为 schema:Organization 之外,还有另一个为了与 Schema.org                匹配而执行的词汇表更改。cover 关系表示为 schema:image。
Schema.org 支持一种与面向对象编程类似的类继承能力。它有一个祖先类                schema:Thing,所有类都源自这个类。
  • schema:Organization 是 schema:Thing 的子类。
  • schema:Book 是 schema:CreativeWork 的子类,后者又是                    schema:Thing 的子类
甚至属性也是 schema:Thing 的子类,但这涉及到一些难懂的细节。
更有趣的是,Schema.org 大量使用了子属性,子属性类似于子类。例如,Schema.org 模型没有直接将                schema:isbn 指定为 schema:Book 上被认可的属性。而是指定了                schema:identifier。但是,schema:identifier                有多个子属性,包括:
  • schema:sku
  • schema:flightNumber
  • schema:isbn
这些不同类型的标识符在特定上下文中是有意义的。
子属性遵循 ,您可能还记得面向对象编程中的这一原则。基本上讲,这意味着您可以替换父属性的任何子属性。因此,由于                schema:identifier 已在 schema:Book 上被识别,您可以自由地代换                schema:isbn,就像我在 Geo Book Club 示例中所做的那样。
返回列表