我使用这个SPARQL查询来获取欧洲国家的列表:
SELECT ?item $itemLabel
WHERE {
?item wdt:P31 wd:Q6256.
#?item wdt:P30 wd:Q46
#?item wdt:P361* wd:Q46.
?item wdt:P30|wdt:P361* wd:Q46.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ASC($itemLabel)我使用4-6活动行之一运行查询,另外两行注释掉了。
无论哪个谓词是活动的,奥地利都不是结果的一部分(其他国家也缺少)。然而,看看https://www.wikidata.org/wiki/Q40,我们可以看到
我做错了什么?
这是相关查询。
发布于 2019-05-04 21:11:09
奥地利实际上没有被宣布为一个国家的实例(Q6256)。它被声明为主权国家(Q3624078)的实例,它是国家的子类(P279)。可以在奥地利网页上看到的与国家的实例关系是推断出来的,在查询时不可用。
要解决这个问题,我们可以查询国家或其子类的实例:
?item wdt:P31/wdt:P279* wd:Q6256.不幸的是,这也吸引了历史国家,所以查询需要一些额外的工作来过滤掉(例如,使用FILTER NOT EXISTS { ... })。它还需要SELECT DISTINCT。
https://stackoverflow.com/questions/55986633
复制相似问题