SpinozaBase

Attention : Cette page aride et austère traite essentiellement d'informatique, à peine de philosophie ; elle présuppose un certain nombre de connaissances techniques. Pour une utilisation standard de notre système, vous pouvez donc allègrement vous dispenser de sa lecture.

Une page plus accessible, destinée aux utilisateurs débutants, est en cours de rédaction.

XML

La « langue maternelle » de la SpinozaBase est le langage XML. C'est de ce puissant langage que sont dérivés tous les outils rassemblés ici. La matrice du projet est en effet le fichier ethicadb.xml, qui contient l'intégralité du texte latin de Spinoza, enrichi de balises spécifiques. Par souci de cohérence avec le contenu, l'ensemble du code a été écrit en latin.

Les entités argumentatives

Le texte de Spinoza a d'abord été morcelé en entités argumentatives (entitas) : parties (pars), définitions (definitio), axiomes (axioma), lemmes, etc. Chaque entité est encadrée par des balises XML nommées <entitas>, dont voici quelques exemples typiques :

Comme vous pouvez le constater, la balise contient déjà certaines informations :

Nomenclature

Chaque entité argumentative est identifiée par un code tel que 101, 104d, 213l5, 244sc2, etc. Sous leur aspect mystérieux, ces identifiants sont régis par un petit nombre de règles simples, et sont la clef du système logiciel adopté par notre projet. La nomenclature adoptée pour les identifiants est la suivante.

Les renvois

L'Éthique contient de nombreux renvois entre les entités argumentatives ; notamment — mais non exclusivement — les propositions renvoient à des définitions, axiomes, ou autres propositions. Dans la syntaxe de notre fichier XML, chaque renvoi est identifié par une balise nommée <patet-ex>, en référence à la démonstration de la proposition 1 de la première partie de l'Éthique : patet ex definitione 3 et 5. La structure de cette balise est relativement simple, comme le montrent les exemples suivants :

C'est donc sous cette forme qu'a été structuré en XML le texte latin de Spinoza. Cette syntaxe permet par la suite d'automatiser certaines opérations, comme nous allons le voir.

XSLT et HTML

La moindre des choses que nous pouvions proposer était une version en HTML du texte latin. Il aurait été fastidieux de retaper tout le texte, sans compter les erreurs qui auraient pu s'y ajouter à notre insu. Aussi fallait-il un moyen de convertir automatiquement notre fichier XML en HTML. Par chance, le langage XSLT, dialecte du XML, a été conçu pour cela — entre autres choses, comme nous le constaterons par la suite.

C'est pourquoi nous avons écrit la feuille de style ethicadb.xsl. Appliquée au fichier XML réalisé précédemment, elle a généré une page web : ethica.html. Cette édition latine de Spinoza utilise les ressources de l'hypertexte pour relier chaque entité argumentative, d'une part aux entités auxquelles elle renvoie supra, de l'autre à celles qui s'y réfèrent infra. Cela peut faciliter la lecture du livre, en montrant par exemple concrètement ce que telle ou telle définition sert véritablement à démontrer. L'on peut aussi s'apercevoir avec surprise que certaines définitions, comme la troisième du deuxième livre, ne sont pas utilisées explicitement une seule fois dans l'ouvrage.

Pour être plus précis, il ne s'agit pas véritablement de HTML mais de XHTML ; comme son nom l'indique, il s'agit une fois encore d'un dialecte XML.

SQL

Tous les langages utilisés jusqu'ici — XML, XSLT, XHTML — étaient en dernière instance du XML. Langage puissant et souple, vous aurez déjà pu le remarquer. Mais qui connaît également certaines limites, et notamment la difficulté d'effectuer des recherches complexes. Il existe un langage d'une grande efficacité pour ceci, mais il n'a strictement aucun lien de parenté avec XML ; il s'agit de SQL.

Il fallait donc pouvoir traduire notre fichier XML en SQL ; ce qui a pu être réalisé au moyen d'une nouvelle feuille de style XSLT nommée xml2sql.xsl. Celle-ci a généré le programme SQL ethicadb.sql, qui à son tour a créé la base SQLite ethicadb.db (ce dernier fichier, binaire, n'est pas lisible par des humains).

Les entités

La base SQL est composée de trois tables. La première, entitas, contient la liste de toutes les entités argumentatives, avec les champs suivants :

entitas
id clavis typus numerus titulus
1p1pars1De Deo
21ddefinitiones
31d1definitio1
41d2definitio2
...............

Les renvois

La deuxième table de la base SQL s'appelle patetex ; elle contient trois champs :

patetex
idexad
11d3101d
21d5101d
31d3102d
41a5103d
.........

Les inclusions

La troisième et dernière table, inest (« est dans » en latin), désigne l'inclusion d'une entité dans une autre. Par exemple, la démonstration de la première proposition de la première partie (101d) est incluse dans la première proposition (101), elle-même comprise dans la première partie (p1). La table inest contient trois champs :

inest
idcircaintra
1p11d
2p11d1
3p11d2
4p11d3
.........

Pour utiliser la base SQL, il faut soit connaître ce langage, soit utiliser une interface qui vous en dispense ; simplifier l'utilisation de cette base est notre principal défi. Voici à titre d'exemples quelques requêtes possibles :

afficher la totalité de la table entitas SELECT * FROM entitas;
afficher la totalité de la table patetex SELECT * FROM patetex;
le palmarès, dans l'ordre, des entités les plus référencées, avec le nombre de citations de chacune SELECT ex, count(ex) AS cnt FROM patetex GROUP BY ex ORDER BY cnt DESC;

PHP

Tous les fichiers et programmes mentionnés ci-dessus fournissent la structure technique du projet, sans toutefois donner véritablement les moyens de les utiliser, sauf à ceux qui connaîtraient déjà les langages XML et SQL.

Comme l'on ne saurait attendre de tout historien de la philosophie qu'il ait été initié à SQL, langage relativement peu intuitif, nous créerons progressivement des interfaces facilitant l'utilisation de ces ressources. Le meilleur candidat pour réaliser des interfaces interactives est le langage PHP, et c'est pourquoi nous aurons recours à ses services.

Licence et téléchargement

Tous les fichiers et programmes du projet sont des documents et logiciels libres, sous licence GPL et en téléchargement libre. Vous pouvez, sans même avoir à solliciter mon accord, les copier, les modifier et les redistribuer.