Strabon

changeset 788:2fcae7f5d97d DiffDateTime

Insert a working query for discovering fires
author George Garbis <ggarbis@di.uoa.gr>
date Fri Dec 07 22:23:52 2012 +0200 (2012-12-07)
parents ecdbb91999e8
children 35ee9c800a47
files examples/teleios/discoverFires-start.rq examples/teleios/discoverFires.rq
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/examples/teleios/discoverFires-start.rq	Fri Dec 07 22:23:52 2012 +0200
     1.3 @@ -0,0 +1,72 @@
     1.4 +#Το πρώτο query εφαρμόζεται  με σκοπό τον περιορισμό τoυ θορύβου,
     1.5 +#εντοπίζοντας την χρονική αστάθεια ("αναλαμπές") σε πολύγωνα
     1.6 +#καμένων εκτάσεων. Υλοποιήσαμε και εφαρμόσαμε το ακόλουθο  χρονικό φίλτρο
     1.7 +#στα δεδομένα (με αναφορές στον πηγαίο κώδικα):
     1.8 +#- Στις γραμμές 1574..1614, για κάθε πολύγωνο, ομαδοποιούμε τις
     1.9 +#καταγραφές οι οποίες δεν απέχουν μεταξύ τους (επόμενη-προηγούμενη)
    1.10 +#περισσότερο από την τιμή της μεταβλητής persistence.
    1.11 +#- Στην συνέχεια εξετάζουμε κάθε τέτοια ομάδα (κοντινών στο χώρο
    1.12 +#καταγραφών), και ελέγχουμε εάν το πλήθος τους (για κάθε τέτοια ομάδα)
    1.13 +#είναι μικρότερο ή ίσο από την τιμή της μεταβλητής repeat_in_persistence
    1.14 +#(γραμμές 1614..1630).
    1.15 +#- Αυτές τις καταγραφές τις διαγράφουμε θεωρώντας τις θόρυβο
    1.16 +
    1.17 +# ../../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
    1.18 +
    1.19 +PREFIX noa: <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#>
    1.20 +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    1.21 +PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
    1.22 +PREFIX strdf-ext: <http://strdf.di.uoa.gr/extensions/ontology#>
    1.23 +PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    1.24 +PREFIX gag: <http://geo.linkedopendata.gr/greekadministrativeregion/ontology#>
    1.25 +
    1.26 +SELECT (substr(str(?hStartTime), 12, 5) as ?start) (substr(str(max(?hTime)), 12, 5) as ?end) ?geo
    1.27 +WHERE {
    1.28 +	# -- FIND HOTSPOTS THAT DEFINE THE START OF A FIRE (GROUP ALA THEMOS) -- 
    1.29 +	# Retrieve all hotstpots in time range...  
    1.30 +	?hStart	noa:hasAcquisitionTime ?hStartTime ;
    1.31 +            noa:hasGeometry ?geo ;
    1.32 +			noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
    1.33 +			noa:isDerivedFromSensor "SENSOR"^^xsd:string .
    1.34 +	FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime && ?hStartTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
    1.35 +	# ... narrow down results so that any previous hotspots is detected at least PERSISTENCE mins earlier
    1.36 +    OPTIONAL {
    1.37 +        ?hPrevious	noa:hasAcquisitionTime ?hPreviousTime ;
    1.38 +        			noa:hasGeometry ?geo ;
    1.39 +					noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
    1.40 +					noa:isDerivedFromSensor "SENSOR"^^xsd:string .
    1.41 +		FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime && ?hStartTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
    1.42 +        FILTER(strdf-ext:diffDateTime(?hStartTime, ?hPreviousTime) <= PERSISTENCE*60000 && ?hStartTime > ?hPreviousTime).
    1.43 +    } 
    1.44 +    FILTER(!bound(?hPrevious)) .
    1.45 +
    1.46 +    # FIND HOTSPOTS AFTER A FIRE STARTING TIME
    1.47 +    ?h  noa:hasAcquisitionTime ?hTime;
    1.48 +        noa:hasGeometry ?hGeo;
    1.49 +		noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
    1.50 +		noa:isDerivedFromSensor "SENSOR"^^xsd:string .
    1.51 +	FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime && ?hStartTime <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
    1.52 +    FILTER(?hTime >= ?hStartTime).
    1.53 +
    1.54 +    # OPTIONALLY FIND ANOTHER STARTING TIME BEFORE ?h and after ?hStart
    1.55 +    OPTIONAL {
    1.56 +        ?hStart2	noa:hasAcquisitionTime ?hStartTime2 ;
    1.57 +   					noa:hasGeometry ?geo ;		
    1.58 +					noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
    1.59 +					noa:isDerivedFromSensor "SENSOR"^^xsd:string .
    1.60 +		FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime2 && ?hStartTime2 <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
    1.61 +        OPTIONAL {                        		
    1.62 +            ?hPrevious2	noa:hasAcquisitionTime ?hPreviousTime2 ;
    1.63 +            			noa:hasGeometry ?geo ;
    1.64 +						noa:producedFromProcessingChain "PROCESSING_CHAIN"^^xsd:string ;
    1.65 +						noa:isDerivedFromSensor "SENSOR"^^xsd:string .
    1.66 +			FILTER("MIN_ACQUISITION_TIME"^^xsd:dateTime <= ?hStartTime2 && ?hStartTime2 <= "MAX_ACQUISITION_TIME"^^xsd:dateTime).
    1.67 +            FILTER( strdf-ext:diffDateTime(?hStartTime2, ?hPreviousTime2) <= PERSISTENCE*60000 && ?hStartTime2 > ?hPreviousTime2).
    1.68 +        } 
    1.69 +        FILTER(!bound(?hPrevious2)) .
    1.70 +        FILTER(?hStartTime < ?hStartTime2 && ?hStartTime2 <= ?hTime).
    1.71 +    }    
    1.72 +    FILTER(!bound(?hStart2))
    1.73 +}
    1.74 +GROUP BY ?hStartTime ?geo 
    1.75 +HAVING (count(?h) >= REPEAT_IN_PERS)
     2.1 --- a/examples/teleios/discoverFires.rq	Wed Dec 05 19:23:23 2012 +0200
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,85 +0,0 @@
     2.4 -#Το πρώτο query εφαρμόζεται  με σκοπό τον περιορισμό τoυ θορύβου,
     2.5 -#εντοπίζοντας την χρονική αστάθεια ("αναλαμπές") σε πολύγωνα
     2.6 -#καμένων εκτάσεων. Υλοποιήσαμε και εφαρμόσαμε το ακόλουθο  χρονικό φίλτρο
     2.7 -#στα δεδομένα (με αναφορές στον πηγαίο κώδικα):
     2.8 -#- Στις γραμμές 1574..1614, για κάθε πολύγωνο, ομαδοποιούμε τις
     2.9 -#καταγραφές οι οποίες δεν απέχουν μεταξύ τους (επόμενη-προηγούμενη)
    2.10 -#περισσότερο από την τιμή της μεταβλητής persistence.
    2.11 -#- Στην συνέχεια εξετάζουμε κάθε τέτοια ομάδα (κοντινών στο χώρο
    2.12 -#καταγραφών), και ελέγχουμε εάν το πλήθος τους (για κάθε τέτοια ομάδα)
    2.13 -#είναι μικρότερο ή ίσο από την τιμή της μεταβλητής repeat_in_persistence
    2.14 -#(γραμμές 1614..1630).
    2.15 -#- Αυτές τις καταγραφές τις διαγράφουμε θεωρώντας τις θόρυβο
    2.16 -
    2.17 -
    2.18 -PREFIX noa: <http://teleios.di.uoa.gr/ontologies/noaOntology.owl#>
    2.19 -PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    2.20 -PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
    2.21 -PREFIX strdf-ext: <http://strdf.di.uoa.gr/extensions/ontology#>
    2.22 -PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    2.23 -PREFIX gag: <http://geo.linkedopendata.gr/greekadministrativeregion/ontology#>
    2.24 -
    2.25 -SELECT ?hStartTime ?hMinEndTime ?geo
    2.26 -WHERE {
    2.27 -    ?h noa:hasGeometry ?geo.
    2.28 -    FILTER(?hStartTime <= ?hTime && ?hTime <= ?hMinEndTime).
    2.29 -    {
    2.30 -    SELECT ?hStartTime ?hMinEndTime ?hTime ?geo ?h 
    2.31 -    WHERE
    2.32 -    {
    2.33 -        ?h	noa:hasAcquisitionTime ?hTime ;
    2.34 -	        noa:producedFromProcessingChain "DynamicThresholds"^^xsd:string ;
    2.35 -         	noa:isDerivedFromSensor "MSG1_RSS"^^xsd:string .
    2.36 -        FILTER("2012-07-26T00:00:00"^^xsd:dateTime <= ?hTime && ?hTime <= "2012-07-27T00:00:00"^^xsd:dateTime)
    2.37 -
    2.38 -        {
    2.39 -            SELECT ?hStartTime (min(?hEndTime) as ?hMinEndTime) ?geo
    2.40 -            WHERE {
    2.41 -                # Retrieve all hotstpots in time range
    2.42 -                ?hStart	noa:hasAcquisitionTime ?hStartTime ;
    2.43 -                        noa:hasGeometry ?geo ;
    2.44 -                		noa:producedFromProcessingChain "DynamicThresholds"^^xsd:string ;
    2.45 -                     	noa:isDerivedFromSensor "MSG1_RSS"^^xsd:string .
    2.46 -            FILTER("2012-07-26T00:00:00"^^xsd:dateTime <= ?hStartTime && ?hStartTime <= "2012-07-27T00:00:00"^^xsd:dateTime)
    2.47 -
    2.48 -                # Filter hotspots whose previous hotspot has been detected at least PERSISTENCE msecs before
    2.49 -                OPTIONAL {
    2.50 -                    ?hPrevious	noa:hasAcquisitionTime ?hPreviousTime ;
    2.51 -                    			noa:hasGeometry ?geo ;
    2.52 -                            	noa:producedFromProcessingChain "DynamicThresholds"^^xsd:string ;
    2.53 -                        	 	noa:isDerivedFromSensor "MSG1_RSS"^^xsd:string .
    2.54 -                    FILTER("2012-07-26T00:00:00"^^xsd:dateTime <= ?hPreviousTime && ?hPreviousTime <= "2012-07-27T00:00:00"^^xsd:dateTime)
    2.55 -                    FILTER( strdf-ext:diffDateTime(?hStartTime, ?hPreviousTime) <= "10"^^xsd:long && ?hStartTime > ?hPreviousTime).
    2.56 -                } 
    2.57 -                FILTER(!bound(?hPrevious)) .
    2.58 -
    2.59 -                # Retrieve all hotstpots in time range
    2.60 -                ?hEnd	noa:hasAcquisitionTime ?hEndTime ;
    2.61 -                        noa:hasGeometry ?geo ;
    2.62 -                		noa:producedFromProcessingChain "DynamicThresholds"^^xsd:string ;
    2.63 -                     	noa:isDerivedFromSensor "MSG1_RSS"^^xsd:string .
    2.64 -            FILTER("2012-07-26T00:00:00"^^xsd:dateTime <= ?hEndTime && ?hEndTime <= "2012-07-27T00:00:00"^^xsd:dateTime)
    2.65 -
    2.66 -                # Filter hotspots whose next hotspot has been detected at least PERSISTENCE msecs after
    2.67 -                OPTIONAL {
    2.68 -                    ?hAfter	noa:hasAcquisitionTime ?hAfterTime ;
    2.69 -                    			noa:hasGeometry ?geo ;
    2.70 -                            	noa:producedFromProcessingChain "DynamicThresholds"^^xsd:string ;
    2.71 -                        	 	noa:isDerivedFromSensor "MSG1_RSS"^^xsd:string .
    2.72 -                    FILTER("2012-07-26T00:00:00"^^xsd:dateTime <= ?hAfterTime && ?hAfterTime <= "2012-07-27T00:00:00"^^xsd:dateTime)
    2.73 -                    FILTER( strdf-ext:diffDateTime(?hAfterTime, ?hEndTime) <= "10"^^xsd:long && ?hAfterTime > ?hEndTime).
    2.74 -                } 
    2.75 -                FILTER(!bound(?hAfter)) .
    2.76 -
    2.77 -                FILTER(?hStartTime < ?hEndTime).  
    2.78 -
    2.79 -                      
    2.80 -            }
    2.81 -            GROUP BY ?hStartTime ?geo
    2.82 -            ORDER BY ?hStartTime
    2.83 -        }.
    2.84 -    }
    2.85 -    }.
    2.86 -}
    2.87 -GROUP BY ?geo ?hStartTime ?hMinEndTime
    2.88 -HAVING (count(?h) > 0)