Sparql Blazegraph是否支持范围查询优化?

Sparql Blazegraph是否支持范围查询优化?,sparql,triplestore,blazegraph,Sparql,Triplestore,Blazegraph,我在玩Blazegraph。我插入了一些表示“事件”的三元组,每个“事件”包含3个三元组,如下所示: <%event-iri%> <http://predicates/timestamp> '2020-01-02T03:04:05.000Z'^^xsd:dateTime . <%event-iri%> <http://predicates/a> %RANDOM_UUID% . <%event-iri%> <http://predi

我在玩Blazegraph。我插入了一些表示“事件”的三元组,每个“事件”包含3个三元组,如下所示:

<%event-iri%> <http://predicates/timestamp> '2020-01-02T03:04:05.000Z'^^xsd:dateTime .
<%event-iri%> <http://predicates/a> %RANDOM_UUID% .
<%event-iri%> <http://predicates/b> %RANDOM_UUID% .
就在
过滤器
子句之后

另外,有人提到,对于某些类型,范围查询在为其他类型工作时不起作用(对于为johpfe工作的int),因此我还尝试进行另一组测试,其中时间戳表示为int(Unix时间戳):


但是这个查询什么也找不到,所以提示只是打断了它。

以下是优化工作的查询

这是针对整数的情况:

select ?event ?a ?v 
where {
  ?event <http://predicates/timestamp> ?timestamp .
  hint:Prior hint:rangeSafe "true" .
  filter (?timestamp >= "1606528746"^^xsd:int && ?timestamp < "1606528806"^^xsd:int)
  ?event ?a ?v .
}
选择事件a?v
在哪里{
?事件?时间戳。
提示:先前提示:rangeSafe“true”。
过滤器(?时间戳>=“1606528746”^^xsd:int&?时间戳<“1606528806”^^xsd:int)
事件a?v。
}
这是针对时间戳是日期时间的情况:

select ?event ?a ?v 
where {
  ?event <http://predicates/timestamp> ?timestamp .
  hint:Prior hint:rangeSafe true .
  filter (?timestamp >= '2021-11-07T22:08:24.022+04:00'^^xsd:dateTime && ?timestamp < '2021-11-07T22:10:24.022+04:00'^^xsd:dateTime)
  ?event ?a ?v .
}
选择事件a?v
在哪里{
?事件?时间戳。
提示:先前提示:rangeSafe true。
过滤器(?时间戳>='2021-11-07T22:08:24.022+04:00'^^xsd:dateTime&?时间戳<'2021-11-07T22:10:24.022+04:00'^^xsd:dateTime)
事件a?v。
}
阻止优化的原因是:

  • 对于整数的情况,我没有显式指定文本类型,因此它类似于
    ?timestamp>=1606528746
    ,而不是
    ?timestamp>=“1606528746”^^xsd:int
    。奇怪的是,它破坏了优化
  • 此外,必须在三重模式之后而不是在filter语句之后指定提示
  • 此外,结果表明,提示是否包含
    true
    “true”
    :这两个选项都能成功工作并不重要


    非常感谢@StanislavKralin为我提供了一个工作示例,通过这个示例我可以将我的查询转换为工作表单。

    在Wikidata上对我很有用:谢谢@StanislavKralin,你的示例确实帮助我找到了应该做的事情。嗨,Roman!我们的GraphDB有一个更好的文字索引,可以索引所有类型的if数字(例如,
    1606528746
    表示
    “1606528746”^^xsd:integer
    )和日期/日期时间(在某些情况下,并非所有日期时间都具有相同的分辨率)。而且它不需要任何提示谢谢你@VladimirAlexiev,我来看看
    <%event-iri%> <http://predicates/timestamp> 1606528746 .
    <%event-iri%> <http://predicates/a> %RANDOM_UUID% .
    <%event-iri%> <http://predicates/b> %RANDOM_UUID% .
    
    select ?event ?a ?v 
    where {
      ?event <http://predicates/timestamp> ?timestamp .
      filter (?timestamp >= 1606528746 && ?timestamp < 1606528806)
      hint:Prior hint:rangeSafe "true" .
      ?event ?a ?v .
    }
    
    select ?event ?a ?v 
    where {
      ?event <http://predicates/timestamp> ?timestamp .
      hint:Prior hint:rangeSafe "true" .
      filter (?timestamp >= 1606528746 && ?timestamp < 1606528806)
      ?event ?a ?v .
    }
    
    select ?event ?a ?v 
    where {
      ?event <http://predicates/timestamp> ?timestamp .
      hint:Prior hint:rangeSafe "true" .
      filter (?timestamp >= "1606528746"^^xsd:int && ?timestamp < "1606528806"^^xsd:int)
      ?event ?a ?v .
    }
    
    select ?event ?a ?v 
    where {
      ?event <http://predicates/timestamp> ?timestamp .
      hint:Prior hint:rangeSafe true .
      filter (?timestamp >= '2021-11-07T22:08:24.022+04:00'^^xsd:dateTime && ?timestamp < '2021-11-07T22:10:24.022+04:00'^^xsd:dateTime)
      ?event ?a ?v .
    }