Sparql 将Wikidata结果限制为只有一个标签,其中有更多标签可用
我有以下针对Wikidata的SPARQL查询:Sparql 将Wikidata结果限制为只有一个标签,其中有更多标签可用,sparql,distinct,wikidata,Sparql,Distinct,Wikidata,我有以下针对Wikidata的SPARQL查询: SELECT DISTINCT ?location ?place_eng ?admin_eng ?country_eng WHERE { { VALUES ?place { wd:Q23154 wd:Q19319 wd:Q2758 } OPTIONAL { ?place wdt:P625 ?location. } ?place wdt:P131 ?admin. ?place wdt:P17 ?country.
SELECT DISTINCT ?location ?place_eng ?admin_eng ?country_eng WHERE {
{
VALUES ?place { wd:Q23154 wd:Q19319 wd:Q2758 }
OPTIONAL { ?place wdt:P625 ?location. }
?place wdt:P131 ?admin.
?place wdt:P17 ?country.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?place rdfs:label ?place_eng.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?admin rdfs:label ?admin_eng.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?country rdfs:label ?country_eng.
}
}
它选择三个特定的城市及其位置和名称、行政名称和国家名称标签。如果在中运行查询,可以看到其中一个城市出现两次,因为有两个不同的标签可供其管理
如何确保每个城市只显示一次?如果有多个标签,我只关心获取一个标签(第一个,甚至是随机的,只要每次运行查询时都相同)
我已经尝试过此解决方案(仅第一行更改):
但是我得到了一个糟糕的聚合错误。
选择DISTINCT?location(sample(?place_eng)as?placeEng)(sample(?admin_eng)as?admeng)(sample(?country_eng)as?countryEng)其中{VALUES?place{wd:Q23154 wd:Q19319 wd:Q2758}可选{place wdt:P625?location.}place wdt:P131?admin。?place wdt:P17?国家。服务wikibase:label{bd:serviceParam wikibase:language“en”。?place rdfs:label?place_eng。?admin rdfs:label?admin_eng。?国家rdfs:label?country_eng.}分组按位置
这是否保证每次都会拾取相同的标签,如果有几个?
SELECT DISTINCT ?location ?place_eng (group_concat(distinct ?admin_eng) as ?admin_eng) ?country_eng WHERE {
{
VALUES ?place { wd:Q23154 wd:Q19319 wd:Q2758 }
OPTIONAL { ?place wdt:P625 ?location. }
?place wdt:P131 ?admin.
?place wdt:P17 ?country.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?place rdfs:label ?place_eng.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?admin rdfs:label ?admin_eng.
}
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en".
?country rdfs:label ?country_eng.
}
}