1

SPIN API を使用してテンプレートを実行しようとしています。単純なテンプレートの場合、これはうまく機能しますが、FILTERs.

検証のために、テンプレートを実行する前に本文を印刷しましたが、表示される内容は期待どおりのものではありません。

Template t = SPINModuleRegistry.get().getTemplate("TheTemplatesURI", myModel);
System.out.printLn(t.getBody().toString());

クエリを出力しますが、FILTER4 行を含む句は次のようになります。

FILTER <http://spinrdf.org/sp#notExists>([]) .

このため、クエリを実行しようとすると失敗します。

spin:bodyモデルから完全に取得する方法を知っている人はいますか?

4

1 に答える 1

1

私は今、回避策を使用しています。

問題は、次のように配置した場合、SPIN API が FILTER クエリを適切に (つまり、完全に) 読み取るだけであることです。

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

それ以外の

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

そのようにテンプレートを手動で実行すると、適切な方法は FILTER を持つことであるため、SPARQL は例外をスローします。すべてのテンプレートを Topbraid Composer に NOT EXISTS として保存し、SPIN API 経由で読み込んだ後、String.replace(...) 経由で FILTER ビットを追加しました。醜いかもしれませんが、少なくとも機能します。

于 2014-10-24T09:15:24.933 に答える