我想编写一个SPARQL查询,它使用一组具有时间范围的实体来交叉引用具有单个时间点的实体.这是图形模式:
{
?entity :atTime ?probe.
?interval :startTime ?start ;
:endTime ?end .
FILTER (?start < ?probe)
FILTER (?probe < ?end)
}
Run Code Online (Sandbox Code Playgroud)
查询引擎运行此方法的一种方法是查找已:atTime定义的所有实体,查找所有间隔,并执行所有这些检查.但MarkLogic(以及大多数数据库)都有范围索引设施,因此可以更有效地完成.
我在ML文档中看到,您可以cts:contains在SPARQL中使用它来获取其字符串索引.有没有办法用范围查询做类似的事情?
有些数据库会像我在这里引用的那样识别代码中的设计模式,并且他们自己进行优化(这使代码保持标准!).也许MarkLogic这样做了吗?我找不到任何文件告诉我这件事.