我正在使用 TopBraid Composer 免费版 (TBC FE) 版本 5.1.3。我正在构建 SPIN 规则/CONSTRUCT 查询。我的部分查询有一个带有多个 OR 条件的 FILTER 语句。我将其输入到 TBC FE 中,如下所示:
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'd 条件重新组合为一组二进制 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:是的,我知道采用文字字符串的子字符串似乎很愚蠢。我这样做是为了避免 Sesame 中的一个错误,当我将我从 TBD FE 保存的 RDF 文件加载到 Sesame 中时,它会修剪我的文字字符串。该错误已报告并正在解决。修复后,我将升级我的 Sesame 版本并删除这些丑陋的子字符串。