Manipulación de Base de Datos y Archivos con Prolog

En primer lugar cargamos la base de datos con los siguientes datos de países con sus respectivas capitales:

:- dynamic capital_of/2

capital_of(suiza,berna).
capital_of(chile,santiago).
capital_of(eeuu,washington).
capital_of(estados_unidos,washington).
capital_of(italia, roma).
capital_of(francia, paris).
capital_of(austria, viena).
capital_of(alemania, berlin).
capital_of(españa, madrid).
capital_of(peru, lima).
capital_of(mexico, ciudad_de_mexico).

Prolog tiene la capacidad de adquirir nuevas cláusulas en tiempo de ejecución probemos la siguiente linea una vez compilado la base:

?-capital_of(hawaii, X).
Nos damos cuenta que no se pudo unificar, ahora prueba:
?- listing.
listing muestra todas las cláusulas que conforman el programa en memoria hasta el momento. Ahora prueba:
?- listing(capital_of).
Ésto sólo muestra aquellas cláusulas asociadas al predicado indicado como parámetro.

Se pueden incluir más cláusulas a la base de datos mediante el predicado assert/1:
?- assert (capital_of(hawaii, honolulu)).
Sin embargo, ésto sólo funciona para predicados que han sido marcados como dínamicos mediante el predicado dynamic/1. de la forma como se marcó al predicado de nuestra base de datos.

Ahora como ya hemos ingresado datos a la memoria hacemos:
?- capital_of(hawaii, X).
Y esto nos resulta una respuesta exitosa.

Para Eliminar una cláusula hacemos los siguiente:
?- retract (capital_of(hawaii, honolulu)).
Existen más predicados que permiten inspeccionar el estado de la base de datos, inclusive para construir y ejecutar dinámicamente predicados en tiempo de ejecución. Para mayor información, puedes revisar la base de datos.

Usando archivos con tell('mi_archivo') se abre al archivo 'mi_archivo' y redirige la escritura hacia él, análogo a see. Para cerrar al archivo, aplicar told/0.
?-tell('mi_archivo'), write('andrea'), nl, write('javier'), nl, told.
Tras ejecutar la consulta anterior, revisa si existe el archivo 'mi_archivo' y si su contenido es el esperado.

Ahora, vuelve a leer los datos escritos mediante:
?-see('mi_archivo'), read(X), read(Y).
Ahora carga el programa 'learner.pl' y ejecuta start. Juega un rato con él. Para finalizarlo, ingresa stop.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File learner.pl %
% Un pequeño programa que modifica su propia base de conocimientos. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


start :- consult('bdc.pl'),
nl,
write('Escribe los nombres completamente en minúsculas,'), nl,
write('seguidos de un punto.'), nl,
nl,
process_a_query.

process_a_query :- write('País? '),

read(Pais),
answer(Pais).

% Si el usuario ingresa "stop.", entonces grabar la nueva
% base de conocimientos y salir.
answer(stop) :- write('Grabando la base de conocimientos...'), nl,
tell('bdc.pl'),
listing(capital_of),
told,

write('Listo.'), nl.

% Si el país ya está en la base de conocimientos, entonces retornar
% el nombre de su capital.
answer(Pais) :- capital_of(Pais, Ciudad),
write('La capital de '),
write(Pais),
write(' es '),
write(Ciudad), nl,
nl,
process_a_query.

% Si el país no está en la base de conocimientos, entonces pedir
% el nombre de la capital e ingresar este fact a la base.
answer(Pais) :- \+ capital_of(Pais, Ciudad),
write('No conozco la capital de ese país.'), nl,
write('Por favor, dime cual es.'), nl,
write('Capital? '),
read(Ciudad),
write('Gracias.'), nl, nl,
assert(capital_of(Pais, Ciudad)),
process_a_query.
Revisa el programa, modifícalo, de manera que al ingresar delete, el programa borre un país de la base de datos, tal como indica el siguiente diálogo:

...
País? chile.
La capital de chile es santiago

País? delete.
Qué país deseas borrar? chile.
Se borró chile.

País? chile.
No conozco la capital de ese país.
...


Esto es una pequeña ayuda que se puede proporcionar para empezar a trabjar con base de datos y archivos usando Prolog.

Ver mi Dominio de mi Host en la misma pc

A muchos nos ha pasado que, al instalar un servidor en nuestro en nuestra pc, ya sea en Windows como en Linux, para visualizar nuestra pagina web recurrimos a esto:
http://127.0.0.1/
http://localhost
o también http://mi-ip/
pero cuando adquirimos un dominio para nuestro Host pasa de que en muchos casos no podemos visualizar la página con el dominio que hemos adquirido ya sea gratuito no-ip o comprado http://www.mi-dominio.com, bueno pues la solución posible para poder ver nuestra web es modificando nuestro archivo:
Para Linux: /etc/hosts
Para Windows: file:///C:/WINDOWS/system32/drivers/etc/hosts

Y modificamos lo siguiente:
--------------------------------------------

# Por ejemplo:
#
# 102.54.94.97 rhino.acme.com # servidor origen
# 38.25.63.10 x.acme.com # host cliente x

127.0.0.1 localhost
10.0.0.1 www.mi-dominio.com //este es el agregado
---------------------------------------

Eso es todo suerte.