Project

General

Profile

1
--
2
-- sqoopQL database dump
3
--
4

    
5
SET statement_timeout = 0;
6
SET client_encoding = 'UTF8';
7
SET standard_conforming_strings = on;
8
SET check_function_bodies = false;
9
SET client_min_messages = warning;
10

    
11
--
12
-- Name: shadow; Type: SCHEMA; Schema: -; Owner: sqoop
13
--
14

    
15
DROP SCHEMA IF EXISTS backup CASCADE;
16

    
17
--
18
-- Name: shadow; Type: SCHEMA; Schema: -; Owner: sqoop
19
--
20
DROP SCHEMA  IF EXISTS shadow CASCADE;
21
CREATE SCHEMA shadow;
22

    
23
--ALTER SCHEMA shadow OWNER TO sqoop;
24

    
25
 SET search_path = shadow, pg_catalog;
26

    
27

    
28
--
29
-- Name: concept; Type: TABLE; Schema: public; Owner: dnet; Tablespace: 
30
--
31

    
32
CREATE TABLE shadow.concept (
33
    id text NOT NULL,
34
    name text ,
35
    category text
36
);
37

    
38

    
39

    
40
--
41
-- Name: datasource; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
42
--
43

    
44
CREATE TABLE shadow.datasource (
45
    id text NOT NULL,
46
    name text ,
47
    type text,
48
    compatibility text,
49
    dateofvalidation text,
50
    yearofvalidation integer,
51
    harvested TEXT DEFAULT 'false',
52
    piwik_id integer
53
);
54

    
55
--
56
-- Name: datasource_languages; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
57
--
58

    
59
CREATE TABLE shadow.datasource_languages (
60
    id text NOT NULL,
61
    language text
62
);
63

    
64
--
65
-- Name: datasource_websites; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace:
66
--
67

    
68
CREATE TABLE shadow.datasource_websites (
69
    id text NOT NULL,
70
    website text
71
);
72

    
73
--
74
-- Name: datasource_organizations; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
75
--
76

    
77
--
78
CREATE TABLE shadow.datasource_organizations (
79
    id text NOT NULL,
80
    organization text NOT NULL
81
);
82

    
83

    
84

    
85
--
86
-- Name: result_datasources; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
87
--
88

    
89
CREATE TABLE shadow.result_datasources (
90
    id text NOT NULL,
91
    datasource text NOT NULL
92
);
93

    
94

    
95

    
96
--
97
-- Name: datasource_results; Type: VIEW; Schema: shadow; Owner: sqoop
98
--
99

    
100
--CREATE VIEW shadow.datasource_results AS
101
--    SELECT result_datasources.datasource AS id, result_datasources.id AS result FROM result_datasources;
102

    
103
--
104
-- Name: datasource_topics; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace:
105
-- Name: defaults; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
106
--
107

    
108
CREATE TABLE shadow.defaults (
109
    tablename text NOT NULL,
110
    xaxis text,
111
    yaxis text,
112
    agg text,
113
    zaxis text,
114
    type text,
115
    tableorder integer NOT NULL
116
);
117

    
118

    
119
--
120
-- Name: category; Type: TABLE; Schema: public; Owner: dnet; Tablespace: 
121
--
122
CREATE TABLE shadow.category (
123
    id text NOT NULL,
124
    name text,
125
    context text
126
);
127

    
128
--
129
-- Name: claim; Type: TABLE; Schema: public; Owner: dnet; Tablespace: 
130
--
131

    
132
CREATE TABLE shadow.claim (
133
    id text NOT NULL,
134
    date text ,
135
    userid text
136
);
137

    
138

    
139
--
140
-- Name: context; Type: TABLE; Schema: public; Owner: dnet; Tablespace: 
141
--
142

    
143
CREATE TABLE shadow.context (
144
    id text NOT NULL,
145
    name text
146
);
147

    
148
--
149
-- Name: organization; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
150
--
151

    
152
CREATE TABLE shadow.organization (
153
    id text NOT NULL,
154
    name text,
155
    country text
156
);
157

    
158

    
159

    
160
--
161
-- Name: organization_datasources; Type: VIEW; Schema: shadow; Owner: sqoop
162
--
163

    
164
CREATE VIEW shadow.organization_datasources AS
165
    SELECT datasource_organizations.organization AS id, datasource_organizations.id AS datasource FROM datasource_organizations;
166

    
167
--
168
-- Name: project_organizations; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
169
--
170

    
171
CREATE TABLE shadow.project_organizations (
172
    id text NOT NULL,
173
    organization text NOT NULL
174
);
175

    
176

    
177
--
178
-- Name: project_organizations; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace:
179
--
180

    
181
CREATE TABLE shadow.result_organizations (
182
    id text NOT NULL,
183
    organization text NOT NULL
184
);
185

    
186

    
187
--
188
-- Name: organization_projects; Type: VIEW; Schema: shadow; Owner: sqoop
189
--
190

    
191
CREATE VIEW shadow.organization_projects AS
192
    SELECT project_organizations.id AS project, project_organizations.organization AS id FROM project_organizations;
193

    
194
--
195
-- Name: project; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
196
--
197

    
198
CREATE TABLE shadow.project (
199
    id text NOT NULL,
200
    acronym text ,
201
    title text ,
202
    funder text,
203
    funding_lvl0 text,
204
    funding_lvl1 text,
205
    funding_lvl2 text,
206
    funding_lvl3 text,
207
    sc39 text,
208
    type text,
209
    start_year integer,
210
    end_year integer,
211
    duration integer,
212
    haspubs text DEFAULT 'no'::text,
213
    numpubs integer,
214
    enddate text,
215
    startdate text,
216
    daysforlastpub integer,
217
    delayedpubs integer,
218
    callidentifier  text,
219
    code text
220
);
221

    
222
--
223
-- Name: result_projects; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
224
--
225

    
226
 CREATE TABLE shadow.project_oids (
227
    id text NOT NULL,
228
    orid text
229
);
230

    
231

    
232

    
233
 CREATE TABLE shadow.result_oids (
234
    id text NOT NULL,
235
    orid text
236
);
237

    
238

    
239
 CREATE TABLE shadow.organization_oids (
240
    id text NOT NULL,
241
   orid text
242
);
243

    
244

    
245
 CREATE TABLE shadow.datasource_oids (
246
    id text NOT NULL,
247
   orid text
248
);
249

    
250
-- CREATE TABLE shadow.person_oids (
251
--   id text NOT NULL,
252
--  orid text
253
-- );
254

    
255

    
256
 CREATE TABLE shadow.project_keywords (
257
    id text NOT NULL,
258
    keyword text
259
);
260

    
261

    
262
 CREATE TABLE shadow.project_subjects (
263
    id text NOT NULL,
264
    subject text
265
);
266

    
267

    
268
--ALTER TABLE shadow.result_projects OWNER TO sqoop;
269

    
270
CREATE TABLE shadow.project_results (
271
    id text NOT NULL,
272
    result text NOT NULL,
273
    daysfromend integer
274
);
275

    
276

    
277
--
278
-- Name: result; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
279
--
280

    
281
CREATE TABLE shadow.result (
282
  id text NOT NULL,
283
  publisher text,
284
  journal text,
285
  year integer,
286
  date text ,
287
  bestlicense text,
288
  type text ,
289
  embargo_end_date text,
290
  delayed text,
291
  authors integer
292
);
293

    
294
--
295
-- Name: result_extra; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace:
296
--
297

    
298
CREATE TABLE shadow.result_extra (
299
  id text NOT NULL,
300
  title text,
301
  source text
302
);
303

    
304
--
305
-- Name: result_claims; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
306
--
307

    
308
CREATE TABLE shadow.result_claims (
309
    id text NOT NULL,
310
    claim text NOT NULL
311
);
312

    
313
CREATE TABLE shadow.result_citations (
314
  id text NOT NULL,
315
  result text NOT NULL
316
--  trust text,
317
--  provenance text,
318
--  citation text
319
);
320

    
321

    
322
--
323
-- Name: result_classifications; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
324
--
325

    
326
CREATE TABLE shadow.result_classifications (
327
    id text NOT NULL,
328
    type text NOT NULL
329
);
330

    
331
--
332
-- Name: result_concepts; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
333
--
334

    
335
CREATE TABLE shadow.result_concepts (
336
    id text NOT NULL,
337
    concept text NOT NULL
338
);
339

    
340
--
341
-- Name: result_languages; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
342
--
343

    
344
CREATE TABLE shadow.result_languages (
345
    id text NOT NULL,
346
    language text NOT NULL
347
);
348

    
349

    
350
--
351
-- Name: result_results; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
352
--
353

    
354
CREATE TABLE shadow.result_results (
355
    id text NOT NULL,
356
    result text NOT NULL
357
);
358

    
359

    
360

    
361
--
362
-- Name: result_topics; Type: TABLE; Schema: shadow; Owner: sqoop; Tablespace: 
363
--
364

    
365
CREATE TABLE shadow.result_topics (
366
    id text NOT NULL,
367
    topic text
368
);
369

    
370

    
371
CREATE TABLE shadow.result_descriptions (
372
    id text NOT NULL,
373
    description  text
374
);
375

    
376
--
377
-- DATASOURCE Extra Inserts
378
--
379

    
380

    
381
-- CREATE TABLE shadow.person (
382
--     id text NOT NULL,
383
--     person_results text NOT NULL,
384
--   firstname text,
385
--   lastname text,
386
--   fullname text ,
387
--   nationality text ,
388
--   email text,
389
--   phone text,
390
--   deletedbyinference TEXT,
391
--   number text
392
-- );
393

    
394

    
395
-- CREATE TABLE shadow.person_results (
396
--     id text NOT NULL,
397
--    result text NOT NULL
398
-- );
399

    
400
-- CREATE TABLE shadow.project_persons (
401
--  id text NOT NULL,
402
--  person text NOT NULL
403
-- );
404

    
405
CREATE TABLE shadow.result_pids (
406
  id text NOT NULL,
407
  type text ,
408
  pid text
409
);
410

    
411

    
412

    
413

    
414

    
415

    
416

    
417
CREATE OR REPLACE FUNCTION shadow.extra_defaults_datasource()
418
 RETURNS void AS
419
$BODY$
420
BEGIN
421

    
422
INSERT INTO "shadow".datasource (id,name,type,compatibility) (SELECT 'other','Other','Repository','unknown' WHERE NOT EXISTS (SELECT 1 FROM "shadow".datasource WHERE name='Unknown Repository'));
423
UPDATE "shadow".datasource SET name='Other' where name='Unknown Repository';
424
UPDATE "shadow".result_datasources SET datasource=(SELECT id FROM "shadow".datasource WHERE name='Other') WHERE datasource NOT IN (SELECT id FROM "shadow".datasource);
425

    
426
TRUNCATE TABLE "shadow".defaults;
427
INSERT INTO "shadow".defaults VALUES ('result', 'year', 'number', 'count', '', 'column', 1);
428
INSERT INTO "shadow".defaults VALUES ('project', 'funding_lvl1', 'number', 'count', '', 'column', 2);
429
INSERT INTO "shadow".defaults VALUES ('organization', 'country', 'number', 'count', '', 'column',  3);
430
INSERT INTO "shadow".defaults VALUES ('datasource', 'oa_compatible', 'number', 'count', '', 'column', 4);
431

    
432
UPDATE "shadow".datasource SET yearofvalidation=null WHERE yearofvalidation='-1';
433

    
434

    
435
-- UPDATE shadow.project SET funder='FCT' WHERE funder='Fundação para a Ciência e a Tecnologia, I.P.';
436

    
437
UPDATE shadow.datasource set harvested ='true' WHERE datasource.id IN (SELECT DISTINCT d.id FROM datasource d, result_datasources rd where d.id=rd.datasource);
438

    
439
END
440
$BODY$
441
  LANGUAGE plpgsql VOLATILE
442
  COST 100;
443
ALTER FUNCTION shadow.extra_defaults_datasource()
444
  OWNER TO sqoop;
445

    
446

    
447
--
448
-- Project Results Extra Inserts
449
--
450

    
451
CREATE OR REPLACE FUNCTION shadow.update_project_results()
452
  RETURNS void AS
453
$BODY$
454
BEGIN
455

    
456

    
457
CREATE OR REPLACE VIEW shadow.project_results_publication AS
458
SELECT  "shadow".result_projects.id AS result,
459
"shadow".result_projects.project AS project_results,
460
"shadow"."result"."date" as  resultdate,
461
"shadow"."project"."enddate" as projectenddate,
462
"shadow".result_projects.daysfromend
463
as daysfromend FROM  "shadow".result_projects,
464
"shadow".result,
465
"shadow".project
466
 where  "shadow".result_projects.id="shadow".result.id
467
 and  "shadow".result.type='publication'
468
 and  "shadow".project.id= "shadow".result_projects.project;
469

    
470
END
471
$BODY$
472
  LANGUAGE plpgsql VOLATILE
473
  COST 100;
474
ALTER FUNCTION shadow.update_project_results()
475
  OWNER TO sqoop;
476

    
477

    
478

    
479
--
480
-- Project Has Publications Extra Inserts
481
--
482
CREATE OR REPLACE FUNCTION shadow.project_has_pubs()
483
  RETURNS void AS
484
$BODY$
485
BEGIN
486

    
487
UPDATE shadow.project SET haspubs='yes' WHERE id IN (SELECT pr.id FROM shadow.project_results pr, shadow.result r WHERE pr.result=r.id AND r.type='publication');
488

    
489
END
490
$BODY$
491
  LANGUAGE plpgsql VOLATILE
492
  COST 100;
493
ALTER FUNCTION shadow.project_has_pubs()
494
  OWNER TO sqoop;
495

    
496

    
497
--
498
-- Project Publications Count Updates
499
--
500

    
501

    
502
CREATE OR REPLACE FUNCTION shadow.project_pubs_count()
503
  RETURNS void AS
504
$BODY$
505
BEGIN
506

    
507
UPDATE shadow.project p SET numpubs=prr.np FROM (SELECT pr.id, count(distinct pr.result) AS np FROM shadow.project_results pr, shadow.result r WHERE pr.result=r.id AND r.type='publication' GROUP BY pr.id) AS prr WHERE prr.id=p.id;
508

    
509
END
510
$BODY$
511
  LANGUAGE plpgsql VOLATILE
512
  COST 100;
513
ALTER FUNCTION shadow.project_pubs_count()
514
  OWNER TO sqoop;
515

    
516

    
517

    
518
--
519
-- Project  Delayed Publications
520
--
521

    
522
CREATE OR REPLACE FUNCTION shadow.project_delayedpubs()
523
  RETURNS void AS
524
$BODY$
525
BEGIN
526

    
527
UPDATE shadow.project pp SET delayedpubs = prr.dp FROM (SELECT p.id, count(distinct r.id) as dp FROM project p, project_results pr, result r WHERE p.id=pr.id AND pr.result=r.id AND r.type='publication' AND to_date(r.date, 'YYYY-MM-DD')-to_date(p.enddate, 'YYYY-MM-DD') > 0 GROUP BY p.id) AS prr WHERE pp.id=prr.id;
528

    
529
END
530
$BODY$
531
  LANGUAGE plpgsql VOLATILE
532
  COST 100;
533
ALTER FUNCTION shadow.project_delayedpubs()
534
  OWNER TO sqoop;
535

    
536

    
537
--
538
-- Project    daysforlastpub
539
--
540

    
541
CREATE OR REPLACE FUNCTION shadow.project_daysforlastpub()
542
  RETURNS void AS
543
$BODY$
544
BEGIN
545

    
546
UPDATE shadow.project pp SET daysforlastpub = prr.dp FROM (SELECT p.id, max(to_date(r.date, 'YYYY-MM-DD')-to_date(p.enddate, 'YYYY-MM-DD')) as dp FROM project p, project_results pr, result r WHERE p.id=pr.id AND pr.result=r.id AND r.type='publication' AND to_date(r.date, 'YYYY-MM-DD')-to_date(p.enddate, 'YYYY-MM-DD') > 0 GROUP BY p.id) AS prr WHERE pp.id=prr.id;
547

    
548
END
549
$BODY$
550
  LANGUAGE plpgsql VOLATILE
551
  COST 100;
552
ALTER FUNCTION shadow.project_daysforlastpub()
553
  OWNER TO sqoop;
554

    
555
--
556
-- Project    delayed
557
--
558

    
559

    
560
CREATE OR REPLACE FUNCTION shadow.project_delayed ()
561
  RETURNS void AS
562
$BODY$
563
BEGIN
564

    
565
UPDATE shadow.result SET delayed = 'yes' WHERE id IN (SELECT distinct r.id FROM result r, project_results pr, project p WHERE r.id=pr.result AND pr.id=p.id AND to_date(r.date, 'YYYY-MM-DD')-to_date(p.enddate, 'YYYY-MM-DD') > 0);
566

    
567
END
568
$BODY$
569
  LANGUAGE plpgsql VOLATILE
570
  COST 100;
571
ALTER FUNCTION shadow.project_delayed()
572
  OWNER TO sqoop;
573

    
574

    
575
--
576
-- Cleaning Up Temps
577
-- 
578
CREATE OR REPLACE FUNCTION shadow.cleanTemps ()
579
  RETURNS void AS
580
$BODY$
581
BEGIN
582

    
583
drop view if exists  shadow.delayedpubs   ;
584
drop view  if exists  shadow.project_pub_count   ;
585
drop view if exists  shadow.delayedpubs    ;
586

    
587
drop view  if exists  shadow.project_results_publication   ;
588
END
589
$BODY$
590
  LANGUAGE plpgsql VOLATILE
591
  COST 100;
592
ALTER FUNCTION shadow.cleanTemps()
593
  OWNER TO sqoop;
594

    
595

    
596
  ---functions
597

    
598

    
599
--
600
-- Name: create_arrays(); Type FUNCTION; Schema: shadow; Owner: sqoop
601
--
602
CREATE OR REPLACE FUNCTION shadow.create_arrays()
603
  RETURNS void AS
604
$BODY$
605
BEGIN
606

    
607
ALTER TABLE shadow.result ADD COLUMN funders text[], ADD COLUMN funding_lvl0 text[], ADD COLUMN projects text[], ADD COLUMN datasources text[];
608
UPDATE shadow.result r SET funders = prr.funders FROM (SELECT pr.result AS rid, array_agg(distinct funder) AS funders FROM shadow.project p, shadow.project_results pr WHERE p.id=pr.id GROUP BY pr.result) AS prr WHERE r.id = prr.rid;
609
UPDATE shadow.result r SET funding_lvl0 = prr.funding_lvl0 FROM (SELECT pr.result AS rid, array_agg(distinct funding_lvl0) AS funding_lvl0 FROM shadow.project p, shadow.project_results pr WHERE p.id=pr.id GROUP BY pr.result) AS prr WHERE r.id = prr.rid;
610
UPDATE shadow.result r SET projects = prr.ids FROM (SELECT pr.result AS rid, array_agg(distinct pr.id) AS ids FROM shadow.project_results pr GROUP BY pr.result) AS prr WHERE r.id = prr.rid;
611
-- UPDATE shadow.result r SET datasources = drr.ids FROM (SELECT rd.id AS rid, array_agg(distinct rd.datasource) AS ids FROM shadow.result_datasources rd GROUP BY rd.id) AS drr WHERE r.id = drr.rid;
612

    
613
CREATE TABLE shadow.result_temp AS SELECT r.id, publisher, journal, year, date, bestlicense, type, embargo_end_date, delayed, authors, funders, funding_lvl0, projects, array_agg(distinct rd.datasource) as datasources FROM shadow.result r, shadow.result_datasources rd WHERE r.id=rd.id GROUP BY r.id, r.publisher, r.journal, r.year, r.date, r.bestlicense, r.type, r.embargo_end_date, r.delayed, r.authors, r.funders, r.funding_lvl0, r.projects;
614
DROP TABLE shadow.result CASCADE;
615
ALTER TABLE shadow.result_temp RENAME TO result;
616

    
617
END
618
$BODY$
619
  LANGUAGE plpgsql VOLATILE
620
  COST 100;
621
ALTER FUNCTION shadow.create_arrays()
622
  OWNER TO sqoop;
623

    
624
--
625
-- Name: create_indexes(); Type: FUNCTION; Schema: shadow; Owner: sqoop
626
--
627

    
628
CREATE FUNCTION shadow.create_indexes() RETURNS void
629
    LANGUAGE plpgsql
630
    AS $$
631

    
632
BEGIN
633

    
634
CREATE INDEX datasource_id ON "shadow".datasource USING btree (id);
635
CREATE INDEX datasource_type ON   "shadow".datasource USING btree (type);
636
CREATE INDEX datasource_name ON   "shadow".datasource USING btree (name);
637
CREATE INDEX datasource_piwik_id ON "shadow".datasource USING btree (piwik_id);
638

    
639
CREATE INDEX result_authors ON   "shadow".result USING btree (authors);
640
CREATE INDEX result_id ON   "shadow".result USING btree (id);
641
CREATE INDEX result_year ON   "shadow".result USING btree (year);
642
CREATE INDEX result_date ON   "shadow"."result" USING btree ("date");
643
CREATE INDEX result_type ON   "shadow"."result" USING btree ("type");
644

    
645

    
646
CREATE INDEX project_acronym ON   "shadow"."project" USING btree (acronym);
647
CREATE INDEX project_enddate ON   "shadow"."project" USING btree (enddate);
648
CREATE INDEX project_id ON   "shadow"."project" USING btree (id);
649
CREATE INDEX project_results_result ON   "shadow"."project_results" USING btree (result);
650
CREATE INDEX project_results_project ON   "shadow"."project_results" USING btree (id);
651

    
652
CREATE INDEX result_oids_id ON "shadow".result_oids USING btree (id COLLATE pg_catalog."default");
653
CREATE INDEX result_oids_oid ON "shadow".result_oids USING btree(orid COLLATE pg_catalog."default");
654

    
655
CREATE INDEX result_pids_id ON "shadow".result_pids USING btree (id COLLATE pg_catalog."default");
656
CREATE INDEX result_pids_type ON "shadow".result_pids USING btree (type COLLATE pg_catalog."default");
657
CREATE INDEX result_pids_pid ON "shadow".result_pids USING btree(pid COLLATE pg_catalog."default");
658

    
659
CREATE INDEX result_extra_id ON "shadow".result_extra USING btree(id COLLATE pg_catalog."default");
660

    
661
CREATE INDEX datasource_oids_id ON "shadow".datasource_oids USING btree (id COLLATE pg_catalog."default");
662
CREATE INDEX datasource_oids_orid ON "shadow".datasource_oids USING btree(orid COLLATE pg_catalog."default");
663
CREATE INDEX datasource_websites_id ON "shadow".datasource_websites USING btree(id COLLATE pg_catalog."default");
664

    
665

    
666

    
667
CREATE INDEX datasource_lang_id
668
   ON shadow.datasource_languages (id ASC NULLS LAST);
669

    
670
CREATE INDEX dtsrc_org_id
671
  ON shadow.datasource_organizations
672
  USING btree
673
  (id COLLATE pg_catalog."default");
674

    
675
CREATE INDEX res_class_type
676
  ON shadow.result_classifications
677
  USING btree
678
  (type COLLATE pg_catalog."default");
679

    
680
CREATE INDEX res_class_id
681
  ON shadow.result_classifications
682
  USING btree
683
  (id COLLATE pg_catalog."default");
684

    
685
CREATE INDEX res_dtsrc_dtsrc
686
  ON shadow.result_datasources
687
  USING btree
688
  (datasource COLLATE pg_catalog."default");
689

    
690
CREATE INDEX res_dtsrc_id
691
  ON shadow.result_datasources
692
  USING btree
693
  (id COLLATE pg_catalog."default");
694

    
695
CREATE INDEX res_lang_lang
696
  ON shadow.result_languages
697
  USING btree
698
  (language COLLATE pg_catalog."default");
699

    
700
CREATE INDEX org_id
701
  ON shadow.organization
702
  USING btree
703
  (id COLLATE pg_catalog."default");
704

    
705
CREATE INDEX org_country
706
  ON shadow.organization
707
  USING btree
708
  (country COLLATE pg_catalog."default");
709

    
710
CREATE INDEX proj_funder
711
  ON shadow.project
712
  USING btree
713
  (funder COLLATE pg_catalog."default");
714

    
715
CREATE INDEX proj_title
716
  ON shadow.project
717
  USING btree
718
  (title COLLATE pg_catalog."default");
719

    
720
CREATE INDEX proj_fndlvl0
721
  ON shadow.project
722
  USING btree
723
  (funding_lvl0 COLLATE pg_catalog."default");
724

    
725
CREATE INDEX proj_fndlvl1
726
  ON shadow.project
727
  USING btree
728
  (funding_lvl1 COLLATE pg_catalog."default");
729

    
730
CREATE INDEX proj_fndlvl2
731
  ON shadow.project
732
  USING btree
733
  (funding_lvl2 COLLATE pg_catalog."default");
734

    
735
CREATE INDEX proj_org_org
736
  ON shadow.project_organizations
737
  USING btree
738
  (organization COLLATE pg_catalog."default");
739

    
740
CREATE INDEX proj_org_id
741
  ON shadow.project_organizations
742
  USING btree
743
  (id COLLATE pg_catalog."default");
744

    
745
CREATE INDEX res_res_id
746
  ON shadow.result_results
747
  USING btree
748
  (id COLLATE pg_catalog."default");
749

    
750
CREATE INDEX res_res_res
751
  ON shadow.result_results
752
  USING btree
753
  (result COLLATE pg_catalog."default");
754

    
755
CREATE INDEX res_lang_id
756
  ON shadow.result_languages
757
  USING btree
758
  (id COLLATE pg_catalog."default");
759

    
760
CREATE INDEX res_conc_id
761
  ON shadow.result_concepts
762
  USING btree
763
  (id COLLATE pg_catalog."default");
764

    
765
CREATE INDEX res_conc_conc
766
  ON shadow.result_concepts
767
  USING btree
768
  (concept COLLATE pg_catalog."default");
769

    
770
CREATE INDEX res_bestlicense
771
  ON shadow.result
772
  USING btree
773
  (bestlicense COLLATE pg_catalog."default");
774

    
775
CREATE INDEX proj_sc39
776
  ON shadow.project
777
  USING btree
778
  (sc39 COLLATE pg_catalog."default");
779

    
780
CREATE INDEX proj_fndlvl3
781
  ON shadow.project
782
  USING btree
783
  (funding_lvl3 COLLATE pg_catalog."default");
784

    
785
CREATE INDEX dtsrc_type
786
  ON shadow.datasource
787
  USING btree
788
  (type COLLATE pg_catalog."default");
789

    
790
CREATE INDEX dtsrc_name
791
  ON shadow.datasource
792
  USING btree
793
  (name COLLATE pg_catalog."default");
794

    
795
CREATE INDEX dtsrc_compatibility
796
  ON shadow.datasource
797
  USING btree
798
  (compatibility COLLATE pg_catalog."default");
799

    
800
CREATE INDEX org_name
801
  ON shadow.organization
802
  USING btree
803
  (name COLLATE pg_catalog."default");
804

    
805
CREATE INDEX dtsrc_org_org
806
  ON shadow.datasource_organizations
807
  USING btree
808
  (organization COLLATE pg_catalog."default");
809

    
810
  CREATE INDEX result_funders_idx ON shadow.result USING gin (funders);
811
  CREATE INDEX result_funding_lvl0_idx ON shadow.result USING gin (funding_lvl0);
812
  CREATE INDEX result_projects_idx ON shadow.result USING gin (projects);
813
  CREATE INDEX result_datasources_idx ON shadow.result USING gin (datasources);
814

    
815

    
816
  END;$$;
817

    
818

    
819
ALTER FUNCTION shadow.create_indexes() OWNER TO sqoop;
820

    
821
--
822
-- Name: create_views(); Type: FUNCTION; Schema: shadow; Owner: sqoop
823
--
824

    
825
CREATE or replace FUNCTION "shadow".create_views() RETURNS void
826
    LANGUAGE plpgsql
827
    AS $$
828

    
829
BEGIN
830

    
831
CREATE OR REPLACE VIEW shadow.datasource_results AS SELECT datasource AS id, id AS result FROM shadow.result_datasources;
832

    
833
CREATE OR REPLACE VIEW shadow.organization_datasources AS SELECT organization AS id, id AS datasource FROM shadow.datasource_organizations;
834

    
835
CREATE OR REPLACE VIEW shadow.organization_projects AS SELECT id AS project, organization as id FROM shadow.project_organizations;
836

    
837

    
838
CREATE OR REPLACE VIEW shadow.result_projects AS SELECT  shadow.project_results.result AS id,
839
  shadow.project_results.id AS project, ( select to_date("shadow"."result"."date", 'YYYY-MM-DD')- to_date("shadow"."project"."enddate", 'YYYY-MM-DD')
840
   from shadow.result, shadow.project where shadow.result.id =  shadow.project_results.result
841
   and shadow.project_results.id= shadow.project.id and shadow.result.type='publication' )
842
 as daysfromend FROM shadow.project_results;
843

    
844
 CREATE OR REPLACE   VIEW "shadow".datasource_topics AS
845
 SELECT distinct "shadow".datasource.id, "shadow".result_topics.topic
846
   FROM "shadow".datasource, "shadow".datasource_results, "shadow".result, "shadow".result_topics
847
  WHERE "shadow".datasource.id = "shadow".datasource_results.id AND "shadow".datasource_results.result = "shadow".result.id AND
848
  "shadow".result_topics.id = "shadow".result.id;
849

    
850

    
851
  END;$$;
852
--
853
-- Name: create_charts(); Type: FUNCTION; Schema: shadow; Owner: sqoop
854
--
855

    
856
CREATE or replace FUNCTION "shadow".create_charts() RETURNS void
857
    LANGUAGE plpgsql
858
    AS $$
859

    
860
BEGIN
861

    
862
-- country nums
863
CREATE TABLE "shadow".numbers_country AS SELECT org.country AS country, count(distinct rd.datasource) AS datasources, count(distinct r.id) AS publications FROM "shadow".result r, "shadow".result_datasources rd, "shadow".datasource d, "shadow".datasource_organizations dor, "shadow".organization org WHERE r.id=rd.id AND rd.datasource=d.id AND d.id=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicense='Open Access' GROUP BY org.country;
864

    
865
-- country charts
866
CREATE TABLE "shadow".chart_country_year AS SELECT org.country AS country, r.year AS year, count(distinct r.id) AS publications FROM "shadow".result r, "shadow".result_datasources rd, "shadow".datasource d, "shadow".datasource_organizations dor, "shadow".organization org WHERE r.id=rd.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicense='Open Access' and r.year>='1990' AND r.year<=extract(YEAR from now()) group by org.country, r.year ORDER BY org.country, r.year;
867
CREATE TABLE "shadow".chart_country_datasources AS SELECT org.country AS country, d.name AS datasource, count(distinct r.id) AS publications FROM "shadow".result r, "shadow".result_datasources rd, "shadow".datasource d, "shadow".datasource_organizations dor, "shadow".organization org WHERE r.id=rd.id AND rd.datasource=d.id AND d.id=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicense='Open Access' GROUP BY org.country, d.name ORDER BY org.country, count(distinct r.id) DESC;
868
CREATE TABLE "shadow".chart_country_type AS SELECT org.country AS country, rc.type AS type, count(distinct r.id) AS publications FROM "shadow".result r, "shadow".result_datasources rd, "shadow".datasource d, "shadow".result_classifications rc, "shadow".datasource_organizations dor, "shadow".organization org WHERE r.id=rd.id AND r.id=rc.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.type='publication' AND r.bestlicense='Open Access' GROUP BY org.country, rc.type;
869
CREATE TABLE "shadow".chart_country_fp7 AS SELECT org.country AS country, r.year AS year, count(distinct r.id) AS publications FROM "shadow".result r, "shadow".result_datasources rd, "shadow".datasource d, "shadow".datasource_organizations dor, "shadow".organization org, "shadow".project_results pr, "shadow".project p WHERE r.id=rd.id AND rd.datasource=d.id AND rd.datasource=dor.id AND dor.organization=org.id AND r.id=pr.result AND pr.id=p.id AND p.funding_lvl0='FP7' AND r.type='publication' AND r.year>='1990' AND r.year<=extract(YEAR from now()) GROUP BY org.country, r.year ORDER BY org.country, r.year;
870

    
871
-- datasource charts
872
CREATE TABLE "shadow".chart_datasource_type AS SELECT rd.datasource, rc.type, count(distinct rd.id) FROM "shadow".result_datasources rd, "shadow".result_classifications rc WHERE rd.id=rc.id GROUP BY rd.datasource, rc.type;
873
CREATE TABLE "shadow".chart_datasource_year AS SELECT rd.datasource, r.year, count(distinct rd.id) FROM "shadow".result r, "shadow".result_datasources rd WHERE rd.id=r.id GROUP By rd.datasource, r.year;
874
CREATE TABLE "shadow".chart_datasource_funders AS SELECT rd.datasource, p.funder, count(distinct rd.id) FROM "shadow".result_datasources rd, "shadow".project p, "shadow".project_results pr WHERE p.id=pr.id AND pr.result=rd.id GROUP BY rd.datasource, p.funder;
875
CREATE TABLE "shadow".chart_datasource_projects_pubs AS SELECT rd.datasource, p.title, count(distinct rd.id) FROM "shadow".result_datasources rd, "shadow".project p, "shadow".project_results pr, "shadow".result r WHERE p.id=pr.id AND pr.result=rd.id AND pr.result=r.id AND r.type='publication' GROUP BY rd.datasource, p.title;
876
CREATE TABLE "shadow".chart_datasource_projects_data AS SELECT rd.datasource, p.title, count(distinct rd.id) FROM "shadow".result_datasources rd, "shadow".project p, "shadow".project_results pr, "shadow".result r WHERE p.id=pr.id AND pr.result=rd.id AND pr.result=r.id and r.type='dataset' GROUP BY rd.datasource, p.title;
877

    
878
-- project charts
879
CREATE TABLE "shadow".chart_project_year AS SELECT p.id, r.year, count( distinct r.id) FROM "shadow".result r, "shadow".project_results pr, "shadow".project p WHERE r.id=pr.result AND p.id=pr.id AND r.year>=p.start_year GROUP BY p.id, r.year;
880
CREATE TABLE "shadow".chart_project_license AS SELECT pr.id, r.bestlicense, count(distinct r.id) FROM "shadow".result r, "shadow".project_results pr WHERE r.id=pr.result AND r.type='publication' GROUP BY pr.id, r.bestlicense;
881
CREATE TABLE "shadow".chart_project_repos AS SELECT pr.id, d.name, count (distinct r.id) FROM "shadow".result r, "shadow".project_results pr, "shadow".datasource d, "shadow".datasource_results dr WHERE r.id=dr.result AND d.id=dr.id AND r.id=pr.result AND r.type='publication' GROUP BY pr.id, d.name;
882

    
883
-- funder nums
884
-- CREATE TABLE "shadow".numbers_funder AS SELECT funder, count(distinct r.id) AS pubstotal, count(distinct CASE WHEN r.bestlicense='Open Access' THEN r.id END) AS oapubs, count(distinct CASE WHEN r.bestlicense='Restricted' THEN r.id END) AS respubs, count(distinct CASE WHEN r.bestlicense='Embargo' THEN r.id END) AS embpubs, count(distinct p.id) AS projpubs, (SELECT count(distinct p2.id) FROM "shadow".project p2 WHERE p2.funder=p.funder GROUP BY p2.funder) AS projtotal FROM "shadow".project p, "shadow".project_results pr, "shadow".result r WHERE p.id=pr.id AND pr.result=r.id AND r.type='publication' GROUP BY funder ORDER BY funder;
885

    
886
-- funder charts
887
-- CREATE TABLE "shadow".chart_funder_year AS SELECT p.funder, r.year, count(distinct r.id) FROM "shadow".result r, "shadow".project_results pr, "shadow".project p WHERE r.id=pr.result AND pr.id=p.id AND r.type='publication' AND r.year >= 2007 AND r.year <= extract(YEAR from now()) GROUP BY p.funder, r.year ORDER BY p.funder, r.year;
888
-- CREATE TABLE "shadow".chart_funder_license AS SELECT p.funder, r.bestlicense, count(distinct r.id) from "shadow".result r, "shadow".project_results pr, "shadow".project p WHERE r.id=pr.result AND pr.id=p.id AND r.type='publication' GROUP BY p.funder, r.bestlicense ORDER BY p.funder, r.bestlicense;
889
-- CREATE TABLE "shadow".chart_funder_fp7 AS SELECT p.funder, r.year, count(distinct r.id) from "shadow".result r, "shadow".project_results pr, "shadow".project p, "shadow".project_results pr2, "shadow".project p2 WHERE r.id=pr.result AND pr.id=p.id AND pr2.result=r.id AND pr2.id=p2.id AND p2.funding_lvl0='FP7' AND r.year >= 2007 AND r.year <= extract(YEAR from now()) GROUP BY p.funder, r.year ORDER BY p.funder, r.year;
890

    
891

    
892
  END;$$;
893

    
894
--
895
-- Name: create_charts(); Type: FUNCTION; Schema: shadow; Owner: sqoop
896
--
897

    
898
CREATE or replace FUNCTION "shadow".create_chart_indexes() RETURNS void
899
    LANGUAGE plpgsql
900
    AS $$
901

    
902
BEGIN
903

    
904
-- country nums
905
CREATE INDEX numbers_country_country ON "shadow".numbers_country USING btree(country);
906

    
907
-- country charts
908
CREATE INDEX chart_country_year_country ON "shadow".chart_country_year USING btree(country);
909
CREATE INDEX chart_country_datasources_country ON "shadow".chart_country_datasources USING btree(country);
910
CREATE INDEX chart_country_type_country ON "shadow".chart_country_type USING btree(country);
911
CREATE INDEX chart_country_fp7_country ON "shadow".chart_country_fp7 USING btree(country);
912

    
913
-- datasource
914
CREATE INDEX chart_datasource_type_datasource ON "shadow".chart_datasource_type USING btree(datasource);
915
CREATE INDEX chart_datasource_year_datasource ON "shadow".chart_datasource_year USING btree(datasource);
916
CREATE INDEX chart_datasource_funders_datasource ON "shadow".chart_datasource_funders USING btree(datasource);
917
CREATE INDEX chart_datasource_projects_pubs_datasource ON "shadow".chart_datasource_projects_pubs USING btree(datasource);
918
CREATE INDEX chart_datasource_projects_data_datasource ON "shadow".chart_datasource_projects_data USING btree(datasource);
919

    
920
-- project
921
CREATE INDEX chart_project_year_id ON "shadow".chart_project_year USING btree(id);
922
CREATE INDEX chart_project_license_id ON "shadow".chart_project_license USING btree(id);
923
CREATE INDEX chart_project_repos_id ON "shadow".chart_project_repos USING btree(id);
924

    
925
-- funder nums
926
-- CREATE INDEX numbers_funder_funder ON "shadow".numbers_funder USING btree(funder);
927

    
928
-- funder charts
929
-- CREATE INDEX chart_funder_year_funder ON "shadow".chart_funder_year USING btree(funder);
930
-- CREATE INDEX chart_funder_license_funder ON "shadow".chart_funder_license USING btree(funder);
931

    
932

    
933
  END;$$;
934

    
935
--
936
-- Name: clean_tables(); Type: FUNCTION; Schema: shadow; Owner: sqoop
937
--
938

    
939
CREATE or replace FUNCTION "shadow".clean_tables() RETURNS void
940
    LANGUAGE plpgsql
941
    AS $$
942
BEGIN
943

    
944
CREATE TABLE "shadow".rd_distinct AS SELECT DISTINCT * FROM "shadow".result_datasources;
945
TRUNCATE "shadow".result_datasources;
946
INSERT INTO "shadow".result_datasources SELECT * FROM "shadow".rd_distinct ORDER BY datasource;
947
DROP TABLE "shadow".rd_distinct;
948

    
949

    
950
  END;$$;
951

    
952
-- sqoopQL database dump complete
953
--
(3-3/3)