首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询计算花费的时间太长

查询计算花费的时间太长
EN

Stack Overflow用户
提问于 2016-10-25 15:58:55
回答 2查看 253关注 0票数 1

我使用的是GraphDB Free7.1,并且我已经用默认设置创建了一个存储库。我已经上传了一个包含270万个三元组的ttl文件。我正在尝试发出一个查询(不是很复杂,但相当复杂),它应该返回200k个答案,而工作台只显示1k个答案,而GraphDB日志显示一个异常

代码语言:javascript
复制
10:52:19.580 [repositories/PaaSport] INFO  c.o.f.sesame.RepositoryController - POST query -1325396809
10:52:29.594 [repositories/PaaSport] ERROR o.o.h.s.r.TupleQueryResultView - Query interrupted
org.openrdf.query.QueryInterruptedException: Query evaluation took too long
...
10:52:29.594 [repositories/PaaSport] INFO  o.o.h.s.r.TupleQueryResultView - Request for query -1325396809 is finished

我使用的查询是:

代码语言:javascript
复制
SELECT DISTINCT ?offering ?Value 
WHERE {
    ?offering           a                          paasport:Offering ; 
                        DUL:satisfies              ?groundDescription . 
    ?groundDescription  paasport:offers            ?characteristic . 
    ?characteristic     a                          paasport:Storage ; 
                        DUL:hasParameter           ?par . 
    ?par                a                          paasport:StorageCapacity ; 
                        DUL:hasParameterDataValue  ?Value ; 
                        DUL:parametrizes           ?qualityValue . 
    ?qualityValue       uomvocab:measuredIn        ?Units .
    ?Units              a                          ?AppParMeasureUnitType . 
    ucum:GB             a                          ?AppParMeasureUnitType . 
    ?Units              a                          uomvocab:SimpleDerivedUnit . 
    ucum:GB             a                          uomvocab:SimpleDerivedUnit . 
    ucum:GB             uomvocab:derivesFrom       ?BasicUnit . 
    ?Units              uomvocab:derivesFrom       ?BasicUnit . 
    ucum:GB             uomvocab:modifierPrefix    ?prefix1 . 
    ?Units              uomvocab:modifierPrefix    ?prefix2 . 
    ?prefix1            uomvocab:factor            ?Factor1 . 
    ?prefix2            uomvocab:factor            ?Factor2 . 
       FILTER( xsd:double(?Factor2)*?Value = xsd:double(?Factor1)*4) 
  }

由于查询超时设置为0,我不确定是什么导致查询中断异常;很可能是内存问题?非常简单的查询(例如,返回某个类的所有实例)工作正常。

有什么提示吗?任何帮助都将不胜感激。如果需要,我可以提供更多细节。

最好的,尼克

EN

回答 2

Stack Overflow用户

发布于 2016-10-25 19:05:07

实际上,我已经设法将问题减少到最低限度,以便得到回答。该问题主要是由于以下三重模式造成的:

代码语言:javascript
复制
ucum:GB  rdf:type              ?AppParMeasureUnitType .
ucum:GB  rdf:type              uomvocab:SimpleDerivedUnit .
ucum:GB  uomvocab:derivesFrom  ?BasicUnit .

如果这些被省略,并且原始查询中相应的变量被常量资源替换,那么查询将被应答。

下面是查询的结果:

代码语言:javascript
复制
SELECT DISTINCT ?offering ?Value 
WHERE {
    ?offering           rdf:type                   paasport:Offering .
    ?offering           DUL:satisfies              ?groundDescription .
    ?groundDescription  paasport:offers            ?characteristic .
    ?characteristic     rdf:type                   paasport:Storage  .
    ?characteristic     DUL:hasParameter           ?par .
    ?par                rdf:type                   paasport:StorageCapacity .
    ?par                DUL:hasParameterDataValue  ?Value .
    ?par                DUL:parametrizes           ?qualityValue .
    ?qualityValue       uomvocab:measuredIn        ?Units .
    ?Units              rdf:type                   ucum:UnitOf-infotech .
    ?Units              rdf:type                   uomvocab:SimpleDerivedUnit .
    ?Units              uomvocab:derivesFrom       <http://purl.oclc.org/NET/muo/ucum/unit/amount-of-information/byte> .
    ucum:GB             uomvocab:modifierPrefix    ?prefix1 .
    ?Units              uomvocab:modifierPrefix    ?prefix2 .
    ?prefix1            uomvocab:factor            ?Factor1 .
    ?prefix2            uomvocab:factor            ?Factor2 .
        FILTER( xsd:double(?Factor2)*?Value >= xsd:double(?Factor1)*2)
}
票数 1
EN

Stack Overflow用户

发布于 2017-01-14 02:40:05

  1. 你真的需要DISTINCT吗?这总是减慢速度,因为它必须从内存中获取所有结果,对它们进行排序,并在开始提供服务之前对它们进行统一查询。
  2. 你需要在过滤器中使用=或>=吗?If = then将筛选器替换为绑定(...as ?Factor2),并在搜索?prefix2
  3. 之前放置这些内容?prefix2您是否分析了查询?prefix2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40234433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档