Breve introducción GeoSPARQL
Qué es?
Usando RDF y SPARQL trabajamos sobre relaciones explícitas.
un ejemplo:
SELECT ?nombre WHERE { :persona1 foaf:knows ?p . ?p foaf:name ?nombre . }
Relaciones implícitas
Podríamos definir una relación que indique que una casa esta cerca de otra. Algo así como:
:cerca a rdf:Property :cerca rdfs:range :edificio :cerca rdfs:domain :edificio
GeoSPARQL permite explorar las relaciones implicitas de naturaleza espacial simplemente indicando la localizacion (y forma) de los recursos.
Es tanto un vocabulario como una extensión de SPARQL.
Datos geoespaciales
Sistemas de referencia de coordenadas (CRS)
Diferentes tipos de datos
Representaciones: WKT
Representaciones: GeoJSON
{ "type": "Feature", "properties": { "nombre": "Un punto" }, "geometry": { "type": "Point", coordinates: [1, 1] } }
Vocabulario
Clases
Feature
:monteA a geo:Feature :monteA :nombre "Teide" :monteA :altitud "3718"^^xsd:Integer
Para relacionarlas con rasgos espaciales:
geo:hasGeometry
geo:hasDefaultGeometry
geo:hasGeometry rdfs:range geo:Geometry geo:hasGeometry rdfs:domain geo:Feature geo:hasDefaultGeometry rdf:subPropertyOf geo:hasGeometry geo:hasDefaultGeometry rdfs:range geo:Geometry geo:hasDefaultGeometry rdfs:domain geo:Feature
1 Feature - 1 o mas Geometrías
(p.ej. Base del monte y punto mas alto)
1 Feature - 1 Geometría por defecto
Se usa para cálculos espaciales cuando no se ha especificado una geometría sobre la que realizara
Geometría
geo:asWKT y geo:asGML
geo:asWKT rdfs:subPropertyOf geo:hasSerialization geo:asWKT rdfs:domain geo:Geometry geo:asWKT rdfs:range geo:wktLiteral geo:asGML rdfs:subPropertyOf geo:hasSerialization geo:asGML rdfs:domain geo:Geometry geo:asGML rdfs:range geo:gmlLiteral
:monte a geo:Feature :monte geo:hasGeometry :geometria :geometria a geo:Geometry :geometria geo:asWKT "Point(0 0)"^^geo:wktLiteral
SPARQL
2 Aportes:
- Una serie de funciones espaciales
-
Una serie de relaciones que no necesitan ser explicitadas
Funciones espaciales
SELECT ?e WHERE { ?e a :Edificio . ?e geo:hasGeometry ?egeo . :Monumento1 ogc:hasGeometry ?mgeo . FILTER(geof:distance(?egeo, ?mgeo, units:km) < 3) }
Buffer de 100m:
SELECT ?geometry WHERE { :edificio1 geo:hasGeometry ?geom . ?geom geo:asWKT ?wkt . BIND(geof:buffer(?wkt, 100, units:metre) AS ?geometry) }
Propiedades
SELECT ?rio WHERE { ?rio a :Rio . ?rio geo:hasGeometry ?rgeom . :gipuzkoa geo:hasGeometry ?ggeom . ?rgeom geo:sfIntersects ?ggeom . }
Como usarlo
Pocas implementaciones por ahora.
Parliament
Strabon
uSeekM
Parliament
Strabon
uSeekM
Mas información
GEOSPARQL
By Aimar Rodriguez
GEOSPARQL
- 1,576