source: branches/prototype-v0/zoo-project/zoo-kernel/sql/zoo_collectiondb.sql @ 839

Last change on this file since 839 was 839, checked in by djay, 7 years ago

Update the source code for HPC support. Automatically adding nested outputs for the HPC support (should this be available for every support?). Add capability to store the metadata in the Collection DataBase?. Addition of the zcfg2sql to import any existing ZCFG file into the Collection DB. Add the support to invoke a callback (for history purpose) in case a [callback] section contains at least one parameter defined (url). Add support to convert maps and map to JSON (for callback use only by now). Fix some memory leaks (some are still there).

  • Property svn:keywords set to Id
File size: 13.0 KB
Line 
1create schema CollectionDB;
2
3set search_path = CollectionDB, pg_catalog;
4
5CREATE OR REPLACE FUNCTION update_Description() RETURNS trigger AS 
6$$
7DECLARE
8        i integer;
9BEGIN
10        INSERT INTO CollectionDB.Descriptions (id) VALUES (NEW.id);
11        RETURN NEW;
12END;
13$$ LANGUAGE plpgsql;
14
15CREATE FUNCTION is_in_ows_DataDescription(i integer) RETURNS boolean
16    LANGUAGE plpgsql
17    AS $$
18DECLARE
19        res int;
20        mymax int;
21BEGIN
22        SELECT id from CollectionDB.ows_DataDescription where id=i INTO res ;
23        if res is NULL then
24           return false;
25        else
26           return true;
27        end if;
28END;
29$$;
30
31create table CollectionDB.Descriptions (
32       id serial primary key
33);
34
35create table CollectionDB.ows_Metadata (
36       id serial primary key,
37       title text,
38       role text,
39       href text
40);
41
42create table CollectionDB.DescriptionsMetadataAssignment(
43       descriptions_id int references CollectionDB.Descriptions(id),
44       metadata_id int references CollectionDB.ows_Metadata(id)
45);
46
47create table CollectionDB.ows_Keywords (
48    id serial primary key,
49    keyword varchar
50);
51
52create table CollectionDB.DescriptionsKeywordsAssignment(
53       descriptions_id int references CollectionDB.Descriptions(id),
54       keywords_id int references CollectionDB.ows_Keywords(id)
55);
56
57create table CollectionDB.ows_AdditionalParameters (
58    id serial primary key,
59    title varchar,
60    role varchar,
61    href varchar
62);
63
64create table CollectionDB.DescriptionsAdditionalParametersAssignment (
65       descriptions_id int references CollectionDB.Descriptions(id),
66       additional_parameters_id int references CollectionDB.ows_AdditionalParameters(id)
67);
68
69--
70-- See reference for primitive datatypes
71-- https://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes
72--
73create table CollectionDB.PrimitiveDataTypes (
74       id serial primary key,
75       name varchar(255)
76);
77INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('string');
78INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('boolean');
79INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('integer');
80INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('float');
81INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('double');
82INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('duration');
83INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('dateTime');
84INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('time');
85INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('date');
86INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('gYearMonth');
87INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('gYear');
88INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('gMonthDay');
89INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('gDay');
90INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('gMonth');
91INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('hexBinary');
92INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('base64Binary');
93INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('anyURI');
94INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('QName');
95INSERT INTO CollectionDB.PrimitiveDataTypes (name) VALUES ('NOTATION');
96
97--
98-- List all primitive formats
99--
100create table CollectionDB.PrimitiveFormats (
101       id serial primary key,
102       mime_type varchar(255),
103       encoding varchar(15),
104       schema varchar(255)
105);
106
107-- https://tools.ietf.org/html/rfc4180
108INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('text/csv','utf-8');
109INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('text/css','utf-8');
110INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('text/html','utf-8');
111INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('text/javascript','utf-8');
112INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('text/plain','utf-8');
113INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding,schema)
114       VALUES ('text/xml','utf-8','http://schema.opengis.net/gml/3.2.1/gml.xsd');
115INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding,schema)
116       VALUES ('text/xml','utf-8','http://schema.opengis.net/gml/3.1.0/gml.xsd');
117INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('application/gml+xml','utf-8');
118INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('application/json','utf-8');
119-- https://tools.ietf.org/html/rfc3302
120INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/tiff');
121-- https://www.ietf.org/rfc/rfc4047.txt
122INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/fits');
123-- https://tools.ietf.org/html/rfc3745
124INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/jp2');
125INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/png');
126INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/jpeg');
127INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('image/gif');
128INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('application/octet-stream');
129INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('application/vnd.google-earth.kml+xml');
130-- https://www.iana.org/assignments/media-types/application/zip
131INSERT INTO CollectionDB.PrimitiveFormats (mime_type) VALUES ('application/zip');
132-- https://www.iana.org/assignments/media-types/application/xml
133INSERT INTO CollectionDB.PrimitiveFormats (mime_type,encoding) VALUES ('application/xml','utf-8');
134
135create table CollectionDB.ows_Format (
136    id serial primary key,
137    primitive_format_id int references CollectionDB.PrimitiveFormats(id),
138    maximum_megabytes int,
139    def boolean,
140        use_mapserver bool,
141        ms_styles text
142);
143
144create table CollectionDB.ows_DataDescription (
145    id serial primary key,
146    format_id int references CollectionDB.ows_Format(id)
147);
148
149create table CollectionDB.PrimitiveUom (
150        id serial primary key,
151        uom varchar
152);
153-- source : Open Geospatial Consortium - URNs of definitions in ogc namespace
154insert into CollectionDB.PrimitiveUom (uom) values ('degree');
155insert into CollectionDB.PrimitiveUom (uom) values ('radian');
156insert into CollectionDB.PrimitiveUom (uom) values ('metre');
157insert into CollectionDB.PrimitiveUom (uom) values ('unity');
158
159create table CollectionDB.LiteralDataDomain (
160    possible_literal_values varchar,
161    default_value varchar,
162    data_type_id int references CollectionDB.PrimitiveDataTypes(id),
163    uom int references CollectionDB.PrimitiveUom(id),
164    def boolean
165) inherits (CollectionDB.ows_DataDescription);
166alter table CollectionDB.LiteralDataDomain add constraint literal_data_domain_id unique (id);
167
168create table CollectionDB.BoundingBoxData (
169    epsg int
170) inherits (CollectionDB.ows_DataDescription);
171alter table CollectionDB.BoundingBoxData add constraint bounding_box_data_id unique (id);
172
173create table CollectionDB.ComplexData (
174) inherits (CollectionDB.ows_DataDescription);
175alter table CollectionDB.ComplexData add constraint complex_data_id unique (id);
176
177create table CollectionDB.AllowedValues (
178    id serial primary key,
179    allowed_value varchar(255)
180);
181
182create table CollectionDB.AllowedValuesAssignment (
183    id serial primary key,
184    literal_data_domain_id int references CollectionDB.LiteralDataDomain (id),
185    allowed_value_id int references CollectionDB.AllowedValues (id)
186);
187
188create table CollectionDB.ows_AdditionalParameter (
189    id serial primary key,
190    key varchar,
191    value varchar,
192    additional_parameters_id int references CollectionDB.ows_AdditionalParameters(id)
193);
194
195create table CollectionDB.ows_Input (
196    id int primary key default nextval('collectiondb.descriptions_id_seq'::regclass),
197    title text,
198    abstract text,
199    identifier varchar(255),
200    min_occurs int,
201    max_occurs int
202); -- inherits (CollectionDB.Descriptions);
203alter table CollectionDB.ows_Input add constraint codb_input_id unique (id);
204CREATE TRIGGER ows_Input_proc AFTER INSERT ON CollectionDB.ows_Input FOR EACH ROW EXECUTE PROCEDURE update_Description();
205
206create table CollectionDB.ows_Output (
207    id int primary key default nextval('collectiondb.descriptions_id_seq'::regclass),
208    title text,
209    abstract text,
210    identifier varchar(255)
211); --inherits (CollectionDB.Descriptions);
212alter table CollectionDB.ows_Output add constraint codb_output_id unique (id);
213CREATE TRIGGER ows_Output_proc AFTER INSERT ON CollectionDB.ows_Output FOR EACH ROW EXECUTE PROCEDURE update_Description();
214
215create table CollectionDB.zoo_PrivateMetadata (
216    id serial primary key,
217    identifier varchar,
218    metadata_date timestamp
219);
220
221create table CollectionDB.ows_Process (
222    id int primary key default nextval('collectiondb.descriptions_id_seq'::regclass),
223    title text,
224    abstract text,
225    identifier varchar(255),
226    availability boolean,
227    process_description_xml text,
228    private_metadata_id int references CollectionDB.zoo_PrivateMetadata(id)
229); -- inherits (CollectionDB.Descriptions);
230alter table CollectionDB.ows_Process add constraint codb_process_id unique (id);
231alter table CollectionDB.ows_Process add constraint codb_process_identifier unique (identifier);
232CREATE TRIGGER ows_Process_proc AFTER INSERT ON CollectionDB.ows_Process FOR EACH ROW EXECUTE PROCEDURE update_Description();
233
234create table CollectionDB.InputInputAssignment (
235    id serial primary key,
236    parent_input int references CollectionDB.ows_Input(id),
237    child_input int references CollectionDB.ows_Input(id)
238);
239
240create table CollectionDB.InputDataDescriptionAssignment (
241    id serial primary key,
242    input_id int references CollectionDB.ows_Input(id),
243    data_description_id int check (CollectionDB.is_in_ows_DataDescription(data_description_id))
244);
245
246create table CollectionDB.OutputOutputAssignment (
247    id serial primary key,
248    parent_output int references CollectionDB.ows_Output(id),
249    child_output int references CollectionDB.ows_Output(id)
250);
251
252create table CollectionDB.OutputDataDescriptionAssignment (
253    id serial primary key,
254    output_id int references CollectionDB.ows_Output(id),
255    data_description_id int check (CollectionDB.is_in_ows_DataDescription(data_description_id))
256);
257
258create table CollectionDB.zoo_ServiceTypes (
259        id serial primary key,
260        service_type varchar
261);
262insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('HPC');
263insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('C');
264insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('Java');
265insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('Mono');
266insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('JS');
267insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('PHP');
268insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('Python');
269
270insert into CollectionDB.zoo_ServiceTypes (service_type) VALUES ('OTB');
271
272create table CollectionDB.zoo_DeploymentMetadata (
273    id serial primary key,
274    executable_name varchar,
275    configuration_identifier varchar,
276        service_type_id int references CollectionDB.zoo_ServiceTypes(id)
277);
278
279create table CollectionDB.zoo_PrivateProcessInfo (
280    id serial primary key
281);
282
283create table CollectionDB.PrivateMetadataDeploymentMetadataAssignment (
284    id serial primary key,
285    private_metadata_id int references CollectionDB.zoo_PrivateMetadata(id),
286    deployment_metadata_id int references CollectionDB.zoo_DeploymentMetadata(id)
287);
288
289create table CollectionDB.PrivateMetadataPrivateProcessInfoAssignment (
290    id serial primary key,
291    private_metadata_id int references CollectionDB.zoo_PrivateMetadata(id),
292    private_process_info_id int references CollectionDB.zoo_PrivateProcessInfo(id)
293);
294
295create table CollectionDB.ProcessInputAssignment (
296    id serial primary key,
297    process_id int references CollectionDB.ows_Process(id),
298    input_id int references CollectionDB.ows_Input(id),
299    index int
300);
301
302create table CollectionDB.ProcessOutputAssignment (
303    id serial primary key,
304    process_id int references CollectionDB.ows_Process(id),
305    output_id int references CollectionDB.ows_Output(id),
306    index int
307);
308
309CREATE OR REPLACE VIEW public.ows_process AS
310       (SELECT
311        id,
312        identifier,
313        title,
314        abstract,
315        (SELECT service_type FROM CollectionDB.zoo_ServiceTypes WHERE id = (SELECT service_type_id FROM CollectionDB.zoo_DeploymentMetadata WHERE id = (SELECT deployment_metadata_id FROM CollectionDB.PrivateMetadataDeploymentmetadataAssignment WHERE private_metadata_id=(SELECT id FROM CollectionDB.zoo_PrivateMetadata WHERE id = CollectionDB.ows_Process.private_metadata_id)))) as service_type,
316        (SELECT executable_name  as service_provider FROM CollectionDB.zoo_DeploymentMetadata WHERE id = (SELECT deployment_metadata_id FROM CollectionDB.PrivateMetadataDeploymentmetadataAssignment WHERE private_metadata_id=(SELECT id FROM CollectionDB.zoo_PrivateMetadata WHERE id = CollectionDB.ows_Process.private_metadata_id)))  as service_provider,
317        availability
318        FROM CollectionDB.ows_Process
319        WHERE
320         availability
321        );
Note: See TracBrowser for help on using the repository browser.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png