【发布时间】:2012-06-17 10:16:16
【问题描述】:
在 ANSI SQL 中,你可以这样写:
Select * From DBTable Where DBTable.Description LIKE "MEET"
或
Select * From DBTable Where DBTable.Description LIKE "%MEET%"
我需要帮助的是编写与上述等效的 SPARQL。
【问题讨论】:
标签: sql sparql semantic-web
在 ANSI SQL 中,你可以这样写:
Select * From DBTable Where DBTable.Description LIKE "MEET"
或
Select * From DBTable Where DBTable.Description LIKE "%MEET%"
我需要帮助的是编写与上述等效的 SPARQL。
【问题讨论】:
标签: sql sparql semantic-web
使用正则表达式过滤器。你可以找到一个简短的教程here
它是这样的:
PREFIX ns: <http://example.com/namespace>
SELECT ?x
WHERE
{ ?x ns:SomePredicate ?y .
FILTER regex(?y, "YOUR_REGEX", "i") }
YOUR_REGEX 必须是XQuery regular expression language 的表达式
i 是可选的flag。这意味着匹配不区分大小写。
【讨论】:
如果你有一个固定的字符串来匹配,你可以直接在你的图形模式中使用它,例如
PREFIX ns: <http://example.com/namespace>
SELECT ?x
WHERE
{ ?x ns:SomePredicate "YourString" }
请注意,这并不总是有效,因为模式匹配基于 RDF 术语相等,这意味着 "YourString" 不被视为与 "YourString"@en 相同的术语,因此如果这可能是一个问题,请使用汤姆建议的 REGEX 方法
还有一些 SPARQL 引擎提供全文搜索扩展,允许您将 Lucene 样式查询集成到您的 SPARQL 查询中,这可能更适合您的用例,并且几乎可以肯定对于需要 REGEX 的通用搜索更有效
【讨论】: