【问题标题】:SPARQL - Restricting Result Resource to Certain Namespace(s)SPARQL - 将结果资源限制为某些命名空间
【发布时间】:2012-03-07 08:23:22
【问题描述】:

是否有一种标准方法可以将 SPARQL 查询的结果限制为属于特定命名空间。

【问题讨论】:

    标签: sparql


    【解决方案1】:

    简短的回答 - 不,没有标准的直接方法可以做到这一点

    长答案 - 但是,是的,您可以使用字符串函数和 FILTER 子句来执行有限的形式。您使用什么功能取决于您的引擎支持的 SPARQL 版本。

    SPARQL 1.1 解决方案

    现在几乎所有的实现都支持SPARQL 1.1,你可以像这样使用STRSTARTS()函数:

    FILTER(STRSTARTS(STR(?var), "http://example.org/ns#"))
    

    这是我的首选方法,应该比较有效,因为它是简单的字符串匹配。

    SPARQL 1.0 解决方案

    如果您无法使用仅支持 SPARQL 1.0 的实现,您仍然可以这样做,但它通过 REGEX() 函数使用正则表达式,因此可能会更慢:

    FILTER(REGEX(STR(?var), "^http://example\\.org/ns#"))
    

    正则表达式和元字符

    请注意,对于正则表达式,我们必须转义元字符.,否则它可以匹配任何字符,例如http://exampleXorg/ns#foo 将被视为有效匹配。

    由于 \ 是正则表达式和 SPARQL 字符串的转义字符,因此必须在此处进行双重转义,以使正则表达式中只有 \. 并将 . 视为文字字符。

    推荐

    如果您可以使用 SPARQL 1.1,那么请这样做,因为使用更简单的字符串函数会更高效,并且无需担心转义您在使用 REGEX 时拥有的任何元字符

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2012-06-12
      相关资源
      最近更新 更多