Wikidata SPARQL CONSTRUCT查询未返回全部影片结果问题咨询
解决Wikidata SPARQL CONSTRUCT查询缺失无标签影片的问题
你遇到的问题根源在于原始查询默认要求影片必须带有标签,那些没有任何语言标签的影片条目被WHERE子句过滤掉了,所以只返回了127636条结果。
问题原因
你的原始查询里,SERVICE wikibase:label部分是强制匹配的——如果某个影片条目没有任何符合语言设置的rdfs:label,这部分就不会返回对应的绑定值,导致整个WHERE条件不满足,该影片就被排除在结果之外。而Wikidata中确实存在大量无标签的小众或刚创建的影片条目。
解决方案
把标签查询部分改成可选匹配(OPTIONAL),这样即使影片没有标签,它的类型三元组(?film wdt:P31 wd:Q11424)依然会被纳入RDF图结果中。修改后的查询如下:
CONSTRUCT { ?film wdt:P31 wd:Q11424 . ?film rdfs:label ?filmLabel . } WHERE { ?film wdt:P31 wd:Q11424 . OPTIONAL { SERVICE wikibase:label { bd:serviceParam wikibase:language "en, [AUTO_LANGUAGE]". } } }
这个查询会返回所有Wikidata中的影片条目:有标签的条目会同时包含类型和标签三元组,无标签的条目则只包含类型三元组,不会再被遗漏。
内容的提问来源于stack exchange,提问作者Median Hilal
相关产品推荐
相关产品推荐

