Version 2 — Septembre 2017 — erational
Archive de la page http://www.igor-web.net/spip.php?article122
voir aussi :
http://web.archive.org/web/20120719180453/http://www.igor-web.net/spip.php?article122
----
Vers un web de donnée.
Une modeste mise en œuvre de RDFa dans SPIP.
J’avais déjà expérimenté les microformats dans des squelettes SPIP, on peut également RDFaiser grâce à Got et ses Petites cases.
Commencer par lire les trois articles suivant avant de revenir ici pour voir une application simpliste dans un squelette article.html :
Pourquoi ne pas l’exprimer clairement dans le code via RDFa ? Il suffirait de changer les templates/squelettes/themes de votre site, en y introduisant du RDFa, et le tour est joué, on a du RDFa généré automatiquement et à peu de frais et vous contribuez facilement à la construction du Web de données.
Source : RDFaiser votre blog, 1re partie : la théorie.
Préparer un squelette de page article « RDFaisé ».
Il existe une DTD XHTML+RDFa 1.0 qui est fait pour embarquer des données dans votre page web en utilisant RDFa. Il va falloir modifier votre squelette comme suit :
#CACHE{720000}
<BOUCLE_articlepage(ARTICLES){id_article}{unique}>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
On se contente ici de repomper ceux de l’exemple de Gauthier dans l’article précité RDFaiser votre blog, 2e partie : la pratique. dans l’élément html. La seule partie SPIP étant dédiée à la lang du document par l’attibut xml:lang.
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:sioc="http://rdfs.org/sioc/ns#"
xmlns:sioctype="http://rdfs.org/sioc/types#"
xmlns:skos="http://www.w3.org/2004/02/skos/core#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xml:lang="#LANG">
Le squelette basique tel qu’il se présente à ce stade dans lequel on affiche uniquement le Titre, l’auteur, la date de publication, les mots-clés associés et le texte de l’article :
<BOUCLE_articlepage(ARTICLES){id_article}{unique}>
[snip]
<body>
[(#REM) Titre de l'article]
<h1>#TITRE</h1>
[(#REM) L'auteur de l'article]
<p><BOUCLE_auteur(AUTEURS){id_article}{0,1}><a href="#URL_AUTEUR">#NOM</a></BOUCLE_auteur>.</p>
[(#REM) La date de publication]
<p>Publié le [(#DATE|affdate_court)].</p>
[(#REM) Les mots-clés associés]
<p>Thèmes: <BOUCLE_motsarticle(MOTS){id_article}{par titre}{", "}><a href="#URL_MOT">#TITRE</a></BOUCLE_motsarticle>.</p>
[(#REM) Le texte de l'article]
[(#TEXTE)]
</body>
</html>
</BOUCLE_articlepage>
Les commentaires du code sont ceux de l’article original, augmentés d’explications spipiennes introduites par #REM.
<body>
<!-- je déclare que cette partie du code correspond à un billet de blog, en utilisant SIOC type et que l'URL du billet correspond au sujet des triples qui vont être déclarés ensuite grâce à l'attribut about -->
[(#REM) on indique dans l'attribut about l'URL absolu de l'article.]
<div id="billet" instanceof="sioctype:BlogPost" about="#URL_SITE_SPIP/#URL_ARTICLE">
<!-- J'indique que le billet fait partie du blog dont l'URL est déclaré avec l'attribut href-->
[(#REM) indique l'URL sur site spip dans l'attribut href]
<span rel="sioc:has_container" href="#URL_SITE_SPIP"/>
[snip]
</div>
<!-- Le titre du billet. Vous remarquerez que c'est l'attribut property qui est utilisé, car l'objet n'est pas une ressource, mais une chaîne de caractères-->
<h2 property="dc:title">#TITRE</h2>
<!--La date du billet. Dans ce cas, l'objet doit être sous une forme normalisée pour une exploitation automatique par les machines. L'attribut content est donc utilisé pour ne pas prendre en compte le contenu de l'élément et l'attribut datatype pour indiquer le type de données -->
[(#REM) les filtres de date de SPIP permettent cette forme normalisée de date]
[<p>Publié le <span property="dcterms:created" content="[(#DATE|affdate{'Y-m-d'})]" datatype="xsd:date">(#DATE|affdate_court)</span></p>]
J’utilise ici une boucle auteur pour pouvoir avoir accès facilement aux balises de la boucle #AUTEURS comme #NOM et #URL_AUTEUR.
<!-- l'auteur du billet Je me contente ici du strict minimum des informations. --><p>Par <BOUCLE_test_auteur(AUTEURS){id_article}{0,1}>
<span rel="sioc:has_creator">
<span instanceof="sioc:User">
<span property="rdfs:label" content="#NOM"><a href="#URL_AUTEUR">#NOM</a></span>
</span>
</span>
</BOUCLE_test_auteur>
</p>
Les tags ou mot-clés de l'article
<p>Thèmes :
<BOUCLE_motsarticle(MOTS){id_article}{par titre}{", "}>
<span rel="sioc:topic">
<span instanceof="skos:concept">
<span property="skos:prefLabel" content="#TITRE">
<a href="#URL_MOT">#TITRE</a>
</span>
</span>
</span>
</BOUCLE_motsarticle>
</p>
Voilà c’est fini pour le moment. À vous de reprendre les éléments de squelettes de cet article. Les pages articles du présent site sont désormais RDFaisées.