问题描述
要查询巴拉克·奥巴马(Barack Obama)的出生日期,这似乎相对简单,为什么要花这么长时间以至于https://query.wikidata.org/超时?只有大约3个标有巴拉克·奥巴马(Barack Obama)的实体,还有大约2个标有“出生日期”的
SELECT disTINCT ?ent ?wdtProperty ?val ?valLabel WHERE {
?ent rdfs:label|skos:altLabel "Barack Obama"@en.
?wdProperty1 rdfs:label|skos:altLabel "date of birth"@en;
wikibase:directClaim ?wdtProperty1.
?ent ?wdtProperty1 ?val .
} LIMIT 10
解决方法
正确的答案是
SELECT DISTINCT ?ent ?wdtProperty1 ?val
WITH
{
SELECT ?wdtProperty1
WHERE
{
[] rdfs:label|skos:altLabel "date of birth"@en;
wikibase:directClaim ?wdtProperty1.
}
} AS %get_predicate
WITH
{
SELECT ?ent
WHERE
{
?ent rdfs:label|skos:altLabel "Barack Obama"@en.
}
} AS %get_subject
WHERE
{
INCLUDE %get_predicate
INCLUDE %get_subject
?ent ?wdtProperty1 ?val .
}
感谢https://www.wikidata.org/wiki/Wikidata:Request_a_query#Slow_query_on_label