Projekt zakończony
Łukasz Łysik llysik@gmail.com
Java ↔ Prolog via Sockets, examples, feasibility study, evaluation An example of enabling a Java tic tac toe GUI to interact with the Prolog tic tac toe game agent, using a socket data connector: http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/8_4.html
user_says(Q,A) :- stored_answer(Q,A). user_says(Q,A) :- \+ stored_answer(Q,_), nl,nl, ask_question(Q), get_yes_or_no(Response), asserta(stored_answer(Q,Response)), Response = A.
user_says(Q,A) :- stored_answer(Q,A). user_says(Q,A) :- \+ stored_answer(Q,_), nl,nl, java_ui_quest(Q,Response), asserta(stored_answer(Q,Response)), Response = A. java_ui_quest(Q,R) :- ask_qest_in_java(Q), get_ans_from_java(R).
Przy założeniu Java pyta prolog o diagnozę:
Przerobić to:
try_all_possibilities :- % Backtrack through all possibilities... defect_may_be(D), explain(D), fail.
defect_may_be to zapytanie do prologu…
MISSED
varda_model.pl
(oraz ew. cześć innych predykatów) ma być udostępniania przez socket jako model, do tego jest view w javieard_property
ard_hist ard_dependency patrz varda_view:dotgen_ard_body
dot -Tsvg us.dot|grep 'text-anchor' us.svg
dot -Tsvg us.dot|grep -A1 'node' us.svg
dot -Tsvg us.dot|grep -A1 'node' us.svg|cut -d ' ' -f 3|grep points|cut -d'„' -f2
Prosze o maila, jeśli coś trzeba jeszcze dodać.
tar -zxvf varda-prolog-1.0.tar.gz
cd varda-prolog-1.0
./varda therm-model.pl
:- create_server(12345).
tar -zxvf varda-gui-1.0.tar.gz
cd varda-gui-1.0/bin
java -cp ../lib/jgraph.jar:./ varda_gui.Main
Wymiana informacji odbywa się na zasadzie komunikacji synchronicznej. Serwer prologowy jest odpytywany przez cześć javową. W poniższej tabeli przedstawiony jest protokół komunikacji.
Ujednolicenie i dopracowanie protokołu
Nazwa | Zapytanie (od strony javy) | Odpowiedź (od prologa) |
---|---|---|
Pobieranie atrybutów finalizowalnych Poprawić | list_finalizeables. | [[el1],[el2],[el3]] |
Pobieranie atrybutów splitowalnych Poprawić | list_splitables. | [[el1a,el1b],[el2a,el2b],[el3a,el3b]] |
Pobieranie połączeń (zależności) | list_deps. | [[el1]-[el2],[el2]-[el3],[el3]-[el4,el5]] |
Pobieranie atrybutów z pliku .svg | list_items_from_svg. | el1@el2@el3,el4@ |
Pobieranie współrzędnych z pliku .svg | list_coords_from_svg. | 12.5,23.4@12.0,34.5@ |
Można połączyć ze sobą pobieranie atrybutów i współrzędnych. Są one pobierane z tego samego pliku za pomocą poleceń z konsolowych cat, grep, cut, tr.
Pobieranie atrybutów:
cat therm-model.svg | grep 'class="node"' | cut -d '>' -f3 | cut -d '<' -f1 | tr [:cntrl:] @
Pobieranie współrzędnych:
cat therm-model.svg | grep -A1 'class="node"' | grep polygon | cut -d '"' -f4 | cut -d " " -f1 | tr [:cntrl:] @
n-ty atrybut na liście atrybutów odpowiada n-tej współrzędnej na liście współrzędnych.