Specifiche di protocollo
Versione 1.2 , Giugno 2011
Questa versione: SpamProtocol12
Ultima versione: SpamProtocol12
Versione Precedente: SpamProtocol11
Autori: FabioVitali, AngeloDiIorio, SilvioPeroni, GioeleBarabucci
<span resource="audio" src="link_audio" /> : per risorse audio <span resource="video" src="link_video" /> : per risorse video <span resource="image" src="link_immagine" /> : per risorse immagine
http://ltwxxxx.web.cs.unibo.it/login
Header:
Content-Type: application/x-www-form-urlencodedBody:
username=username
HTTP/1.1 200 OKBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/logout
Header:
Content-Type: application/x-www-form-urlencodedBody:
vuoto
HTTP/1.1 200 OKBody:
vuotoL'utente che ha eseguito la richiesta non deve essere mai specificato nell'URL della richiesta ma usando i meccanismi appositi di HTTP. Il server che creerà la sessione dovrà nominare il proprio cookie col seguente nome: ltwlogin
http://ltwxxxx.web.cs.unibo.it/post
Header:
Content-Type: application/x-www-form-urlencodedBody:
article= <article> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). </article>
HTTP/1.1 201 CreatedBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/respamHeader:
Content-Type: application/x-www-form-urlencodedBody:
serverID=<serverID>&userID=<userID>&postID=<postID>
HTTP/1.1 201 CreatedBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/replytoHeader:
Content-Type: application/x-www-form-urlencodedBody:
serverID=<serverID>& userID=<userID>& postID=<postID>& article= <article> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). </article>
HTTP/1.1 201 CreatedBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/search/<limit>/<type>/[<param>/]*dove:
* <limit>: all | 1 | 2 | ... * <type>: author | following | recent | related | fulltext | affinityEsistono infatti sei chiavi di ricerca. I parametri variano a seconda della chiave usata, secondo il seguente schema: author
http://ltwxxxx.web.cs.unibo.it/search/<limit>/author/<serverID>/<userID>
http://ltwxxxx.web.cs.unibo.it/search/10/author/tw18/pippo
: restituiscimi i dieci più recenti post dell'utente "tw18/pippo".
following
http://ltwxxxx.web.cs.unibo.it/search/<limit>/following
http://ltwxxxx.web.cs.unibo.it/search/10/following
: restituiscimi i dieci più recenti post degli utenti seguiti dall'utente che fa la richiesta (HTTP basic).
recent
http://ltwxxxx.web.cs.unibo.it/search/<limit>/recent/<term>
http://ltwxxxx.web.cs.unibo.it/search/10/recent/fc_roma
: restituiscimi i dieci più recenti post che abbiano come argomento "fc_roma".
related
http://ltwxxxx.web.cs.unibo.it/search/<limit>/related/<term>
http://ltwxxxx.web.cs.unibo.it/search/10/related/fc_roma
: restituiscimi i dieci post più correlati all'argomento "fc_roma" (ottenuti navigando e cercando nel tesauro).
fulltext
http://ltwxxxx.web.cs.unibo.it/search/<limit>/fulltext/<string>
http://ltwxxxx.web.cs.unibo.it/search/10/fulltext/ha%20fatto%20er%20cucchiaio
: restituiscimi i dieci che contengono la stringa "ha fatto er cucchiaio" o parti di essa. Ogni server implementare politiche diverse, più o meno sofisticate, di ricerca full-text.
affinity
http://ltwxxxx.web.cs.unibo.it/search/<limit>/affinity/<serverID>/<userID>/<postID>
http://ltwxxxx.web.cs.unibo.it/search/10/affinity/tw18/pippo/12
: restituiscimi i dieci post più affini al post "tw18/pippo/12".
Header/Body: vuoto.
<archive> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> . . . </archive>Spiegazione dei tag:
http://ltwxxxx.web.cs.unibo.it/post/<serverID>/<userID>/<postID>Header/Body: Body vuoto.
HTTP/1.1 200 OKBody:
<article prefix=" sioc: http://rdfs.org/sioc/ns# ctag: http://commontag.org/ns# skos: http://www.w3.org/2004/02/skos/core# dcterms: http://purl.org/dc/terms/ tweb: http://vitali.web.cs.unibo.it/vocabulary/" about="/tw12/pippo/11" typeof="sioc:Post" rel="sioc:has_creator" resource="/tw12/pippo" property="dcterms:created" content="2006-09-07T09:33:30Z"> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). <span rev="tweb:like" resource="/tw14/pluto" /> <span property="tweb:countLike" content="1" /> <span property="tweb:countDislike" content="5" /> </article>Importante: obbligatorio specificare tramite RDFa le sequenti informazioni:
setlike
si imposta il grado di interesse dell'utente per un dato post.
Metodo: POST
URL:
http://ltwxxxx.web.cs.unibo.it/setlikeHeader:
Content-Type: application/x-www-form-urlencodedBody:
serverID=<serverID>&userID=<userID>&postID=<postID>&value=<value>dove:
<value> : +1 (like) | 0 (neutral) | -1 (dislike)
HTTP/1.1 200 OKBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/serversHeader/Body: vuoto
HTTP/1.1 200 OKBody:
Content-type: application/xml <servers> <server serverID="tw2" /> <server serverID="tw3" /> <server serverID="tw4" /> <server serverID="tw11" /> </servers>
http://ltwxxxx.web.cs.unibo.it/serversHeader:
Content-type: application/xmlBody:
servers= <servers> <server serverID="tw2" /> <server serverID="tw3" /> <server serverID="tw4" /> <server serverID="tw11" /> </servers>
HTTP/1.1 200 OKBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/setfollowHeader:
Content-Type: application/x-www-form-urlencodedBody:
serverID=<serverID>&userID=<userID>&value=<value>dove:
<value> : 0 (unfollow) | 1 (follow)
HTTP/1.1 200 OKBody:
vuoto
http://ltwxxxx.web.cs.unibo.it/followersHeader/Body: vuoto
HTTP/1.1 200 OKBody:
Content-type: application/xml <followers> <follower id="tw11/pippo" /> <follower id="tw11/paperino" /> <follower id="tw10/pluto" /> <follower id="tw09/topolino" /> </followers>
http://ltwxxxx.web.cs.unibo.it/addtermHeader:
Content-Type: application/x-www-form-urlencodedBody:
parentterm=<parentterm>&term=<term>Esempi:
http://ltwxxxx.web.cs.unibo.it/addterm parentterm=fc_roma term=totti http://ltwxxxx.web.cs.unibo.it/addterm parentterm=totti&term=cucchiaio
HTTP/1.1 201 CreatedBody:
vuoto
thesaurus
contiene il tesauro (sia condiviso che esteso) in formato SKOS, come descritto.
Metodo: GET
URL:
http://ltwxxxx.web.cs.unibo.it/thesaurusHeader/Body: Body vuoto.
HTTP/1.1 200 OKBody:
L'intero tesauro, nel formato SKOS descritto in sez. [XXX].
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/<type>/[<param>/]*dove:
* <limit>: all | 1 | 2 | ... * <type>: author | recent | related | fulltext | affinityEsistono infatti sei chiavi di ricerca. I parametri variano a seconda della chiave usata, secondo il seguente schema: author
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/author/<serverID>/<userID>
http://ltwxxxx.web.cs.unibo.it/searchserver/10/author/tw18/pippo
: restituiscimi i dieci più recenti post dell'utente "tw18/pippo".
recent
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/recent/<term>
http://ltwxxxx.web.cs.unibo.it/searchserver/10/recent/fc_roma
: restituiscimi i dieci più recenti post che abbiano come argomento "fc_roma".
related
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/related/<term>
http://ltwxxxx.web.cs.unibo.it/searchserver/10/related/fc_roma
: restituiscimi i dieci post più correlati all'argomento "fc_roma" (ottenuti navigando e cercando nel tesauro).
fulltext
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/fulltext/<string>
http://ltwxxxx.web.cs.unibo.it/searchserver/10/fulltext/ha%20fatto%20er%20cucchiaio
: restituiscimi i dieci che contengono la stringa "ha fatto er cucchiaio" o parti di essa. Ogni server implementare politiche diverse, più o meno sofisticate, di ricerca full-text.
affinity
http://ltwxxxx.web.cs.unibo.it/searchserver/<limit>/affinity/<serverID>/<userID>/<postID>/<k>/<j>
http://ltwxxxx.web.cs.unibo.it/searchserver/10/affinity/tw18/pippo/12/10/80
: restituiscimi i dieci post più affini al post "tw18/pippo/12" usando come parametri k=1 e j=3
Header/Body: vuoto.
<archive> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> <post> <content>text/html; charset=UTF8</content> <affinity>5</affinity> <article> bla bla bla bla </article> </post> . . . </archive>Spiegazione dei tag:
http://ltwxxxx.web.cs.unibo.it/postserver/<userID>/<postID>Header/Body: Body vuoto.
HTTP/1.1 200 OKBody:
<article prefix=" sioc: http://rdfs.org/sioc/ns# ctag: http://commontag.org/ns# skos: http://www.w3.org/2004/02/skos/core# dcterms: http://purl.org/dc/terms/ tweb: http://vitali.web.cs.unibo.it/vocabulary/" about="/tw12/pippo/11" typeof="sioc:Post" rel="sioc:has_creator" resource="/tw12/pippo" property="dcterms:created" content="2006-09-07T09:33:30Z"> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). <span rev="tweb:like" resource="/tw14/pluto" /> <span property="tweb:countLike" content="1" /> <span property="tweb:countDislike" content="5" /> </article>Importante: obbligatorio specificare tramite RDFa le sequenti informazioni:
dell'utente che ha settato la preferenza. Ogni server può comunque scegliere le proprie policy di gestione delle preferenze (caching, limiti, etc.).
Metodo: POST
URL:
http://ltwxxxx.web.cs.unibo.it/propagatelike/Dove nel body dovranno essere inserite le informazioni per fulluserID, value, e fullpostID che, tenendo conto dei meccanismi di identificazione di server, utenti e post, si espande in:
http://ltwxxxx.web.cs.unibo.it/propagatelike/Dove nel body dovranno essere inserite le informazioni per serverID1, userID1, value, serverID2, userID2, e postID2 Un esempio è mostrato in seguito:
serverID1=tw11&userID1=pippo&value=+1&serverID2=tw8&userID2=pluto&postID2=4
http://lwtxxxx.cs.unibo.it/hasreply/dove nel Body si avrà la struttura :
<serverID>=value&<userID>=value&..... <serverID> = Id del server su cui risiede la risposta <userID> = Id dell'user che ha generato la risposta <postID> = Id del post di Risposta <userID2Up> = Id dell'user che ha generato il post da aggiornare <postID2Up> = Id del post da aggiornareIl server arricchisce il post con:
<span rel="sioc:has_reply" resource="/serverID/userID/postID" />
HTTP/1.1 200 OK
Testo di un post contenente #hashtag, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio #portiere) o del tesauro esteso (ad esempio #roma) e altro html sparso (ad esempio, http://www.example.com)Questo testo viene (automaticamente o semi-automaticamente) arricchito con opportuni elementi HTML:
<article> Testo di un post contenente #hashtag, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio #portiere) o del tesauro esteso (ad esempio #roma) e altro html sparso (ad esempio, <a href="http://www.example.com">http://www.example.com</a>) </article>Oltre a ciò, è necessario indicare, in qualche modo, le altre informazioni relative al post, ad esempio che i tag liberi ("hashtag" nell'esempio) e i termini del tesauro usati ("/sport/calcio/portiere" dal tesauro controllato e "/sport/calcio/portiere/roma" dal tesauro esteso) siano resi esplicitamente argomenti di questo post. Questo deve essere fatto usando RDFa:
<article> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic"># <span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus"> portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic"># <span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) e altro html sparso (ad esempio, <a href="http://www.example.com">http://www.example.com</a>) </article>Inoltre, una volta arrivato al server, vengono aggiunte ulteriori asserzioni RDFa (riguardanti l'autore, l'uri della risorsa che identifica il post, ecc.) in modo da meglio descrivere il post stesso, es:
<article prefix=" sioc: http://rdfs.org/sioc/ns# ctag: http://commontag.org/ns# skos: http://www.w3.org/2004/02/skos/core# dcterms: http://purl.org/dc/terms/ tweb: http://vitali.web.cs.unibo.it/vocabulary/" about="/tw12/pippo/11" typeof="sioc:Post" rel="sioc:has_creator" resource="/tw12/pippo" property="dcterms:created" content="2006-09-07T09:33:30Z"> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic"># <span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span></span>) o del tesauro esteso (ad esempio <span rel="sioc:topic"># <span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltwxxxx.web.cs.unibo.it/thesaurus">roma</span></span>) e altro html sparso (ad esempio, <a href="http://www.example.com">link</a>) </article>Gli oggetti e le relazioni, minimi ed obbligatori, da usare per le varie descrizioni di un post sono i seguenti:
http://vitali.web.cs.unibo.it/vocabulary/.
Ogni server deve registrarsi alla federazione SPAM, per potere rendere disponibili i propri contenuti e servizi.
La registrazione non avviene in maniera automatica ma modificando manualmente un file XML condiviso da tutti i gruppi. E' compito del working group decidere l'URL del registro SPAM. Alla fine di ogni fiera, i gruppi sono tenuti a redarre il file XML condiviso. I gruppi dovranno inoltre consegnare una copia del file al docente o pubblicarlo sul wiki. Questa versione NON DEVE essere ulteriormente modificata. Ogni server dovrà richiedere questo file (tramite un GET HTTP) e usarlo per riconoscere i file della federazione. Il registro XML è stato caricato in questo file.TRAM è la test suite di SPAM. Il suo scopo è accertarsi che le implementazioni di SPAM siano conformi alle richieste del protocollo.
La test suite è composta da una serie di test.
<!ELEMENT test-suite (test)*>
Ognuno di questi test ha:
<!ELEMENT test (name, action+, expect)>
<!ELEMENT name (#PCDATA)>
L'azione da compiere e` descritta da:
<!ELEMENT action (method, uri, headers, body?)> <!ELEMENT method (#PCDATA)> <!ELEMENT uri (#PCDATA)> <!ELEMENT headers (header)> <!ELEMENT header EMPTY> <!ATTLIST header name CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT body (#PCDATA)>
La descrizione di ciò che ci si aspetta in risposta è composta da:
<!ELEMENT expect (status, body?)> <!ELEMENT status (#PCDATA)> <!ELEMENT body (#PCDATA)>
All'interno di ogni test posso comparire variabili che, al momento del lancio dei test, saranno sostituite con valori appropriati.
Le variabili possibili sono:
${serverID-ok}
${userID-ok}
${postID-ok}
${serverID-err}
${userID-err}
${postID-err}
Si e' deciso al fine di semplificare il processo di testing di usare un valore di default riconosciuto come errato, e che quindi non potrà mai essere considerato come cme userID, postID o come serverID valido.
${serverID-err}
: ltw0000${userID-err}
: user0${postID-err}
: 0000Retweet di un post non esistente ad un server esistente deve restituire un errore.
<test> <name>Retweet di un post non esistente ad un server esistente deve restituire un errore</name> <action> <method>put</method> <uri>/retweet/lw18/admin/${postID-err}</uri> <headers/> </action> <expect> <status>404</status> </expect> </test>
TRAM-PAM testa il protocollo client/server PAM.
TRAM-UPIM testa il protocollo server/server UPIM. Include tutti i test di TRAM-PAM piu` altri specifici del protocollo UPIM.
Testo di un post contenente #hashtag, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio #portiere) o del tesauro esteso (ad esempio #roma) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, http://www.example.com/song.mp3), o un po' di video (ad esempio, http://www.example.com/video.ogv), e immagini (ad esempio, http://www.example.com/pic.png).
<article> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). </article>
<article prefix=" sioc: http://rdfs.org/sioc/ns# ctag: http://commontag.org/ns# skos: http://www.w3.org/2004/02/skos/core# dcterms: http://purl.org/dc/terms/ tweb: http://vitali.web.cs.unibo.it/vocabulary/" about="/tw12/pippo/11" typeof="sioc:Post" rel="sioc:has_creator" resource="/tw12/pippo" property="dcterms:created" content="2006-09-07T09:33:30Z"> Testo di un post contenente <span rel="sioc:topic">#<span typeof="ctag:Tag" property="ctag:label">hashtag</span></span>, altri hashtag che si riferiscono a concetti del tesauro condiviso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere" rel="skos:inScheme" resource="http://vitali.web.cs.unibo.it/TechWeb11/thesaurus">portiere</span> </span>) o del tesauro esteso (ad esempio <span rel="sioc:topic">#<span typeof="skos:Concept" about="/sport/calcio/portiere/roma" rel="skos:inScheme" resource="http://ltw11.web.cs.unibo.it/thesaurus">roma</span></span>) o link sparsi (ad esempio, http://www.example.com), e perché no un po' di audio (ad esempio, <span resource="audio" src="http://www.example.com/song.mp3" />), o un po' di video (ad esempio, <span resource="video" src="http://www.example.com/video.ogv" />), e immagini (ad esempio, <span resource="image" src="http://www.example.com/pic.png" />). </article>
<span rel="sioc:reply_of" resource="/tw34/pluto/76" />Invece quando un articolo è considerato un respam di un altro, è necessario inserire il seguente tag span:
<span rel="tweb:respamOf" resource="/tw34/pluto/76" />Dove resource sta per l'articolo replyato o respammato. Per quanto riguarda l'inserimento degli altri codici RDF, si consiglia la lettura dell'apposito paragrafo.
Content-type: text/html, application/xml, application/rdf-xml, text/html+xml, ...; charset=UTF-8al posto di:
Content-type: text/html; charset=UTF-8Questo perché i gruppi da 12CFU devono poter soddisfare richieste di vario tipo, oltre al semplice text/html.
<span id="geolocationspan" long="0000.0000" lat="0000.0000" />I progetti da 6CFU dovranno ignorare questi particolari hashtag.