如何通过控制查询执行顺序在Virtuoso上更快地进行SPARQL查询?

问题描述 投票:1回答:1

我已经建立了一个Virtuoso服务器来托管Freebase数据(version 07.20.3217, built Jan 5 2017;我非常感谢you can have a try)。

让我们考虑这种情况:在威斯康星州(?var1)找到最大的位置(可能是一个县,由fb:m.0824r表示),其中?var1包含至少一个位置(用?var2表示),类型为fb:place_with_neighborhoods

我写了SPARQL查询如下:

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var2       fb:type.object.type            fb:location.place_with_neighborhoods . 
             ?var1       fb:location.location.area      ?area .
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .
} ORDER BY DESC(?area) 
LIMIT 1

不幸的是,Virtuoso引擎无法返回查询结果一个多小时。

我尝试了一些更简单的查询,这些查询可以在不到一秒的时间内产生结果:

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var2       fb:type.object.type            fb:location.place_with_neighborhoods . 
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .    
}
# Remove the area-related information with ?var1
# Returns ONLY ONE result in 0.05s.

和,

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name ?area WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var1       fb:location.location.area      ?area .
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .
}
# Remove the type limitation of ?var2
# Returns ~7000 results in ~1s.

鉴于这些简单查询的结果,我真的很困惑哪一步带来了性能问题。有人能给我一些建议吗?非常感谢!

sparql freebase virtuoso openlink-virtuoso
1个回答
2
投票

正如issue you raised on the project所述 -

当查询的其余部分没有产生解决方案时,OPTIONAL似乎存在查询计划问题,因为仅从初始查询brings results near instantly中删除该子句。

删除?var1 fb:location.location.area ?area模式(因此,ORDER BY DESC(?area)),这是将解决方案设置为零,同样brings near instant results

这个问题将通过Development进行分析。

© www.soinside.com 2019 - 2024. All rights reserved.