Я хочу найти примеры ученых, которые оба родились и умерли в первые числа лет. Основываясь на предыдущем обсуждении на этом URL , я разработал следующий запрос, который является громоздким и время ожидания:
SELECT ?birthYear ?deathYear ?scientist ?scientistLabel
WHERE
{
{
select ?value1
{
?number wdt:P31 wd:Q49008.
?number wdt:P1181 ?value1
filter(?value1 < year(now()))
}
}
{
select ?value2
{
?number wdt:P31 wd:Q49008.
?number wdt:P1181 ?value2
filter(?value2 < ?value1)
}
}
?scientist wdt:P106 wd:Q901.
?scientist wdt:P570 ?deathDate.
?scientist wdt:P569 ?birthDate
BIND(year(?deathDate) as ?deathYear)
BIND(year(?birthDate) as ?birthYear)
filter(?deathYear = ?value1)
filter(?birthYear = ?value2)
SERVICE wikibase:label { bd:serviceParam wikibase:language " [AUTO_LANGUAGE],en". }
}
order by asc(?deathYear) asc(?scientistLabel)
limit 100
Я новичок в SPARQL, но, насколько я могу судить, для этого понадобятся пары простых чисел, а затем выясняется, умер ли кто-либо, чья профессия "ученый", в год, соответствующий первому, тогда, если этот человек родился в год, соответствующий 2-му.
Есть ли способ повысить производительность этого запроса?