2012-04-08 12 views
5

Mam plik bazy danych Prolog (test_inserts.p), który użyłem do wstawienia wszystkich moich danych.Prosty problem PROLOG: Jak testować wiele zapytań w bazie danych Prolog?

Mam również plik zapytań Prolog (test_queries.pl), który ma wszystkie zapytania Prolog, które napisałem, aby otrzymywać określone informacje z mojej bazy danych.

Zastanawiam się, jak właściwie używać zapytań test_queries.pl do mojego pliku bazy danych test_inserts.p przy użyciu gprologu ? Miałem nadzieję, że istnieje sposób ładowania obu w tym samym czasie, i jakoś być w stanie wydać polecenie, które zapytanie ma zostać uruchomione, zamiast konieczności ponownego wpisywania każdego zapytania, które chciałbym uruchomić ...

Odpowiedz

5

Użyłem dyrektywy ISO initialization/1 w test_queries.pl, aby uzyskać efekt widoczny na dole.

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]). 

następnie wywołać gprolog z --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. BTW, istnieje [GNU Prolog 1.4.1] (http://gprolog.univ-paris1.fr/unstable/?C=M;O=D) – false

+0

@false: Właśnie zainstalowałem ze źródła dziś rano. Jak szybko się porusza ... – CapelliC