将语义添加到网站的最佳实践
我对网站的语义有点困惑。 我知道每个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使用:
- 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 for machines)
请参阅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>