Jef*_*eff 7 python regex filter sparql
我在我的python程序中的SPARQL查询中使用此行:
FILTER regex(?name, "%s", "i" )
Run Code Online (Sandbox Code Playgroud)
(%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" )
Run Code Online (Sandbox Code Playgroud)
而且每个人都没有 ()
FILTER regex(?name, "%s", "i" ) || regex(?featurename, "%s", "i" )
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?谢谢
更新:使用UNION工作.但我发现如果你只重复regex()部分它也会起作用:
FILTER (regex(?name, "%s", "i") || regex(?featurename, "%s", "i" ))
Run Code Online (Sandbox Code Playgroud)
这两个解决方案看起来有点混乱,因为你必须使用一个2元素的元组和相同字符串的副本来填充两个%ss.
gle*_*ald 14
那这个呢?
SELECT ?thing
WHERE {
{
?thing x:name ?name .
FILTER regex(?name, "%s", "i" )
} UNION {
?thing x:featurename ?name .
FILTER regex(?featurename, "%s", "i" )
}
}
Run Code Online (Sandbox Code Playgroud)