2013-04-14 87 views
5

我對網站的語義有點困惑。我明白每個URI都應該代表一個資源。我假定RDFa在網頁內提供的所有信息都描述了該網頁的URI代表的資源。我的問題是:什麼是爲網站子頁面提供語義數據的最佳實踐。將語義添加到網站的最佳做法

在我的情況下,我想使用RDFa與schema.org和opengraph詞彙表創建一個名爲magma的劇場組的網站。假設我有歡迎頁面(http://magma.com/),聯繫頁面(http://magma.com/contact/)和單個播放頁面(http://magma.com/play/<playid>/)。

現在我認爲歡迎頁面和聯繫頁面代表相同的資源(岩漿),同時提供有關該資源的不同信息。然而,這些播放頁面只代表着由岩漿完成的劇本。或者說說遊戲頁面也代表岩漿,但提供關於將由該組執行的戲劇的信息呢?我偶然發現的第三個選項是http://schema.org/WebPage。特別是像ContactPage這樣的亞型似乎是相關的。

說到實施,我在哪裏放RDFa?

最後:我的選擇將如何改變第三方對待網站的方式(谷歌,臉譜,...)?

我意識到這個問題有點模糊。爲了使它更具體,我會補充一點,你可能critizise一個例子:

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

回答

8

我明白,每一個URI應代表的ressource。我假定RDFa在網頁內提供的所有信息都描述了該網頁的URI代表的資源。

那麼,一個HTTP URI可以標識頁面本身或頁面是關於的東西。您無法通過簡單地查看某個URI來識別頁面或事物。

例(在龜語法):

<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」撰寫。當然這是一個重要的區別。

有很多方法可以區分URI所代表的內容,並且存在一些爭議。圍繞此的討論被稱爲httpRange-14問題。例如參見維基百科文章Web resource

一種方法是使用哈希URIsee 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> 
+0

很好的答案。我可以請你擴展第三方如google和facebook如何解釋以這種方式提供的信息嗎?他們會選擇顯示哪些資源? – tobib

+1

@tobib:這不應該影響他們用於搜索結果的URIs,因爲他們通常對頁面感興趣,而不是他們可能代表的東西。然而,當然服務可能會解釋/理解關於您提供和使用該信息的事情的陳述,無論他們喜歡做什麼。我不知道Facebook,但是AFAIK他們只使用[Open Graph](http://ogp.me/)詞彙表。 Google可能只會使用[記錄的詞彙表](http://support.google.com/webmasters/bin/answer.py?hl=zh_CN&answer=99170)。但我沒有很好的服務。 – unor

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

謝謝,但我不認爲這回答了我的問題。首先,我想使用RDFa,而不是Microdata。但更重要的是,我想了解由多個頁面組成的網站的語義。您的示例僅顯示如何標記單個信息位。 – tobib

+0

Schema.org詞彙表也可以表示爲RDFa:http://schema.org/docs/datamodel.html。您應該始終在網頁中顯示感興趣的信息時添加語義,您可以在一個頁面中添加任意數量的實體,只需查看示例即可。傳統的網頁模式設計(如MVC)可以幫助您維護HTML頁面的內容,但這超出了本討論的範圍。 – loopasam

相關問題