1

jpl は複数の Prolog VM をサポートしていないため、Prolog ファイルをモジュールとして参照しようとしています。

swipl コンソールでは、このようなことを正常に実行できます

?- consult(mod1:'data/load.pro') .

Java(実際にはscalaですが、それらはすべてjvmの上にあります)では、問題なくファイルを直接参照できます

scala> import jpl._

scala> val q = new Query("consult", Array[Term](new Atom("data/load.pl")))

scala> q.query()
...
true

ただし、ファイルをモジュールとして参照しようとすると、常に例外が発生します。

scala> val q = new Query("consult", Array[Term](new Atom("mod1:data/load.pl")))

scala> q.query()
  jpl.PrologExcepion:  PrologException: error(existence_error(source_sink, 'mod1:data/load.pl'), _0)
    at jpl.Query.get1(Query.java:336)
    at jpl.Query.hasMoreSolutions(Query.java:258)
    at jpl.Query.oneSolution(Query.java:688)
    at jpl.Query.query(Query.java:747)
    at .<init>(<console>:15)
    at .<clinit>(<console>)
    ....

プロローグファイルをjplのモジュールとして参照する正しい方法を教えてもらえますか? ありがとう!

4

1 に答える 1