Strabon Semantic support for EO Data Access in TELEIOS Presenter: George Garbis Dept. of Informatics and Telecommunications National and Kapodistrian University of Athens June 23 Florence, Italy
Outline Motivation Representing and Querying Geospatial and Temporal Information in RDF Applications The Fire Monitoring Service of the National Observatory of Athens The TerraSAR-X Virtual Observatory of the German Aerospace Center Thoughts for discussion 2
State of the Art in EO Data Centers Users EOWEB EO data center Catalogue Raw Data Processing Chains Archive 3
Example Can I pose the following query using EOWEB? Find images taken by the SEVIRI satellite on August 25, 2007 which contain fire hotspots in areas which have been classified as forests according to CORINE Land Cover, and are located within 2km from an archaeological site in the Peloponnese. 4
Example (cont d) 5
Example (cont d) Well, only partially. Find images taken by the SEVIRI satellite on August 25, 2007 which contain fire hotspots in areas which have been classified as forests according to CORINE Land Cover, and are located within 2km from an archaeological site in the Peloponnese. 6
Example (cont d) But why? All this information is available in the satellite images and other auxiliary data sources of EO data centers or on the Web. However, EO data centers today do not allow: mining of satellite image content and its integration with other relevant data sources so the previous query can be answered. 7
High Level Data Modeling Need for representing Standard product metadata Standard product semantic annotations Geospatial information Temporal information Need to link to other data sources GIS data Other information on the Web 8
Semantics-Based Representation and Querying of EO Data The data model strdf and the query language stsparql The system Strabon 9
Outline Motivation Representing and Querying Geospatial and Temporal Information in RDF Applications The Fire Monitoring Service of the National Observatory of Athens The TerraSAR-X Virtual Observatory of the German Aerospace Center Conclusions 10
RDF: Resource Description Framework W3C recommendation RDF is a graph data model ( + XML syntax + semantics) For representing metadata For describing the semantics of information in a machine-readable way Resources are described in terms of properties and property values using RDF statements Statements are represented as triples, consisting of a subject, predicate and object. ex:burntarea1 noa:hasarea "23.7636"^^xsd:double 11 11
The Data Model strdf strdf stands for spatial/temporal RDF. It is an extension of the W3C standard RDF for the representation of geospatial data that may change over time. strdf extends RDF with: Spatial literals encoded in OGC standards Well-Known Text or GML New datatypes for spatial literals (strdf:wkt, strdf:gml and strdf:geometry) Temporal literals can be either periods or instants New datatype for temporal literals (strdf:period) Placed as the fourth component of a triple to denote valid time 12
strdf: An example (1/2) 13
strdf: An example (1/2) ex:burntarea1 14
strdf: An example (1/2) noa:burntarea rdf:type ex:burntarea1 15
strdf: An example (1/2) noa:burntarea noa:hasid 1 ^^xsd:int rdf:type ex:burntarea1 16
strdf: An example (1/2) noa:burntarea noa:hasid 1 ^^xsd:int rdf:type ex:burntarea1 noa:hasarea "23.7636"^^xsd:double 17
strdf: An example (1/2) noa:burntarea noa:hasid 1 ^^xsd:int rdf:type ex:burntarea1 noa:hasarea "23.7636"^^xsd:double geo:geometry "POLYGON(( 38.16 23.7, 38.18 23.7, 38.18 23.8,... 38.16 23.8, 38.16 3.7)); <http://spatialreference.org/ref/epsg/4121/>" ^^strdf:wkt 18
strdf: An example (1/2) noa:burntarea noa:hasid 1 ^^xsd:int rdf:type ex:burntarea1 noa:hasarea "23.7636"^^xsd:double geo:geometry "POLYGON(( 38.16 23.7, 38.18 23.7, 38.18 23.8,... 38.16 23.8, 38.16 3.7)); <http://spatialreference.org/ref/epsg/4121/>" ^^strdf:wkt Spatial Data Type for Geospatial Applications, Well-Known Workshop in INSPIRE Text Conference 2013 19
strdf: An example (1/2) noa:burntarea noa:hasid 1 ^^xsd:int rdf:type Spatial Literal (OpenGIS Simple Features) ex:burntarea1 noa:hasarea geo:geometry "23.7636"^^xsd:double "POLYGON(( 38.16 23.7, 38.18 23.7, 38.18 23.8,... 38.16 23.8, 38.16 3.7)); <http://spatialreference.org/ref/epsg/4121/>" ^^strdf:wkt Spatial Data Type for Geospatial Applications, Well-Known Workshop in INSPIRE Text Conference 2013 20
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 21
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 22
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 23
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 24
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 25
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 26
stsparql: An example (1/2) Find all burned forests within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:hasgeometry?rgeo.?r noa:hascorinelandcoveruse..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:hasgeometry?cgeo.?ba rdf:type noa:burntarea.?ba geo:hasgeometry?bageo. Spatial Functions (OGC Simple Feature Access) FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10)} 27
stsparql: An example (1/2) 28
strdf: An example (2/2) clc:region1 clc:haslandcover clc:forest. 29 29
strdf: An example (2/2) clc:region1 clc:haslandcover clc:forest. "[2006-08- 25T11:00:00+02,2007-08-25T11:00:00+02)"^^strdf:period. 30 30
strdf: An example (2/2) clc:region1 clc:haslandcover clc:forest. "[2006-08- 25T11:00:00+02,2007-08-25T11:00:00+02)"^^strdf:period. noa:ba1 rdf:type noa:burntarea "[2007-08-25T11:00:00+02,2009-08-25T11:00:00+02)"^^strdf:period. 31 31
strdf: An example (2/2) clc:region1 clc:haslandcover clc:forest. "[2006-08- 25T11:00:00+02,2007-08-25T11:00:00+02)"^^strdf:period. noa:ba1 rdf:type noa:burntarea "[2007-08-25T11:00:00+02,2009-08-25T11:00:00+02)"^^strdf:period. clc:region1 clc:haslandcover clc:agriculturalarea "[2009-08-25T11:00:00+02, "UC")"^^strdf:period. 32 32
stsparql: An example (2/2) Find all areas that were forests in 2006 and got burned later within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:geometry?rgeo ;?R noa:hascorinelandcoveruse?f?t1..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:geometry?cgeo.?ba rdf:type noa:burntarea?t2.?ba geo:geometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10) FILTER( strdf:during(?t1, [2006-01-01:00:00:01, 2006-01-01:23:59:59] ^^strdf:period)) && strdf:before(?t1,?t2) } 33
stsparql: An example (2/2) Find all areas that were forests in 2006 and got burned later within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region.?r geo:geometry?rgeo ;?R noa:hascorinelandcoveruse?f?t1..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:geometry?cgeo.?ba rdf:type noa:burntarea?t2.?ba geo:geometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10) FILTER( strdf:during(?t1, [2006-01-01:00:00:01, 2006-01-01:23:59:59] ^^strdf:period)) && strdf:before(?t1,?t2) } 34
stsparql: An example (2/2) Find all areas that were forests in 2006 and got burned later within 10kms of a city SELECT?BA?BAGEO WHERE {?R rdf:type noa:region. Temporal extension functions?r geo:geometry?rgeo ;?R noa:hascorinelandcoveruse?f?t1..?f rdfs:subclassof clc:forests.?city rdf:type dbpedia:city.?city geo:geometry?cgeo.?ba rdf:type noa:burntarea?t2.?ba geo:geometry?bageo. FILTER( strdf:intersect(?rgeo,?bageo) && strdf:distance(?rgeo,?cgeo,uom:km)<10) FILTER( strdf:during(?t1, [2006-01-01:00:00:01, 2006-01-01:23:59:59] ^^strdf:period)) && strdf:before(?t1,?t2) } 35
stsparql: An example (2/2) 36
stsparql: More details We start from SPARQL 1.1. We add a SPARQL extension function for each function defined in the OGC standard OpenGIS Simple Feature Access Part 2: SQL option (ISO 19125) for adding geospatial data to relational DBMSs and SQL. We add a set of temporal functions (superset of Allen s functions) as SPARQL extension functions We add appropriate geospatial and temporal extensions to SPARQL 1.1 Update language 37
stsparql vs. GeoSPARQL GeoSPARQL is a recent OGC standard to develop an extension of SPARQL for querying geospatial data expressed in RDF. stsparql and GeoSPARQL have been developed independently. stsparql geospatial query functionality is very close to a subset of GeoSPARQL: Core Geometry extension Geometry topology extension GeoSPARQL goes beyond stsparql: binary topological relations as RDF properties (spatial reasoners) Additional stsparql features: Geospatial aggregation functions Temporal literals 38
Strabon: A Scalable Geospatial RDF Store WKT Period GML Strabon Sesame Query Engine Storage Manager Parser Repository Optimizer SAIL strdf graphs Evaluator Transaction Manager RDBMS stsparql/ GeoSPARQL queries GeneralDB PostgreSQL PostGIS http://bit.ly/strabon PostgreSQL Temporal 39
Outline Motivation Representing and Querying Geospatial and Temporal Information in RDF Applications The Fire Monitoring Service of the National Observatory of Athens The TerraSAR-X Virtual Observatory of the German Aerospace Center Conclusions 40
Use Case I: Real-Time Fire Monitoring (NOA) Eumetsat @ 9.5 East Back End: MonetDB / Strabon CORINE Landcover Admin Boundaries POIs External Sources Linked Geospatial Data Semantic technologies Geospatial Ontology Web access based on Semantics HotSpots Raw Data Data Vault Processing Chain (SciQL based) Search & Display Search for raw & Processing Real-time Fire Monitoring Refinement (Post-Processing) Linked Data 41 7/1/2013 41
NOA Ontology 42
NOA Ontology 43
Linked Geospatial Data Datasets that we published as linked data: CORINE Land Use / Land Cover Coastline of Greece Greek Administrative Geography Portal: http://www.linkedopendata.gr/ Datasets from Linked Open Data Cloud OpenStreetMap GeoNames 44
Linked Open Data Cloud 45
Linked Open Data Cloud 46
Linked Open Data GeoNames 47
Linked Open Data OpenSteetMap Published by LinkedGeoData 48
Linked Open Data Greek Administrative Geography 49
Linked Open Data CORINE Land Use / Land Cover 50
Linked Open Data Coastline 51
Improvements Semantic Enrichment for hotspots Increase Accuracy by correlating with linked geospatial data Generating Rapid Mapping products Validating the results of the automatic annotation process by correlating them with auxiliary linked geospatial data Assisting the training process by providing the user with contextual information about the area of interest DEMO! http://bit.ly/strabondemo 52
Semantic Enrichment for Hotspots Enrich hotspot products 1. Connect each hotspot with a municipality that it is located 53
Semantic Enrichment for Hotspots Enrich hotspot products 1. Connect each hotspot with a municipality that it is located Improve accuracy with respect to underlying area 2. Eliminate false alarms in sea 3. Keep land part of the polygon 4. Eliminate false alarms in inconsistent land cover areas 54
Semantic Enrichment for Hotspots Enrich hotspot products 1. Connect each hotspot with a municipality that it is located Improve accuracy with respect to underlying area Christmas tree effect : some hotspots appear in a timestamp, in the next timestamp they disappear, then they re-appear again, and so on. 2. Eliminate false alarms in sea 3. Keep land part of the polygon 4. Eliminate false alarms in inconsistent land cover areas Improve accuracy with respect to temporal persistence of each hotspots 5. Remove Christmas tree effects 55
Improve the accuracy of EO data Correlate fire products with auxiliary data to increase their thematic accuracy e.g., delete the parts of the polygons that fall into the sea. DELETE {?h noa:hasgeometry?hgeo} INSERT {?h noa:hasgeometry?dif} WHERE { SELECT DISTINCT?h?hGeo (strdf:intersection(?hgeo, strdf:union(?cgeo)) AS?dif) WHERE {?h rdf:type noa:hotspot.?h strdf:hasgeometry?hgeo.?c rdf:type coast:coastline.?c strdf:hasgeometry?cgeo. FILTER( strdf:anyinteract(?hgeo,?cgeo)} GROUP BY?h?hGeo HAVING strdf:overlap(?hgeo, strdf:union(?cgeo))} 56
Improve the accuracy of EO data Correlate fire products with auxiliary data to increase their thematic accuracy e.g., delete the parts of the polygons that fall into the sea. DELETE {?h noa:hasgeometry?hgeo} INSERT {?h noa:hasgeometry?dif} WHERE { SELECT DISTINCT?h?hGeo (strdf:intersection(?hgeo, strdf:union(?cgeo)) AS?dif) WHERE {?h rdf:type noa:hotspot.?h strdf:hasgeometry?hgeo.?c rdf:type coast:coastline.?c strdf:hasgeometry?cgeo. FILTER( strdf:anyinteract(?hgeo,?cgeo)} GROUP BY?h?hGeo HAVING strdf:overlap(?hgeo, strdf:union(?cgeo))} 57
Generating Rapid Mapping Products ZKI (Center for Satellite Based Crisis Information) 58
Generating Rapid Mapping Products ZKI (Center for Satellite Based Crisis Information) 59
Improvements Semantic Enrichment for hotspots Increase Accuracy by correlating with linked geospatial data Generating Rapid Mapping products Validating the results of the automatic annotation process by correlating them with auxiliary linked geospatial data Assisting the training process by providing the user with contextual information about the area of interest DEMO! http://bit.ly/demosextant 60
Generating Rapid Mapping Products: Sextant 61
Generating Rapid Mapping Products: Sextant 62
Outline Motivation Representing and Querying Geospatial and Temporal Information in RDF Applications The Fire Monitoring Service of the National Observatory of Athens The TerraSAR-X Virtual Observatory of the German Aerospace Center Conclusions 63
Use Case II: A Virtual Observatory for TerraSAR-X data (DLR) Metadata (xml annotation file) Exploiting INSPIRE Conference the Integration 2013: Potential Building of Semantic Virtual Earth Web Observatories and Linked Data Using Technologies for Scientific Geospatial Database, Applications, Semantic Workshop Web and Linked INSPIRE Geospatial Conference Data 2013 64
Use Case II: A Virtual Observatory for TerraSAR-X data (DLR) Metadata (xml annotation file) Exploiting INSPIRE Conference the Integration 2013: Potential Building of Semantic Virtual Earth Web Observatories and Linked Data Using Technologies for Scientific Geospatial Database, Applications, Semantic Workshop Web and Linked INSPIRE Geospatial Conference Data 2013 65
Improvements Semantic Enrichment for hotspots Increase Accuracy by correlating with linked geospatial data Generating Rapid Mapping products Validating the results of the automatic annotation process by correlating them with auxiliary linked geospatial data Assisting the training process by providing the user with contextual information about the area of interest DEMO! http://bit.ly/dlrdemo 66
Discovery Queries Select all patches corresponding to the class Water SELECT?g (GROUP_CONCAT(?annotation; separator=", ") AS?labels) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto dlr:water. FILTER (strdf:anyinteract(?g, "POLYGON ((12.301451 45.40493,12.398127 45.416817,12.386066 45.46502,12.289288 45.45313,12.301451 45.40493))"^^strdf:WKT)). } GROUP BY?g 67
Discovery Queries Select all patches corresponding to the class Water SELECT?g (GROUP_CONCAT(?annotation; separator=", ") AS?labels) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto dlr:water. FILTER (strdf:anyinteract(?g, "POLYGON ((12.301451 45.40493,12.398127 45.416817,12.386066 45.46502,12.289288 45.45313,12.301451 45.40493))"^^strdf:WKT)). } GROUP BY?g 68
Discovery Queries Select all patches corresponding to the class Water and its subclasses SELECT?g (GROUP_CONCAT(?annotation; separator=", ") AS?labels) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation.?annotation rdfs:subclassof dlr:water. FILTER (strdf:anyinteract(?g, "POLYGON ((12.301451 45.40493,12.398127 45.416817,12.386066 45.46502,12.289288 45.45313,12.301451 45.40493))"^^strdf:WKT)). } GROUP BY?g 69
Discovery Queries Select all patches corresponding to the class Water and its subclasses SELECT?g (GROUP_CONCAT(?annotation; separator=", ") AS?labels) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation.?annotation rdfs:subclassof dlr:water. FILTER (strdf:anyinteract(?g, "POLYGON ((12.301451 45.40493,12.398127 45.416817,12.386066 45.46502,12.289288 45.45313,12.301451 45.40493))"^^strdf:WKT)). } GROUP BY?g 70
Discover Correlation Between Datasets (1/2) List the labels of all patches that are inside each CORINE Land Use/Land Cover class SELECT DISTINCT?clcLandUse?annotation?g WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation. FILTER(strdf:anyInteract(?g, "POLYGON (( ))"^^strdf:wkt)).?clc rdf:type?clctype.?clc teleios:hascode?clccode.?clcteleios:hasid?clcid.?clc teleios:hasgeometry?clcg.?clc teleios:haslanduse teleios:continuousurbanfabri. FILTER(strdf:anyInteract(?clcG,"POLYGON(( ))"^^strdf:wkt)). FILTER (geof:sf-contains(?clcg,?g)). } 71
Discover Correlation Between Datasets (1/2) List the labels of all patches that are inside each CORINE Land Use/Land Cover class?clclanduse?annotation SELECT DISTINCT?clcLandUse?annotation?g WHERE {?p rdf:type dlr:patch. dlr:bouy, dlr:water, dlr:boat,?p dlr:hasgeometry?g. dlr:riverdeposit, dlr:bridge,?p dlr:haslabel?l. dlr:urbanbuildup, dlr:agriculture,?l clc:coastallagoons rdf:type dlr:label. dlr:vegetation, dlr:cemetery?l dlr:correspondsto?annotation. FILTER(strdf:anyInteract(?g, clc:seaandocean dlr:breakingwave, "POLYGON (( ))"^^strdf:wkt)). dlr:water?clc rdf:type?clctype.?clc teleios:hascode?clccode dlr:urbanbuildup,. dlr:vegetation,?clcteleios:hasid clc:continuousurbanfabric?clcid dlr:building.?clc teleios:hasgeometry?clcg.?clc clc:discontinuousurbanfab teleios:haslanduse dlr:urbanbuildup, teleios:continuousurbanfabri. dlr:vegetation, FILTER(strdf:anyInteract(?clcG,"POLYGON(( ))"^^strdf:wkt)). ric dlr:building FILTER (geof:sf-contains(?clcg,?g)). } 72
Discover Correlation Between Datasets (1/2) List the labels of all patches that are inside each CORINE Land Use/Land Cover class?clclanduse?annotation SELECT DISTINCT?clcLandUse?annotation?g WHERE {?p rdf:type dlr:patch. dlr:bouy, dlr:water, dlr:boat,?p dlr:hasgeometry?g. dlr:riverdeposit, dlr:bridge,?p dlr:haslabel?l. dlr:urbanbuildup, dlr:agriculture,?l clc:coastallagoons rdf:type dlr:label. dlr:vegetation, dlr:cemetery?l dlr:correspondsto?annotation. FILTER(strdf:anyInteract(?g, clc:seaandocean dlr:breakingwave, "POLYGON (( ))"^^strdf:wkt)). dlr:water?clc rdf:type?clctype.?clc teleios:hascode?clccode dlr:urbanbuildup,. dlr:vegetation,?clcteleios:hasid clc:continuousurbanfabric?clcid dlr:building.?clc teleios:hasgeometry?clcg.?clc clc:discontinuousurbanfab teleios:haslanduse dlr:urbanbuildup, teleios:continuousurbanfabri. dlr:vegetation, FILTER(strdf:anyInteract(?clcG,"POLYGON(( ))"^^strdf:wkt)). ric dlr:building FILTER (geof:sf-contains(?clcg,?g)). } 73
Discover Correlation Between Datasets (2/2) List the labels of all OpenStreetMap classes that are inside a patch SELECT?annotation (GROUP_CONCAT(DISTINCT?lgdType) AS?lgdTypes) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation. FILTER (strdf:anyinteract(?g, "POLYGON ((...))"^^strdf:wkt)).?lgd lgdont:directtype?lgddirecttype. OPTIONAL {?lgd a?lgdtype. FILTER((?lgdType!=lgdont:Node)&&(?lgdType!=?lgdDirectType)).}?lgd lgdgeo:geometry?lgdgeo. FILTER(strdf:anyInteract(?lgdGeo, "POLYGON ((...))"^^strdf:wkt)). FILTER (geof:sf-contains(?g,?lgdgeo)). } GROUP BY?annotation ORDER BY?annotation 74
Discover Correlation Between Datasets (2/2) List the labels of all OpenStreetMap classes that are inside a patch SELECT?annotation (GROUP_CONCAT(DISTINCT?lgdType) AS?lgdTypes) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation. FILTER (strdf:anyinteract(?g, "POLYGON ((...))"^^strdf:wkt)).?lgd lgdont:directtype?lgddirecttype. OPTIONAL {?lgd a?lgdtype. FILTER((?lgdType!=lgdont:Node)&&(?lgdType!=?lgdDirectType)).}?lgd lgdgeo:geometry?lgdgeo. FILTER(strdf:anyInteract(?lgdGeo, "POLYGON ((...))"^^strdf:wkt)). FILTER (geof:sf-contains(?g,?lgdgeo)). } GROUP BY?annotation ORDER BY?annotation 75
Discover Correlation Between Datasets (2/2) List the labels of all OpenStreetMap classes that are inside a patch SELECT?annotation (GROUP_CONCAT(DISTINCT?lgdType) AS?lgdTypes) WHERE {?p rdf:type dlr:patch.?p dlr:hasgeometry?g.?p dlr:haslabel?l.?l rdf:type dlr:label.?l dlr:correspondsto?annotation. FILTER (strdf:anyinteract(?g, "POLYGON ((...))"^^strdf:wkt)).?lgd lgdont:directtype?lgddirecttype. OPTIONAL {?lgd a?lgdtype. FILTER((?lgdType!=lgdont:Node)&&(?lgdType!=?lgdDirectType)).}?lgd lgdgeo:geometry?lgdgeo. FILTER(strdf:anyInteract(?lgdGeo, "POLYGON ((...))"^^strdf:wkt)). FILTER (geof:sf-contains(?g,?lgdgeo)). } GROUP BY?annotation ORDER BY?annotation 76
Conclusions We developed the data model strdf and the query language stsparql for representing and querying geospatial data that may change over time The Fire Monitoring Service of the National Observatory of Athens The TerraSAR-X Virtual Observatory of the German Aerospace Center 77
Discussion Use higher-level languages, stop worrying about how to store and manage metadata, just focus on the actual processing Express common earth observation operations easily using the stsparql/geosparql queries instead of using a lengthy C program Rapid prototyping without the need to recompile everything Integration with publically available linked open geospatial data 78
Thank you for your attention! Questions? Strabon http://strabon.di.uoa.gr Manolis Koubarakis, Kostis Kyzirakos, Manos Karpathiotakis, Charalampos Nikolaou, Giorgos Garbis, Konstantina Bereta, Kallirroi Dogani, Stella Giannakopoulou and Panayiotis Smeros. Mercurial repository: http://hg.strabon.di.uoa.gr Trac: http://bug.strabon.di.uoa.gr Mailing list: http://cgi.di.uoa.gr/~mailman/listinfo/strabon-users Continuous integration server http://test.strabon.di.uoa.gr/cis Sextant: A web tool for browsing and mapping Linked Geospatial Data http://test.strabon.di.uoa.gr/sextant/ 79 79