【问题标题】:Optimizing range queries in SPARQL in MarkLogic在 MarkLogic 中优化 SPARQL 中的范围查询
【发布时间】:2016-06-04 08:48:33
【问题描述】:

我想编写一个 SPARQL 查询,该查询将具有单个时间点的实体与一组具有时间范围的实体交叉引用。这是图形模式:

{
  ?entity :atTime  ?probe. 
  ?interval :startTime ?start ; 
            :endTime ?end . 

  FILTER (?start < ?probe) 
  FILTER (?probe < ?end)
}

查询引擎运行它的一种方法是查找定义了:atTime 的所有实体,查找所有间隔,并执行所有这些检查。但是 MarkLogic(和大多数数据库)具有范围索引的功能,因此可以更有效地完成此操作。

我在 ML 文档中看到您可以在 SPARQL 中使用 cts:contains 来访问其字符串索引。有没有办法对范围查询做类似的事情?

一些数据库识别代码中的设计模式,就像我在这里引用的那样,它们自己进行优化(保持代码标准!)。也许 MarkLogic 会这样做?我找不到任何文件告诉我这件事。

【问题讨论】:

    标签: sparql marklogic


    【解决方案1】:

    MarkLogic 的三重索引可以直接执行范围查询,因此不需要单独的范围索引。优化器应该识别并优化这种查询模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多