sistemas query libreria expertos example ejercicios ejecutar descarga conectar conectado con java user-interface prolog swi-prolog jpl

java - libreria - jpl query



¿Cómo conecto mi UI Java a una aplicación JPL Prolog? (1)

Es probable que el problema sea que el texto de Prolog no está escrito en estilo invertido, como suele ser el caso de las aplicaciones Java UI.

Así que inicia tu sistema Prolog en un hilo separado. Reemplaza todo leer / 1 y escribe / 1 en tu texto de Prolog por aproximadamente:

my_read (Prompt, Value): - set_UI_prompt (Prompt), wait (signal), get_UI_value (Value).

my_write (Label, Value): - set_UI_result (Label, Value).

Dado que también se ejecuta en un segundo subproceso separado, al ingresar un valor y presionar un botón, la aplicación de interfaz de usuario debe notificar (señal).

O reescriba la lógica del sistema experto, de modo que las inferencias que conducen a una consulta o respuesta puedan ser llamadas desde el exterior de una manera gradual. Pero también se recomienda engendrar un hilo, ya que la inferencia puede llevar tiempo.

Atentamente

PD: Si su aplicación se invirtió, podría fácilmente crear un par de UI diferentes: http://www.jekejeke.ch/idatab/doclet/prod/en/docs/10_pro08/13_press/02_deploy/package.html

Estoy escribiendo una aplicación en Java utilizando JPL provisto por SWI-Prolog para llamar a Prolog desde Java.

Estoy usando Eclipse como el IDE. No sé cómo comenzar este ejemplo que encontré en línea:

Aquí el código de Java:

package prolog; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JTextField; import jpl.Atom; import jpl.Compound; import jpl.Variable; import jpl.Term; import jpl.Query; import jpl.JPL; @SuppressWarnings({ "unchecked", "deprecation", "serial" }) public class JavaProlog extends JFrame { JButton startButton = new JButton("Start"); JTextArea textArea = new JTextArea("A Diagnostic Expert System /n" + "for respiratory diseases and lung."); /** */ JavaProlog(){ Container cp=getContentPane(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocation (200,200); setSize (300,200); setLayout (new FlowLayout()); startButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ startDiagnose(); } }); cp.add(textArea); cp.add(startButton); setVisible(true); } private void startDiagnose(){ Term consult_arg[] = { new Atom( "C://Users//i_vista//workspace//mdc.pl" ) }; Query consult_query = new Query( "consult", consult_arg ); boolean consulted = consult_query.query(); if ( !consulted ){ System.err.println( "Consult failed" ); System.exit( 1 ); } } public static void main( String argv[] ){ JPL.init(); JavaProlog jpTest = new JavaProlog(); }

Si ejecuto el programa Prolog directamente desde Prolog, funciona bien y lo mismo cuando lo llamo desde la aplicación Java.

También puedo ver el resultado en la consola de Eclipse y puedo responder las preguntas.

Pero me gustaría construir una interfaz de usuario Java para la interacción entre el usuario y el sistema, pero no sé cómo tomar el código de Prolog en Java y ponerlo en la interfaz de usuario.

Por ejemplo, ¿cómo puedo capturar la entrada desde la UI de Java y pasar esto al código de Prolog?