簡體   English   中英

如何在SPARQL regex()中使用邏輯OR?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM