UNPKG

lipdjs

Version:

A JavaScript library for reading and writing LiPD (Linked Paleo Data) files

595 lines (500 loc) 19.9 kB
export const QUERY_DSNAME = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?dsname WHERE { GRAPH ?g { ?ds a le:Dataset . ?ds le:hasName ?dsname } } ` export const QUERY_DSID = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?dsid WHERE { GRAPH ?g { ?ds a le:Dataset . OPTIONAL{?ds le:hasDatasetId ?dsid} } } ` export const QUERY_UNIQUE_ARCHIVE_TYPE = ` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?archiveType WHERE { GRAPH ?g { ?ds a le:Dataset . ?ds le:hasArchiveType ?archiveType } } ` export const QUERY_ENSEMBLE_TABLE_SHORT = ` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?datasetName ?ensembleTable ?ensembleVariableName ?ensembleVariableValues ?ensembleVariableUnits ?ensembleDepthName ?ensembleDepthValues ?ensembleDepthUnits ?notes WHERE { ?ds a le:Dataset . ?ds le:hasName ?datasetName . FILTER regex(str(?datasetName), "[dsname].*", "i"). ?ds le:hasChronData ?chron . ?chron le:modeledBy ?model . ?model le:hasEnsembleTable ?ensembleTable . OPTIONAL{?ensembleTable le:hasNotes ?notes} ?ensembleTable le:hasVariable ?ensvar . ?ensvar le:hasName ?ensembleVariableName . FILTER (regex(lcase(str(?ensembleVariableName)), "year.*", "i") || regex(str(?ensembleVariableName), "age.*", "i")) . ?ensvar le:hasValues ?ensembleVariableValues OPTIONAL{ ?ensvar le:hasUnits ?ensembleVariableUnitsObj . ?ensembleVariableUnitsObj rdfs:label ?ensembleVariableUnits . } ?ensembleTable le:hasVariable ?ensdepthvar . ?ensdepthvar le:hasName ?ensembleDepthName . FILTER regex(lcase(str(?ensembleDepthName)), "[ensembleDepthVarName].*"). ?ensdepthvar le:hasValues ?ensembleDepthValues . OPTIONAL{ ?ensdepthvar le:hasUnits ?ensembleDepthUnitsObj . ?ensembleDepthUnitsObj rdfs:label ?ensembleDepthUnits . } } ` export const QUERY_ENSEMBLE_TABLE = ` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?datasetName ?ensembleTable ?ensembleVariableName ?ensembleVariableValues ?ensembleVariableUnits ?ensembleDepthName ?ensembleDepthValues ?ensembleDepthUnits ?notes ?methodobj ?methods WHERE { ?ds a le:Dataset . ?ds le:hasName ?datasetName . FILTER regex(str(?datasetName), "[dsname].*", "i"). ?ds le:hasChronData ?chron . ?chron le:modeledBy ?model . ?model le:hasEnsembleTable ?ensembleTable . OPTIONAL{?ensembleTable le:hasNotes ?notes} ?ensembleTable le:hasVariable ?ensvar . ?ensvar le:hasName ?ensembleVariableName . FILTER regex(lcase(str(?ensembleVariableName)), "[ensembleVarName].*", "i"). ?ensvar le:hasValues ?ensembleVariableValues OPTIONAL{ ?ensvar le:hasUnits ?ensembleVariableUnitsObj . ?ensembleVariableUnitsObj rdfs:label ?ensembleVariableUnits . } ?ensembleTable le:hasVariable ?ensdepthvar . ?ensdepthvar le:hasName ?ensembleDepthName . FILTER regex(lcase(str(?ensembleDepthName)), "[ensembleDepthVarName].*", "i"). ?ensdepthvar le:hasValues ?ensembleDepthValues . OPTIONAL{ ?ensdepthvar le:hasUnits ?ensembleDepthUnitsObj . ?ensembleDepthUnitsObj rdfs:label ?ensembleDepthUnits . } } ` export const QUERY_BIBLIO = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?dsname ?title (GROUP_CONCAT(?authorName;separator=" and ") as ?authors) ?doi ?pubyear ?year ?journal ?volume ?issue ?pages ?type ?publisher ?report ?citeKey ?edition ?institution ?url ?url2 WHERE { ?ds a le:Dataset . ?ds le:hasName ?dsname . ?ds le:hasPublication ?pub . OPTIONAL{?pub le:hasDOI ?doi .} OPTIONAL{ ?pub le:hasAuthor ?author . ?author le:hasName ?authorName . } OPTIONAL{?pub le:publicationYear ?pubyear .} OPTIONAL{?pub le:hasYear ?year .} OPTIONAL{?pub le:hasTitle ?title .} OPTIONAL{?pub le:hasJournal ?journal .} OPTIONAL{?pub le:hasVolume ?volume .} OPTIONAL{?pub le:hasIssue ?issue .} OPTIONAL{?pub le:hasPages ?pages .} OPTIONAL{?pub le:hasType ?type .} OPTIONAL{?pub le:hasPublisher ?publisher .} OPTIONAL{?pub le:hasReport ?report .} OPTIONAL{?pub le:hasCiteKey ?citeKey .} OPTIONAL{?pub le:hasEdition ?edition .} OPTIONAL{?pub le:hasInstitution ?institution .} OPTIONAL{?pub le:hasLink ?url .} OPTIONAL{?pub le:hasUrl ?url2 .} } GROUP BY ?pub ?dsname ?title ?doi ?year ?pubyear ?journal ?volume ?issue ?pages ?type ?publisher ?report ?citeKey ?edition ?institution ?url ?url2 ` export const QUERY_DISTINCT_VARIABLE=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?variableName WHERE { ?uri le:hasName ?variableName . ?uri le:hasVariableId ?TSID } ` export const QUERY_DISTINCT_PROXY = ` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT DISTINCT ?proxy WHERE { OPTIONAL{?uri le:hasProxy ?proxyObj . ?proxyObj rdfs:label ?proxy .} ?uri le:hasVariableId ?TSID } ` export const QUERY_VARIABLE = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?uri ?TSID ?variableName WHERE { ?uri le:hasName ?variableName . ?uri le:hasVariableId ?TSID } ` export const QUERY_VARIABLE_GRAPH = ` PREFIX le: <http://linked.earth/ontology#> CONSTRUCT { <[varid]> ?p1 ?o1 . <[varid]> ?pv1 ?v1 . ?s2 ?pv2 ?v2 . } WHERE { # level 1 <[varid]> ?p1 ?o1 # get objects FILTER ( (?p1 != le:foundInTable && ?p1 != le:takenAtDepth) && isIRI(?o1) ) . <[varid]> ?pv1 ?v1 # get primitives FILTER (isLiteral(?v1)) . BIND (?o1 as ?s2) . # rename binding for readability # level 2 ?s2 ?pv2 ?v2 FILTER (isLiteral(?v2)) . } ` export const QUERY_ALL_VARIABLES_GRAPH = ` PREFIX le: <http://linked.earth/ontology#> INSERT { GRAPH ?var { ?var ?pv1 ?v1 . ?var ?p1 ?o1 . ?o1 ?pv2 ?v2 . ?o1 ?p2 ?o2 . ?o2 ?pv3 ?v3 . ?var le:foundInTable ?table . ?var le:foundInDataset ?ds . ?var le:foundInDatasetName ?dsname } } WHERE { ?table le:hasVariable ?var . { { # level 1 ?var le:foundInDataset ?ds . ?ds le:hasName ?dsname . ?var ?pv1 ?v1 # get primitives FILTER (isLiteral(?v1)) . } UNION { # level 2 { ?var ?p1 ?o1 FILTER (?p1 != le:foundInTable && ?p1 != le:foundInDataset) . ?o1 ?pv2 ?v2 FILTER (isLiteral(?v2)) . } . } #UNION #{ # # level 3 # { # ?var ?p1 ?o1 # FILTER (?p1 NOT IN (le:foundInTable, le:foundInDataset)) . # ?o1 ?p2 ?o2 # FILTER (?p1 NOT IN (le:foundInTable, le:foundInDataset)) . # ?o2 ?pv3 ?v3 # FILTER (isLiteral(?v2)) . # } . #} } } ` export const QUERY_FILTER_GEO = ` PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX le: <http://linked.earth/ontology#> SELECT ?dsname WHERE { ?ds a le:Dataset . ?ds le:hasName ?dsname . ?ds le:hasLocation ?loc . { {?loc le:hasLatitude ?lat} UNION {?loc wgs84:lat ?lat } } . { {?loc le:hasLongitude ?lon} UNION {?loc wgs84:long ?lon } } . FILTER ( ?lat >= [latMin] && ?lat < [latMax] && ?lon >= [lonMin] && ?lon < [lonMax] ) . } ` export const QUERY_FILTER_ARCHIVE_TYPE = ` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?dsname WHERE { ?ds a le:Dataset . ?ds le:hasName ?dsname . ?ds le:hasArchiveType ?archiveTypeObj . ?archiveTypeObj rdfs:label ?archiveType . FILTER regex(str(?archiveType), "[archiveType].*", "i") } ` export const QUERY_FILTER_DATASET_NAME = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?dsname WHERE { ?ds a le:Dataset . ?ds le:hasName ?dsname . FILTER regex(str(?dsname), "[datasetName].*", "i") } ` export const QUERY_FILTER_TIME = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?dsname ?minage ?maxage WHERE { ?ds a le:Dataset . ?ds le:hasName ?dsname . ?ds le:hasPaleoData ?data . ?data le:hasMeasurementTable ?table . ?table le:hasVariable ?var . ?table le:hasVariable ?timevar . ?timevar le:hasName ?time_variableName . FILTER (regex(str(?time_variableName), "year.*") || regex(str(?time_variableName), "age.*")) . ?timevar le:hasMinValue ?minage . ?timevar le:hasMaxValue ?maxage . } ` export const QUERY_FILTER_VARIABLE_NAME = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?name WHERE { ?uri le:hasVariableId ?id . ?uri le:hasName ?name . FILTER regex(str(?name), "[name].*", "i") . ?uri le:foundInDataset ?dsuri . ?uri le:foundInDatasetName ?dataSetName . ?uri le:foundInTable ?tableuri . } ` export const QUERY_FILTER_VARIABLE_PROXY = ` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?proxy WHERE { ?uri le:hasVariableId ?id . ?uri le:hasProxy ?proxyObj . ?proxyObj rdfs:label ?proxy . FILTER regex(str(?proxy), "[proxy].*", "i") . ?uri le:foundInDataset ?dsuri . ?uri le:foundInDatasetName ?dataSetName . ?uri le:foundInTable ?tableuri . } ` export const QUERY_FILTER_VARIABLE_RESOLUTION = ` PREFIX le: <http://linked.earth/ontology#> SELECT ?uri ?dsuri ?dsname ?tableuri ?id ?v WHERE { ?uri le:hasVariableId ?id . ?uri le:hasResolution ?res . ?res le:has[stat]Value ?v . FILTER(?v<[value]) . ?uri le:foundInDataset ?dsuri . ?uri le:foundInDatasetName ?dataSetName . ?uri le:foundInTable ?tableuri . } ` export const QUERY_TIMESERIES_ESSENTIALS_PALEO =` PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?dataSetName ?archiveType ?geo_meanLat ?geo_meanLon ?geo_meanElev ?paleoData_variableName ?paleoData_values ?paleoData_units ?paleoData_proxy ?paleoData_proxyGeneral ?time_variableName ?time_values ?time_units ?depth_variableName ?depth_values ?depth_units WHERE { ?ds a le:Dataset . ?ds le:hasName ?dataSetName . FILTER regex(str(?dataSetName), "[dsname].*", "i"). OPTIONAL{ ?ds le:hasArchiveType ?archiveTypeObj . ?archiveTypeObj rdfs:label ?archiveType . } ?ds le:hasLocation ?loc . OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } . OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } . OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } . ?ds le:hasPaleoData ?data . ?data le:hasMeasurementTable ?table . ?table le:hasVariable ?var . ?var le:hasName ?paleoData_variableName . FILTER (!regex(str(?paleoData_variableName), "year.*") && !regex(str(?paleoData_variableName), "age.*") && !regex(str(?paleoData_variableName), "depth.*")) . ?var le:hasValues ?paleoData_values . OPTIONAL{ ?var le:hasUnits ?paleoData_unitsObj . ?paleoData_unitsObj rdfs:label ?paleoData_units . } OPTIONAL{ ?var le:hasProxy ?paleoData_proxyObj . ?paleoData_proxyObj rdfs:label ?paleoData_proxy . } OPTIONAL{ ?var le:hasProxyGeneral ?paleoData_proxyGeneralObj . ?paleoData_proxyGeneralObj rdfs:label ?paleoData_proxyGeneral . } OPTIONAL{ ?table le:hasVariable ?timevar . ?timevar le:hasName ?time_variableName . FILTER (regex(str(?time_variableName), "year.*") || regex(str(?time_variableName), "age.*")) . ?timevar le:hasValues ?time_values . OPTIONAL{ ?timevar le:hasUnits ?time_unitsObj . ?time_unitsObj rdfs:label ?time_units . } } OPTIONAL{ ?table le:hasVariable ?depthvar . ?depthvar le:hasName ?depth_variableName . FILTER regex(str(?depth_variableName), "depth.*") . ?depthvar le:hasValues ?depth_values . OPTIONAL{ ?depthvar le:hasUnits ?depth_unitsObj . ?depth_unitsObj rdfs:label ?depth_units . } } } ` export const QUERY_TIMESERIES_ESSENTIALS_CHRON =` PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?dataSetName ?archiveType ?geo_meanLat ?geo_meanLon ?geo_meanElev ?chronData_variableName ?chronData_values ?chronData_units ?time_variableName ?time_values ?time_units ?depth_variableName ?depth_values ?depth_units WHERE { ?ds a le:Dataset . ?ds le:hasName ?dataSetName . FILTER regex(str(?dataSetName), "[dsname].*", "i"). OPTIONAL{ ?ds le:hasArchiveType ?archiveTypeObj . ?archiveTypeObj rdfs:label ?archiveType . } ?ds le:hasLocation ?loc . OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } . OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } . OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } . ?ds le:hasChronData ?data . ?data le:hasMeasurementTable ?table . ?table le:hasVariable ?var . ?var le:hasName ?chronData_variableName . ?var le:hasValues ?chronData_values . OPTIONAL{ ?var le:hasUnits ?chronData_unitsObj . ?chronData_unitsObj rdfs:label ?chronData_units . } OPTIONAL{?table le:hasVariable ?timevar . ?timevar le:hasName ?time_variableName . FILTER (regex(str(?time_variableName), "year.*") || regex(str(?time_variableName), "age.*")) . ?timevar le:hasValues ?time_values . OPTIONAL{ ?timevar le:hasUnits ?time_unitsObj . ?time_unitsObj rdfs:label ?time_units . } } OPTIONAL{?table le:hasVariable ?depthvar . ?depthvar le:hasName ?depth_variableName . FILTER regex(str(?depth_variableName), "depth.*") . ?depthvar le:hasValues ?depth_values . OPTIONAL{ ?depthvar le:hasUnits ?depth_unitsObj . ?depth_unitsObj rdfs:label ?depth_units . } } } ` export const QUERY_VARIABLE_PROPERTIES=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?property WHERE { ?ds a le:Dataset . {?ds le:hasPaleoData ?data . ?data le:hasMeasurementTable ?table . ?table le:hasVariable ?var . ?var ?property ?value .} UNION {OPTIONAL{?ds le:hasChronData ?data1 . ?data1 le:hasMeasurementTable ?table1 . ?table1 le:hasVariable ?var1 . ?var1 ?property ?value1 .}} } ` // At the LiPDSeries level export const QUERY_LiPDSERIES_PROPERTIES=` SELECT DISTINCT ?p WHERE { ?uri ?p ?v .} ` export const QUERY_DATASET_PROPERTIES=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?property WHERE { ?ds a le:Dataset . ?ds ?property ?value . } ` export const QUERY_MODEL_PROPERTIES=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?property WHERE { ?ds a le:Dataset . {OPTIONAL{?ds le:hasPaleoData ?data . ?data le:modeledBy ?paleomodel . ?paleomodel ?property ?value .}} UNION {OPTIONAL{?ds le:hasChronData ?chron . ?chron le:modeledBy ?chronmodel . ?chronmodel ?property ?value .}} } ` export const QUERY_VARIABLE_ESSENTIALS=` PREFIX le: <http://linked.earth/ontology#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?dataSetName ?archiveType ?name ?TSID ?values ?units ?proxy WHERE { ?var le:hasName ?name . ?var le:foundInDatasetName ?dataSetName . #FILTER regex(?dataSetName, "[dsname].*", "i"). OPTIONAL{?var le:hasVariableId ?TSID .} ?var le:hasValues ?values . OPTIONAL{ ?var le:hasUnits ?unitsObj . ?unitsObj rdfs:label ?units . } OPTIONAL{ ?var le:hasArchiveType ?archiveTypeObj . ?archiveTypeObj rdfs:label ?archiveType . } OPTIONAL{ ?var le:hasProxy ?paleoData_proxyObj . ?paleoData_proxyObj rdfs:label ?paleoData_proxy . } } ` export const QUERY_LOCATION =` PREFIX wgs84: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX le: <http://linked.earth/ontology#> SELECT ?dataSetName ?geo_meanLat ?geo_meanLon ?geo_meanElev WHERE { ?ds a le:Dataset . ?ds le:hasName ?dataSetName . FILTER regex(str(?dataSetName), "[dsname].*", "i"). ?ds le:hasLocation ?loc . OPTIONAL { {?loc le:hasLatitude ?geo_meanLat} UNION {?loc wgs84:lat ?geo_meanLat } } . OPTIONAL { {?loc le:hasLongitude ?geo_meanLon} UNION {?loc wgs84:long ?geo_meanLon } } . OPTIONAL { {?loc le:hasElevation ?geo_meanElev} UNION {?loc wgs84:alt ?geo_meanElev } } } ` export const QUERY_FILTER_COMPILATION=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?dataSetName WHERE { ?ds a le:Dataset . ?ds le:hasName ?dataSetName . ?ds le:hasPaleoData ?data . ?data le:hasMeasurementTable ?table . ?table le:hasVariable ?var . ?var le:partOfCompilation ?compilation . ?compilation le:hasName ?compilationName . FILTER regex(str(?compilationName), "[compilationName].*", "i")} ` export const QUERY_COMPILATION_NAME=` PREFIX le: <http://linked.earth/ontology#> SELECT DISTINCT ?compilationName WHERE { ?var a le:Variable . ?var le:partOfCompilation ?compilation . ?compilation le:hasName ?compilationName .} `