关于 rdfa:向网站添加语义的最佳实践

Best practices for adding semantics to a website

我对网站的语义有点困惑。我知道每个 URI 都应该代表一个资源。我假设 RDFa 在网页内提供的所有信息都描述了由该网页的 URI 表示的资源。我的问题是:为网站的子页面提供语义数据的最佳做法是什么。

在我的例子中,我想使用带有 schema.org 和 opengraph 词汇表的 RDFa 为一个名为 magma 的剧团创建一个网站。假设我有欢迎页面 (http://magma.com/)、联系页面 (http://magma.com/contact/) 和个人播放页面 (http://magma.com/play/<playid>/)。

现在我认为欢迎页面和联系页面都代表相同的资源(岩浆),同时提供有关该资源的不同信息。然而,播放页面代表仅由岩浆执行的播放。还是说播放页面也代表岩浆但提供有关该组将执行的播放的信息更好?我偶然发现的第三个选项是 http://schema.org/WebPage。特别是像 ContactPage 这样的子类型似乎是相关的。

说到实现,RDFa应该放在哪里?

最后:我的选择将如何改变第三方(谷歌、Facebook 等)对待网站的方式?

我意识到这个问题有点模糊。为了使其更具体,我将添加一个您可能会批评的示例:

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
<html vocab="http://schema.org/" typeof="TheaterGroup">
  <head>
    <meta charset="UTF-8"/>
    Magma - Romeo and Juliet

    <!-- magma sematics from a template  file -->
    <meta property="name" content="Magma"/>
    <meta property="logo" content="/static/logo.png"/>
    <link rel="home" property="url" content="http://magma.com/"/>
  </head>

  <body>
    Romeo and Juliet

    <!-- semantics of the play -->
   
      ...
   

    Shows

    <!-- samantics of magma events -->
    <ul property="events">
      <li typeof="Event"><time property="startDate">...</time>
</li>

      ...
   
</ul>

  </body>
</html>

I understand that every URI should represent a ressource. I assume that all information provided by RDFa inside a webpage describes the ressource represented by the URI of that webpage.

嗯,HTTP URI 可以识别页面本身或页面的内容。您无法仅通过查看 URI 来识别页面或事物。

示例(Turtle 语法):

1
<http://en.wikipedia.org/wiki/The_Lord_of_the_Rings> ex:author"John Doe"

这可能意味着带有 http://en.wikipedia.org/wiki/The_Lord_of_the_Rings URI 的 HTML 页面是由"John Doe"创作的。或者这可能意味着该 HTML 页面(a?' the novel)所描述的东西是由"John Doe"创作的。当然这是一个重要的区别。

有多种方法可以区分 URI 所代表的内容,对此存在一些争议。围绕这个问题的讨论被称为 httpRange-14 问题。例如,参见 Wikipedia 文章 Web 资源。

一种方法是使用哈希 URI(另请参阅此答案)。示例:http://magma.com/play/42 可以识别该剧的页面,http://magma.com/play/42#play 可以识别该剧。

另一种方法是使用 HTTP 状态代码 303。代码 200 给出了关于事物的页面的表示,代码 303 See Other 给出了标识事物的附加 URI。 DBpedia 使用此方法:

  • http://dbpedia.org/resource/The_Lord_of_the_Rings 代表小说

  • http://dbpedia.org/page/The_Lord_of_the_Rings 代表关于小说的页面

    (对应于机器的 http://dbpedia.org/data/The_Lord_of_the_Rings)

请参阅在 303 和哈希之间进行选择。

现在,当使用 RDFa 时,您可以对页面本身和页面所代表的事物进行声明。只需使用相应的 URI 作为主题(例如,通过使用 resource 属性)。

假设 http://magma.com/#magma 代表剧组。现在,您可以在每个页面(/contact、/play/、a€|)上使用此 URI 来对组进行声明。引用该组。

1
2
3
4
5
  <span property="ex:name">Magma</span>



  <span property="ex:name">Website of Magma</span>


我建议您首先查看 schema.org 的简单文档。该词汇表非常全面,可以解决您的顾虑,并得到主要搜索引擎的支持。

这里有一个片段示例供您入门,您可以将其直接包含在 HTML 页面中。当您在页面上谈论该剧的表现时,您可以使用:

1
2
3
4
  <h1 itemprop="name">Romeo and Juliet
  <span itemprop="location">Council Bluffs, IA, US</span>
  <meta itemprop="startDate" content="2011-05-23">May 23
  Buy tickets

在您的联系页面上,您可以包括:

1
2
  <span itemprop="name">Magma</span>
  Tel:<span itemprop="telephone">( 33 1) 42 68 53 00 </span>