Esto es un howto o codekata en Prolog para almacenar nuevo conocimiento en una base de conocimiento dinámicamente. Para hacer esto se utilizan dos función assert para añadir los nuevos conocimientos. También tenemos disponible la función retract o retractall para borrar conocimientos.
Código fuente
Un arranque para hacer esto puede ser algo tal que así:
% Testing retractall y assert..
persona(maria).
persona(jose).
Esto simplemente establece que maria es una persona, y que jose también es una persona. Si ahora queremos añadir mientras que consultamos a Prolog que jaime también es una persona podríamos decirle a Prolog:
?- assert(persona(jaime)).
Ahora, tal y como se ve en la imagen podríamos consultar las personas que están almacenadas en la BD haciendo persona(X). Así X tomará todos los valores posibles del predicado persona(), es decir, todos los átomos ligados al predicado persona, y los lista como en la imagen del principio.