lundi 24 septembre 2012

A0248 Datalog, Méthode d'Alexandre et droit du mariage

Je viens d'entendre à la radio que, selon un projet de loi, on n'écrirait plus sur les livrets de famille :.
père:
mère:

mais

parent1:
parent2:

Figurez-vous qu'il y a beaucoup de gens que ça dérange beaucoup.

Eh bien, moi aussi!

J'ai en effet passé quelques-unes des plus belles années de ma jeunesse -ou plutôt de nuits dans ma cuisine- à travailler sur la discipline informatique dite DATALOG, pour laquelle je ne suis pas peu fier d'avoir inventé la première méthode de traitement des axiomes récursifs, connue sous le nom de Méthode d'Alexandre. Hélas pour moi, des américains célèbres l'ont trouvée -pareille la même, notations comprises- ensuite quelques mois après, sans - à ma connaissance - avoir eu vent de mes travaux. Et, comme ça se passait à Stanford dans le bureau du directeur du CS Dept, figurez-vous qu'ils sont cités beaucoup plus que moi. Il n'y a pas de science juste.  Mais le sujet du jour n'est pas là.

Donc, en DATALOG, (ou en Prolog depuis bien plus longtemps), on passe son temps à écrire des clauses logiques de la forme:

père(X,Y) père(Y,Z) => grand_père(X,Z)
mère(X,Y) mère(Y,Z) => grand_mère(X,Z)
père(X,Y) mère(Y,Z) père (Z,T) => arrière_grand_père(X,T)

Il y a des milliers d'articles qui contiennent de tels exemples.

Eh bien maintenant, c'est foutu. Plus de père, plus de mère, ni de grand-père, de grand-mère, de beau-père, etc ... Mais toujours des frères, soeurs, oncles et tantes ... (Car la soeur de père1 ou la soeur de père2 c'est pareil, ce sont des tantes: la différentiation des sexes des descendants n'est pas remise en cause par le projet de loi, simplement le rôle des ascendants).

Bon, alors on fait quoi ?

parent1(X,Y) parent2(Y,Z) => ???

Va y avoir du boulot pour les ontologistes du W3C.

Faisons quelques propositions:

parent1(X,Y) parent1(Y,Z) => grand_parent1(X,Z)
parent1(X,Y) parent2(Y,Z) => grand_parent2(X,Z)
parent2(X,Y) parent1(Y,Z) =>grand_parent3(X,Z)
parent2(X,Y) parent2(Y,Z) =>grand_parent4(X,Z)

Oui mais d'autres préféreront:


parent1(X,Y) parent1(Y,Z) => grand_parent11(X,Z)
parent1(X,Y) parent2(Y,Z) => grand_parent12(X,Z)
parent2(X,Y) parent1(Y,Z) =>grand_parent21(X,Z)
parent2(X,Y) parent2(Y,Z) =>grand_parent22(X,Z)

Bon, il suffira de déclarer (en OWL ?)

grand_parent1(X,Y) <=> grand_parent11(X,Y)

Et puis il y a les arrière_grands_parents: il va y en avoir 8 ? Non, c'est plus compliqué que ça ...

Il faut aussi traiter les familles recomposées: on ne peut plus dire beau-père et belle-mère. Je vais y réfléchir demain.

Remarquez, un avantage c'est que parent c'est parent en français et en anglais.
Les gars de Stanford n'auront plus le motif jadis utilisé que mes papiers ne sont pas écrits en assez bon anglais pour les refuser.

Ce qui m’embête, c'est que Alexandre, en grec ça veut dire "Homme Fort" . Va peut-être, par les temps qui courent,  falloir trouver un autre nom, c'est pas magique, ça ?

.






Aucun commentaire: