Prompt Title: Glasbruk

Created 1 year ago
Votes 0
Views 255 times
0
Human: SPARQL som visar en karta av alla glasbruk
ChatGPT:

För att skapa en karta över alla glasbruk med SPARQL, behöver du data med geografisk information för varje glasbruk. Om du har den informationen kan du använda följande SPARQL-fråga för att hämta data och plotta dem på en karta:

ruby
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX schema: <http://schema.org/> SELECT ?name ?lat ?long WHERE { ?glassFactory rdf:type schema:ManufacturingPlant ; schema:industry "Glass" ; schema:name ?name ; geo:lat ?lat ; geo:long ?long . }

Detta kommer att hämta alla fabriker som har typen schema:ManufacturingPlant, är av industrin "Glass", och har en namn, latitude, och longitud definierad. Om du sparar resultatet i en CSV-fil kan du använda en karta-mjukvara för att plotta punkterna på en karta, som till exempel Google Maps, Leaflet eller OpenStreetMap.

Om du vill ha en karta direkt i SPARQL-resultaten, kan du lägga till ytterligare en rad som anger datatypen för lat och long och använda ST_AsText för att hämta en textrepresentation av geopositionen. Till exempel:

csharp
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX schema: <http://schema.org/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX geof: <http://www.opengis.net/def/function/geosparql/> SELECT ?name ?lat ?long WHERE { ?glassFactory rdf:type schema:ManufacturingPlant ; schema:industry "Glass" ; schema:name ?name ; geo:lat ?lat ; geo:long ?long . FILTER (datatype(?lat) = xsd:decimal && datatype(?long) = xsd:decimal) }

Sedan kan du använda geof:asWKT för att konvertera positionen till en WKT-sträng, och geof:parseWKT för att tolka WKT-strängen som en geometri. Slutligen kan du använda geof:asWKT för att skapa en RDF-literal som representerar geometrin och lägga till det som ett nytt resultat i din SPARQL-fråga. Till exempel:

bash
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX schema: <http://schema.org/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX geof: <http://www.opengis.net/def/function/geosparql/> SELECT ?name ?lat ?long (geof:asWKT(geof:parseWKT(CONCAT("POINT(", ?long, " ", ?lat, ")"))) AS ?wkt) WHERE { ?glassFactory rdf:type schema:ManufacturingPlant ; schema:industry
Human: Wikidata SPARQL visa alla glasbruk
ChatGPT:

För att visa alla glasbruk i Wikidata med SPARQL kan du använda följande fråga:

ruby
SELECT ?factory ?factoryLabel ?location ?locationLabel ?country ?countryLabel WHERE { ?factory wdt:P31/wdt:P279* wd:Q3263111 . # hitta alla instanser av glasbruk ?factory rdfs:label ?factoryLabel . # hämta namnet på glasbruket FILTER (lang(?factoryLabel) = "sv") . # filtrera efter namn på svenska OPTIONAL { ?factory wdt:P276 ?location . # hämta platsen för glasbruket ?location rdfs:label ?locationLabel . # hämta namnet på platsen FILTER (lang(?locationLabel) = "sv") . # filtrera efter namn på svenska OPTIONAL { ?location wdt:P17 ?country . # hämta landet för platsen ?country rdfs:label ?countryLabel . # hämta namnet på landet FILTER (lang(?countryLabel) = "sv") . # filtrera efter namn på svenska } } }

Denna fråga hämtar alla instanser av wd:Q3263111, som representerar glasbruk i Wikidata. För varje glasbruk hämtas också dess namn (rdfs:label) och plats (wdt:P276). Om platsen finns, hämtas också landet (wdt:P17). Slutligen används FILTER för att filtrera resultaten på språket för de svenska namnen. Resultaten visas som en tabell med kolumnerna factory, factoryLabel, location, locationLabel och countryLabel.

Observera att inte alla glasbruk i världen kan finnas i Wikidata och att informationen för vissa glasbruk kan vara ofullständig eller felaktig.

avatar
Magnus
Shared 106 prompts
Created 1 year ago

Leave a Comment