Как ускорить этот федеративный запрос? - PullRequest
1 голос
/ 29 января 2020

У меня есть запрос, который выводит людей, которые dbo:Writer и имеют разные даты рождения, указанные в DBpedia и Wikidata. Я написал это изначально, чтобы работать независимо, но в настоящее время я работаю на Wikidata. Это довольно медленно, и интересно то, что когда я не звоню с конечной точки Wikidata с SERVICE, что я могу позволить себе сделать здесь, это становится еще медленнее. Мне было бы интересно узнать, почему это так. Но мой главный вопрос, как это оптимизировать? Вот запрос:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>

SELECT DISTINCT ?personDBP ?personWD ?personWDLabel ?BirthDateDBP ?BirthDateWD

WHERE {


   SERVICE <http://dbpedia.org/sparql> {
      ?personDBP a dbo:Writer ;
      dbo:birthDate ?BirthDate_DBP;
      owl:sameAs ?personWD .
      FILTER REGEX (?personWD, "wikidata.org")
      BIND (xsd:date(?BirthDate_DBP) AS ?BirthDateDBP)
   }

    SERVICE <https://query.wikidata.org/sparql>  {
      ?personWD wdt:P569 ?BirthDate_WD .
      BIND (xsd:date(?BirthDate_WD) AS ?BirthDateWD)  
    }

FILTER (?BirthDateDBP != ?BirthDateWD)

SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }

}

ORDER BY DESC(?BirthDateDBP)

LIMIT 50
...