我正在尝试运行一个简单的查询,以其英文标签查找一个项目。由于某些原因,某些条目没有显示。多数都很好,但有些却不是。我无法查明原因。
示例:oyster bed
。这是条目:https://www.wikidata.org/wiki/Q65953972
这是查询:
SELECT distinct ?item ?itemLabel ?itemDescription WHERE {
?item ?label 'oyster bed'@en.
?article schema:about ?item .
?article schema:inLanguage 'en' .
SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
}
而我一无所获。
与oyster
相同的查询会产生预期的结果。
我在做什么错?
@ UninformedUser的提示帮助。
作为SPARQL新手,我没有意识到?article
是隐式的JOIN。
SELECT distinct ?item ?itemLabel ?itemDescription WHERE {
?item ?label 'oyster bed'@en.
OPTIONAL { ?article schema:about ?item .
?article schema:inLanguage 'en' . }
SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
}
如果需要文章,则使用它,但是如果没有真正的需要,则可以将查询简化为:
SELECT distinct ?item ?itemLabel ?itemDescription WHERE {
?item ?label 'oyster bed'@en.
SERVICE wikibase:label { bd:serviceParam wikibase:language 'en'. }
}