5

我对网站的语义有点困惑。我知道每个 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 放在哪里?

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

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

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

    <!-- 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>
    <h1>Romeo and Juliet</h1>

    <!-- semantics of the play -->
    <div typeof="CreativeWork" name="Romeo and Juliet">
      ...
    </div>

    <h2>Shows</h2>

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

2 回答 2

10

我知道每个 URI 都应该代表一个资源。我假设网页内 RDFa 提供的所有信息都描述了由该网页的 URI 表示的资源。

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

示例(在 Turtle 语法中):

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

可能意味着带有 URI 的 HTML 页面http://en.wikipedia.org/wiki/The_Lord_of_the_Rings是由“John Doe”创作的。或者这可能意味着该 HTML 页面(→ 小说)所描述的内容是由“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 使用此方法:

请参阅在 303 和 Hash 之间进行选择

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

所以让我们说http://magma.com/#magma代表剧团。现在,您可以在每个页面(/contact、/play/、...)上使用此 URI来组进行声明。引用该组。

<div resource="http://magma.com/#magma">
  <span property="ex:name">Magma</span>
</div>

<div resource="http://magma.com/">
  <span property="ex:name">Website of Magma</span>
</div>
于 2013-04-15T13:59:59.733 回答
2

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

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

<div itemscope itemtype="http://schema.org/TheaterEvent">
  <h1 itemprop="name">Romeo and Juliet</h1>
  <span itemprop="location">Council Bluffs, IA, US</span>
  <meta itemprop="startDate" content="2011-05-23">May 23
  <a href="/offers.html" itemprop="offers">Buy tickets</a>
</div>

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

<div itemscope itemtype="http://schema.org/TheaterGroup">
  <span itemprop="name">Magma</span>
  Tel:<span itemprop="telephone">( 33 1) 42 68 53 00 </span>
</div>
于 2013-04-14T16:21:03.557 回答