我使用的是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」語句更清晰,因此我將轉換爲此查詢。 –