14

在 ANSI SQL 中,您可以编写如下内容:

Select * From DBTable Where DBTable.Description LIKE "MEET"

或者

Select * From DBTable Where DBTable.Description LIKE "%MEET%"

我需要帮助的是编写与上述等效的 SPARQL。

4

2 回答 2

21

使用正则表达式过滤器你可以在这里找到一个简短的教程

这是它的样子:

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
  FILTER regex(?y, "YOUR_REGEX", "i") }

YOUR_REGEX必须是XQuery 正则表达式语言的表达式

i是一个可选标志。这意味着匹配不区分大小写。

于 2012-06-17T10:45:19.547 回答
5

如果您有要匹配的固定字符串,您可以直接在图形模式中使用它,例如

PREFIX ns: <http://example.com/namespace>

SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }

请注意,这并不总是有效,因为模式匹配基于 RDF 术语相等,这意味着"YourString"不被视为与所说相同的术语,"YourString"@en所以如果这可能是一个问题,请使用REGEXTom 建议的方法

一些 SPARQL 引擎还提供全文搜索扩展,允许您将 Lucene 样式查询集成到您的 SPARQL 查询中,这可能更适合您的用例,并且几乎可以肯定对于通用搜索更有效,否则需要REGEX

于 2012-06-17T19:37:43.113 回答