diff --git a/extension/toar_controlled_vocabulary-0.1/toar_controlled_vocabulary--0.1.sql b/extension/toar_controlled_vocabulary-0.1/toar_controlled_vocabulary--0.1.sql index ca9eefbea1dfe2a0d68e61b00bc8843f28c0a9e7..9e1b1944a1d101674e7b9b8919b487ce11f339cd 100644 --- a/extension/toar_controlled_vocabulary-0.1/toar_controlled_vocabulary--0.1.sql +++ b/extension/toar_controlled_vocabulary-0.1/toar_controlled_vocabulary--0.1.sql @@ -1,5 +1,5 @@ -- --- contrib/toar_controlled_vocabulary.sql +-- toardb/extension/toar_controlled_vocabulary/toar_controlled_vocabulary--0.1.sql -- -- [Step to install] -- @@ -11,28 +11,323 @@ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION toar_controlled_vocabulary" to load this file. \quit +-- Roles +-- ===== + +-- Role Codes + CREATE TABLE IF NOT EXISTS RC_vocabulary ( - enum_val INT NOT NULL, - enum_str character varying(128) NOT NULL, + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, PRIMARY KEY(enum_val, enum_str) ); -INSERT INTO RC_vocabulary (enum_val, enum_str) VALUES - (0, 'PointOfContact'), - (1, 'PrincipalInvestigator'), - (2, 'Originator'), - (3, 'Contributor'), - (4, 'Collaborator'), - (5, 'ResourceProvider'); +INSERT INTO RC_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'PointOfContact', 'point of contact'), + (1, 'PrincipalInvestigator', 'principal investigator'), + (2, 'Originator', 'originator'), + (3, 'Contributor', 'contributor'), + (4, 'Collaborator', 'collaborator'), + (5, 'ResourceProvider', 'resource provider'); + +-- Role Status CREATE TABLE IF NOT EXISTS RS_vocabulary ( - enum_val INT NOT NULL, - enum_str character varying(128) NOT NULL, + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO RS_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'active', 'active'), + (1, 'inactive', 'inactive'), + (2, 'unknown', 'unknown'); + +-- Contacts +-- ======== + +-- Kind of Organizations + +CREATE TABLE IF NOT EXISTS OK_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO OK_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (1, 'Government', 'government'), + (2, 'Research', 'research'), + (3, 'International', 'international'), + (4, 'NonProfit', 'non-profit'), + (5, 'Commercial', 'commercial'), + (6, 'Individual', 'individual'), + (7, 'Other', 'other'); + +-- Timeseries +-- ========== + +-- Data Access Rights + +CREATE TABLE IF NOT EXISTS DA_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO DA_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'ByAttribution', 'by attribution'), + (1, 'ShareAlike', 'share alike'), + (2, 'Restricted', 'restricted'); + +-- Sampling Frequencies + +CREATE TABLE IF NOT EXISTS SF_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO SF_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Hourly', 'hourly'), + (1, 'ThreeHourly', '3-hourly'), + (2, 'SixHourly', '6-hourly'), + (3, 'Daily', 'daily'), + (4, 'Weekly', 'weekly'), + (5, 'Monthly', 'monthly'), + (6, 'Yearly', 'yearly'), + (7, 'Irregular', 'irregular data samples of constant length'), + (8, 'Irregular2', 'irregular data samples of varying length'); + +-- Aggregation Types + +CREATE TABLE IF NOT EXISTS AT_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO AT_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Mean', 'mean'), + (1, 'Mean1Of2', 'mean of two values'), + (2, 'Mean1OfWeek', 'weekly mean'), + (3, 'Mean4Samples', 'mean out of 4 samples'), + (4, 'MeanMonth', 'monthly mean'), + (5, 'None', 'none'), + (6, 'Unknown', 'unknown'); + +-- Data Sources + +CREATE TABLE IF NOT EXISTS DS_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO DS_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Model', 'model'), + (1, 'Measurement', 'measurement'); + +-- Stationmeta +-- =========== + +-- climatic zones +-- see http://eusoils.jrc.eu.europa.eu/projects/RenewableEnergy + +CREATE TABLE IF NOT EXISTS CZ_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO CZ_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (-1, 'Undefined', 'undefined'), + ( 0, 'Unclassified', 'unclassified'), + ( 1, 'WarmTemperateMoist', 'warm temperate moist'), + ( 2, 'WarmTemperateDry', 'warm temperate dry'), + ( 3, 'CoolTemperateMoist', 'cool temperate moist'), + ( 4, 'CoolTemperateDry', 'cool temperate dry'), + ( 5, 'PolarMoist', 'polar moist'), + ( 6, 'PolarDry', 'polar dry'), + ( 7, 'BorealMoist', 'boreal moist'), + ( 8, 'BorealDry', 'boreal dry'), + ( 9, 'TropicalMontane', 'tropical montane'), + (10, 'TropicalWet', 'tropical wet'), + (11, 'TropicalMoist', 'tropical moist'), + (12, 'TropicalDry', 'tropical dry'); + +-- Station Coordinate Validity + +CREATE TABLE IF NOT EXISTS CV_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO CV_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'NotChecked', 'not checked'), + (1, 'Verified', 'verified'), + (2, 'Plausible', 'plausible'), + (3, 'Doubtful', 'doubtful'), + (4, 'Unverifyable', 'not verifyable'); + +-- Station Types + +CREATE TABLE IF NOT EXISTS ST_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO ST_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Unknown', 'unknown'), + (1, 'Background', 'background'), + (2, 'Traffic', 'traffic'), + (3, 'Industrial', 'industrial'), + (4, 'Other', 'other'); + +-- Station Types Of Area + +CREATE TABLE IF NOT EXISTS TA_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO TA_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Unknown', 'unknown'), + (1, 'Urban', 'urban'), + (2, 'Suburban', 'suburban'), + (3, 'Rural', 'rural'), + (4, 'Remote', 'remote'); + +-- Station TOAR Categories + +CREATE TABLE IF NOT EXISTS TC_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO TC_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'Unclassified', 'unclassified'), + (1, 'RuralLowElevation', 'rural low elevation'), + (2, 'RuralHighElevation', 'rural high elevation'), + (3, 'Urban', 'urban'); + +-- Station HTAP Regions (TIER1) +-- The integer denoting the “tier1” region defined in the task force on hemispheric transport of air pollution (TFHTAP) coordinated model studies. + +CREATE TABLE IF NOT EXISTS TR_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO TR_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (-1, 'HTAPTier1Undefined', '-1 (undefined)'), + ( 1, 'HTAPTier1World', '1 (World)'), + ( 2, 'HTAPTier1OCN', '2 (OCN Non-arctic/Antarctic Ocean)'), + ( 3, 'HTAPTier1NAM', '3 (NAM US+Canada (upto 66 N; polar circle))'), + ( 4, 'HTAPTier1EUR', '4 (EUR Western + Eastern EU+Turkey (upto 66 N polar circle))'), + ( 5, 'HTAPTier1SAS', '5 (SAS South Asia: India, Nepal, Pakistan, Afghanistan, Bangadesh, Sri Lanka)'), + ( 6, 'HTAPTier1EAS', '6 (EAS East Asia: China, Korea, Japan)'), + ( 7, 'HTAPTier1SEA', '7 (SEA South East Asia)'), + ( 8, 'HTAPTier1PAN', '8 (PAN Pacific, Australia+ New Zealand)'), + ( 9, 'HTAPTier1NAF', '9 (NAF Northern Africa+Sahara+Sahel)'), + (10, 'HTAPTier1SAF', '10 (SAF Sub Saharan/sub Sahel Africa)'), + (11, 'HTAPTier1MDE', '11 (MDE Middle East: S. Arabia, Oman, etc, Iran, Iraq)'), + (12, 'HTAPTier1MCA', '12 (MCA Mexico, Central America, Caribbean, Guyanas, Venezuela, Columbia)'), + (13, 'HTAPTier1SAM', '13 (SAM S. America)'), + (14, 'HTAPTier1RBU', '14 (RBU Russia, Belarussia, Ukraine)'), + (15, 'HTAPTier1CAS', '15 (CAS Central Asia)'), + (16, 'HTAPTier1NPO', '16 (NPO Arctic Circle (North of 66 N) + Greenland)'), + (17, 'HTAPTier1SPO', '17 (SPO Antarctic)'); + +-- Station Dominant Landcover Types +-- see: https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/mcd12c1 + +CREATE TABLE IF NOT EXISTS DL_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO DL_vocabulary (enum_val, enum_str, enum_display_str) VALUES + ( -1, 'Undefined', '-1 (undefined)'), + ( 0, 'Water', '0 (Water)'), + ( 1, 'EGNeedleleaf', '1 (Evergreen Needleleaf forest)'), + ( 2, 'EGBroadleaf', '2 (Evergreen Broadleaf forest)'), + ( 3, 'DCNeedleleaf', '3 (Deciduous Needleleaf forest)'), + ( 4, 'DCBroadleaf', '4 (Deciduous Broadleaf forest)'), + ( 5, 'MixedForest', '5 (Mixed forest)'), + ( 6, 'ClosedShrublands', '6 (Closed shrublands)'), + ( 7, 'OpenShrublands', '7 (Open shrublands)'), + ( 8, 'WoodySavannas', '8 (Woody savannas)'), + ( 9, 'Savannas', '9 (Savannas)'), + ( 10, 'Grasslands', '10 (Grasslands)'), + ( 11, 'Wetlands', '11 (Permanent wetlands)'), + ( 12, 'Croplands', '12 (Croplands)'), + ( 13, 'Urban', '13 (Urban and built-up)'), + ( 14, 'Mosaic', '14 (Cropland/Natural vegetation mosaic)'), + ( 15, 'Snow', '15 (Snow and ice)'), + ( 16, 'Barren', '16 (Barren or sparsely vegetated)'), + (255, 'Fill', '255 (Fill Value/Unclassified)'); + +-- Result Types + +CREATE TABLE IF NOT EXISTS RT_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, + PRIMARY KEY(enum_val, enum_str) +); + +INSERT INTO RT_vocabulary (enum_val, enum_str, enum_display_str) VALUES + (0, 'String', 'str'), + (1, 'Integer', 'int'), + (2, 'Float', 'float'); + +-- Data +-- ==== + +-- Data Flags + +CREATE TABLE IF NOT EXISTS DF_vocabulary ( + enum_val INT NOT NULL, + enum_str character varying(128) NOT NULL, + enum_display_str character varying(128) NOT NULL, PRIMARY KEY(enum_val, enum_str) ); -INSERT INTO RS_vocabulary (enum_val, enum_str) VALUES - (0, 'active'), - (1, 'inactive'), - (2, 'unknown'); +INSERT INTO DF_vocabulary (enum_val, enum_str, enum_display_str) VALUES + ( 0,'OK', 'OK'), + ( 1,'OKPreliminary', 'OK preliminary'), + ( 2,'OKModified', 'OK modified'), + ( 3,'OKPreliminaryModified', 'OK preliminary modified'), + ( 4,'Inconsistent', 'inconsistent'), + ( 5,'InconsistentPreliminary', 'inconsistent preliminary'), + ( 6,'Doubtful', 'doubtful'), + ( 7,'DoubtfulPreliminary', 'doubtful preliminary'), + ( 8,'DoubtfulModified', 'doubtful modified'), + ( 9,'DoubtfulPreliminaryModified', 'doubtful preliminary modified'), + (10,'Wrong', 'wrong'), + (11,'WrongPreliminary', 'wrong preliminary'), + (12,'NotCheckedPreliminary', 'not checked preliminary'), + (13,'Changed', 'changed'), + (14,'Estimated', 'estimated'), + (15,'MissingValue', 'missing value');