All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sttl.sensor.point.rq Maven / Gradle / Ivy

#
# Display sensors properties of geo:Point ?in
#
prefix sosa:  
prefix geo:  
prefix ex:    
prefix ft:   

template (?in, ?num) {
    format {
        
               
        # name
        ?num 
        str(?l) 
        us:date(?date)
        coalesce(us:link(?uri, ?l), "")
        
        # one row with property values of one Point
        group { 
            format {
                # one cell with value ?val of property ?pname
                format { 
                      
                    coalesce(us:color(?pname, ?val), "black")  "%s"    
                }
                coalesce(us:show(?val), "")
            }
        }
    }
    if (strends(?num, "0"), st:call-template(st:header), "")
}
where {
    # ?in is the focus node
    ?in a geo:Point ; rdfs:label ?l .
    
    # iterate property names
    values ?pname { unnest(us:plist()) }
    
    optional {   
        # some sensor properties have values, some have not
        select distinct ?in ?pname ?val ?date where {
            ?mesure sosa:hasFeatureOfInterest ?in ;
                sosa:observedProperty ?p .
            ?p a ?pname .
            ?mesure sosa:hasSimpleResult ?val  ; 
                sosa:resultTime ?date
        }
    }
    
    # some points may have a DBpedia URI
    optional { ?in ex:dbpedia ?uri }
}



# color of property value depends on the quartile of the value
function us:color(?pname, ?val) {
    us:quartile(?pname, ?val)
}



function us:quartile(?pname, ?val) {
    if (us:value(?val) >= st:cget(st:quart3, ?pname), "black",
    if (us:value(?val) >= st:cget(st:median, ?pname), "red",
    if (us:value(?val) >= st:cget(st:quart1, ?pname), "green",
        "blue"  )))
}


function us:median(?pname, ?val) {
    if (us:value(?val) =  st:cget(st:max, ?pname),    "red",
    if (us:value(?val) >= st:cget(st:median, ?pname), "brown",
        "black"))
}



function us:date(?date) {
    if (contains(?date, "T"), strbefore(?date, "T"), ?date)
}

function us:link(?url, ?lab) {
    st:format(, us:protect(st:url(?url)), ?lab)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy