【问题标题】:Matching of strings in SPARQL?SPARQL中的字符串匹配?
【发布时间】: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


    【解决方案1】:

    使用正则表达式过滤器。你可以找到一个简短的教程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。这意味着匹配不区分大小写。

    【讨论】:

    【解决方案2】:

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

    PREFIX ns: <http://example.com/namespace>
    
    SELECT ?x
    WHERE
    { ?x ns:SomePredicate "YourString" }
    

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多