我对网站的语义有点困惑。我知道每个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?
最后:我的选择如何改变第三方(google,facebook,...)对待网站的方式?
我意识到这个问题有点模糊。为了使它更具体,我将添加一个你可能会批评的例子:
<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>
答案 0 :(得分:10)
我知道每个URI都应该代表一个资源。我假设RDFa在网页中提供的所有信息都描述了该网页的URI所代表的资源。
嗯,HTTP URI可以识别页面本身或页面的内容。您无法通过简单地查看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 resource。
一种方法是使用哈希URI (see also this answer)。示例:http://magma.com/play/42
可以识别关于播放的页面,http://magma.com/play/42#play
可以识别播放。
另一种方法是使用 HTTP状态代码303 。代码200
给出了关于该事物的页面的表示,代码303 See Other
给出了标识该事物的附加URI。 DBpedia使用此方法:
请参阅Choosing between 303 and Hash。
现在,在使用RDFa时,您可以对页面本身和页面所代表的事物进行声明。只需使用相应的URI作为主题(例如,使用resource
attribute)。
所以让我们说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>
答案 1 :(得分:2)
我建议您先查看schema.org straightforward documentation。这个词汇表非常全面,可以满足您的需求并得到主要搜索引擎的支持。
以下是您开始使用的代码段示例,您可以将其直接包含在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>