我在我的 python 程序的 SPARQL 查询中使用了这一行:
FILTER regex(?name, "%s", "i" )
(%s
用户输入的搜索文本在哪里)
我希望它匹配 if?name
或?featurename
contains %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。