2013-04-14 4 views
5

Ich bin ein wenig verwirrt über die Semantik von Websites. Ich verstehe, dass jeder URI eine Ressource darstellen sollte. Ich gehe davon aus, dass alle von RDFa innerhalb einer Webseite bereitgestellten Informationen die Ressource beschreiben, die durch den URI dieser Webseite repräsentiert wird. Meine Frage ist: Was sind Best Practices für die Bereitstellung von semantischen Daten für Unterseiten einer Website.Best Practices zum Hinzufügen von Semantik zu einer Website

In meinem Fall möchte ich eine Website für eine Theatergruppe namens Magma mit RDFa mit schema.org und opengraph Vokabularen erstellen. Nehmen wir an, ich habe die Willkommensseite (http://magma.com/), eine Kontaktseite (http://magma.com/contact/) und Seiten für einzelne Spiele (http://magma.com/play/<playid>/).

Jetzt würde ich denken, dass sowohl die Begrüßungsseite als auch die Kontaktseite die gleiche Ressource (Magma) darstellen, während andere Informationen über diese Ressource bereitgestellt werden. Die Spielseiten stellen jedoch Stücke dar, die nur zufällig von Magma gespielt werden. Oder ist es besser zu sagen, dass die Spielseiten auch Magma darstellen, aber Informationen über Spiele liefern, die von dieser Gruppe gespielt werden? Die dritte Option, über die ich gestolpert bin, ist http://schema.org/WebPage. Vor allem Subtypen wie ContactPage scheinen relevant zu sein.

Wenn es um die Implementierung geht, wo setze ich die RDFa?

Und schließlich: Wie wird meine Wahl ändern, wie die Website von Dritten (Google, Facebook, ...) behandelt wird?

Ich weiß, diese Frage ist ein wenig verschwommen. Um es konkreter Ich werde ein Beispiel hinzufügen, die Sie kritisieren könnten:

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

Antwort

8

Ich verstehe, dass jeder URI eine Ressource darstellen sollte. Ich gehe davon aus, dass alle von RDFa innerhalb einer Webseite bereitgestellten Informationen die Ressource beschreiben, die durch den URI dieser Webseite repräsentiert wird.

Nun, ein HTTP-URI könnte die Seite selbst identifizieren oder die Sache, um die es geht. Sie können nicht feststellen, ob ein URI die Seite oder das Ding identifiziert, indem Sie einfach darauf schauen.

Beispiel (in Turtle-Syntax):

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

Diese , dass die HTML-Seite mit dem URI http://en.wikipedia.org/wiki/The_Lord_of_the_Rings wird von "John Doe" verfasst bedeuten könnte. Oder es könnte bedeuten, dass das von dieser HTML-Seite (→ der Roman) beschriebene Ding von "John Doe" verfasst wird. Natürlich ist das ein wichtiger Unterschied.

Es gibt verschiedene Möglichkeiten, um zu unterscheiden, was ein URI darstellt, und es gibt einige Diskussionen darüber. Die Diskussion darüber ist bekannt als httpRange-14 Ausgabe.Siehe zum Beispiel den Wikipedia-Artikel Web resource.

Ein Weg verwendet Hash-URIs (see also this answer). Beispiel: http://magma.com/play/42 könnte identifizieren die Seite über das Spiel, http://magma.com/play/42#play könnte identifizieren das Spiel.

Eine andere Möglichkeit ist die Verwendung HTTP-Statuscode 303. Der Code 200 gibt die Darstellung der Seite über das Ding, der Code 303 See Other gibt einen zusätzlichen URI, der das Ding identifiziert. Diese Methode wird von DBpedia verwendet:

Siehe Choosing between 303 and Hash.

Wenn Sie jetzt RDFa verwenden, können Sie sowohl Aussagen über die Seite selbst als auch über die Seite treffen. Verwenden Sie einfach den entsprechenden URI als Betreff (z. B. mithilfe von resource attribute).

Also sagen wir mal http://magma.com/#magma repräsentiert die Theatergruppe. Jetzt könntest du diese URI auf alle Seite (/ contact,/play /, ...) verwenden, um Aussagen zu machen über die Gruppe resp. auf die Gruppe verweisen.

<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

große Antwort. Könnte ich Sie bitten, zu erläutern, wie Drittanbieter wie Google und Facebook die auf diese Weise bereitgestellten Informationen interpretieren? Welche Ressource werden sie anzeigen? – tobib

+1

@tobib: Dies sollte keine Auswirkungen haben, welche URIs sie für ihre Suchergebnisse usw. verwenden, da sie normalerweise an Seiten interessiert sind, nicht an den Dingen, die sie darstellen könnten. Natürlich können Dienste die Aussagen über die Dinge, die Sie mit diesen Informationen geben und tun, natürlich interpretieren, was auch immer sie tun mögen. Ich kenne Facebook nicht, aber AFAIK verwenden sie nur das Vokabular [Open Graph] (http://ogp.me/). Google verwendet wahrscheinlich nur die [dokumentierten Vokabulare] (http://support.google.com/webmasters/bin/answer.py?hl=de&answer=99170). Aber ich mache ihren Dienst nicht gut. – unor

2

Ich schlage vor, dass Sie zunächst einen Blick auf die schema.org straightforward documentation. Dieses Vokabular ist sehr umfassend für Ihre Anliegen und wird von den großen Suchmaschinen unterstützt.

Hier ist ein Beispiel für einen Snippet, mit dem Sie beginnen können. Sie können dies direkt in eine HTML-Seite einfügen. Wenn Sie über die Leistung des Spiels auf einer Seite sprechen könnten Sie:

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

Auf Ihrer Kontaktseite können Sie schließen ein:

<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

Danke, aber ich glaube nicht, dass dies meine Frage beantwortet. Zuerst möchte ich RDFa, nicht Microdata verwenden. Wichtiger ist jedoch, dass ich die Semantik über mehrere Seiten wissen möchte. Ihre Beispiele zeigen nur, wie Sie einzelne Informationsbits markieren. – tobib

+0

Schema.org-Vokabular ist auch als RDFa darstellbar: http://schema.org/docs/datamodel.html. Sie sollten die Semantik immer dann hinzufügen, wenn die interessierenden Informationen auf einer Webseite erscheinen. Sie können auf einer Seite beliebig viele Entitäten hinzufügen. Schauen Sie sich die Beispiele an. Herkömmliches Web-Pattern-Design (wie MVC) kann Ihnen helfen, den Inhalt Ihrer HTML-Seiten zu pflegen, aber das ist nicht im Rahmen dieser Diskussion. – loopasam