维基数据:过滤 post 代码仅当前有效

Wikidata: Filter post codes only current valid

我想过滤 post 个代码以仅显示今天的当前活跃代码。

问题是有些城市使用旧 post 代码 (Example)。

我当前的查询显示旧的 post 代码:

SELECT ?city ?cityLabel ?postcode ?federal_stateLabel ?federal_state_nr WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],de". }
  ?city (wdt:P31/(wdt:P279*)) wd:Q7930989;
    wdt:P17 wd:Q183;
    wdt:P281 ?postcode;
    wdt:P131 ?federal_state.
  ?federal_state wdt:P439 ?federal_state_nr.
}
ORDER BY (?postcode)
LIMIT 10

(query.wikidata.org)

我必须使用 start time P580 and end time P582 但我不知道如何使用。

您可以使用它来过滤掉有结束时间的声明:

?city p:P281 ?postCodeStmt .
?postCodeStmt ps:P281 ?postcode .
FILTER NOT EXISTS { ?postcode pq:P582 ?endTime . }

整个查询变为:

SELECT ?city ?cityLabel ?postcode ?federal_stateLabel ?federal_state_nr WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],de". }
  ?city (wdt:P31/(wdt:P279*)) wd:Q7930989;
    wdt:P17 wd:Q183;
    p:P281 ?postCodeStmt;
    wdt:P131 ?federal_state.
  ?federal_state wdt:P439 ?federal_state_nr.
  ?postCodeStmt ps:P281 ?postcode.
  FILTER NOT EXISTS { ?postCodeStmt pq:P582 ?endTime . } # Filtering out old postal codes
}
ORDER BY (?postcode)
LIMIT 100

另见 Wikidata:SPARQL tutorial§Qualifiers