我列出了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". }
}
答案 0 :(得分:0)
作为条件,实体应为国家/地区的一部分。您可以通过属性P17定义或将其定义为值Q6256。有没有一种方法可以查询没有查询助手过滤器中值的属性?
如果我的理解正确,您是在询问是否可以修改查询,以便仅在该商品具有 some 个国家(我们不在乎哪个国家)的情况下才返回结果。如果是这种情况,您可以在查询中添加以下图形模式:
?item wdt:P17 ?country .
甚至:
?item wdt:P17 [] .
([]
是一个空白节点,在SPARQL中表示一个匿名变量,即,一个我们不感兴趣的值的变量占位符)。
答案 1 :(得分:0)
此查询对我有用:
helm dep update