首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TopBraid SPIN API运行SPARQL/SPIN模板

使用TopBraid SPIN API运行SPARQL/SPIN模板
EN

Stack Overflow用户
提问于 2014-10-24 16:52:59
回答 1查看 350关注 0票数 1

我正在尝试使用SPIN API运行模板。对于简单的模板,这很有效,但我在使用包含FILTERs的模板时遇到了问题。

出于验证的目的,我在运行模板之前打印模板的主体,但我看到的并不是我期望看到的:

代码语言:javascript
复制
Template t = SPINModuleRegistry.get().getTemplate("TheTemplatesURI", myModel);
System.out.printLn(t.getBody().toString());

它打印查询,但包含4行的FILTER子句如下所示:

代码语言:javascript
复制
FILTER <http://spinrdf.org/sp#notExists>([]) .

正因为如此,当我尝试运行查询时,它会失败。

有人知道如何从我的模型中检索完整的spin:body吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-24 17:15:25

我现在使用一种变通方法。

问题是,SPIN API只有在我将过滤查询放为

代码语言:javascript
复制
NOT EXISTS {
    ?s ?p ?o .
    ...
}

而不是

代码语言:javascript
复制
FILTER NOT EXISTS {
    ?s ?p ?o .
    ...
}

如果我以这种方式手动运行模板,SPARQL将抛出异常,因为正确的方法是使用过滤器。我现在将所有的模板保存为在Topbraid Composer中不存在,并通过String.replace(...)添加过滤器位。通过SPIN API加载后。它可能很难看,但至少它是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26544554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档