Przykład użycia JPL do komunikacji Prolog'a z Java

Poniżej przestawiam prosty przykład mocno inspirowany tutorialem do JPL. Probując wywołać predykat Prologa z kodu Javy posługujemy się następującą składnią :

Query q2 =
      new Query(
        "child_of",
        new Term[] {new Atom("joe"),new Atom("ralf")}
        );
 
System.out.println(
     "child_of(joe,ralf) is " +
      ( q2.query() ? "provable" : "not provable" )
    );

Przykład pokazuje przesłanie zapytania do bazy wiedzy prologa. Można ten mechanizm wykorzystać do wywoływania predykatów wewnątrz obiektów LogTalk, czyli de facto do wywoływania metod na obiektach LogTalk z obiektów Java'y.

Gdy konieczne jest wysłanie komunikatu do obiektu Java'y z poziomu Prologa, JPL oferuje następujące rozwiązanie :

Predykat jpl_new/3 pozwala na utworzenie instancji obiektu klasy z Javy :

jpl_new( 'javax.swing.JFrame', ['frame with dialog'], F)

Natomiast predykat jpl_call/4 pozwala wywołać metodę na utworzonym powyżej obiekcie:

jpl_call( F, setVisible, [@(true)], _)

Jak widać JPL umożliwia obustronne wywoływanie metod pomiędzy obiektami klas zdefiniowanych w Javie i logiką opisaną w Prologu.