返回一个列表,匹配搜索所有主题,谓词和对象中的文本字符串 - 在一个查询中?

时间:2012-12-05 03:48:53

标签: sparql semantic-web owl allegrograph

我希望返回一个匹配的URI列表或包含特定文本字符串的文本节点。

这允许我搜索具有匹配字符串的任何主题,但我也想返回任何匹配的谓词或对象 - 所有这些都在同一个查询中。

select ?s ?p ?o WHERE {
  ?s ?p ?o .
  FILTER (REGEX(STR(?s), "SEARCHTEXT", "i"))
}

我知道如何修改它吗?

2 个答案:

答案 0 :(得分:2)

select ?s ?p ?o WHERE {
  ?s ?p ?o .
  FILTER ( REGEX(STR(?s), "SEARCHTEXT", "i") ||
           REGEX(STR(?p), "SEARCHTEXT", "i") ||
           REGEX(STR(?o), "SEARCHTEXT", "i") )
}

答案 1 :(得分:1)

您打算使用哪种用例?由于您要搜索它,因此您的正则表达式似乎表达了有关其匹配的标记的一些有价值的信息。如果是这种情况,用一些关系来标记你的数据似乎是明智的,这使得这些知识变得明确!

正如您所希望的那样进行正则表达式搜索似乎只在极少数情况下才有意义,例如:对于DBMS管理前端。如果你只是想解决问题,我会做这样的事情(在代码中,而不是作为查询):

result = data.subjectSet().add(data.predicateSet()).add(data.objectSet())
FOREACH (token ε result) {
    result.remove(token) unless(token ≙ regex)
}
return result;