У меня есть запрос, который выводит людей, которые 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