java - 使用 TopBraid SPIN API 运行 SPARQL/SPIN 模板

标签 java sparql semantics topbraid-composer spin-rdf

我正在尝试使用 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 吗?

最佳答案

我现在使用一种解决方法。

问题是,如果我将 FILTER 查询设置为

,SPIN API 只能正确读取(即完整)FILTER 查询
NOT EXISTS {
    ?s ?p ?o .
    ...
}

而不是

FILTER NOT EXISTS {
    ?s ?p ?o .
    ...
}

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

关于java - 使用 TopBraid SPIN API 运行 SPARQL/SPIN 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26544554/

相关文章:

java - 为什么我不能在实用程序类(不是 Activity 的类)中使用 BitmapFactory.decodeResource() 方法?无法解析方法 getResources()

JavaFX(Java 8 Update 40) 警告对话框无法成功重绘和调整大小

sparql - live.dbpedia.org、dbpedia.org 和 dbpedia 数据转储之间的数据差异是什么?

python - 如何在 SPARQL regex() 中使用逻辑或?

html - 防止 <nav> 在 html5 网站上显示为 "untitled section"

c - 通过 K&R 的 C 书,第 2 版了解 C 声明

java - bindService 上的 NullPointerException getPackageName()

java - "Foo".equals(maybeFoo) 和 MaybeFoo==null 之间有什么区别? false :maybeFoo. 等于 ("Foo")?

rdf - SPARQL查询rdf容器(rdf : Bag)

javascript - HTML 语义 - 充当 anchor 的按钮