将语义添加到网站的最佳实践

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

在我的情况下,我想创build一个名为岩浆剧场组网站使用RDFa与schema.org和opengraph词汇。 假设我有欢迎页面( http://magma.com/ ),联系页面( http://magma.com/contact/ )以及单个页面( http://magma.com/play/<playid>/ )。

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

说到实施,我把RDFa放在哪里?

最后:我的select将如何改变第三方对待网站的方式(谷歌,脸谱,…)?

我意识到这个问题有点模糊。 为了更具体一些,我会添加一个你可能会批评的例子:

 <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> 

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

那么,一个HTTP URI可以标识页面本身或页面是关于的东西。 你不能通过简单地看它来判断一个URI是否能识别这个页面或者这个东西。

示例(在Turtle语法中):

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

可能意味着具有URI http://en.wikipedia.org/wiki/The_Lord_of_the_Rings的HTML页面由“John Doe”创作。 或者这可能意味着那个HTML页面描述的东西(→小说)是由“John Doe”撰写的。 当然这是一个重要的区别。

区分URI所代表的内容有多种方式,并且存在一些争议。 围绕这个的讨论被称为httpRange-14问题 。 参见例如维基百科文章Web资源 。

一种方法是使用散列URI ( 请参阅此答案 )。 例如: http://magma.com/play/42 : http://magma.com/play/42可以识别关于该播放的页面http://magma.com/play/42#play可以识别该播放

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

请参阅303和哈希之间的select 。

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

所以我们假设http://magma.com/#magma代表剧团。 现在,您可以在每个页面(/ contact,/ play /,…)上使用此URI来制作关于组resp的声明。 参考这个小组。

 <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> 

我build议你先看一下schema.org的简单文档 。 这个词汇是非常全面的为您的关注和主要search引擎的支持。

以下是您开始使用的一个片段示例,您可以将其直接包含在HTML页面中。 当你在页面上谈论剧本的performance时,你可以使用:

 <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>