奇怪的SPARQL行为

时间:2014-06-16 19:26:00

标签: rdf sparql semantic-web dbpedia virtuoso

我目前正在研究迭代扩展算法,它将构成项目的基础。该算法被赋予种子URI,基于该种子URI,它通过逐步扩展,跟踪已经访问过的节点和未探测区域的边界,在内存中创建图形。为了创建这个扩展,我创建了两个SPARQL模板,我将URI从边界输入到。两个简化的表达式是:

CONSTRUCT {?s ?p ?o}
WHERE {
    ?s ?p ?o .
    FILTER(?s IN (<URI_1>, <URI_2>,... <URI_N>)) .
    FILTERS....
}

CONSTRUCT {?s ?p ?o}
WHERE {
    ?s ?p ?o .
    FILTER(?o IN (<URI_1>, <URI_2>,... <URI_N>)) .
    FILTERS...
}

第一个表达式获取前沿节点为主体的所有三元组,第二个表达式获取前沿节点为对象的所有三元组。还应该注意的是,我添加了几个过滤器,为了简单起见而省略了它们。

当我执行这些查询时,语句1和语句2之间的执行时间差异很大。语句1的执行速度比语句2快3-6倍,即使语句大致相同。

有人可以提供一个提示,说明为什么两个查询之间存在如此大的差异?更好的是,如何重构查询二以获得更好的性能?

0 个答案:

没有答案