使用WikiData中的SPARQL查询无值的属性

时间:2019-02-22 20:57:57

标签: sparql wikidata

我列出了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". }
} 

2 个答案:

答案 0 :(得分:0)

  

作为条件,实体应为国家/地区的一部分。您可以通过属性P17定义或将其定义为值Q6256。有没有一种方法可以查询没有查询助手过滤器中值的属性?

如果我的理解正确,您是在询问是否可以修改查询,以便仅在该商品具有 some 个国家(我们不在乎哪个国家)的情况下才返回结果。如果是这种情况,您可以在查询中添加以下图形模式:

?item wdt:P17 ?country .

甚至:

?item wdt:P17 [] .

[]是一个空白节点,在SPARQL中表示一个匿名变量,即,一个我们不感兴趣的值的变量占位符)。

答案 1 :(得分:0)

此查询对我有用:

helm dep update