私はTopBraid Composer Free Edition(TBC FE)バージョン5.1.3を使用しています。私はSPINルール/ CONSTRUCTクエリを構築しています。クエリの一部に複数のOR条件を持つFILTER文があります。次のように私はTBC FEにそれを入力します。なぜTopBraid Composer FEは複数のOR条件をSPINルールフィルタに再グループ化しましたか?
FILTER (
(?orgString = SUBSTR("AF X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("J X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("AR X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("N X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("NS X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("MC X"^^xsd:string, 1, 4))
) .
をしかし、私はTBC FEにSPINルールを保存するとき、バイナリORのセットであることを論理和条件を再編成する:
FILTER (
(((((?orgString = SUBSTR("AF X"^^xsd:string, 1, 4)) ||
(?orgString = SUBSTR("J X"^^xsd:string, 1, 4))) ||
(?orgString = SUBSTR("AR X"^^xsd:string, 1, 4))) ||
(?orgString = SUBSTR("N X"^^xsd:string, 1, 4))) ||
(?orgString = SUBSTR("NS X"^^xsd:string, 1, 4))) ||
(?orgString = SUBSTR("MC X"^^xsd:string, 1, 4))
) .
私の質問は、なぜ再編成ですか?私はこの再グループ化をしなかった他のSPARQLエディタとエンドポイントを使用しました。私は、これが私のコードを読むのがずっと難しくなる(コスト)と私は主張しています。
また、再グループ化が必要ない場合は、TBC FEで無効にする方法はありますか?
ありがとうございました。
PS:はい、私はリテラル文字列の部分文字列を取ることは馬鹿だと思います。私はTBF FEからセサミに保存するRDFファイルをロードするときに、セサミのバグを避けるためにそれをやっています。このバグは報告され、対処されています。それが修正されたら、私はセサミバージョンをアップグレードし、これらの醜い部分文字列を削除します。
ありがとう@AndyS。 "IN"ステートメントはより洗練されているので、このクエリーのステートメントに変更します。 –