2012-04-08 22 views
5

Tüm verilerimi eklediğim bir Prolog veritabanı dosyası (test_inserts.p) var.Basit PROLOG sorunu: Prolog veritabanınıza karşı birden çok sorguyu nasıl test edersiniz?

Ayrıca, veritabanımdan belirli bilgileri almak için yazdığım tüm Prolog sorgularına sahip bir Prolog sorgu dosyası (test_queries.pl) var.

gprolog kullanırken gerçekten test_queries.pl sorgularını test_inserts.p veritabanı dosyasına karşı nasıl kullanacağımı merak ediyordum? Ben de aynı anda hem yüklemek için bir yol olacağını umuyordum ve bir şekilde çalıştırmak istedim her sorgu yeniden yazmak zorunda, yerine çalıştırmak için hangi sorguyu çalıştırmak mümkün olacak ....

cevap

5

En altta gördüğünüz etkiyi elde etmek için ISO yönergesini test_queries.pl numaralı telefondan kullandım.

test_queries.pl

test :- 
     findall(_, (a(X,Y), format('~w ~w~n', [X,Y])), _). 

:- initialization([test_inserts]). 
:- initialization(test). 

test_inserts.pl

a(X,Y) :- append(X,Y,[1,2,3]). 

sonra --consult-file

gprolog --consult-file test_queries.pl 
GNU Prolog 1.4.0 
By Daniel Diaz 
Copyright (C) 1999-2011 Daniel Diaz 
compiling /home/carlo/test_queries.pl for byte code... 
/home/carlo/test_queries.pl compiled, 5 lines read - 659 bytes written, 28 ms 
compiling /home/carlo/test_inserts.pl for byte code... 
/home/carlo/test_inserts.pl compiled, 2 lines read - 379 bytes written, 30 ms 
[] [1,2,3] 
[1] [2,3] 
[1,2] [3] 
[1,2,3] [] 
| ?- 
+0

+1 ile gprolog arayın. BTW, [GNU Prolog 1.4.1] var (http://gprolog.univ-paris1.fr/unstable/?C=M;O=D) – false

+0

@false: Bu sabah kaynağından yeni yükledim. Ne kadar hızlı hareket ediyor ... – CapelliC