使用 SPARQL 从维基数据中检索坐标样本的纬度和经度
Retrieve latitude and longitude of a sample of coordinates from Wikidata using SPARQL
我正在尝试通过 SPARQL 检索维基数据中的坐标样本,但我很难实现它。我只想获得每个地方的一对坐标,并将结果显示在一列中,并将所述坐标样本的纬度和经度显示在它们自己的列中。
以下代码 (link to WQS) I use below works, but it does not get the coordinates values labels in Point(5.936111111 51.21)
format. When I replace p:P625
with wdt:P625
, no items are retrieved. Additionally, Borculo (Q1025685) 在具有两个唯一坐标的结果中出现两次:
SELECT DISTINCT ?place ?placeLabel (SAMPLE(?temp1) AS ?coords_sample) ?lat ?long {
?place p:P31 ?instanceOf.
?instanceOf ps:P31/wdt:279* wd:Q2039348.
?place p:P625 ?temp1.
?temp1 psv:P625 ?temp2.
?temp2 wikibase:geoLatitude ?lat.
?temp2 wikibase:geoLongitude ?long.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} GROUP BY ?place ?placeLabel ?lat ?long
ORDER BY ?placeLabel
使用 ps:P625
获取所需格式的坐标(另请参阅 manual on Wikibooks)。
此外,如果您还按 ?lat
和 ?long
分组,则对坐标语句进行采样是不够的。因此,您最好在子查询中对其进行采样。
最终结果:
SELECT DISTINCT ?place ?placeLabel ?coords ?lat ?long {
?place p:P31/ps:P31/wdt:279* wd:Q2039348 ;
p:P625 ?coords_sample .
{
SELECT (SAMPLE(?coords_stmt) AS ?coords_sample) {
?place p:P31/ps:P31/wdt:279* wd:Q2039348 ;
p:P625 ?coords_stmt .
} GROUP BY ?place
}
?coords_sample ps:P625 ?coords;
psv:P625 [
wikibase:geoLatitude ?lat;
wikibase:geoLongitude ?long
] .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?placeLabel
我正在尝试通过 SPARQL 检索维基数据中的坐标样本,但我很难实现它。我只想获得每个地方的一对坐标,并将结果显示在一列中,并将所述坐标样本的纬度和经度显示在它们自己的列中。
以下代码 (link to WQS) I use below works, but it does not get the coordinates values labels in Point(5.936111111 51.21)
format. When I replace p:P625
with wdt:P625
, no items are retrieved. Additionally, Borculo (Q1025685) 在具有两个唯一坐标的结果中出现两次:
SELECT DISTINCT ?place ?placeLabel (SAMPLE(?temp1) AS ?coords_sample) ?lat ?long {
?place p:P31 ?instanceOf.
?instanceOf ps:P31/wdt:279* wd:Q2039348.
?place p:P625 ?temp1.
?temp1 psv:P625 ?temp2.
?temp2 wikibase:geoLatitude ?lat.
?temp2 wikibase:geoLongitude ?long.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} GROUP BY ?place ?placeLabel ?lat ?long
ORDER BY ?placeLabel
使用 ps:P625
获取所需格式的坐标(另请参阅 manual on Wikibooks)。
此外,如果您还按 ?lat
和 ?long
分组,则对坐标语句进行采样是不够的。因此,您最好在子查询中对其进行采样。
最终结果:
SELECT DISTINCT ?place ?placeLabel ?coords ?lat ?long {
?place p:P31/ps:P31/wdt:279* wd:Q2039348 ;
p:P625 ?coords_sample .
{
SELECT (SAMPLE(?coords_stmt) AS ?coords_sample) {
?place p:P31/ps:P31/wdt:279* wd:Q2039348 ;
p:P625 ?coords_stmt .
} GROUP BY ?place
}
?coords_sample ps:P625 ?coords;
psv:P625 [
wikibase:geoLatitude ?lat;
wikibase:geoLongitude ?long
] .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?placeLabel