OSM Planet
Jump to navigation
Jump to search
Links
- https://wiki.openstreetmap.org/wiki/Sophox
- https://qlever.cs.uni-freiburg.de/osm
- https://wiki.bitplan.com/index.php?title=OSM_Planet
- https://wiki.openstreetmap.org/wiki/Sophox/Example_queries
- https://wiki.openstreetmap.org/wiki/OpenTripPlanner
OSM Planet SPARQL Queries with pylodstorage query tool
Configuration for pylodstorage sparqlquery tool
see https://pypi.org/project/pyLodStorage/
installation
pip install pylodstorage
The configuration files need to be in $HOME/.pylodstorage or you have to explicitly give the path with the -ep and -qp options
endpoints.yaml
osm-sophox:
endpoint: https://sophox.org/sparql
website: https://sophox.org
database: blazegraph
method: POST
lang: sparql
prefixes: |
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
PREFIX osmt: <https://wiki.openstreetmap.org/wiki/Key:>
PREFIX osmm: <https://www.openstreetmap.org/meta/>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
osm-qlever:
endpoint: https://qlever.cs.uni-freiburg.de/api/osm-planet
website: https://qlever.cs.uni-freiburg.de/osm-planet
database: qlever
method: POST
lang: sparql
prefixes: |
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
PREFIX osmt: <https://wiki.openstreetmap.org/wiki/Key:>
PREFIX osmm: <https://www.openstreetmap.org/meta/>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX osm2rdfmember: <https://osm2rdf.cs.uni-freiburg.de/rdf/member#>
PREFIX osmway: <https://www.openstreetmap.org/way/>
osmplanet.yaml (or queries.yaml as default)
# OSMPlanet Query Examples
# Wolfgang Fahl
# 2025-01-20
#
# SPARQL queries for exploring OpenStreetMap data via:
# - https://sophox.org/sparql (Sophox endpoint)
# - https://qlever.cs.uni-freiburg.de/osm (Qlever endpoint)
#
# See also:
# - https://www.openstreetmap.org/
# - https://wiki.bitplan.com/index.php?title=OSM_Planet
#
# Motivation: Explore OSM relations and their predicates/objects to analyze
# connectivity and relationships between OSM entities
'RelationStats':
param_list:
- name: relid
type: str
default_value: "6843452"
sparql: |
# Get statistics about predicates used in an OSM relation
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
SELECT ?p (COUNT(?o) as ?count)
WHERE {
osmrel:{{relid}} ?p ?o .
}
GROUP BY ?p
HAVING (?count > 1)
ORDER BY DESC(?count)
'RelationNodes':
# Get all nodes for a given OSM relation relid e.g. Renfe R16019
param_list:
- name: relid
type: str
default_value: "6843452"
sparql: |
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
SELECT ?p ?o (STR(?label) as ?plabel)
WHERE {
osmrel:{{relid}} ?p ?o .
FILTER(STRSTARTS(STR(?o), "https://www.openstreetmap.org/node/"))
}
'RelationNodesGeo':
# get geometry data for relation elements with a given role including lat/lon filtering
param_list:
- name: relid
type: str
default_value: "10492086"
- name: role
type: str
default_value: "stop"
- name: min_lat
type: float
default_value: 36.00
- name: max_lat
type: float
default_value: 44.00
- name: min_lon
type: float
default_value: -9.00
- name: max_lon
type: float
default_value: 4.00
sparql: |
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX osm2rdfmember: <https://osm2rdf.cs.uni-freiburg.de/rdf/member#>
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
PREFIX osmkey: <https://www.openstreetmap.org/wiki/Key:>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
SELECT
?rel_name
?rel
?rel_pos
?member
?node
?node_name
?node_ref
?role
?lat
?lon
WHERE {
VALUES (?rel ?role ?minlat ?maxlat ?minlon ?maxlon) {
(osmrel:{{relid}} "{{role}}" {{min_lat}} {{max_lat}} {{min_lon}} {{max_lon}})
}
?rel osmkey:ref ?rel_name .
?rel osmrel:member ?member .
?member osm2rdfmember:pos ?rel_pos .
?member osm2rdfmember:role ?role .
?member osm2rdfmember:id ?node .
OPTIONAL { ?node osmkey:name ?node_name}.
OPTIONAL { ?node osmkey:ref ?node_ref}.
?node geo:hasGeometry/geo:asWKT ?loc .
BIND(geof:latitude(?loc) AS ?lat)
BIND(geof:longitude(?loc) AS ?lon)
FILTER (?lat > ?minlat && ?lat < ?maxlat && ?lon > ?minlon && ?lon < ?maxlon)
}
ORDER BY ?rel_pos
'RelationRoleHistogram':
# Get a histogram of roles for a given OSM relation
param_list:
- name: relid
type: str
default_value: "10492086"
sparql: |
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
PREFIX osm2rdfmember: <https://osm2rdf.cs.uni-freiburg.de/rdf/member#>
SELECT ?role (COUNT(?member) as ?count)
WHERE {
osmrel:{{relid}} osmrel:member ?member .
?member osm2rdfmember:role ?role .
}
GROUP BY ?role
ORDER BY DESC(?count)
test
sparqlquery -en qlever-osm -qp osmplanet.yaml --list
RelationStats:RelationStats
RelationNodes:RelationNodes
RelationNodesGeo:RelationNodesGeo
RelationRoleHistogram:RelationRoleHistogram
Sophox Example Queries
RouteTypeHistogram
sparqlquery -qp osmplanet.yaml -en osm-sophox -p -qn RouteTypeHistogram --limit 10 --format mediawiki
query
SELECT
?route_type (COUNT(?route_type) AS ?count)
WHERE {
?route
osmt:type "route";
osmt:route ?route_type;
osmm:type "r";
osmt:ref ?ref;
}
GROUP BY ?route_type
ORDER BY DESC(?count)
result
route_type | count |
---|---|
bus | 286484 |
road | 242360 |
hiking | 106522 |
bicycle | 71364 |
foot | 49011 |
train | 13673 |
mtb | 8649 |
power | 5660 |
railway | 5239 |
tram | 4739 |
sparqlquery -qp osmplanet.yaml -qn RelationStats -en osm-sophox --param relid=6843452 -f mediawiki
RelationStats
query
# Get statistics about predicates used in an OSM relation
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
SELECT ?p (COUNT(?o) as ?count)
WHERE {
osmrel:6843452 ?p ?o .
}
GROUP BY ?p
HAVING (?count > 1)
ORDER BY DESC(?count)
result
p | count |
---|---|
https://www.openstreetmap.org/meta/has | 186 |
sparqlquery -qp osmplanet.yaml -qn RelationNodes -en osm-sophox --param relid=6843452 -f mediawiki
RelationNodes
query
# Get all nodes for an OSM relation
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
SELECT *
WHERE {
osmrel:6843452 ?p ?o .
FILTER(STRSTARTS(STR(?o), "https://www.openstreetmap.org/node/"))
}
result
QLever example queries
sparqlquery -qp osmplanet.yaml -en osm-qlever -p -qn RelationRoleHistogram -f mediawiki --param relid=10492086
RelationRoleHistogram
query
PREFIX osmrel: <https://www.openstreetmap.org/relation/>
PREFIX osm2rdfmember: <https://osm2rdf.cs.uni-freiburg.de/rdf/member#>
SELECT ?role (COUNT(?member) as ?count)
WHERE {
osmrel:10492086 osmrel:member ?member .
?member osm2rdfmember:role ?role .
}
GROUP BY ?role
ORDER BY DESC(?count)
result
role | count |
---|---|
member | 624 |
platform | 31 |
stop | 26 |