通过 GeoNames ID 查询维基数据
Query Wikidata by GeoNames ID
我尝试通过 GeoNames ID 查询维基数据中的城市。
我可以看到 属性 的 id 是 P1556: https://www.wikidata.org/wiki/Property:P1566
所以我对柏林的查询(作为示例)是:
SELECT * WHERE {
?id wdt:P1566 wd:2950157
}
但我没有匹配到。
我做错了什么?
Wikidata 上的一个简单试错结果如下:不需要 wd:2950157
,它是一个文字,所以只用 "2950157"
代替。使用以下(SERVICE
用于显示城市名称):
编辑: 直接方法:
SELECT ?id ?idLabel WHERE {
?id wdt:P1566 "2950157".
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
编辑结束
使用 BIND 或 FILTER
SELECT ?id ?idLabel WHERE {
Bind ("2950157" as ?x)
?id wdt:P1566 ?x.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
或者(较慢的选项)使用 FILTER
SELECT ?id ?idLabel WHERE {
?id wdt:P1566 ?x.
filter (?x = "2950157")
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
我尝试通过 GeoNames ID 查询维基数据中的城市。
我可以看到 属性 的 id 是 P1556: https://www.wikidata.org/wiki/Property:P1566
所以我对柏林的查询(作为示例)是:
SELECT * WHERE {
?id wdt:P1566 wd:2950157
}
但我没有匹配到。
我做错了什么?
Wikidata 上的一个简单试错结果如下:不需要 wd:2950157
,它是一个文字,所以只用 "2950157"
代替。使用以下(SERVICE
用于显示城市名称):
编辑: 直接方法:
SELECT ?id ?idLabel WHERE {
?id wdt:P1566 "2950157".
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
编辑结束
使用 BIND 或 FILTER
SELECT ?id ?idLabel WHERE {
Bind ("2950157" as ?x)
?id wdt:P1566 ?x.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
或者(较慢的选项)使用 FILTER
SELECT ?id ?idLabel WHERE {
?id wdt:P1566 ?x.
filter (?x = "2950157")
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}