我使用的是TopBraid Composer免费版(TBC FE)版本5.1.3。我正在构建SPIN规则/ CONSTRUCT查询。我的部分查询有一个带有多个OR'd条件的FILTER语句。我将其输入到TBC FE如下:为什么TopBraid Composer 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))
) .
但是,当我保存TBC FE的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))
) .
我的问题是:为什么重组?我使用了其他SPARQL编辑器和不重组的重要端点。我认为这会让我的代码更难阅读(成本),所以我想知道它的好处是什么?
此外,如果这是重新组合是没有必要的,有没有办法在TBC FE关闭它?
感谢。
PS:是的,我知道采取文字字符串的子字符串似乎很愚蠢。我这样做是为了避免Sesame中的一个错误,当我将TBD FE保存的RDF文件加载到芝麻中时,它修剪了我的字符串。该错误已被报告并正在解决。当它修复后,我会升级我的芝麻版本并删除这些丑陋的子字符串。
谢谢@AndyS。 “IN”语句更清晰,因此我将转换为此查询。 –