在SPARQL中匹配字符串?

Kob*_*kie 10 sql semantic-web sparql

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

Select * From DBTable Where DBTable.Description LIKE "MEET"
Run Code Online (Sandbox Code Playgroud)

要么

Select * From DBTable Where DBTable.Description LIKE "%MEET%"
Run Code Online (Sandbox Code Playgroud)

我想要帮助的是写上面的SPARQL等价物.

ton*_*edz 13

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

这是它的样子:

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

SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
  FILTER regex(?y, "YOUR_REGEX", "i") }
Run Code Online (Sandbox Code Playgroud)

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

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

  • Jena 已迁移到 Apache,请链接到新网站:http://jena.apache.org/tutorials/sparql_filters.html (2认同)

Rob*_*obV 5

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

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

SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }
Run Code Online (Sandbox Code Playgroud)

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

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