Carnet Wiki

RDFaiser un squelette SPIP

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é ».

Un DOCTYPE adapté

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

Déclarer les espaces de nom des vocabulaires RDF utilisés

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

Un squelette article.html classique

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>

Insérer maintenant le RDFa dans le code avec les balises SPIP

Les commentaires du code sont ceux de l’article original, augmentés d’explications spipiennes introduites par #REM.

Déclarer le billet de blog

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

Titre du billet

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

Date du billet

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

L’auteur du billet

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&nbsp;: 
<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.

erational - Mise à jour :25 septembre 2017 à 09h20min