[英]How to use logical OR in SPARQL regex()?
我在我的python程序中的SPARQL查詢中使用此行:
FILTER regex(?name, "%s", "i" )
(其中%s
是用戶輸入的搜索文本)
我想要匹配,如果?name
或?featurename
包含%s
,但我似乎無法找到任何使用regex()的文檔或教程。 我嘗試了幾件似乎合理的事情:
FILTER regex((?name | ?featurename), "%s", "i" )
FILTER regex((?name || ?featurename), "%s", "i" )
FILTER regex((?name OR ?featurename), "%s", "i" )
FILTER regex((?name, ?featurename), "%s", "i" )
和每個沒有()
FILTER regex(?name, "%s", "i" ) || regex(?featurename, "%s", "i" )
這樣做的正確方法是什么? 謝謝
更新:使用UNION工作。 但我發現如果你只重復regex()部分它也會起作用:
FILTER (regex(?name, "%s", "i") || regex(?featurename, "%s", "i" ))
這兩個解決方案看起來有點混亂,因為你必須使用一個2元素的元組和相同字符串的副本來填充%s
s。
那這個呢?
SELECT ?thing
WHERE {
{
?thing x:name ?name .
FILTER regex(?name, "%s", "i" )
} UNION {
?thing x:featurename ?name .
FILTER regex(?featurename, "%s", "i" )
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.