如何在jpl中查看文件作为模块

时间:2013-07-24 14:48:34

标签: java prolog swi-prolog jpl

我正在尝试将Prolog文件作为模块进行咨询,因为jpl不支持多个prolog vms。

在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>)
    ....

任何人都可以指出我在prl中作为模块咨询prolog文件的正确方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您可以在谓词上交换模块资格,当然这可以让您传入源文件的完整路径

val q = new Query("mod1:consult('full_path_to/load.pl')")
相关问题