我正在尝试使用SPIN API运行模板。对于简单的模板,这很有效,但我在使用包含FILTERs的模板时遇到了问题。
出于验证的目的,我在运行模板之前打印模板的主体,但我看到的并不是我期望看到的:
Template t = SPINModuleRegistry.get().getTemplate("TheTemplatesURI", myModel);
System.out.printLn(t.getBody().toString());它打印查询,但包含4行的FILTER子句如下所示:
FILTER <http://spinrdf.org/sp#notExists>([]) .正因为如此,当我尝试运行查询时,它会失败。
有人知道如何从我的模型中检索完整的spin:body吗?
发布于 2014-10-24 17:15:25
我现在使用一种变通方法。
问题是,SPIN API只有在我将过滤查询放为
NOT EXISTS {
?s ?p ?o .
...
}而不是
FILTER NOT EXISTS {
?s ?p ?o .
...
}如果我以这种方式手动运行模板,SPARQL将抛出异常,因为正确的方法是使用过滤器。我现在将所有的模板保存为在Topbraid Composer中不存在,并通过String.replace(...)添加过滤器位。通过SPIN API加载后。它可能很难看,但至少它是有效的。
https://stackoverflow.com/questions/26544554
复制相似问题