参见例如P297 at Q37024,有一个限定符(P582)。
此查询是错误的,如何显示Q37024案件的结束时间?
SELECT ?item ?iso2_code ?endtime
WHERE {
?item wdt:P297 ?iso2_code
OPTIONAL { ?iso2_code pq:P582 ?endtime }
}
我需要所有没有结束时间的物品。
我正在查询
SELECT DISTINCT ?iso2_code ?wd_id
WHERE {
?item wdt:P297 ?iso2_code
BIND(strafter(STR(?item),"http://www.wikidata.org/entity/") as ?wd_id).
} ORDER BY ?iso2_code
但检索重复项,
所以我需要排除一个,但是正确的一个:到结束时间。
PS:有一本关于WIKIDATA Qualifiers的手册,但没有检索数据集的真实案例。
答案 0 :(得分:1)
SELECT DISTINCT (?simple_value AS ?iso2_code) ?wd_id
WHERE {
?item p:P297 ?statement .
?statement ps:P297 ?simple_value .
# ?statement a wikibase:BestRank
OPTIONAL { ?statement pq:P582 ?qualifier . }
FILTER ( !bound(?qualifier) )
BIND ( strafter(str(?item), str(wd:)) AS ?wd_id ).
} ORDER BY ?iso2_code
您可以使用FILTER NOT EXISTS { ?statement pq:P582 ?qualifier . }
代替
OPTIONAL { ?statement pq:P582 ?qualifier . } FILTER ( !bound(?qualifier) )
。