Strabon

view examples/teleios/discoverFires.rq @ 825:3b3e9ed00cf0

Rename file
author George Garbis <ggarbis@di.uoa.gr>
date Wed Dec 19 18:04:34 2012 +0200 (2012-12-19)
parents examples/teleios/discoverFires-start.rq@1163025f7c46
children 7ebfdbbce0d5
line source
1 #Το πρώτο query εφαρμόζεται με σκοπό τον περιορισμό τoυ θορύβου,
2 #εντοπίζοντας την χρονική αστάθεια ("αναλαμπές") σε πολύγωνα
3 #καμένων εκτάσεων. Υλοποιήσαμε και εφαρμόσαμε το ακόλουθο χρονικό φίλτρο
4 #στα δεδομένα (με αναφορές στον πηγαίο κώδικα):
5 #- Στις γραμμές 1574..1614, για κάθε πολύγωνο, ομαδοποιούμε τις
6 #καταγραφές οι οποίες δεν απέχουν μεταξύ τους (επόμενη-προηγούμενη)
7 #περισσότερο από την τιμή της μεταβλητής persistence.
8 #- Στην συνέχεια εξετάζουμε κάθε τέτοια ομάδα (κοντινών στο χώρο
9 #καταγραφών), και ελέγχουμε εάν το πλήθος τους (για κάθε τέτοια ομάδα)
10 #είναι μικρότερο ή ίσο από την τιμή της μεταβλητής repeat_in_persistence
11 #(γραμμές 1614..1630).
12 #- Αυτές τις καταγραφές τις διαγράφουμε θεωρώντας τις θόρυβο
14 # ../../scripts/strabon -db testNOANewRefinements query "`./instantiate.sh -s MSG2 -c StaticThresholds -m '2012-08-24T12:00:00' -M '2012-08-24T12:40:00' -p 10 -r 3 discoverFires-start.rq | grep -v '#[[:alpha:]]' | grep -v '#[ \(-]' | sed 's/"/\\\\"/g'`" TSV
16 PREFIX noa: <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#>
17 PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
18 PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
19 PREFIX strdf-ext: <http://strdf.di.uoa.gr/extensions/ontology#>
20 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
21 PREFIX gag: <http://geo.linkedopendata.gr/greekadministrativeregion/ontology#>
23 # The ending time of a fire (identificated by its starting time) is the latest
24 # hotspot attributed to this fire
25 SELECT ?start (max(?hTime) as ?end) ?geo
26 WHERE
27 {
28 {
29 # Each hotspots is finally grouped only with the latest fire starting
30 # time found
31 SELECT (max(?hStartTime) as ?start) ?hTime ?geo ?h
32 # SELECT (count(distinct ?hStartTime) as ?c) ?geo
33 WHERE {
34 # -- FIND HOTSPOTS THAT DEFINE THE START OF A FIRE (GROUP ALA THEMOS) --
35 # Retrieve all hotstpots in time range...
36 ?hStart noa:hasAcquisitionTime ?hStartTime ;
37 noa:hasGeometry ?geo ;
38 noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
39 noa:isDerivedFromSensor "SENSOR"^^xsd:string .
40 # FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime && ?hStartTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
41 FILTER(strdf-ext:diffDateTime("MIN_ACQUISITION_TIME"^^xsd:dateTime,?hStartTime)<=0 && strdf-ext:diffDateTime("MAX_ACQUISITION_TIME"^^xsd:dateTime,?hStartTime)>=0).
42 # ... narrow down results so that any previous hotspots is detected at least PERSISTENCE mins earlier
43 OPTIONAL {
44 ?hPrevious noa:hasAcquisitionTime ?hPreviousTime ;
45 noa:hasGeometry ?geo ;
46 noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
47 noa:isDerivedFromSensor "SENSOR"^^xsd:string .
48 # FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hPreviousTime && ?hPreviousTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
49 FILTER(strdf-ext:diffDateTime("MIN_ACQUISITION_TIME"^^xsd:dateTime,?hPreviousTime)<=0 && strdf-ext:diffDateTime("MAX_ACQUISITION_TIME"^^xsd:dateTime,?hPreviousTime)>=0).
50 FILTER(strdf-ext:diffDateTime(?hStartTime, ?hPreviousTime) <= PERSISTENCE*60000 && strdf-ext:diffDateTime(?hStartTime, ?hPreviousTime) > 0).
51 }
52 FILTER(!bound(?hPrevious)) .
54 # FIND HOTSPOTS AFTER A FIRE STARTING TIME
55 ?h noa:hasAcquisitionTime ?hTime;
56 noa:hasGeometry ?geo;
57 noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
58 noa:isDerivedFromSensor "SENSOR"^^xsd:string .
59 # FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hTime && ?hTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
60 FILTER(strdf-ext:diffDateTime("MIN_ACQUISITION_TIME"^^xsd:dateTime,?hTime)<=0 && strdf-ext:diffDateTime("MAX_ACQUISITION_TIME"^^xsd:dateTime,?hTime)>=0).
61 FILTER(strdf-ext:diffDateTime(?hTime, ?hStartTime) >= 0).
62 }
63 # group by ?geo
64 group by ?h ?hTime ?geo
65 }.
66 }
67 group by ?start ?geo
68 having (count(?h) >= 3)