【问题标题】:Run SPARQL/SPIN templates using TopBraid SPIN API使用 TopBraid SPIN API 运行 SPARQL/SPIN 模板
【发布时间】:2014-12-20 02:13:53
【问题描述】:

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

【问题讨论】:

    标签: java sparql semantics topbraid-composer spin-rdf


    【解决方案1】:

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

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

    ,则 SPIN API 只能正确读取它们(即完整)
    NOT EXISTS {
        ?s ?p ?o .
        ...
    }
    

    而不是

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 2019-09-13
      • 2017-10-02
      相关资源
      最近更新 更多