如何使用逻辑或在SPARQL ReGEXE()中?

2024-04-25 07:52:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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 works。但是我发现,如果你重复regex()部分,它也可以工作,就像这样:

FILTER (regex(?name, "%s", "i") || regex(?featurename, "%s", "i" ))

这两个解决方案看起来都有点混乱,因为必须使用一个带有相同字符串副本的2元素元组来填充这两个%ss


Tags: or方法用户name文档文本程序教程
1条回答
网友
1楼 · 发布于 2024-04-25 07:52:25

这个怎么样?

SELECT ?thing
WHERE {
  { 
    ?thing x:name ?name .
    FILTER regex(?name, "%s", "i" )
  } UNION {
    ?thing x:featurename ?name .
    FILTER regex(?featurename, "%s", "i" )
  }
}

相关问题 更多 >