由于jpl不支持多个Prolog vms,所以我试图将prolog文件作为一个模块进行查询。
在swipl控制台中,我可以成功地完成这样的任务。
?- consult(mod1:'data/load.pro') .在java中(实际上是scala,但它们都在jvm之上),我可以直接查阅文件w/o。
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中以模块的形式查阅prolog文件的正确方法吗?谢谢!
发布于 2013-07-24 15:25:48
我认为您可以交换谓词上的模块限定,当然这将允许您传递源文件的完整路径:
val q = new Query("mod1:consult('full_path_to/load.pl')")https://stackoverflow.com/questions/17837467
复制相似问题