首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SPARQL联邦查询需要太长时间才能响应

SPARQL联邦查询需要太长时间才能响应
EN

Stack Overflow用户
提问于 2022-05-16 17:46:26
回答 1查看 58关注 0票数 1

我有一个SPARQL联合查询,其中我加入了来自wikidata和dbpedia的数据。当我运行前两个查询时,需要合理的时间。然而,当我添加第三次服务时,需要花费太多的时间。在第三个查询中,我从前两个查询中获取实体,并通过查看它们是否是‘打击乐器’的子类来筛选它们。

以下是我的查询(关于中东地区返回打击乐器的查询):

代码语言:javascript
复制
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bd: <http://www.bigdata.com/rdf#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX dbp: <http://dbpedia.org/property/>



SELECT DISTINCT
        ?instrument
        (?countryDbpediaID)
        (?country as ?wikidataID)
        (?countryLabel as ?origin)
WHERE {
          SERVICE <https://query.wikidata.org/sparql>
          {
              SELECT DISTINCT ?country ?countryLabel
              WHERE {
                        ?country wdt:P361 wd:Q7204 .

                        SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
                    }
          }

          SERVICE <https://dbpedia.org/sparql>
          {
              SELECT DISTINCT ?intermediateEntityDbpediaID
                ?intermediateEntityWikidataUri
                ?intermediateEntityWikidataID
                ?countryDbpediaID ?description
              FROM <http://dbpedia.org>
                   WHERE { ?countryDbpediaID owl:sameAs ?country;
                                      rdfs:label ?label ;
                                      foaf:depiction ?image;
                                      rdfs:comment ?description .
                            ?intermediateEntityDbpediaID dbp:origin ?countryDbpediaID;
                                               rdfs:label ?intermediateEntityLabel ;
                                               owl:sameAs ?intermediateEntityWikidataUri .


                           FILTER (LANG(?label) = "en")
                           FILTER (LANG(?intermediateEntityLabel) = "en")
                           FILTER (STRSTARTS(STR(?intermediateEntityWikidataUri), STR('http://www.wikidata.org')))
                           FILTER (LANG(?description) = "en")
                           BIND(REPLACE(STR(?intermediateEntityWikidataUri),"http://www.wikidata.org/entity/","","i") AS ?intermediateEntityWikidataID)
                         }
          }

          SERVICE <https://query.wikidata.org/sparql>
            {
                SELECT DISTINCT ?instrument
                WHERE {
                          ?instrument wdt:P279 wd:Q133163 .

                          FILTER (?instrument in (URI(?intermediateEntityWikidataUri)))

                          SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
                      }
            }



}

我发现了这个相关的问题,但它并没有帮助我:SPARQL Speed up federated query

有任何方法来优化这个查询吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-16 23:07:28

这里的三个联邦查询没有任何共享连接变量。从它们返回的唯一变量(在子查询的SELECT DISTINCT子句中)都是不相交的。这意味着计算正在执行两个笛卡尔联接。

这三个子查询分别返回21、504和0结果。因此,我认为最终结果将是零行返回。但是,查询引擎可能正在采取一种非常不理想的路径,以达到这个答案和超时。

更新:

考虑到像?intermediateEntityWikidataUri这样的变量的反复使用,我怀疑这些变量被用来连接跨联邦子查询的数据。但正如所写的,查询无法做到这一点。例如,考虑到SPARQL的自下而上语义,如果不将该变量绑定在同一范围内,就不能在第三个查询的筛选器中使用?intermediateEntityWikidataUri

不管查询中还有什么,这是:

代码语言:javascript
复制
  SERVICE <https://query.wikidata.org/sparql>
    {
        SELECT DISTINCT ?instrument
        WHERE {
                  ?instrument wdt:P279 wd:Q133163 .

                  FILTER (?instrument in (URI(?intermediateEntityWikidataUri)))
                  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
              }
    }

将导致零结果,因为筛选器表达式是使用一个未绑定变量(它将过滤掉所有结果)计算的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72263478

复制
相关文章

相似问题

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