Prolog JPL将字符串解析为原子

Prolog JPL将字符串解析为原子,prolog,swi-prolog,jpl,Prolog,Swi Prolog,Jpl,假设我有下面的代码,它打印出它可以工作如果一个术语是使用谓词string/1的字符串: Term string = org.jpl7.Util.textToTerm("\"test\""); Query testQuery = new Query("string",string); if(testQuery.hasMoreSolutions()) { System.out.println("It works!"); } 这没有打印任何东西,这不是我所期望的 更奇怪的是,将查询替换为新

假设我有下面的代码,它打印出
它可以工作如果一个术语是使用谓词
string/1
的字符串:

Term string = org.jpl7.Util.textToTerm("\"test\"");
Query testQuery = new Query("string",string);

if(testQuery.hasMoreSolutions()) {
    System.out.println("It works!");
}
这没有打印任何东西,这不是我所期望的

更奇怪的是,将查询替换为
新查询(“atom”,string)
现在可以正常工作,这意味着字符串作为atom而不是SWI Prolog 7字符串传递,即使我给JPL库解析的文本使用了双引号,双引号是字符串分隔符,而不是atom分隔符

更奇怪的是,Java调试器告诉我术语
string
有name
test
(不带引号)和type
string
!因此
textToTerm
似乎生成了一个正确的字符串,但术语本身还是作为原子传递的

这是一个bug,还是默认行为

编辑:以下状态:

SWI Prolog V7字符串在JPL7中表示为原子,其类型为“字符串”


那么,真的没有办法将真正的字符串传递给查询吗?

来自:“SWI Prolog V7字符串在JPL7中表示为原子,其类型为“字符串”…“您是否可以接受原子,并使用它将其转换为字符串?”@Ruud这可能是可行的,但这很麻烦。我不敢相信JPL如此糟糕,这就是我问的主要原因。从“SWI Prolog V7字符串在JPL7中表示为类型为“字符串”的原子”…“您接受原子并使用它转换为字符串是否可行?@Ruud这可能是可行的,但这很麻烦。我不敢相信JPL这么差,这就是我问的主要原因。