Sparql Blazegraph是否支持范围查询优化?
我在玩Blazegraph。我插入了一些表示“事件”的三元组,每个“事件”包含3个三元组,如下所示: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
<%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
。奇怪的是,它破坏了优化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 .
}