🍌 Un cours pas comme les autres

Du Texte au Sens

Trois cours pour voyager du .split() aux ontologies OWL,
en passant par TF-IDF, les embeddings, Prolog, Turtle, et SPARQL.
Avec humour, culture, et du code qui marche.

Bienvenue dans le Web Sémantique

Au début, il y avait le texte. Des fichiers. Des mots. On les a découpés, comptés, pondérés, projetés dans l'espace. Puis on s'est dit : « Et si on comprenait ce que les mots veulent dire, plutôt que juste les compter ? »

Ce cours est une réponse à cette question. En trois actes, on va construire ensemble un moteur de recherche sémantique complet, de la tokenisation à l'ontologie OWL en passant par Prolog, les embeddings, et SPARQL. Tout est en Python. Tout est expliqué. Rien n'est laissé dans la boîte noire.

« Le web sémantique n'est pas un projet de recherche. C'est un état d'esprit. C'est se dire que les données devraient être reliées, comprises, et réutilisables. Et accessoirement, que les ordinateurs pourraient faire mieux que "mot-clé trouvé 42 fois, page rank 0.003". » — Tim Berners-Lee (diplomatiquement reformulé)
📜 Petite chronologie :
1945 — Vannevar Bush imagine le Memex (l'ancêtre du web)
1989 — Tim Berners-Lee invente le Web (HTML + HTTP)
1998 — Premier papier sur le « Web Sémantique »
2004 — RDF et OWL deviennent des standards W3C
2012 — Google lance le Knowledge Graph (basé sur RDF)
202x — Vous, ici, en train de construire le vôtre. Le prochain pas, c'est vous.
COURS #1 Du Texte au Sens

Mots, vecteurs et recherche

Le premier cours pose les fondations : comment passer du texte brut à un moteur de recherche qui classe les documents par pertinence.

01

Tokenisation

.split(), stopwords, le début de tout.

02

Index inversé

Le cœur de tout moteur de recherche.

03

Recherche booléenne

ET, OU, parenthèses — un parseur complet.

04

Stemming

Ramener « chemins », « chemine » à « chemin ».

05

TF-IDF

Pondérer les mots qui comptent vraiment.

06

BM25

TF-IDF sous stéroïdes (k₁=1.5, b=0.75).

07

Word Embeddings

De Skip-gram à Word2Vec.

08

Doc2Vec & Whoosh

Recherche sémantique complète.

Code : recherche.pyVoir le cours complet →

Python sklearn gensim Whoosh Flask
COURS #2 Des Mots aux Faits

Triplets, unification, Prolog, Turtle

Le deuxième cours change de paradigme : on ne compte plus les mots, on structure la connaissance en triplets (sujet-verbe-complément). On construit un mini-Prolog, un parseur Turtle, et on explore l'unification logique.

01

Triplets

Socrate est_un homme. Homme est mortel.

02

Graphe de connaissances

Navigation et inférence par héritage.

03

Unification

Faire correspondre des motifs avec variables.

04

Mini-Prolog

Chaînage avant : règles + faits → conclusions.

05

Syntaxe Prolog

Parseur de .pl : on écrit comme du vrai Prolog.

06

Turtle / RDF

Le standard du web sémantique pour les triplets.

Code : raisonnement.pyVoir le cours complet →

COURS #3 Des Faits aux Concepts

OWL, raisonnement, SPARQL, Fuseki

Le troisième cours ajoute la logique formelle : classes, propriétés, restrictions, constructeurs ⊓ ⊔ ¬ ∃ ∀. On construit un mini-raisonneur OWL, on utilise Owlready2 avec HermiT, et on déploie un serveur SPARQL (mini Fuseki) avec interface web.

01

Classes & hiérarchie

Chien ⊑ Animal ⊑ ÊtreVivant. Héritage multiple.

02

Propriétés

Domaine, range, inférence de types.

03

Restrictions

∃ mange.Viande, ∀ mange.Végétal, cardinalités.

04

Constructeurs

⊓ ⊔ ¬ — l'algèbre des concepts.

05

Mini-raisonneur

Classification + vérification de cohérence.

06

Owlready2

HermiT, ontologies réelles. Le vrai OWL.

07

Pizza Ontology

Le Hello World d'OWL. Avec fromage.

08

SPARQL & Fuseki

Interroger le graphe. Serveur web. API REST.

Code : mini_fuseki.py + raisonnement.pyVoir le cours complet →

TRAVAUX DIRIGÉS Mets-toi à l'épreuve

24 exercices, du ★ au ★★★★

Un sujet de Travaux Dirigés accompagne les cours #2, #3 et #4. De la modélisation de triplets à la requête SPARQL, en passant par l'unification, Prolog, OWL, les constructeurs logiques et le déploiement : tout y est.

🧠

8 exercices — Cours #2

Triplets, graphe, unification, Prolog, Turtle. La base logique.

🔬

10 exercices — Cours #3

OWL, classes, restrictions, constructeurs, Owlready2, raisonneur.

🚀

6 exercices — Cours #4

SPARQL, CONSTRUCT, API REST, serveur Fuseki, déploiement CI/CD.

📋 Sujet du TD →
🎯 Niveaux de difficulté : ★ Facile · ★★ Moyen · ★★★ Difficile · ★★★★ Délire
Les ★★★★ sont optionnels et consistent généralement à implémenter vous-même ce que fait HermiT. En Python. Sans pause.
EXAMEN Évalue tes connaissances

1h30 — 20 points — 4 exercices

Un sujet d'examen couvre les cours #2, #3 et #4. QCM, triplets, Prolog, OWL, SPARQL — de quoi vérifier que la sémantique n'a plus de secrets pour toi.

📄 Sujet A (PDF) → ✅ Correction (PDF) →
📝 Organisation : Exercice 1 — Vrai/Faux (6 pts) · Exercice 2 — Triplets & Prolog (5 pts) · Exercice 3 — OWL (5 pts) · Exercice 4 — SPARQL (4 pts)
Sans documents. La correction détaillée avec barème est disponible pour l'enseignant.

Le Makefile : tout à portée de make

Un Makefile est fourni pour lancer chaque application d'une simple commande. Inutile de se souvenir des chemins ou des options :

makeAffiche l'aide
make prepareTélécharge les code depuis semantic.lambda-flow.fr
make rechercheLance le moteur de recherche (cours #1)
make prologLance le mini-Prolog (cours #2)
make raisonnementLance Owlready2 (cours #3)
make serveurLance le serveur SPARQL sur :8080
make fusekiSynonyme de make serveur
make webLance le serveur Flask sur :5000
make allExécute toutes les démos
make cleanNettoie les caches Python
🐚 Note culturelle : Le Makefile est plus vieux que la plupart des étudiants. Inventé en 1976 par Stuart Feldman (un des premiers hackers des Bell Labs), il servait à compiler des programmes C. Aujourd'hui, il sert à tout : lancer des tests, déployer des sites, et — dans notre cas — faire de la sémantique en une commande. C'est ça, la puissance de la compatibilité ascendante.

Les fichiers du cours

FichierRôleCoursCommande
recherche.py Moteur de recherche : TF-IDF, BM25, embeddings, Whoosh, Flask #1 python recherche.py
raisonnement.py Mini OWL/Prolog : classes, restrictions, unification, Owlready2 #2 & #3 python raisonnement.py
mini_fuseki.py Serveur SPARQL : stockage RDF, parseur Turtle, interface web #3 python mini_fuseki.py --exemple
Makefile Orchestrateur des commandes make <commande>
cours_web_semantique.html Support du cours #1 #1 Ouvrir dans un navigateur
cours_web_semantique_2.html Support du cours #2 #2 Ouvrir dans un navigateur
cours_web_semantique_3.html Support du cours #3 #3 Ouvrir dans un navigateur
td_web_semantique.html Sujet de Travaux Dirigés (24 exercices) #2 à #4 Ouvrir dans un navigateur
correction_td_web_semantique.html Correction complète des 24 exercices #2 à #4 Ouvrir dans un navigateur

Le parcours complet

Ces trois cours forment un parcours cohérent. Chacun peut être lu indépendamment, mais ils se complètent :

Cours #1 — Du Texte au Sens Du .split() aux embeddings

« Je sais découper du texte, pondérer des mots et calculer des similarités vectorielles. »

Cours #2 — Des Mots aux Faits Des triplets au raisonnement

« Je sais structurer la connaissance en triplets, unifier des termes et implémenter un mini-Prolog. »

Cours #3 — Des Faits aux Concepts OWL, raisonneurs, SPARQL

« Je sais modéliser une ontologie, la raisonner avec OWL, et l'interroger avec SPARQL. »

« Un voyage de mille lieues commence par un premier pas. Et souvent, ce premier pas, c'est pip install scikit-learn. » — Lao Tseu (réécriture pour informaticiens)
.split() → ⊓ ⊔ ¬ ∃ ∀