R/Util.R

Defines functions substrRight

library(SPARQL) 


specificDatatypes <- c("Trajectory", "Time Series", "Coverage")

endpoint <- "http://data.uni-muenster.de:8080/openrdf-sesame/repositories/loc4gds"
#endpoint <- "http://128.176.133.65:8081/parliament/sparql"

prefixes <- "
PREFIX geo:<http://www.opengis.net/ont/geosparql/1.0#> 
PREFIX data:<http://ifgi.open-datasource-catalogue.de/resource/> 
PREFIX my:<http://ifgi.data.de/resource/> 
PREFIX dbpedia-owl:<http://dbpedia.org/ontology/> 
PREFIX dbpedia-prop:<http://dbpedia.org/property/> 
PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX dct:<http://purl.org/dc/terms/> 
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#> 
PREFIX sf:<http://www.opengis.net/ont/sf#> 
PREFIX dc:<http://purl.org/dc/elements/1.1/> 
PREFIX time:<http://www.w3.org/2006/time#> "

ns <- c('geo', '<http://www.opengis.net/ont/geosparql/1.0#>', 
        'data','<http://ifgi.open-datasource-catalogue.de/resource/>', 
        'my','<http://ifgi.data.de/resource/>', 
        'dbpedia-owl','<http://dbpedia.org/ontology/>', 
        'dbpedia-prop','<http://dbpedia.org/property/>', 
        'rdf','<http://www.w3.org/1999/02/22-rdf-syntax-ns#>', 
        'dct','<http://purl.org/dc/terms/>', 
        'xsd','<http://www.w3.org/2001/XMLSchema#>', 
        'sf','<http://www.opengis.net/ont/sf#>', 
        'dc','<http://purl.org/dc/elements/1.1/>', 
        'time','<http://www.w3.org/2006/time#>'
)


##########################################################
#01 - The user (client) queries for an specific theme (e.g. rainfall or temperature). Optionally, she includes the spatial, temporal or spatio-temporal extent of her desired data
#02 - The Broker responds with a set of datasets and their metadata (e.g spatio-temporal extent, and details such as who collected the data, when, how it was processed)
#03 - The user  chooses a dataset and how she wants it (e.g. time series, trajectory, coverage)
#04 - The client queries the broker on the specific Dataset's DataSource and field description(position, extent, value)
#05 - The broker answers the client
#06 - The client:
#     - uses the data to bind the DataSource
#     - retrives the Dataset
#     - builds the required type of object
#07 - The user lives happily ever after or she lives long and prosper
#08 - Olé!
##########################################################



substrRight <- function(x, n){
  substr(x, nchar(x)-n+1, nchar(x))
}




##########################################################
#Get the datatsources
##########################################################
queryDataSources <- "SELECT DISTINCT
    ?datasourceType
    ?datasource
?datasourceName
?dataset
?host
?hostAlias
?hostAddress
?hostPort
?userName
?userPassword
?beginning
?end
?wkt
?storageField

WHERE {

?datasource <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://giv-lodum.uni-muenster.de/resource/fdd#DataSource>    .
?datasource <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?datasourceType    .
?datasource <http://giv-lodum.uni-muenster.de/resource/fdd#hasHost> ?host .
?host <http://giv-lodum.uni-muenster.de/resource/fdd#hasAlias> ?hostAlias .
?host <http://giv-lodum.uni-muenster.de/resource/fdd#hasAddress> ?hostAddress .
?host <http://giv-lodum.uni-muenster.de/resource/fdd#hasPort> ?hostPort .
?datasource <http://giv-lodum.uni-muenster.de/resource/fdd#hasDataSet> ?dataset .

?dataset <http://giv-lodum.uni-muenster.de/resource/fdd#hasExtent> ?temporalExtent .


OPTIONAL{       

?temporalExtent <http://www.w3.org/2006/time#hasBeginning> ?instantBeginning .
?instantBeginning <http://www.w3.org/2006/time#inXSDDateTime> ?beginning .

?temporalExtent <http://www.w3.org/2006/time#hasEnd> ?instantEnd .
?instantEnd <http://www.w3.org/2006/time#inXSDDateTime> ?end .

}

?dataset <http://giv-lodum.uni-muenster.de/resource/fdd#hasExtent> ?spatialExtent .       

OPTIONAL{

?spatialExtent <http://www.opengis.net/ont/geosparql/1.0#hasGeometry> ?geometry .
?geometry <http://www.opengis.net/ont/geosparql/1.0#asWKT> ?wkt .
}

?dataset <http://giv-lodum.uni-muenster.de/resource/fdd#hasPostition> ?position .

OPTIONAL{?position <http://giv-lodum.uni-muenster.de/resource/fdd#isStoredAt> ?storageField .}
OPTIONAL{?position <http://giv-lodum.uni-muenster.de/resource/fdd#xIsStoredAt> ?xStorageField .}
OPTIONAL{?position <http://giv-lodum.uni-muenster.de/resource/fdd#yIsStoredAt> ?yStorageField .}
OPTIONAL{?position <http://giv-lodum.uni-muenster.de/resource/fdd#zIsStoredAt> ?zStorageField .}
OPTIONAL{?position <http://giv-lodum.uni-muenster.de/resource/fdd#tIsStoredAt> ?tStorageField .}

?datasource <http://giv-lodum.uni-muenster.de/resource/fdd#hasName> ?datasourceName .
?datasource <http://giv-lodum.uni-muenster.de/resource/fdd#hasUser> ?user .
?user <http://giv-lodum.uni-muenster.de/resource/fdd#hasName> ?userName .
?user <http://giv-lodum.uni-muenster.de/resource/fdd#hasPassword> ?userPassword .

}"




##########################################################
#Get the datatsets
##########################################################
queryDataSets <- "SELECT ?pg ?sdb
WHERE{
  ?pg rdf:type data:PostGIS . 
  ?sdb rdf:type data:SciDB 
}"



##########################################################
#RUN THE QUERY
##########################################################
query <- paste(prefixes, " ", queryDataSources, " LIMIT 10 ")
qd <- SPARQL(url = endpoint, query = query, ns = ns)
df <- qd$results
df

query <- "PREFIX  dgp1187: <http://data-gov.tw.rpi.edu/vocab/p/1187/>
SELECT ?ye ?fi ?ac 
WHERE {
  ?s dgp1187:year ?ye .
  ?s dgp1187:fires ?fi .
  ?s dgp1187:acres ?ac .
}"



##############################################################################################################
############################################ Updating main query #############################################
##############################################################################################################

dataset <- "<http://ifgi.data.de/resource/DATA_SET_RAINFALL> "
date1 <- "2010-05-10T00:00:00Z"
date2 <- "2013-05-10T00:00:00Z"
query <- "SELECT * { ?s ?p ?o. }"

end <- which(strsplit(query, '')[[1]]=='}')
pos <- end[length(end)]-1


## Add spatial constraint
result <- paste(sep="",substr(query, 1, pos), " FILTER (xsd:dateTime(?beginning) >= \"", date1,"\"^^xsd:dateTime && xsd:dateTime(?end) <= \"",date2,"\"^^xsd:dateTime) ")
result <- paste(result,"}")

## Add dataset constraint

result <- paste(sep="",substr(query, 1, pos), "?datasource <http://giv-lodum.uni-muenster.de/resource/fdd#hasDataSet> ", dataset , " . ")
result <- paste(result,"}")
jimjonesbr/sdd documentation built on May 19, 2019, 10:34 a.m.