【发布时间】:2019-02-26 21:09:26
【问题描述】:
我有一个包含 1200 个地理实体的列表,例如城市、湖泊或山脉等字符串。我想用授权文件 WikiData ID 来丰富这些实体。这可行,但结果我有时会收到不止一个 WikiDataID 建议。我需要根据声明中的国家/地区的外观来定义正确的。
例如,我尝试了卡尔斯鲁厄市。 对于字符串“Karlsruhe”,我得到三个结果。但我只想要一个特定的 WikiData ID(在本例中为:https://www.wikidata.org/wiki/Q1040),带有德语、英语和法语的标签和 altLabel(也称为)。 作为一个条件,实体应该是一个国家的一部分。 这可以通过属性 P17 或值 Q6256 来定义。
有没有办法只查询没有查询助手过滤器中的值的属性?
非常感谢您的帮助!
这里是查询:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
prefix schema: <http://schema.org/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT DISTINCT ?country ?item ?itemLabel ?altLabel ?label_en ?
label_de ?label_fr
WHERE {
?item rdfs:label "Karlsruhe"@de.
?item skos:altLabel ?altLabel.
?item rdfs:label ?label_en.
?item rdfs:label ?label_de.
?item rdfs:label ?label_fr.
FILTER(LANGMATCHES(LANG(?altLabel), "de"))
FILTER((LANG(?label_en)) = "en")
FILTER((LANG(?label_de)) = "de")
FILTER((LANG(?label_fr)) = "fr")
SERVICE wikibase:label { bd:serviceParam wikibase:language "
[AUTO_LANGUAGE],de, en, fr". }
}
【问题讨论】: