xml schema语法_Schema.org语法

xml schema语法

在本系列的第1部分中,我介绍了Schema.org,描述了它的产生方式及其历史。 我解释了它如何帮助实现“语义网”的长期愿景,该愿景解决了搜索引擎等自治代理的需求。 Schema.org由大型搜索引擎和科技公司创建,但是学习和实现并不难。 本系列的第二部分向您展示如何在网站上实现Schema.org。

Schema.org语法替代

如第1部分所述,Schema.org基于RDF 。 RDF有许多语法格式。 这些格式最初设计为独立文档,但很快就可以在HTML中表示RDF。 为了提供灵活性,Schema.org支持三种不同的表示形式选项。

  • 微数据 。 由WHATWG HTML工作组创建的微数据并不是真正基于RDF,但是其元模型与RDF足够相似,因此可以在Schema.org中使用。 它可能是可用格式中概念最少的东西。
  • RDFa Lite 。 属性中的资源描述框架(RDFa)是W3C的一项建议,它定义了一组属性,以使用机器友好的元数据来增强HTML。 这个想法是将RDF模型的丰富性与HTML,内容,样式和超链接的所有其他方面并列。 RDF和RDFa的全部功能远远超过大多数Web发布者所需要的,因此RDFa Lite是一个单独的W3C建议书,它提供了语法功能的较轻子集,同时省略了RDF模型的一些较神秘的方面。 Schema.org支持此变体。
  • JSON-LD 。 针对链接数据JavaScript对象符号(JSON-LD)是W3C建议,用于以流行的JSON格式表达RDF。 JSON-LD使RDF细节尽可能不引人注目,以方便已使用JSON的许多开发人员采用。 JSON-LD支持完整的RDF模型,但在Schema.org中的使用仅限于与其他两个选项的简单模型兼容的子集。

尽管Schema.org支持所有这三个选项,但并非每个实现该格式的应用程序都支持这三个选项。 一些Web爬网程序和其他代理读取某些格式要好于其他格式,有些可能只读取其中一种格式。 因此,您可能必须首先根据要定位的应用程序的首选项来选择格式。

Schema.org文档使用Microdata作为其介绍性文本和许多示例,但这只是为了方便用户入门。 这三种格式都同样有效,并且该站点上有许多RDFa和JSON-LD示例。

一个重要的考虑因素是对您选择的格式的支持程度。 总体印象是,这三种格式都得到了相似程度的支持。

用HTML编码读书俱乐部示例

在第1部分中,我展示了一个来自假想读书俱乐部网页的信息模型示例。 图1显示了读书俱乐部的基于Schema.org的模型图。

图1. Book club Schema.org信息模型
读书俱乐部Schema.org信息模型

让我们看看如何在HTML中表示此模型。 我们将从RDFa开始。

RDFa中的读书俱乐部示例

在将模型转换为RDFa时,我创建了一个简单的页面并将所需的属性添加到有意义的任何宿主元素,以传达信息模型中的相应概念。 清单1显示了结果。

清单1. bookclub-rdfa.html
<main vocab="http://schema.org/" typeof="Organization">
          <h1 property="name">Geo Book Club</h1>
          <div property="member" typeof="Person" resource="ang">
          Founding member <span property="name">Alice Ng</span> welcomes you!
          </div>

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

          We hope you've been able to attend our past meetings
          <ul>
            <li property="event" typeof="Event" resource="GBC_mtg_1">
              …
            </li>
          </ul>

          </main>

了解魔术属性

本示例使用RDFa的最常见属性,这些属性是:

  • vocab -指定为主机元件内找到的元数据的一个或多个词汇表。 在这种情况下,一个单独的词汇表(即Schema.org的词汇表)被定义为所表达的所有元数据属性的默认词汇表。 除了Schema.org,还有一些可用于RDFa的词汇表。 您甚至可以定义自己的。
  • typeof —表示宿主元素代表具有特定资源类型的概念(即资源),并指定资源类型。
  • property -通常是最常见的属性。 指定立即封闭资源上的特定属性。
  • resource -表示host元素代表一个概念或资源,并指定资源标识符URL。

让我们从上到下看一下。 第一个元素<main vocab="http://schema.org/" typeof="Organization">执行与RDFa相关的三件事:

  • 将默认词汇表设置为http://schema.org/
  • 创建一个隐式资源,使其与main元素重合。 它由该元素及其内容描述。
  • 设置此隐式资源的类型。 typeof的值附加到默认词汇表中,从而产生完整的URL http://schema.org/Organization

如果默认词汇表是URL引用(即相对URL)而不是完整URL,则默认前缀为typeof属性的值。 例如,假设您将开始标记更改为以下代码段:

<main vocab="http://schema.org/" typeof="http://example.org/Organization">

在这种情况下,资源类型将忽略默认词汇表,因为它是完整URL,而不是相对URL。 将默认词汇表应用于相对URL也会影响property属性。 (您还可以使用特殊的前缀语法来缩写除默认词汇之外的词汇中的项目,但我将在以后的文章中介绍。)

HTML中嵌入的资源

如我所展示的,在这种情况下,有一个最外部的资源,其类型为http://schema.org/Organization 。 您可以通过这种方式定义任意多的资源。 RDFa(以及我们将看到的Microdata)中表示对象属性的常用方法是通过嵌套HTML元素。

<h1 property="name">Geo Book Club</h1>

在这种情况下, h1元素给出组织的名称。

<div property="member" typeof="Person" resource="ang">

该行定义了类型为http://schema.org/Person的资源,并将其作为组织上http://schema.org/member属性的值。

Founding member <span property="name">Alice Ng</span> welcomes you!

在此,人员资源具有http://schema.org/name属性。

到目前为止,您已经在mainh1divspan元素上看到了RDFa属性。 您可以自由设计HTML,但它适合您,并且RDFa属性可以存在于与您所描述的概念相匹配的任何元素上。

嵌套HTML元素

RDF是图形模型,而HTML元素的嵌套是层次结构或树。 因为HTML拥有自然语言描述和资源讨论,所以它形成了抽象数据层中大多数关系的自然框架。

RDFa使您可以利用此便利,并使用层次结构来设置所描述内容的上下文。 下图说明了HTML文档层次结构与RDFa属性的图形关系之间的这种联系。

图2. HTML元素嵌套内的数据项/资源关系
HTML元素嵌套中的数据项/资源关系

下面的行显示了如何分配资源标识符,在这种情况下,该标识符分配给事件资源。

<div property="event" typeof="Event" resource="GBC_mtg_2">

property就是将新资源连接到组织的原因,如上图所示。

请注意, resource的值是一个相对URL,但这不是用于完成它的默认词汇表。 页面本身的基本URL用于完成资源URL。 这意味着,如果您在http://example.com/geobookclub/托管此读书俱乐部页面,则此事件的完整资源URL变为http://example.com/geobookclub/GBC_mtg_2 。 您可以使用HTML base属性来调整此基本URL。

资源ID,也可以从一个采取hrefsrc属性(例如,上alinkimg ,或object元素)。 无论是在这种情况下,还是使用resource ,您都可以指定资源的完整URL。 如果它是对Web另一部分资源的引用,通常可以这样做,如下所示。

<a property="author" typeof="Person" href="http://enwp.org/Chinua_Achebe">

资源ID的值是从href ,在下一行中,它是从src

<img property="image" src="TFA_cover.jpg">

Microdata中的读书俱乐部示例

Microdata版本基于相同HTML页面设计。

清单2. bookclub-udata.html
<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>

了解魔术属性

微数据中的特殊属性较少。 本示例使用五个已定义属性中的三个。 微数据不符合RDF模型,仅出于Schema.org的目的而近似。 数据项是Microdata中描述的主要单位。

  • itemscope无值,但将有问题的属性标记为数据项。
  • itemtype指定itemscope指示的项目的类型。 通常指定为完整URL。
  • itemprop指定项目的属性。 通常指定为相对URL,并使用相对于项目类型的词汇进行解释。

本示例使用HTML id属性,这涉及到微数据在与标识符的连接上具有奇怪的歧义这一事实。 它还定义了itemid属性,该属性应该在整个Web上使用,但实际上并没有连接到URL概念。 例如,如果要引用同一文档中其他位置的项目,则必须使用id而不是itemid 。 即使是Microdata规范中的唯一示例,也使用统一资源名称(URN)而不是URL。

JSON-LD中的读书俱乐部示例

JSON-LD是一种完全不同的方法。 尽管Schema.org建议将其嵌入HTML,但这种集成并不是像RDFa和Microdata中那样无缝地进行。 相反,您可以在script标记中创建单独的JSON格式的孤岛。

清单3. bookclub.json
<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模型。 微数据虽然稍微简单一些,但不足以显着简化维护或查找可以使用它的开发人员的工作。

您还可以通过使用JSON-LD获得完整的RDF模型,但是实际上您正在处理HTML之外的另一种格式,存在协作和人员配备所隐含的问题。 您还将从内容中分离出元数据,从而使两者很可能随着时间的流逝而分散并失去一致性。 借助RDFa和Microdata,在HTML元素嵌套中添加属性和进行附加支持的过程使内容和数据之间的联系更加明显。 因此,您不太可能忽略与之协同工作。

您绝对应该考虑的一件事:对所选格式的支持有多广泛? 目前,似乎所有三种格式都得到了相似程度的支持。 JSON-LD可能是最后一个引人注目的地方,但是近年来对其的支持有所增加。

结论

在第2部分中,我介绍了三种不同的方法来表示Web页面上Schema.org数据的抽象信息模型:JSON-LD,RDFa和Microdata。 RDFa Lite严格来说是RDF格式,具有更强的表达能力,但复杂性更高。 接下来要熟悉的是可以编码为所选语法的各种信息。 Schema.org为许多感兴趣的领域提供了许多词汇表。 在下一篇文章中,我将向您介绍这些词汇中的一些词汇,并向您展示如何使用Schema.org文档确定如何表达您自己的网页的全部含义。


翻译自: https://www.ibm.com/developerworks/opensource/library/wa-schemaorg2/index.html

xml schema语法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值