User:GodeNehler/sandbox
- defaultView:Map{"hide":["?coordinates", "?line", "?rgb"]}
SELECT DISTINCT ?coordinates ?line ?item ?itemLabel ?connectLabel ?image ?opening ?rgb
WITH {
SELECT ?item (SAMPLE(?coordinates) AS ?coordinates) (SAMPLE(?image) AS ?image) (sample(?lat1) as ?lat1) (sample(?lon1) as ?lon1) (sample(?opening) as ?opening) WHERE { {?item wdt:P361 wd:Q68646} UNION {?item wdt:P361 wd:Q99654} . ?item wdt:P625 ?coordinates . ?item p:P625 / psv:P625 / wikibase:geoLatitude ?lat1 . ?item p:P625 / psv:P625 / wikibase:geoLongitude ?lon1 . OPTIONAL { ?item wdt:P18 ?image }. OPTIONAL { ?item wdt:P1619 ?opening }. } GROUP BY ?item
} AS %stations
WITH {
SELECT ?nextstation (sample(?lat2) as ?lat2) (sample(?lon2) as ?lon2) WHERE { {?nextstation wdt:P361 wd:Q68646} UNION {?nextstation wdt:P361 wd:Q99654} . ?nextstation p:P625 / psv:P625 / wikibase:geoLatitude ?lat2 . ?nextstation p:P625 / psv:P625 / wikibase:geoLongitude ?lon2 . } GROUP BY ?nextstation
} AS %nextstations
WITH {
SELECT ?line ?connect ?rgb WHERE { INCLUDE %stations . INCLUDE %nextstations . ?item p:P197 ?nextstationstatement . ?nextstationstatement ps:P197 ?nextstation . {?nextstationstatement pq:P81 ?connect . ?connect wdt:P361 wd:Q68646} UNION {?nextstationstatement pq:P81 ?connect . ?connect wdt:P361 wd:Q99654} . ?connect wdt:P465 ?rgb . FILTER(STR(?item) < STR(?nextstation)) . BIND(CONCAT('LINESTRING (', STR(?lon1), ' ', STR(?lat1), ',', STR(?lon2), ' ', STR(?lat2), ')') AS ?str) . BIND(STRDT(?str, geo:wktLiteral) AS ?line) }
} AS %lines
WHERE {
{ INCLUDE %stations } UNION { INCLUDE %lines } . SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}