我希望返回一个匹配的URI或文本节点列表,其中包含某个文本字符串。
这允许我搜索任何具有匹配字符串的主题,但我也希望返回任何匹配的谓词或对象——所有这些都在同一个查询中。
select ?s ?p ?o WHERE {
?s ?p ?o .
FILTER (REGEX(STR(?s), "SEARCHTEXT", "i"))
}
你知道我该怎么修改吗?
select ?s ?p ?o WHERE {
?s ?p ?o .
FILTER ( REGEX(STR(?s), "SEARCHTEXT", "i") ||
REGEX(STR(?p), "SEARCHTEXT", "i") ||
REGEX(STR(?o), "SEARCHTEXT", "i") )
}
您打算将其用于什么用例?既然你想搜索它,你的正则表达式似乎表达了一些关于它匹配的令牌的有价值的信息。如果是这样的话,那么用一些关系来标记你的数据似乎是明智的,让这些知识变得明确!
您想要的正则表达式搜索似乎只有在极少数情况下才合理,例如对于DBMS管理前端。如果你只是想解决这个问题,我会做这样的事情(在代码中,而不是作为查询):
result = data.subjectSet().add(data.predicateSet()).add(data.objectSet())
FOREACH (token ε result) {
result.remove(token) unless(token ≙ regex)
}
return result;