kprolog K-Prolog Compiler Version 6.0

JIPL: Java Interface to Prolog

Release | FAQ | Requirement | Class API | Examples | IDE | Installation | License

English

これは、Java言語とProlog言語の間のインターフェースを記述した パッケージで、JIPLと呼ばれます。
このインタフェースを利用して、

  1. Java application/appletからPrologの述語を呼び出せます。
  2. Prolog言語で記述されたプログラムからJava言語のメソッドを呼び出し、また、 フィールドにアクセスできます。


リリースノートと問題点

2000/09/24 JIPL version 1.3
  • Java側の引数リストを文字列と混同する稀なケースを修正
2000/10/13 JIPL version 1.2.1
  • IDEでのバックスラッシュ文字の扱いに関する深刻な障害を訂正
2000/10/10 JIPL version 1.2
2000/09/18 JIPL version 1.2beta
  • パッケージ名をcom.kprolog.plcに変更しました。
  • JDK1.2とJDK1.3に対応しました。
  • K-Prolog version 5.0betaに対応しました。K-Prolog version 5.0は Prolog言語のISO規格に適合しています。
2000/06/01 JIPLのサイトをkprolog.comに移動
1998/06/10 JIPL version1.01 for Linux glibc
  • Linux glibc 2.0.7-13にて対応しました。
1997/12/10 JIPL version1.01
  • SunOS,Solaris/x86,FreeBSD2.2.2,Linux2.0 に対応しました。
  • 移植上の理由から Invocation interfaceの使用を止めました。 (ソースは残してあります、役に立つ事があるかもしれませんので)
  • K-PrologのC言語インタフェースのバグを解消しました。
1997/09/25 JIPL version1.0 final for JDK1.1.3/1.1.4
  • パッケージ名を、isac.plcから CO.jp.isac.plcに変更しました。
  • クラスファイルをjipl.jarとして一つにまとめました。
  • JIPL/IDE ヘルプの参照先をローカルのファイルに変更しました。
1997/07/16 JIPL final beta for JDK1.1.3
  • JDK1.1.2でInvocation interfaceに導入されたPropertiesの 新しい指定方法に対応しました。
  • IDEのクラスを整理し完成しました。HelpはNetscapeなどのブラウザを呼び出します。
1997/05/20 JIPL beta1 for JDK1.1.1
1997/02/19 JIPL alpha2 for JDK1.1 final
1997/01/30 JIPL alpha2 for JDK1.1 beta3
1997/01/7 JIPL alpha1


必要条件


パッケージ

このパッケージには、JIPLを利用するためのK-Prologの最小限の構成が 入っています。Prolog部分のマニュアルやコンパイラなどは 含まれていませんが、PrologプログラムとJavaプログラムを連結して 動作させられるだけの構成は含まれています。

K-Prologのマニュアルは、 http://www.kprolog.com/ にて参照できます。


ダウンロードとインストール

ダウンロードは、 アーカイブ から行なって下さい。
アーカイブを解凍し、適当なディレクトリに配置します。
古いバージョンのファイルやディレクトリはその前に消去して下さい。
UNIXの場合の推奨値は、/usr/local/plc/
Windowsの場合の推奨値は、C:\plc\ です。
このディレクトリを環境変数PLCとPATHに設定します。
UNIXの場合、LD_LIBRARY_PATHにも設定します。また、 BROWSER変数によりヘルプを表示するブラウザを指定できます。 Netscapeを使用する場合、BROWSERではなく、 MOZILLA_HOME変数にnetscapeのディレクトリを指定して下さい。 unix % setenv PLC /usr/local/plc unix % setenv PATH $PLC:$PATH unix % setenv LD_LIBRARY_PATH $PLC:$LD_LIBRARY_PATH unix % setenv MOZILLA_HOME /usr/local/netscape win32> set PLC=C:\plc win32> set PATH=%PLC%;%PATH% Javaのクラスパスの設定もこのディレクトリに対して行ないます。 例えば、 unix % java -classpath $PLC:$JAVA_HOME/lib/classes.zip


例題

examples/queensディレクトリには、8-Queensの例題があります。
Makefileの
PLC = 
JAVA_HOME = 
の行をあなたの構成に合わせて調整して下さい。

> make run

は、8-Queensの解過程を表示するでしょう。
Queens classは、Javaアニメーションとしては不完全なものです。 この例題の目的はProlog-Java間のインタフェースを示すことにあるので、 Java固有の必要かも知れないコーディングは省いています。

examples/clientディレクトリには、Prologをbackground threadで動かしてみる例題があります。

examples/ideディレクトリには、JIPL/IDEから実行できるプログラムの 例題があります。
このディレクトリで、
% jipl

でIDEを起動した後、

[Reconsult]ダイアログで queens.pl を選択し、
[TextField]に queens(Q)を入力してみて下さい。
表示された絵を消すためには、dispose を入力して下さい。


Class API

com.kprolog.plc.Plcクラスの機能を使用します。
主要なインタフェースは、

startPlc(String[] args) 
exec(String command)
call(String functor, Object[] args)
run()


Prolog API

javaConstructor(Class(Args,...), Instance)
    Class(+atom)    : Java class name, with full package path.
    Args(+term)     : Arguments to be passed to the constructor.
                      Don't use () if the constructor has no argument.
                      Place just an atom as Class instead.
    Instance(-term) : Instance created.

    Calls constructor of Java object.

javaMethod(ClassOrInstance, Method(Args,...), Return)
    ClassOrInstance : Class or Instance.
    Class(+atom)    : Java class name, with full package path.
    Instance(+term) : An instance.
    Args(+term)     : Arguments to be passed to the constructor.
                      Don't use () if the method has no argument.
                      Place just an atom as Method instead.
    Return(-term)   : Returned object from the method. Untouched if 
                      the method is void type.

    Calls a static method of a class, if ClassOrInstance is an atom.
    Calls an instance method, if an instance is given.

javaGetField(ClassOrInstance, Field, Value)
    ClassOrInstance : Class or Instance.
    Class(+atom)    : Java class name, with full package path.
    Instance(+term) : An instance.
    Field(+atom)    : Field name.
    Value(-term)    : Value of the field.

    Gets the value of the field.

javaSetField(ClassOrInstance, Field, Value)
    ClassOrInstance : Class or Instance.
    Class(+atom)    : Java class name, with full package path.
    Instance(+term) : An instance.
    Field(+atom)    : Field name.
    Value(+term)    : Value to be set to the field.

    Sets the value to the field.


データの変換

    Java        Prolog
    ---------------------------
    Integer     32bit integer
    Double      64bit float
    Long        (may be bignum)integer
    BigInteger  (may be bignum)integer
    String      string (list of char code)
    Array       list
    Other       address term


開発環境

% jipl
コマンドはJIPL/IDEを開始します。これは、Prologの開発環境を実現した例です。 これはシェルスクリプトまたはバッチファイルとして実装されています。 Java Invocation interface は移植上の問題から使用していません。

環境変数PLCとJAVA_HOMEを設定して起動して下さい。

ソースプログラムはsrc/ide/の下に添付してありますが、ドキュメントは ありません。
IDEとはいうものの、エディタを内蔵していません。 [File]-[Edit] は既定ではviを起動します。これを変更するためには、 editor(EditorName)組込み述語を実行して下さい。

IDEを使って見るための例題があります。


まだ出来ていないこと


ライセンス

このバージョンは、研究/評価目的で使用する限り無償で使用、コピー、改造、 再配布できます。教育目的では使用できないことに御注意下さい。 ソース提供されたプログラムに関しては、著作権表示などを保存し改変部分を 明示する限り、変更して使用することができます。 これを他の言語処理系に適用する場合は、パッケージ名を適切なものに 変更して下さい。

このパッケージは無保証です。このパッケージを使用することがあなたの 役に立つかどうか、あなたに損害を与えるかどうかについて(株)KLS研究所 および紀信邦は何も保証しません。


商用製品

K-Prolog Compiler version5.0 は、JIPLを含むフルセットのパッケージです。
個人ユーザはホームページから製品をダウンロードして購入することが出来ます。

商用目的または教育目的でJIPLを利用する方は、 info@kprolog.com にコンタクトして、K-Prologのライセンスを購入して下さい。


このパッケージに関する問い合わせ、バグレポートなどは kino@kprolog.com(紀信邦) までお願いします。
KLS研究所


目次に戻る