2013-04-14 16 views
5

Sono un po 'confuso sulla semantica dei siti web. Capisco che ogni URI dovrebbe rappresentare una risorsa. Presumo che tutte le informazioni fornite da RDFa all'interno di una pagina web descrivono la risorsa rappresentata dall'URI di tale pagina web. La mia domanda è: quali sono le migliori pratiche per fornire dati semantici per le sottopagine di un sito web.Best practice per l'aggiunta di semantica a un sito Web

Nel mio caso, desidero creare un sito Web per un gruppo teatrale chiamato magma che utilizza RDFa con i dizionari schema.org e opengraph. Diciamo che ho la pagina di benvenuto (http://magma.com/), una pagina di contatto (http://magma.com/contact/) e le pagine per le riproduzioni individuali (http://magma.com/play/<playid>/).

Ora penserei che sia la pagina di benvenuto che la pagina di contatto rappresentano la stessa risorsa (magma) fornendo al contempo diverse informazioni su tale risorsa. Le pagine di riproduzione tuttavia rappresentano rappresentazioni teatrali che vengono eseguite solo da magma. O è meglio dire che le pagine di gioco rappresentano anche il magma, ma forniscono informazioni sui giochi che verranno eseguiti da quel gruppo? La terza opzione che ho trovato è http://schema.org/WebPage. Soprattutto sottotipi come ContactPage sembrano essere rilevanti.

Quando si tratta dell'implementazione, dove inserisco l'RDFa?

E infine: in che modo la mia scelta cambierà il modo in cui il sito Web viene trattato da terze parti (google, facebook, ...)?

Mi rendo conto che questa domanda è un po 'sfocata. Per rendere più concreto che aggiungerà un esempio che si potrebbe 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> 

risposta

8

Capisco che ogni URI dovrebbe rappresentare un ressource. Presumo che tutte le informazioni fornite da RDFa all'interno di una pagina web descrivono la risorsa rappresentata dall'URI di tale pagina web.

Bene, un URI HTTP potrebbe identificare la pagina stessa O la cosa della pagina. Non puoi dire se un URI identifica la pagina o la cosa semplicemente guardandola.

Esempio (nella sintassi della tartaruga):

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

Questo potrebbe significare che la pagina HTML con l'URI http://en.wikipedia.org/wiki/The_Lord_of_the_Rings è stato scritto da "John Doe". Oppure potrebbe significare che la cosa descritta da quella pagina HTML (→ il romanzo) è stata creata da "John Doe". Ovviamente questa è una differenza importante.

Ci sono vari modi per differenziare cosa rappresenta un URI, e c'è qualche disputa a riguardo. La discussione su questo argomento è nota come httpRange-14 issue.Vedi ad esempio l'articolo di Wikipedia Web resource.

Un modo utilizza gli URI per l'hash (see also this answer). Esempio: http://magma.com/play/42 potrebbe identificare la pagina sulla riproduzione, http://magma.com/play/42#play potrebbe identificare il gioco.

Un altro modo è utilizzare il codice di stato . Il codice 200 fornisce la rappresentazione della pagina sull'oggetto, il codice 303 See Other fornisce un URI aggiuntivo che identifica la cosa. Questo metodo viene utilizzato da DBpedia:

Vedi Choosing between 303 and Hash.

Ora, quando si utilizza RDFa, è possibile rendere dichiarazioni su entrambi, la pagina stessa e la cosa rappresentata dalla pagina. Basta usare l'URI corrispondente come soggetto (ad es. Usando resource attribute).

Quindi supponiamo che http://magma.com/#magma rappresenti il ​​gruppo teatrale. Ora è possibile utilizzare questo URI su ogni pagina (/ contact,/play /, ...) per rendere dichiarazioni su il gruppo risp. per riferirsi al gruppo.

<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

ottima risposta. Posso chiederti di approfondire come terze parti come google e facebook interpreteranno le informazioni fornite in questo modo? Quale risorsa sceglieranno di visualizzare? – tobib

+1

@tobib: questo non dovrebbe avere alcun effetto sugli URI che usano per i loro risultati di ricerca, ecc., Poiché di solito sono interessati alle pagine, non alle cose che potrebbero rappresentare. Tuttavia, ovviamente i servizi potrebbero interpretare/comprendere le affermazioni sulle cose che dai e dai a ciò che vogliono. Non conosco Facebook, ma AFAIK utilizza solo il vocabolario [Open Graph] (http://ogp.me/). Probabilmente Google utilizza solo i [vocabolari documentati] (http://support.google.com/webmasters/bin/answer.py?hl=it&answer=99170). Ma non faccio bene il loro servizio. – unor

2

Suggerisco che prima occhiata al schema.org straightforward documentation. Questo vocabolario è molto completo per le tue preoccupazioni e supportato dai principali motori di ricerca.

Ecco un esempio di snippet per iniziare, è possibile includerlo direttamente in una pagina HTML. Quando si parla circa le prestazioni del gioco in una pagina si può usare:

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

Sulla vostra pagina di contatto si potrebbe includere:

<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

Grazie, ma non penso che questo risponda alla mia domanda. Per prima cosa, voglio usare RDFa, non Microdata. Ma più importante voglio sapere sulla semantica con siti web composti da diverse pagine. I tuoi esempi mostrano solo come contrassegnare singoli bit di informazioni. – tobib

+0

Il vocabolario di Schema.org è anche rappresentabile come RDFa: http://schema.org/docs/datamodel.html. Dovresti aggiungere la semantica per tutto il tempo in cui le informazioni di interesse appaiono in una pagina web, puoi aggiungere tutte le entità che vuoi in una pagina, basta guardare gli esempi. La progettazione di modelli Web tradizionali (come MVC) può aiutarti a mantenere il contenuto delle tue pagine HTML ma è fuori dallo scopo di questa discussione. – loopasam