Le point sur la sémantique

Actualité par
Créé le (18183 lectures)

Voilà un mot parfois employé à tort et à travers pour un peu tout et n'importe quoi. C'est un terme assez flou, à la limite du terme savant, parfait pour noyer tout le monde et ne rien dire ! Il paraît donc nécessaire de voir ce qui se cache derrière ceci.

Sémantique, sémantique web

Il convient en premier lieu de distinguer la sémantique en général de la sémantique web, nous ne nous occuperons que de la sémantique web ici. Disons pour faire vite que, dans le sens linguistique du terme, c'est l'étude de la relation entre le signifié et le signifiant (cf vos cours de français du lycée).

Sémantique web pour le HTML

Souvent lorsque l'on parle de sémantique sur les forums HTML, c'est sous entendu sémantique web bien sûr, mais alors qu'est ce qui se cache derrière tout ceci ?
Eh bien finalement, pas tant de choses que cela contrairement à ce que l'on pourrait croire vu la façon dont est employé ce terme. L'idée générale pour le HTML, c'est que vous avez un certain nombre de balises à votre disposition qui ont différentes fonctions, différents attributs pour affiner leur rôle, et le jeu c'est de les utiliser au bon endroit, au bon moment et de la bonne manière.

Par exemple, si vous souhaitez indiquer qu'un texte est un titre, eh bien il vous faudra utiliser l'une des balises de titres qui sont à votre disposition, de <h1> à <h6>, à utiliser en fonction du contexte des titres précédents (un titre <h3> implique qu'il y ait au moins un titre <h2> et un <h1> avant). Un bloc de citation sera balisé avec <blockquote> mais attention si vous connaissez la source de la citation, il ne faut pas oublier d'indiquer l'attribut cite pour indiquer d'où est tirée la citation.

Pour revenir à la définition linguistique de la sémantique, on pourrait considérer un texte de titre comme le signifié, et la balise de titre comme le signifiant.

Ce sont ce genre de choses qui déterminent la sémantique du langage HTML, le bon usage des éléments et attributs. Oui, mais pourquoi tout ceci ?

Sémantique web pour les machines

Il est important d'utiliser un code sémantique, au delà de l'aspect qualitatif qu'il implique, pour les moteurs de rendu (navigateurs entre autres), les parseurs (scripts d'analyse de la source (XML, HTML, ou d'à peu près n'importe quel langage)), les scripts d'analyse du code source, les moteurs de recherche, etc.
En effet, un navigateur pourra extraire la structure d'une page web en analysant le code, récupération des balises de titre dans l'ordre d'apparition et zou, voilà un plan de page fabriqué en moins de temps qu'il n'en faut pour le dire et ce de façon automatisée !

De même, vous pouvez créer des scripts analysant vos pages, on peut imaginer la création d'un glossaire par exemple, récupération des balises acronym et abbr avec leur attribut title et voilà un glossaire tout fait. Ce ne sont ici que des exemples, les possibilités sont infinies, mais elles reposent toutes sur la sémantique du code, qui dans ce cas est définie comme étant la possibilité d'être interprété par une entité non intelligente, un automate.

Nota Bene : Pour créer les scripts ou autres moyens d'analyse du code, vous avez plusieurs outils à votre disposition, JavaScript et le DOM, XSLT, les expressions régulières (c'est plutôt brutal pour ce genre de manipulation), etc. Ce ne sont pas des exemples utopico-futuristes.

Pour les moteurs de recherche aussi, même si c'est encore peu développé, nul doute que ces derniers en tiendront compte de plus en plus et de façon pertinente.

Pour conclure

Nous avons vu où intervient la sémantique (et comment) pour le HTML, mais comme vous l'avez certainement compris, aucun langage normalisé n'échappe à la règle, MathML, FOAF, etc. Dès qu'un élément est défini de façon claire et que cette définition est accessible à l'automate, ce dernier est capable d'interpréter votre code.

En complément, un article sur le respect de la sémantique web sur Openweb.

Commentaires

Maxwell a dit le

Merci Olivier,

cela fait du bien de se rafraichir la mémoire,
excellent post :-)

Pascal a dit le

Je n'ai jamais entendu l'expression "sémantique web". Je pense qu'il vaudrait mieux parler de "sémantique des balises (x)html", comme le fait l'article d'Openweb que tu cites, Olivier. D'autant que l'expression "sémantique web" est proche, dans sa tournure, de "web sémantique", qui est tout autre chose. Ton billet gagnerait d'ailleurs, à ce sujet, à bien dissocier la sémantique des balises html d'une part, et le web sémantique d'autre part, pour ne pas semer la confusion dans l'esprit de celles et ceux qui découvrent ces notions.

Olivier a dit le

@ Pascal > euh, je pense justement que je fais cette distinction (peut être pas suffisament marquée), d'une part j'explique au niveau du HTML (paragraphe "sémantique web pour le HTML"), et d'autre part, tout langage web normalisé dans le paragraphe qui suit.

Pour le "web sémantique" et la "sémantique web", c'est pareil selon moi, tu joues sur les mots, le web sémantique, c'est tout ce qui sur le web est considéré comme sémantique, et la sémantique web, c'est la sémantique au niveau du web ce qui recoupe la première idée.

Je veux bien une précision ou quelque chose sur le fait de mieux séparer la sémantique du HTML de la sémantique web en général (le premier faisant de toute façon partie du second). Il m'avait semblait l'avoir fait comme je le disais.

84mickael a dit le

Juste un petit message pour signaler que les caractères spéciaux HTML (< et > notamment) ne sont pas codés (en &lt; et &gt;) dans les fils RSS et Atom. Il en résulte un présentation... spéciale !

Je préconise un petit coup de htmlspecialchars. ;)

Olivier a dit le

84mickael > je te préconise de changer d'aggréteur RSS parceque ça fonctionne très bien et que c'est déjà encodé.

De toute façon, il n'y a pas de contrôle sur le code produit par DotClear.

Kurt a dit le

Et bien moi, je suis content de voir que je ne me trompais en employant ce terme malgrès la méfiance du bienfondé l'utilisation que j'en avais..(formulation confuse, je l'avoue). Mon problème est plutot justement que l'on pense trop souvent que j'utilise ce terme à mauvais escient..

gizmo a dit le

Olivier > Je suis desole de revenir dessus, mais Pascal a raison. Ta description de web semantique est bien trop reductrice.
Quand on te lit, on a l'impression que le web semantique (semantique web comme tu l'appelles) se resume a aider les parseurs de HTML et eventuellement de XML pour des applications aussi "basiques" que qu'un moteur d'indexation ou un moteur de rendu.
Tes exemples ne se basent d'ailleurs que sur des balises issues du (X)HTML.

Le web semantique, c'est autre chose, ou plutot, c'est beaucoup plus que ca. Il s'agit de technoligies comme le RDF ou l'OWL qui permet de definir des graphes de relation, des onthologies, d'utiliser des moteurs d'inference, de connecter des informations diverses pour obtenir un veritable moteur de recherche a base d'IA, etc...

Olivier a dit le

Houlà, je crois que vous vous méprenez sur ce billet !

Il ne s'agit pas de faire une description exhaustive du web sémantique !
Et je l'ai dis dans le billet, ce ne sont que des exemples, et j'ai bien précisé ensuite que n'importe quel langage définit de façon clair peut être utilisé de façon sémantique.

Bien sûr que oui je ne dis pas tout, comme si un billet de blog le pouvait !
Je ne fais qu'expliquer quelques possibilités pour illustrer.

> aucun langage normalisé n'échappe à la règle, MathML, FOAF, etc. Dès qu'un élément est défini de façon claire et que cette définition est accessible à l'automate, ce dernier est capable d'interpréter votre code.

Jamais je ne me suis cantonné au HTML, "n'importe quel langage normalisé" => ahh il n'y a que le HTML qui soit normalisé ?

Désolé de ne parler que de choses "basiques", mais déjà qu'il y a confusion sur l'idée de "base", pourquoi aller compliquer encore plus.

Olivier a dit le

Je veux bien ajouter/modifier des choses, mais pas quand ça sort du cadre de ce billet qui vise simplement à expliquer ce qu'est la sémantique web basé sur un ou 2 exemples simples et concrets.

Peut être est-ce le titre qui vous a induit en erreur, auquel cas je peux le changer, si vous avez des suggestions.

Je ne suis en tout cas pas la personne pour rédiger un topo exhaustif sur le sujet.

Laurent Denis a dit le

Les expressions employées, "Sémantique web pour le HTML", "la sémantique du langage HTML", me semble, quant à moi, suffisamment explicite pour délimiter le champ (volontairement réduit) de ce billet ;)

laruiss a dit le

Hello, tu l'as regardé, la source de cette page ? pas *une seule* balise table :-D
J'dis ça, j'dis rien...