Project

General

Profile

« Previous | Next » 

Revision 5917

Calls to `make inputs/.TNRS/cleanup`: Do `make inputs/.TNRS/tnrs_accepted/reinstall; make inputs/.TNRS/tnrs_other/reinstall` instead to use new split TNRS tables

View differences:

public.test_taxonomic_names.sql
89 89

  
90 90
CREATE TYPE placerank AS ENUM (
91 91
    'continent',
92
    'waterBody',
93
    'islandGroup',
94
    'island',
92 95
    'country',
96
    'territory',
97
    'region',
93 98
    'stateProvince',
94 99
    'county',
95 100
    'municipality',
96 101
    'village',
97
    'site',
98
    'territory',
99
    'region',
100
    'waterBody',
101
    'island',
102
    'islandGroup'
102
    'site'
103 103
);
104 104

  
105 105

  
......
111 111

  
112 112
COMMENT ON TYPE placerank IS 'county = parish, canton
113 113
municipality = city
114
';
115 114

  
115
From <http://rs.tdwg.org/dwc/terms/#dcindex#dcterms:Location>, <http://vegbank.org/vegbank/views/dba_fielddescription_detail.jsp?view=detail&wparam=1415&entity=dba_fielddescription&params=1415>';
116 116

  
117

  
117 118
--
118 119
-- Name: rankedplacename; Type: TYPE; Schema: public.test_taxonomic_names; Owner: bien
119 120
--
......
321 322

  
322 323

  
323 324
--
325
-- Name: _cm_to_m(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
326
--
327

  
328
CREATE FUNCTION _cm_to_m(value double precision) RETURNS double precision
329
    LANGUAGE sql IMMUTABLE STRICT
330
    AS $_$
331
SELECT $1/100.
332
$_$;
333

  
334

  
335
ALTER FUNCTION "public.test_taxonomic_names"._cm_to_m(value double precision) OWNER TO bien;
336

  
337
--
324 338
-- Name: _fraction_to_percent(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
325 339
--
326 340

  
......
334 348
ALTER FUNCTION "public.test_taxonomic_names"._fraction_to_percent(value double precision) OWNER TO bien;
335 349

  
336 350
--
351
-- Name: _ft_to_m(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
352
--
353

  
354
CREATE FUNCTION _ft_to_m(value double precision) RETURNS double precision
355
    LANGUAGE sql IMMUTABLE STRICT
356
    AS $_$
357
SELECT _in_to_m($1*12)
358
$_$;
359

  
360

  
361
ALTER FUNCTION "public.test_taxonomic_names"._ft_to_m(value double precision) OWNER TO bien;
362

  
363
--
364
-- Name: _ha_to_m2(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
365
--
366

  
367
CREATE FUNCTION _ha_to_m2(value double precision) RETURNS double precision
368
    LANGUAGE sql IMMUTABLE STRICT
369
    AS $_$
370
SELECT $1*10000.
371
$_$;
372

  
373

  
374
ALTER FUNCTION "public.test_taxonomic_names"._ha_to_m2(value double precision) OWNER TO bien;
375

  
376
--
337 377
-- Name: _has_taxonomic_name(taxonrank); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
338 378
--
339 379

  
......
347 387
ALTER FUNCTION "public.test_taxonomic_names"._has_taxonomic_name(rank taxonrank) OWNER TO bien;
348 388

  
349 389
--
390
-- Name: _in_to_m(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
391
--
392

  
393
CREATE FUNCTION _in_to_m(value double precision) RETURNS double precision
394
    LANGUAGE sql IMMUTABLE STRICT
395
    AS $_$
396
SELECT $1*2.54/100.
397
$_$;
398

  
399

  
400
ALTER FUNCTION "public.test_taxonomic_names"._in_to_m(value double precision) OWNER TO bien;
401

  
402
--
403
-- Name: _m2_to_ha(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
404
--
405

  
406
CREATE FUNCTION _m2_to_ha(value double precision) RETURNS double precision
407
    LANGUAGE sql IMMUTABLE STRICT
408
    AS $_$
409
SELECT $1/10000.
410
$_$;
411

  
412

  
413
ALTER FUNCTION "public.test_taxonomic_names"._m2_to_ha(value double precision) OWNER TO bien;
414

  
415
--
416
-- Name: _m_to_cm(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
417
--
418

  
419
CREATE FUNCTION _m_to_cm(value double precision) RETURNS double precision
420
    LANGUAGE sql IMMUTABLE STRICT
421
    AS $_$
422
SELECT $1*100.
423
$_$;
424

  
425

  
426
ALTER FUNCTION "public.test_taxonomic_names"._m_to_cm(value double precision) OWNER TO bien;
427

  
428
--
429
-- Name: _percent_to_fraction(double precision); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
430
--
431

  
432
CREATE FUNCTION _percent_to_fraction(value double precision) RETURNS double precision
433
    LANGUAGE sql IMMUTABLE STRICT
434
    AS $_$
435
SELECT $1/100.
436
$_$;
437

  
438

  
439
ALTER FUNCTION "public.test_taxonomic_names"._percent_to_fraction(value double precision) OWNER TO bien;
440

  
441
--
350 442
-- Name: _taxon_family_require_std(text); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
351 443
--
352 444

  
......
364 456
--
365 457

  
366 458
CREATE FUNCTION _taxonlabel_set_matched_label_id(taxonlabel_id integer, matched_label_id integer, matched_label_fit_fraction double precision DEFAULT NULL::double precision) RETURNS integer
367
    LANGUAGE sql
368
    AS $_$
369
UPDATE taxonlabel SET
370
  matched_label_id = $2
371
, matched_label_fit_fraction = $3
372
WHERE taxonlabel_id = $1
373
RETURNING taxonlabel_id
374
$_$;
459
    LANGUAGE plpgsql
460
    AS $$
461
BEGIN
462
    -- Use EXECUTE to avoid caching query plan
463
    EXECUTE '
464
    UPDATE taxonlabel SET
465
      matched_label_id = '||quote_nullable(matched_label_id)||'
466
    , matched_label_fit_fraction = '
467
        ||quote_nullable(matched_label_fit_fraction)||'
468
    WHERE taxonlabel_id = '||quote_nullable(taxonlabel_id)||'
469
    ';
470
    
471
    RETURN taxonlabel_id;
472
END;
473
$$;
375 474

  
376 475

  
377 476
ALTER FUNCTION "public.test_taxonomic_names"._taxonlabel_set_matched_label_id(taxonlabel_id integer, matched_label_id integer, matched_label_fit_fraction double precision) OWNER TO bien;
......
381 480
--
382 481

  
383 482
CREATE FUNCTION _taxonlabel_set_parent_id(taxonlabel_id integer, parent_id integer) RETURNS integer
384
    LANGUAGE sql
385
    AS $_$
386
UPDATE taxonlabel SET parent_id = $2 WHERE taxonlabel_id = $1
387
RETURNING taxonlabel_id
388
$_$;
483
    LANGUAGE plpgsql
484
    AS $$
485
BEGIN
486
    -- Use EXECUTE to avoid caching query plan
487
    EXECUTE '
488
    UPDATE taxonlabel SET parent_id = '||quote_nullable(parent_id)||'
489
    WHERE taxonlabel_id = '||quote_nullable(taxonlabel_id)||'
490
    ';
491
    
492
    RETURN taxonlabel_id;
493
END;
494
$$;
389 495

  
390 496

  
391 497
ALTER FUNCTION "public.test_taxonomic_names"._taxonlabel_set_parent_id(taxonlabel_id integer, parent_id integer) OWNER TO bien;
......
404 510
ALTER FUNCTION "public.test_taxonomic_names"._taxonomic_name_is_epithet(rank taxonrank) OWNER TO bien;
405 511

  
406 512
--
407
-- Name: make_analytical_db(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
513
-- Name: make_analytical_stem(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
408 514
--
409 515

  
410
CREATE FUNCTION make_analytical_db() RETURNS void
516
CREATE FUNCTION make_analytical_stem() RETURNS void
411 517
    LANGUAGE sql
412
    AS $$CREATE TABLE analytical_db AS SELECT * FROM analytical_db_view$$;
518
    AS $$
519
INSERT INTO analytical_stem SELECT * FROM analytical_stem_view;
520
INSERT INTO analytical_aggregate SELECT * FROM analytical_aggregate_view;
521
$$;
413 522

  
414 523

  
415
ALTER FUNCTION "public.test_taxonomic_names".make_analytical_db() OWNER TO bien;
524
ALTER FUNCTION "public.test_taxonomic_names".make_analytical_stem() OWNER TO bien;
416 525

  
417 526
--
418 527
-- Name: party_creator_id_self_ref(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
......
436 545
ALTER FUNCTION "public.test_taxonomic_names".party_creator_id_self_ref() OWNER TO bien;
437 546

  
438 547
--
439
-- Name: place_update_ancestors(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
548
-- Name: place_matched_place_id_self_ref(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
440 549
--
441 550

  
442
CREATE FUNCTION place_update_ancestors() RETURNS trigger
551
CREATE FUNCTION place_matched_place_id_self_ref() RETURNS trigger
443 552
    LANGUAGE plpgsql
444 553
    AS $$
445 554
BEGIN
555
    IF new.place_id IS NULL THEN -- prepopulate place_id
556
        new.place_id = nextval('place_place_id_seq'::regclass);
557
    END IF;
558
    IF new.matched_place_id = 0 THEN -- make self-reference
559
        new.matched_place_id = new.place_id;
560
    END IF;
561
    RETURN new;
562
END;
563
$$;
564

  
565

  
566
ALTER FUNCTION "public.test_taxonomic_names".place_matched_place_id_self_ref() OWNER TO bien;
567

  
568
--
569
-- Name: placename_update_ancestors(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
570
--
571

  
572
CREATE FUNCTION placename_update_ancestors() RETURNS trigger
573
    LANGUAGE plpgsql
574
    AS $$
575
BEGIN
446 576
    -- Delete existing ancestors
447
    DELETE FROM place_ancestor WHERE place_id = new.place_id;
577
    DELETE FROM placename_ancestor WHERE placename_id = new.placename_id;
448 578
    
449 579
    IF new.parent_id IS NOT NULL THEN
450 580
        -- Copy parent's ancestors to this node's ancestors
451 581
        INSERT
452
        INTO place_ancestor
453
        (place_id, ancestor_id)
582
        INTO placename_ancestor
583
        (placename_id, ancestor_id)
454 584
        SELECT
455
            new.place_id, ancestor_id
456
        FROM place_ancestor
457
        WHERE place_id = new.parent_id
585
            new.placename_id, ancestor_id
586
        FROM placename_ancestor
587
        WHERE placename_id = new.parent_id
458 588
        ;
459 589
    END IF;
460 590
    
......
463 593
    the leaf node is the one you're looking for, in addition to that leaf node's
464 594
    ancestors. */
465 595
    INSERT
466
    INTO place_ancestor
467
    (place_id, ancestor_id)
468
    VALUES (new.place_id, new.place_id)
596
    INTO placename_ancestor
597
    (placename_id, ancestor_id)
598
    VALUES (new.placename_id, new.placename_id)
469 599
    ;
470 600
    
471 601
    -- Tell immediate children to update their ancestors lists, which will
472 602
    -- recursively tell all descendants
473
    UPDATE place
474
    SET place_id = place_id -- need at least one SET statement
475
    -- Add COALESCE() to enable using place_unique index for lookup
476
    WHERE COALESCE(parent_id, 2147483647) = new.place_id
477
    AND place_id != new.place_id -- avoid infinite recursion
603
    UPDATE placename
604
    SET placename_id = placename_id -- need at least one SET statement
605
    -- Add COALESCE() to enable using placename_unique index for lookup
606
    WHERE COALESCE(parent_id, 2147483647) = new.placename_id
607
    AND placename_id != new.placename_id -- avoid infinite recursion
478 608
    ;
479 609
    
480 610
    /* Note: We don't need an ON DELETE trigger to update the descendants'
481
    ancestors when a node is deleted, because the place.place_parent_id
611
    ancestors when a node is deleted, because the placename.placename_parent_id
482 612
    foreign key is set to ON DELETE CASCADE, which just removes all the
483 613
    descendants anyway. */
484 614
    
......
487 617
$$;
488 618

  
489 619

  
490
ALTER FUNCTION "public.test_taxonomic_names".place_update_ancestors() OWNER TO bien;
620
ALTER FUNCTION "public.test_taxonomic_names".placename_update_ancestors() OWNER TO bien;
491 621

  
492 622
--
493
-- Name: placepath_matched_placepath_id_self_ref(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
623
-- Name: plantobservation_aggregateoccurrence_count_1(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
494 624
--
495 625

  
496
CREATE FUNCTION placepath_matched_placepath_id_self_ref() RETURNS trigger
626
CREATE FUNCTION plantobservation_aggregateoccurrence_count_1() RETURNS trigger
497 627
    LANGUAGE plpgsql
498 628
    AS $$
499 629
BEGIN
500
    IF new.placepath_id IS NULL THEN -- prepopulate placepath_id
501
        new.placepath_id = nextval('placepath_placepath_id_seq'::regclass);
502
    END IF;
503
    IF new.matched_placepath_id = 0 THEN -- make self-reference
504
        new.matched_placepath_id = new.placepath_id;
505
    END IF;
630
    UPDATE aggregateoccurrence
631
    SET count = GREATEST(COALESCE(count, 0), 1) -- at least 1
632
    WHERE aggregateoccurrence_id = new.aggregateoccurrence_id
633
    ;
506 634
    RETURN new;
507 635
END;
508 636
$$;
509 637

  
510 638

  
511
ALTER FUNCTION "public.test_taxonomic_names".placepath_matched_placepath_id_self_ref() OWNER TO bien;
639
ALTER FUNCTION "public.test_taxonomic_names".plantobservation_aggregateoccurrence_count_1() OWNER TO bien;
512 640

  
513 641
--
514
-- Name: plantobservation_aggregateoccurrence_count_1(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
642
-- Name: sync_analytical_aggregate_to_view(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
515 643
--
516 644

  
517
CREATE FUNCTION plantobservation_aggregateoccurrence_count_1() RETURNS trigger
518
    LANGUAGE plpgsql
645
CREATE FUNCTION sync_analytical_aggregate_to_view() RETURNS void
646
    LANGUAGE sql
519 647
    AS $$
520
BEGIN
521
    UPDATE aggregateoccurrence
522
    SET count = GREATEST(COALESCE(count, 0), 1) -- at least 1
523
    WHERE aggregateoccurrence_id = new.aggregateoccurrence_id
524
    ;
525
    RETURN new;
526
END;
648
DROP TABLE IF EXISTS analytical_aggregate;
649
CREATE TABLE analytical_aggregate AS SELECT * FROM analytical_aggregate_view;
527 650
$$;
528 651

  
529 652

  
530
ALTER FUNCTION "public.test_taxonomic_names".plantobservation_aggregateoccurrence_count_1() OWNER TO bien;
653
ALTER FUNCTION "public.test_taxonomic_names".sync_analytical_aggregate_to_view() OWNER TO bien;
531 654

  
532 655
--
656
-- Name: sync_analytical_stem_to_view(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
657
--
658

  
659
CREATE FUNCTION sync_analytical_stem_to_view() RETURNS void
660
    LANGUAGE sql
661
    AS $$
662
DROP TABLE IF EXISTS analytical_stem;
663
CREATE TABLE analytical_stem AS SELECT * FROM analytical_stem_view;
664
$$;
665

  
666

  
667
ALTER FUNCTION "public.test_taxonomic_names".sync_analytical_stem_to_view() OWNER TO bien;
668

  
669
--
533 670
-- Name: taxonlabel_0_matched_label_id_self_ref(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
534 671
--
535 672

  
......
578 715
    LANGUAGE plpgsql
579 716
    AS $$
580 717
BEGIN
581
    new.canon_label_id = new.taxonlabel_id; -- make self-reference
718
    new := taxonlabel_set_canon_label_id(new);
719
    
582 720
    RETURN new;
583 721
END;
584 722
$$;
......
594 732
    LANGUAGE plpgsql
595 733
    AS $$
596 734
BEGIN
597
    IF new.matched_label_id IS DISTINCT FROM old.matched_label_id THEN
598
        IF new.matched_label_id IS NOT NULL THEN
599
            IF new.matched_label_id = new.taxonlabel_id THEN -- self-reference
600
                new.canon_label_id = new.taxonlabel_id; -- make self-reference
601
            ELSE -- propagate from matched label
602
                new.canon_label_id = (
603
                    SELECT canon_label_id
604
                    FROM taxonlabel
605
                    WHERE taxonlabel_id = new.matched_label_id
606
                );
607
            END IF;
608
            
609
            -- Update canon_label_id on labels that resolve to this label
610
            UPDATE taxonlabel
611
            SET canon_label_id = new.canon_label_id
612
            WHERE matched_label_id = new.taxonlabel_id
613
            AND taxonlabel_id != new.taxonlabel_id -- avoid infinite recursion
614
            ;
615
        ELSE -- no matched taxonlabel
616
            new.canon_label_id = new.taxonlabel_id; -- make self-reference
617
        END IF;
618
    END IF;
735
    new := taxonlabel_set_canon_label_id(new, old.matched_label_id, true);
736
    
619 737
    RETURN new;
620 738
END;
621 739
$$;
......
662 780
    taxonomicname text,
663 781
    accessioncode text,
664 782
    CONSTRAINT taxonlabel_matched_label_fit_fraction_range CHECK (((matched_label_fit_fraction >= (0)::double precision) AND (matched_label_fit_fraction <= (1)::double precision))),
665
    CONSTRAINT taxonlabel_required_key CHECK (((taxonepithet IS NOT NULL) OR (taxonomicname IS NOT NULL)))
783
    CONSTRAINT taxonlabel_required_key CHECK ((((sourceaccessioncode IS NOT NULL) OR (taxonepithet IS NOT NULL)) OR (taxonomicname IS NOT NULL)))
666 784
);
667 785

  
668 786

  
......
758 876

  
759 877

  
760 878
--
761
-- Name: taxonlabel_update_ancestors(taxonlabel, integer); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
879
-- Name: taxonlabel_set_canon_label_id(taxonlabel, integer, boolean); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
762 880
--
763 881

  
764
CREATE FUNCTION taxonlabel_update_ancestors(new taxonlabel, old_parent_id integer DEFAULT NULL::integer) RETURNS void
882
CREATE FUNCTION taxonlabel_set_canon_label_id(new taxonlabel, old_matched_label_id integer DEFAULT NULL::integer, is_update boolean DEFAULT false) RETURNS taxonlabel
765 883
    LANGUAGE plpgsql
766 884
    AS $$
767
DECLARE
768
    -- Use matched_label_id's ancestors instead if available
769
    parent_id_ taxonlabel.taxonlabel_id%TYPE := COALESCE(
770
        NULLIF(new.matched_label_id, new.taxonlabel_id), new.parent_id);
771 885
BEGIN
886
    IF new.matched_label_id IS DISTINCT FROM old_matched_label_id THEN
887
        IF new.matched_label_id IS NOT NULL THEN
888
            IF new.matched_label_id = new.taxonlabel_id THEN -- self-reference
889
                new.canon_label_id := new.taxonlabel_id; -- make self-reference
890
            ELSE -- propagate from matched label
891
                new.canon_label_id := (
892
                    SELECT canon_label_id
893
                    FROM taxonlabel
894
                    WHERE taxonlabel_id = new.matched_label_id
895
                );
896
            END IF;
897
            
898
            IF is_update THEN
899
                -- Update canon_label_id on labels that resolve to this label
900
                UPDATE taxonlabel
901
                SET canon_label_id = new.canon_label_id
902
                WHERE matched_label_id = new.taxonlabel_id
903
                AND taxonlabel_id != new.taxonlabel_id -- no infinite recursion
904
                ;
905
            END IF;
906
        ELSE -- no matched taxonlabel
907
            new.canon_label_id := new.taxonlabel_id; -- make self-reference
908
        END IF;
909
    END IF;
910
    
911
    RETURN new;
912
END;
913
$$;
914

  
915

  
916
ALTER FUNCTION "public.test_taxonomic_names".taxonlabel_set_canon_label_id(new taxonlabel, old_matched_label_id integer, is_update boolean) OWNER TO bien;
917

  
918
--
919
-- Name: taxonlabel_update_ancestors(taxonlabel, integer, integer); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
920
--
921

  
922
CREATE FUNCTION taxonlabel_update_ancestors(new taxonlabel, parent_id_ integer, old_parent_id integer DEFAULT NULL::integer) RETURNS void
923
    LANGUAGE plpgsql
924
    AS $$
925
BEGIN
772 926
    IF parent_id_ IS DISTINCT FROM old_parent_id THEN
773 927
        DECLARE
774 928
            -- These include the parent itself
......
819 973
$$;
820 974

  
821 975

  
822
ALTER FUNCTION "public.test_taxonomic_names".taxonlabel_update_ancestors(new taxonlabel, old_parent_id integer) OWNER TO bien;
976
ALTER FUNCTION "public.test_taxonomic_names".taxonlabel_update_ancestors(new taxonlabel, parent_id_ integer, old_parent_id integer) OWNER TO bien;
823 977

  
824 978
--
825 979
-- Name: taxonlabel_update_ancestors_on_insert(); Type: FUNCTION; Schema: public.test_taxonomic_names; Owner: bien
......
838 992
    VALUES (new.taxonlabel_id, new.taxonlabel_id)
839 993
    ;
840 994
    
841
    PERFORM taxonlabel_update_ancestors(new);
995
    PERFORM taxonlabel_update_ancestors(new, new.parent_id);
996
    PERFORM taxonlabel_update_ancestors(new,
997
        NULLIF(new.matched_label_id, new.taxonlabel_id));
842 998
    
843 999
    RETURN new;
844 1000
END;
......
855 1011
    LANGUAGE plpgsql
856 1012
    AS $$
857 1013
BEGIN
858
    PERFORM taxonlabel_update_ancestors(new, COALESCE(
859
        NULLIF(old.matched_label_id, old.taxonlabel_id), old.parent_id));
1014
    PERFORM taxonlabel_update_ancestors(new, new.parent_id, old.parent_id);
1015
    PERFORM taxonlabel_update_ancestors(new,
1016
        NULLIF(new.matched_label_id, new.taxonlabel_id),
1017
        NULLIF(old.matched_label_id, old.taxonlabel_id));
860 1018
    
861 1019
    RETURN new;
862 1020
END;
......
1006 1164

  
1007 1165

  
1008 1166
--
1167
-- Name: analytical_aggregate; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1168
--
1169

  
1170
CREATE TABLE analytical_aggregate (
1171
    "institutionCode" text,
1172
    country text,
1173
    "stateProvince" text,
1174
    county text,
1175
    "decimalLatitude" double precision,
1176
    "decimalLongitude" double precision,
1177
    "plotName" text,
1178
    "elevationInMeters" double precision,
1179
    "plotArea_ha" double precision,
1180
    "samplingProtocol" text,
1181
    "dateCollected" date,
1182
    family text,
1183
    genus text,
1184
    "speciesBinomial" text,
1185
    "scientificName" text,
1186
    "scientificNameAuthorship" text,
1187
    "scientificNameWithMorphospecies" text,
1188
    "coverPercent" double precision,
1189
    "individualCount" bigint,
1190
    "individualCount_1cm_or_more" bigint,
1191
    "individualCount_2_5cm_or_more" bigint,
1192
    "individualCount_10cm_or_more" bigint
1193
);
1194

  
1195

  
1196
ALTER TABLE "public.test_taxonomic_names".analytical_aggregate OWNER TO bien;
1197

  
1198
--
1199
-- Name: analytical_stem; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1200
--
1201

  
1202
CREATE TABLE analytical_stem (
1203
    "institutionCode" text,
1204
    country text,
1205
    "stateProvince" text,
1206
    county text,
1207
    "decimalLatitude" double precision,
1208
    "decimalLongitude" double precision,
1209
    "plotName" text,
1210
    "elevationInMeters" double precision,
1211
    "plotArea_ha" double precision,
1212
    "samplingProtocol" text,
1213
    "dateCollected" date,
1214
    family text,
1215
    genus text,
1216
    "speciesBinomial" text,
1217
    "scientificName" text,
1218
    "scientificNameAuthorship" text,
1219
    "scientificNameWithMorphospecies" text,
1220
    "identifiedBy" text,
1221
    "growthForm" growthform,
1222
    cultivated boolean,
1223
    "cultivatedBasis" text,
1224
    "coverPercent" double precision,
1225
    "diameterBreastHeight_cm" double precision,
1226
    height_m double precision,
1227
    tag text,
1228
    "organismX_m" double precision,
1229
    "organismY_m" double precision,
1230
    "recordedBy" text,
1231
    "recordNumber" text
1232
);
1233

  
1234

  
1235
ALTER TABLE "public.test_taxonomic_names".analytical_stem OWNER TO bien;
1236

  
1237
--
1238
-- Name: analytical_aggregate_view; Type: VIEW; Schema: public.test_taxonomic_names; Owner: bien
1239
--
1240

  
1241
CREATE VIEW analytical_aggregate_view AS
1242
    SELECT analytical_stem."institutionCode", analytical_stem.country, analytical_stem."stateProvince", analytical_stem.county, analytical_stem."decimalLatitude", analytical_stem."decimalLongitude", analytical_stem."plotName", analytical_stem."elevationInMeters", analytical_stem."plotArea_ha", analytical_stem."samplingProtocol", analytical_stem."dateCollected", analytical_stem.family, analytical_stem.genus, analytical_stem."speciesBinomial", analytical_stem."scientificName", analytical_stem."scientificNameAuthorship", analytical_stem."scientificNameWithMorphospecies", sum(analytical_stem."coverPercent") AS "coverPercent", count(analytical_stem."diameterBreastHeight_cm") AS "individualCount", count((analytical_stem."diameterBreastHeight_cm" >= _cm_to_m((1)::double precision))) AS "individualCount_1cm_or_more", count((analytical_stem."diameterBreastHeight_cm" >= _cm_to_m((2.5)::double precision))) AS "individualCount_2_5cm_or_more", count((analytical_stem."diameterBreastHeight_cm" >= _cm_to_m((10)::double precision))) AS "individualCount_10cm_or_more" FROM analytical_stem GROUP BY analytical_stem."institutionCode", analytical_stem.country, analytical_stem."stateProvince", analytical_stem.county, analytical_stem."decimalLatitude", analytical_stem."decimalLongitude", analytical_stem."plotName", analytical_stem."elevationInMeters", analytical_stem."plotArea_ha", analytical_stem."samplingProtocol", analytical_stem."dateCollected", analytical_stem.family, analytical_stem.genus, analytical_stem."speciesBinomial", analytical_stem."scientificName", analytical_stem."scientificNameAuthorship", analytical_stem."scientificNameWithMorphospecies";
1243

  
1244

  
1245
ALTER TABLE "public.test_taxonomic_names".analytical_aggregate_view OWNER TO bien;
1246

  
1247
--
1248
-- Name: coordinates; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1249
--
1250

  
1251
CREATE TABLE coordinates (
1252
    coordinates_id integer NOT NULL,
1253
    creator_id integer NOT NULL,
1254
    latitude_deg double precision NOT NULL,
1255
    longitude_deg double precision NOT NULL,
1256
    verbatimlatitude text,
1257
    verbatimlongitude text,
1258
    verbatimcoordinates text,
1259
    footprintgeometry_dwc text,
1260
    coordsaccuracy_deg double precision
1261
);
1262

  
1263

  
1264
ALTER TABLE "public.test_taxonomic_names".coordinates OWNER TO bien;
1265

  
1266
--
1267
-- Name: COLUMN coordinates.footprintgeometry_dwc; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1268
--
1269

  
1270
COMMENT ON COLUMN coordinates.footprintgeometry_dwc IS 'DwC''s footprintWKT field. "A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the Location" (http://rs.tdwg.org/dwc/terms/#footprintWKT).';
1271

  
1272

  
1273
--
1274
-- Name: COLUMN coordinates.coordsaccuracy_deg; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1275
--
1276

  
1277
COMMENT ON COLUMN coordinates.coordsaccuracy_deg IS 'Accuracy of latitude/longitude or footprint geometry, in meters. This should generally be at least 1 m, which is the accuracy of the best GPSes.';
1278

  
1279

  
1280
--
1009 1281
-- Name: location; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1010 1282
--
1011 1283

  
......
1067 1339

  
1068 1340

  
1069 1341
--
1070
-- Name: locationcoords; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1071
--
1072

  
1073
CREATE TABLE locationcoords (
1074
    locationcoords_id integer NOT NULL,
1075
    location_id integer NOT NULL,
1076
    latitude_deg double precision,
1077
    longitude_deg double precision,
1078
    verbatimlatitude text,
1079
    verbatimlongitude text,
1080
    verbatimcoordinates text,
1081
    footprintgeometry_dwc text,
1082
    coordsaccuracy_deg double precision,
1083
    identifier_id integer,
1084
    determinationdate date,
1085
    isoriginal boolean DEFAULT false NOT NULL,
1086
    iscurrent boolean DEFAULT false NOT NULL,
1087
    calculated boolean
1088
);
1089

  
1090

  
1091
ALTER TABLE "public.test_taxonomic_names".locationcoords OWNER TO bien;
1092

  
1093
--
1094
-- Name: COLUMN locationcoords.footprintgeometry_dwc; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1095
--
1096

  
1097
COMMENT ON COLUMN locationcoords.footprintgeometry_dwc IS 'DwC''s footprintWKT field. "A Well-Known Text (WKT) representation of the shape (footprint, geometry) that defines the Location" (http://rs.tdwg.org/dwc/terms/#footprintWKT).';
1098

  
1099

  
1100
--
1101
-- Name: COLUMN locationcoords.coordsaccuracy_deg; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1102
--
1103

  
1104
COMMENT ON COLUMN locationcoords.coordsaccuracy_deg IS 'Accuracy of latitude/longitude or footprint geometry, in meters. This should generally be at least 1 m, which is the accuracy of the best GPSes.';
1105

  
1106

  
1107
--
1108 1342
-- Name: locationevent; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1109 1343
--
1110 1344

  
......
1205 1439
CREATE TABLE locationplace (
1206 1440
    locationplace_id integer NOT NULL,
1207 1441
    location_id integer NOT NULL,
1208
    placepath_id integer NOT NULL,
1442
    place_id integer NOT NULL,
1209 1443
    identifier_id integer
1210 1444
);
1211 1445

  
......
1444 1678

  
1445 1679

  
1446 1680
--
1447
-- Name: placepath; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1681
-- Name: place; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1448 1682
--
1449 1683

  
1450
CREATE TABLE placepath (
1451
    placepath_id integer NOT NULL,
1684
CREATE TABLE place (
1685
    place_id integer NOT NULL,
1452 1686
    creator_id integer NOT NULL,
1453 1687
    placecode text,
1454
    matched_placepath_id integer,
1455
    place_id integer,
1688
    matched_place_id integer,
1689
    coordinates_id integer,
1690
    placename_id integer,
1456 1691
    continent text,
1457 1692
    country text,
1458 1693
    stateprovince text,
1459 1694
    county text,
1460
    municipality text,
1461
    site text,
1462
    otherranks rankedplacename[],
1463
    CONSTRAINT placepath_required_key CHECK (((((((placecode IS NOT NULL) OR (continent IS NOT NULL)) OR (country IS NOT NULL)) OR (stateprovince IS NOT NULL)) OR (county IS NOT NULL)) OR (otherranks IS NOT NULL)))
1695
    description text,
1696
    CONSTRAINT place_required_key CHECK (((((((placecode IS NOT NULL) OR (coordinates_id IS NOT NULL)) OR (continent IS NOT NULL)) OR (country IS NOT NULL)) OR (stateprovince IS NOT NULL)) OR (county IS NOT NULL)))
1464 1697
);
1465 1698

  
1466 1699

  
1467
ALTER TABLE "public.test_taxonomic_names".placepath OWNER TO bien;
1700
ALTER TABLE "public.test_taxonomic_names".place OWNER TO bien;
1468 1701

  
1469 1702
--
1470
-- Name: TABLE placepath; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1703
-- Name: TABLE place; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1471 1704
--
1472 1705

  
1473
COMMENT ON TABLE placepath IS 'The full path to a place. Can be either verbatim or accepted. For accepted names, points to the identified place.
1706
COMMENT ON TABLE place IS 'The full path to a place. Can be either verbatim or accepted. For accepted names, points to the identified place.
1474 1707

  
1475
To include a placename at a rank with no explicit column, add it to the otherranks array.';
1708
To use a custom hierarchy of placenames with no explicit column, point to the lowest-rank placename in placename_id.';
1476 1709

  
1477 1710

  
1478 1711
--
1479
-- Name: COLUMN placepath.matched_placepath_id; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1712
-- Name: COLUMN place.matched_place_id; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1480 1713
--
1481 1714

  
1482
COMMENT ON COLUMN placepath.matched_placepath_id IS 'The placepath containing the accepted name of this verbatim place path.  placepaths should be linked in a two-level hierarchy of datasource name -> accepted name.
1715
COMMENT ON COLUMN place.matched_place_id IS 'The closest match to this place. Places should be linked in a three-level hierarchy of datasource place -> verbatim place -> accepted place.
1483 1716

  
1484
A accepted name should point to itself in this field. This will happen automatically by setting it to the special value 0.';
1717
An accepted place should point to itself in this field. This will happen automatically by setting it to the special value 0.';
1485 1718

  
1486 1719

  
1487 1720
--
1488
-- Name: COLUMN placepath.otherranks; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
1489
--
1490

  
1491
COMMENT ON COLUMN placepath.otherranks IS 'Additional ranks which do not have a named column. Put ranks in path order, so that lower-level places come after higher-level places.';
1492

  
1493

  
1494
--
1495 1721
-- Name: plantobservation; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
1496 1722
--
1497 1723

  
......
1784 2010

  
1785 2011

  
1786 2012
--
1787
-- Name: analytical_db_view; Type: VIEW; Schema: public.test_taxonomic_names; Owner: bien
2013
-- Name: analytical_stem_view; Type: VIEW; Schema: public.test_taxonomic_names; Owner: bien
1788 2014
--
1789 2015

  
1790
CREATE VIEW analytical_db_view AS
1791
    SELECT datasource.organizationname AS "institutionCode", accepted_taxonverbatim.family, accepted_taxonverbatim.genus, ((accepted_taxonverbatim.genus || ' '::text) || accepted_taxonverbatim.specific_epithet) AS "speciesBinomial", COALESCE(accepted_taxonverbatim.taxonomicname, accepted_taxonverbatim.binomial) AS "scientificName", accepted_taxonverbatim.author AS "scientificNameAuthorship", NULLIF(array_to_string(ARRAY[accepted_taxonverbatim.taxonomicname, parsed_taxonverbatim.morphospecies], ' '::text), ''::text) AS "scientificNameWithMorphospecies", placepath.country, placepath.stateprovince AS "stateProvince", placepath.county, taxonoccurrence.verbatimcollectorname AS "recordedBy", plantobservation.collectionnumber AS "recordNumber", NULLIF(array_to_string(ARRAY[identifiedby.givenname, identifiedby.middlename, identifiedby.surname], ' '::text), ''::text) AS "identifiedBy", aggregateoccurrence.collectiondate AS "dateCollected", location.sourceaccessioncode AS "plotName", functions._m2_to_ha(location.area_m2) AS "plotArea_ha", method.name AS "samplingProtocol", locationcoords.latitude_deg AS "decimalLatitude", locationcoords.longitude_deg AS "decimalLongitude", location.elevation_m AS "elevationInMeters", taxonoccurrence.iscultivated AS cultivated, taxonoccurrence.cultivatedbasis AS "cultivatedBasis", _fraction_to_percent(aggregateoccurrence.cover_fraction) AS "coverPercent", taxonoccurrence.growthform AS "growthForm", stemobservation.tag, stemobservation.xposition_m AS "organismX_m", stemobservation.yposition_m AS "organismY_m", stemobservation.height_m FROM (((((((((((((((((((party datasource JOIN location ON ((location.creator_id = datasource.party_id))) LEFT JOIN locationcoords USING (location_id)) LEFT JOIN locationplace USING (location_id)) LEFT JOIN placepath USING (placepath_id)) JOIN locationevent USING (location_id)) LEFT JOIN method USING (method_id)) JOIN taxonoccurrence USING (locationevent_id)) JOIN taxondetermination USING (taxonoccurrence_id)) LEFT JOIN party identifiedby ON ((identifiedby.party_id = taxondetermination.party_id))) JOIN taxonverbatim USING (taxonverbatim_id)) JOIN taxonlabel datasource_taxonlabel USING (taxonlabel_id)) JOIN taxonlabel parsed_taxonlabel ON ((parsed_taxonlabel.taxonlabel_id = datasource_taxonlabel.matched_label_id))) LEFT JOIN taxonverbatim parsed_taxonverbatim ON ((parsed_taxonverbatim.taxonlabel_id = parsed_taxonlabel.taxonlabel_id))) JOIN taxonlabel accepted_taxonlabel ON ((accepted_taxonlabel.taxonlabel_id = datasource_taxonlabel.canon_label_id))) JOIN taxonverbatim accepted_taxonverbatim ON ((accepted_taxonverbatim.taxonlabel_id = accepted_taxonlabel.taxonlabel_id))) LEFT JOIN aggregateoccurrence USING (taxonoccurrence_id)) LEFT JOIN plantobservation USING (aggregateoccurrence_id)) LEFT JOIN stemobservation USING (plantobservation_id)) LEFT JOIN specimenreplicate USING (plantobservation_id)) WHERE (datasource.organizationname IS NOT NULL);
2016
CREATE VIEW analytical_stem_view AS
2017
    SELECT datasource.organizationname AS "institutionCode", place.country, place.stateprovince AS "stateProvince", place.county, coordinates.latitude_deg AS "decimalLatitude", coordinates.longitude_deg AS "decimalLongitude", location.sourceaccessioncode AS "plotName", location.elevation_m AS "elevationInMeters", _m2_to_ha(location.area_m2) AS "plotArea_ha", method.name AS "samplingProtocol", aggregateoccurrence.collectiondate AS "dateCollected", accepted_taxonverbatim.family, accepted_taxonverbatim.genus, ((accepted_taxonverbatim.genus || ' '::text) || accepted_taxonverbatim.specific_epithet) AS "speciesBinomial", COALESCE(accepted_taxonverbatim.taxonomicname, accepted_taxonverbatim.binomial) AS "scientificName", accepted_taxonverbatim.author AS "scientificNameAuthorship", NULLIF(array_to_string(ARRAY[accepted_taxonlabel.taxonomicname, parsed_taxonverbatim.morphospecies], ' '::text), ''::text) AS "scientificNameWithMorphospecies", NULLIF(array_to_string(ARRAY[identifiedby.givenname, identifiedby.middlename, identifiedby.surname], ' '::text), ''::text) AS "identifiedBy", taxonoccurrence.growthform AS "growthForm", taxonoccurrence.iscultivated AS cultivated, taxonoccurrence.cultivatedbasis AS "cultivatedBasis", _fraction_to_percent(aggregateoccurrence.cover_fraction) AS "coverPercent", _m_to_cm(stemobservation.diameterbreastheight_m) AS "diameterBreastHeight_cm", stemobservation.height_m, stemobservation.tag, stemobservation.xposition_m AS "organismX_m", stemobservation.yposition_m AS "organismY_m", taxonoccurrence.verbatimcollectorname AS "recordedBy", plantobservation.collectionnumber AS "recordNumber" FROM (((((((((((((((((((party datasource JOIN location ON ((location.creator_id = datasource.party_id))) LEFT JOIN locationplace USING (location_id)) LEFT JOIN place USING (place_id)) LEFT JOIN coordinates USING (coordinates_id)) JOIN locationevent USING (location_id)) LEFT JOIN method USING (method_id)) JOIN taxonoccurrence USING (locationevent_id)) JOIN taxondetermination USING (taxonoccurrence_id)) LEFT JOIN party identifiedby ON ((identifiedby.party_id = taxondetermination.party_id))) JOIN taxonverbatim datasource_taxonverbatim USING (taxonverbatim_id)) JOIN taxonlabel datasource_taxonlabel USING (taxonlabel_id)) JOIN taxonlabel parsed_taxonlabel ON ((parsed_taxonlabel.taxonlabel_id = datasource_taxonlabel.matched_label_id))) LEFT JOIN taxonverbatim parsed_taxonverbatim ON ((parsed_taxonverbatim.taxonlabel_id = parsed_taxonlabel.taxonlabel_id))) JOIN taxonlabel accepted_taxonlabel ON ((accepted_taxonlabel.taxonlabel_id = datasource_taxonlabel.canon_label_id))) JOIN taxonverbatim accepted_taxonverbatim ON ((accepted_taxonverbatim.taxonlabel_id = accepted_taxonlabel.taxonlabel_id))) LEFT JOIN aggregateoccurrence USING (taxonoccurrence_id)) LEFT JOIN plantobservation USING (aggregateoccurrence_id)) LEFT JOIN stemobservation USING (plantobservation_id)) LEFT JOIN specimenreplicate USING (plantobservation_id)) WHERE ((datasource.creator_id = datasource.party_id) AND (NOT taxondetermination.isoriginal));
1792 2018

  
1793 2019

  
1794
ALTER TABLE "public.test_taxonomic_names".analytical_db_view OWNER TO bien;
2020
ALTER TABLE "public.test_taxonomic_names".analytical_stem_view OWNER TO bien;
1795 2021

  
1796 2022
--
1797 2023
-- Name: classcontributor; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
......
2208 2434

  
2209 2435

  
2210 2436
--
2437
-- Name: coordinates_coordinates_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
2438
--
2439

  
2440
CREATE SEQUENCE coordinates_coordinates_id_seq
2441
    START WITH 1
2442
    INCREMENT BY 1
2443
    NO MINVALUE
2444
    NO MAXVALUE
2445
    CACHE 1;
2446

  
2447

  
2448
ALTER TABLE "public.test_taxonomic_names".coordinates_coordinates_id_seq OWNER TO bien;
2449

  
2450
--
2451
-- Name: coordinates_coordinates_id_seq; Type: SEQUENCE OWNED BY; Schema: public.test_taxonomic_names; Owner: bien
2452
--
2453

  
2454
ALTER SEQUENCE coordinates_coordinates_id_seq OWNED BY coordinates.coordinates_id;
2455

  
2456

  
2457
--
2458
-- Name: coordinates_coordinates_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
2459
--
2460

  
2461
SELECT pg_catalog.setval('coordinates_coordinates_id_seq', 1, false);
2462

  
2463

  
2464
--
2211 2465
-- Name: coverindex; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
2212 2466
--
2213 2467

  
......
2475 2729
-- Name: location_location_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
2476 2730
--
2477 2731

  
2478
SELECT pg_catalog.setval('location_location_id_seq', 82, true);
2732
SELECT pg_catalog.setval('location_location_id_seq', 78, true);
2479 2733

  
2480 2734

  
2481 2735
--
2482
-- Name: locationcoords_locationcoords_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
2483
--
2484

  
2485
CREATE SEQUENCE locationcoords_locationcoords_id_seq
2486
    START WITH 1
2487
    INCREMENT BY 1
2488
    NO MINVALUE
2489
    NO MAXVALUE
2490
    CACHE 1;
2491

  
2492

  
2493
ALTER TABLE "public.test_taxonomic_names".locationcoords_locationcoords_id_seq OWNER TO bien;
2494

  
2495
--
2496
-- Name: locationcoords_locationcoords_id_seq; Type: SEQUENCE OWNED BY; Schema: public.test_taxonomic_names; Owner: bien
2497
--
2498

  
2499
ALTER SEQUENCE locationcoords_locationcoords_id_seq OWNED BY locationcoords.locationcoords_id;
2500

  
2501

  
2502
--
2503
-- Name: locationcoords_locationcoords_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
2504
--
2505

  
2506
SELECT pg_catalog.setval('locationcoords_locationcoords_id_seq', 1, false);
2507

  
2508

  
2509
--
2510 2736
-- Name: locationevent_locationevent_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
2511 2737
--
2512 2738

  
......
2531 2757
-- Name: locationevent_locationevent_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
2532 2758
--
2533 2759

  
2534
SELECT pg_catalog.setval('locationevent_locationevent_id_seq', 82, true);
2760
SELECT pg_catalog.setval('locationevent_locationevent_id_seq', 78, true);
2535 2761

  
2536 2762

  
2537 2763
--
......
2852 3078
-- Name: party_party_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
2853 3079
--
2854 3080

  
2855
SELECT pg_catalog.setval('party_party_id_seq', 69, true);
3081
SELECT pg_catalog.setval('party_party_id_seq', 66, true);
2856 3082

  
2857 3083

  
2858 3084
--
......
2900 3126

  
2901 3127

  
2902 3128
--
2903
-- Name: place; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
2904
--
2905

  
2906
CREATE TABLE place (
2907
    place_id integer NOT NULL,
2908
    parent_id integer,
2909
    rank placerank NOT NULL,
2910
    placename text NOT NULL,
2911
    placecode text,
2912
    placedescription text,
2913
    accessioncode text
2914
);
2915

  
2916

  
2917
ALTER TABLE "public.test_taxonomic_names".place OWNER TO bien;
2918

  
2919
--
2920
-- Name: TABLE place; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
2921
--
2922

  
2923
COMMENT ON TABLE place IS 'An official, named place. Can be at any level in the geographic hierarchy. Note that the placename stores only one rank (e.g. country) of the full path to the place. The higher-level ranks are stored in the place''s chain of parent_id ancestors.
2924

  
2925
Equivalent to VegBank''s namedPlace table.';
2926

  
2927

  
2928
--
2929
-- Name: place_ancestor; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
2930
--
2931

  
2932
CREATE TABLE place_ancestor (
2933
    place_id integer NOT NULL,
2934
    ancestor_id integer NOT NULL
2935
);
2936

  
2937

  
2938
ALTER TABLE "public.test_taxonomic_names".place_ancestor OWNER TO bien;
2939

  
2940
--
2941
-- Name: TABLE place_ancestor; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
2942
--
2943

  
2944
COMMENT ON TABLE place_ancestor IS 'place''s ancestor cross link table.';
2945

  
2946

  
2947
--
2948 3129
-- Name: place_place_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
2949 3130
--
2950 3131

  
......
3015 3196

  
3016 3197

  
3017 3198
--
3018
-- Name: placepath_placepath_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
3199
-- Name: placename; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
3019 3200
--
3020 3201

  
3021
CREATE SEQUENCE placepath_placepath_id_seq
3202
CREATE TABLE placename (
3203
    placename_id integer NOT NULL,
3204
    parent_id integer,
3205
    rank placerank NOT NULL,
3206
    placename text NOT NULL
3207
);
3208

  
3209

  
3210
ALTER TABLE "public.test_taxonomic_names".placename OWNER TO bien;
3211

  
3212
--
3213
-- Name: TABLE placename; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
3214
--
3215

  
3216
COMMENT ON TABLE placename IS 'An official, named placename. Can be at any level in the geographic hierarchy. Note that the placename stores only one rank (e.g. country) of the full path to the placename. The higher-level ranks are stored in the placename''s chain of parent_id ancestors.
3217

  
3218
Equivalent to VegBank''s namedPlace table.';
3219

  
3220

  
3221
--
3222
-- Name: placename_ancestor; Type: TABLE; Schema: public.test_taxonomic_names; Owner: bien; Tablespace: 
3223
--
3224

  
3225
CREATE TABLE placename_ancestor (
3226
    placename_id integer NOT NULL,
3227
    ancestor_id integer NOT NULL
3228
);
3229

  
3230

  
3231
ALTER TABLE "public.test_taxonomic_names".placename_ancestor OWNER TO bien;
3232

  
3233
--
3234
-- Name: TABLE placename_ancestor; Type: COMMENT; Schema: public.test_taxonomic_names; Owner: bien
3235
--
3236

  
3237
COMMENT ON TABLE placename_ancestor IS 'placename''s ancestor cross link table.';
3238

  
3239

  
3240
--
3241
-- Name: placename_placename_id_seq; Type: SEQUENCE; Schema: public.test_taxonomic_names; Owner: bien
3242
--
3243

  
3244
CREATE SEQUENCE placename_placename_id_seq
3022 3245
    START WITH 1
3023 3246
    INCREMENT BY 1
3024 3247
    NO MINVALUE
......
3026 3249
    CACHE 1;
3027 3250

  
3028 3251

  
3029
ALTER TABLE "public.test_taxonomic_names".placepath_placepath_id_seq OWNER TO bien;
3252
ALTER TABLE "public.test_taxonomic_names".placename_placename_id_seq OWNER TO bien;
3030 3253

  
3031 3254
--
3032
-- Name: placepath_placepath_id_seq; Type: SEQUENCE OWNED BY; Schema: public.test_taxonomic_names; Owner: bien
3255
-- Name: placename_placename_id_seq; Type: SEQUENCE OWNED BY; Schema: public.test_taxonomic_names; Owner: bien
3033 3256
--
3034 3257

  
3035
ALTER SEQUENCE placepath_placepath_id_seq OWNED BY placepath.placepath_id;
3258
ALTER SEQUENCE placename_placename_id_seq OWNED BY placename.placename_id;
3036 3259

  
3037 3260

  
3038 3261
--
3039
-- Name: placepath_placepath_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
3262
-- Name: placename_placename_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
3040 3263
--
3041 3264

  
3042
SELECT pg_catalog.setval('placepath_placepath_id_seq', 1, false);
3265
SELECT pg_catalog.setval('placename_placename_id_seq', 1, false);
3043 3266

  
3044 3267

  
3045 3268
--
......
3920 4143
-- Name: taxondetermination_taxondetermination_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
3921 4144
--
3922 4145

  
3923
SELECT pg_catalog.setval('taxondetermination_taxondetermination_id_seq', 41, true);
4146
SELECT pg_catalog.setval('taxondetermination_taxondetermination_id_seq', 39, true);
3924 4147

  
3925 4148

  
3926 4149
--
......
3975 4198
-- Name: taxonlabel_taxonlabel_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
3976 4199
--
3977 4200

  
3978
SELECT pg_catalog.setval('taxonlabel_taxonlabel_id_seq', 1085, true);
4201
SELECT pg_catalog.setval('taxonlabel_taxonlabel_id_seq', 621, true);
3979 4202

  
3980 4203

  
3981 4204
--
......
4044 4267
-- Name: taxonoccurrence_taxonoccurrence_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
4045 4268
--
4046 4269

  
4047
SELECT pg_catalog.setval('taxonoccurrence_taxonoccurrence_id_seq', 82, true);
4270
SELECT pg_catalog.setval('taxonoccurrence_taxonoccurrence_id_seq', 78, true);
4048 4271

  
4049 4272

  
4050 4273
--
......
4119 4342
-- Name: taxonverbatim_taxonverbatim_id_seq; Type: SEQUENCE SET; Schema: public.test_taxonomic_names; Owner: bien
4120 4343
--
4121 4344

  
4122
SELECT pg_catalog.setval('taxonverbatim_taxonverbatim_id_seq', 145, true);
4345
SELECT pg_catalog.setval('taxonverbatim_taxonverbatim_id_seq', 111, true);
4123 4346

  
4124 4347

  
4125 4348
--
......
4380 4603

  
4381 4604

  
4382 4605
--
4606
-- Name: coordinates_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4607
--
4608

  
4609
ALTER TABLE coordinates ALTER COLUMN coordinates_id SET DEFAULT nextval('coordinates_coordinates_id_seq'::regclass);
4610

  
4611

  
4612
--
4383 4613
-- Name: coverindex_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4384 4614
--
4385 4615

  
......
4422 4652

  
4423 4653

  
4424 4654
--
4425
-- Name: locationcoords_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4426
--
4427

  
4428
ALTER TABLE locationcoords ALTER COLUMN locationcoords_id SET DEFAULT nextval('locationcoords_locationcoords_id_seq'::regclass);
4429

  
4430

  
4431
--
4432 4655
-- Name: locationevent_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4433 4656
--
4434 4657

  
......
4513 4736

  
4514 4737

  
4515 4738
--
4516
-- Name: placepath_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4739
-- Name: placename_id; Type: DEFAULT; Schema: public.test_taxonomic_names; Owner: bien
4517 4740
--
4518 4741

  
4519
ALTER TABLE placepath ALTER COLUMN placepath_id SET DEFAULT nextval('placepath_placepath_id_seq'::regclass);
4742
ALTER TABLE placename ALTER COLUMN placename_id SET DEFAULT nextval('placename_placename_id_seq'::regclass);
4520 4743

  
4521 4744

  
4522 4745
--
......
4732 4955

  
4733 4956

  
4734 4957
--
4958
-- Data for Name: analytical_aggregate; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4959
--
4960

  
4961
COPY analytical_aggregate ("institutionCode", country, "stateProvince", county, "decimalLatitude", "decimalLongitude", "plotName", "elevationInMeters", "plotArea_ha", "samplingProtocol", "dateCollected", family, genus, "speciesBinomial", "scientificName", "scientificNameAuthorship", "scientificNameWithMorphospecies", "coverPercent", "individualCount", "individualCount_1cm_or_more", "individualCount_2_5cm_or_more", "individualCount_10cm_or_more") FROM stdin;
4962
\.
4963

  
4964

  
4965
--
4966
-- Data for Name: analytical_stem; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4967
--
4968

  
4969
COPY analytical_stem ("institutionCode", country, "stateProvince", county, "decimalLatitude", "decimalLongitude", "plotName", "elevationInMeters", "plotArea_ha", "samplingProtocol", "dateCollected", family, genus, "speciesBinomial", "scientificName", "scientificNameAuthorship", "scientificNameWithMorphospecies", "identifiedBy", "growthForm", cultivated, "cultivatedBasis", "coverPercent", "diameterBreastHeight_cm", height_m, tag, "organismX_m", "organismY_m", "recordedBy", "recordNumber") FROM stdin;
4970
\.
4971

  
4972

  
4973
--
4735 4974
-- Data for Name: classcontributor; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4736 4975
--
4737 4976

  
......
4804 5043

  
4805 5044

  
4806 5045
--
5046
-- Data for Name: coordinates; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
5047
--
5048

  
5049
COPY coordinates (coordinates_id, creator_id, latitude_deg, longitude_deg, verbatimlatitude, verbatimlongitude, verbatimcoordinates, footprintgeometry_dwc, coordsaccuracy_deg) FROM stdin;
5050
\.
5051

  
5052

  
5053
--
4807 5054
-- Data for Name: coverindex; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4808 5055
--
4809 5056

  
......
4852 5099

  
4853 5100

  
4854 5101
--
4855
-- Data for Name: locationcoords; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4856
--
4857

  
4858
COPY locationcoords (locationcoords_id, location_id, latitude_deg, longitude_deg, verbatimlatitude, verbatimlongitude, verbatimcoordinates, footprintgeometry_dwc, coordsaccuracy_deg, identifier_id, determinationdate, isoriginal, iscurrent, calculated) FROM stdin;
4859
\.
4860

  
4861

  
4862
--
4863 5102
-- Data for Name: locationevent; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4864 5103
--
4865 5104

  
......
4887 5126
-- Data for Name: locationplace; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4888 5127
--
4889 5128

  
4890
COPY locationplace (locationplace_id, location_id, placepath_id, identifier_id) FROM stdin;
5129
COPY locationplace (locationplace_id, location_id, place_id, identifier_id) FROM stdin;
4891 5130
\.
4892 5131

  
4893 5132

  
......
4930 5169
COPY party (party_id, creator_id, fullname, salutation, givenname, middlename, surname, organizationname, currentname_id, contactinstructions, email, partytype, partypublic, d_obscount, accessioncode) FROM stdin;
4931 5170
1	1	\N	\N	\N	\N	\N	TNRS	\N	\N	\N	\N	t	\N	\N
4932 5171
2	2	\N	\N	\N	\N	\N	NCBI	\N	\N	\N	\N	t	\N	\N
4933
54	54	\N	\N	\N	\N	\N	test_taxonomic_names	\N	\N	\N	\N	t	\N	\N
5172
51	51	\N	\N	\N	\N	\N	test_taxonomic_names	\N	\N	\N	\N	t	\N	\N
4934 5173
\.
4935 5174

  
4936 5175

  
......
4946 5185
-- Data for Name: place; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4947 5186
--
4948 5187

  
4949
COPY place (place_id, parent_id, rank, placename, placecode, placedescription, accessioncode) FROM stdin;
5188
COPY place (place_id, creator_id, placecode, matched_place_id, coordinates_id, placename_id, continent, country, stateprovince, county, description) FROM stdin;
4950 5189
\.
4951 5190

  
4952 5191

  
4953 5192
--
4954
-- Data for Name: place_ancestor; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
5193
-- Data for Name: placecorrelation; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4955 5194
--
4956 5195

  
4957
COPY place_ancestor (place_id, ancestor_id) FROM stdin;
5196
COPY placecorrelation (placecorrelation_id, parentplace_id, childplace_id, placeconvergence) FROM stdin;
4958 5197
\.
4959 5198

  
4960 5199

  
4961 5200
--
4962
-- Data for Name: placecorrelation; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
5201
-- Data for Name: placename; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4963 5202
--
4964 5203

  
4965
COPY placecorrelation (placecorrelation_id, parentplace_id, childplace_id, placeconvergence) FROM stdin;
5204
COPY placename (placename_id, parent_id, rank, placename) FROM stdin;
4966 5205
\.
4967 5206

  
4968 5207

  
4969 5208
--
4970
-- Data for Name: placepath; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
5209
-- Data for Name: placename_ancestor; Type: TABLE DATA; Schema: public.test_taxonomic_names; Owner: bien
4971 5210
--
4972 5211

  
4973
COPY placepath (placepath_id, creator_id, placecode, matched_placepath_id, place_id, continent, country, stateprovince, county, municipality, site, otherranks) FROM stdin;
5212
COPY placename_ancestor (placename_id, ancestor_id) FROM stdin;
4974 5213
\.
4975 5214

  
4976 5215

  
......
5139 5378
--
5140 5379

  
5141 5380
COPY taxonlabel (taxonlabel_id, creator_id, sourceaccessioncode, creationdate, taxonstatus, canon_label_id, matched_label_id, matched_label_fit_fraction, parent_id, taxonepithet, rank, taxonomicname, accessioncode) FROM stdin;
5142
2	2	\N	\N	\N	2	\N	\N	\N	\N	\N	Asteraceae	\N
5143
4	1	\N	\N	\N	4	2	\N	\N	Asteraceae	family	\N	\N
5381
2	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Asteraceae	\N
5382
4	1	\N	\N	\N	\N	2	\N	\N	Asteraceae	family	\N	\N
5144 5383
20	1	http://www.tropicos.org/Name/50307371	\N	Accepted	20	20	\N	4	\N	family	Asteraceae Asteraceae Bercht. & J. Presl	\N
5145
41	2	\N	\N	\N	41	\N	\N	\N	\N	\N	Poa	\N
5146
42	2	\N	\N	\N	42	\N	\N	\N	\N	\N	Poaceae	\N
5147
44	1	\N	\N	\N	44	42	\N	\N	Poaceae	family	\N	\N
5148
46	1	\N	\N	\N	46	41	\N	44	Poa	genus	\N	\N
5149
48	1	\N	\N	\N	48	\N	\N	46	annua	species	\N	\N
5150
58	1	\N	\N	\N	58	\N	\N	48	annua	variety	\N	\N
5151
60	1	http://www.tropicos.org/Name/25517736	\N	Accepted	60	60	\N	58	\N	variety	Poaceae Poa annua var. annua	\N
5152
88	1	\N	\N	\N	88	\N	\N	46	infirma	species	\N	\N
5153
100	1	http://www.tropicos.org/Name/25514158	\N	Accepted	100	100	\N	88	\N	species	Poaceae Poa infirma Kunth	\N
5154
122	2	\N	\N	\N	122	\N	\N	\N	\N	\N	Caryophyllaceae	\N
5155
124	1	\N	\N	\N	124	122	\N	\N	Caryophyllaceae	family	\N	\N
5156
140	1	http://www.tropicos.org/Name/42000077	\N	Accepted	140	140	\N	124	\N	family	Caryophyllaceae Caryophyllaceae Juss.	\N
5157
160	1	\N	\N	\N	160	140	1	\N	\N	\N	Caryophyllaceae	\N
5158
162	2	\N	\N	\N	162	\N	\N	\N	\N	\N	Compositae	\N
5159
164	1	\N	\N	\N	164	162	\N	\N	Compositae	family	\N	\N
5160
180	1	http://www.tropicos.org/Name/50255940	\N	Synonym	20	20	\N	164	\N	family	Compositae Giseke	\N
5161
200	1	\N	\N	\N	200	180	1	\N	\N	\N	Compositae	\N
5162
240	1	\N	\N	\N	240	180	1	\N	indet. sp.1	\N	Compositae indet. sp.1	\N
5163
242	2	\N	\N	\N	242	\N	\N	\N	\N	\N	Fabaceae	\N
5164
244	1	\N	\N	\N	244	242	\N	\N	Fabaceae	family	\N	\N
5165
260	1	http://www.tropicos.org/Name/42000184	\N	Accepted	260	260	\N	244	\N	family	Fabaceae Fabaceae Lindl.	\N
5166
280	1	\N	\N	\N	280	260	1	\N	\N	\N	Fabaceae	\N
5167
320	1	\N	\N	\N	320	260	1	\N	Boyle#6500	\N	Fabaceae Boyle#6500	\N
5168
321	2	\N	\N	\N	321	\N	\N	\N	\N	\N	Inga	\N
5169
326	1	\N	\N	\N	326	321	\N	244	Inga	genus	\N	\N
5170
340	1	http://www.tropicos.org/Name/40031040	\N	Accepted	340	340	\N	326	\N	genus	Fabaceae Inga Mill.	\N
5171
360	1	\N	\N	\N	360	340	1	\N	"fuzzy leaf"	\N	Fabaceae Inga "fuzzy leaf"	\N
5172
400	1	\N	\N	\N	400	340	1	\N	sp.3	\N	Fabaceae Inga sp.3	\N
5173
440	1	\N	\N	\N	440	260	1	\N	unknown #2	\N	Fabaceae unknown #2	\N
5174
480	1	\N	\N	\N	480	340	1	\N	\N	\N	Inga	\N
5175
500	1	http://www.tropicos.org/Name/40012319	\N	Accepted	500	500	\N	46	\N	genus	Poaceae Poa L.	\N
5176
520	1	\N	\N	\N	520	500	1	\N	\N	\N	Poa	\N
5177
540	1	http://www.tropicos.org/Name/25509881	\N	Accepted	540	540	\N	48	\N	species	Poaceae Poa annua L.	\N
5178
560	1	\N	\N	\N	560	540	1	\N	\N	\N	Poa annua	\N
5179
600	1	\N	\N	\N	600	540	1	\N	\N	\N	Poa annua L.	\N
5180
618	1	\N	\N	\N	618	\N	\N	48	lanuginosa	forma	\N	\N
5181
620	1	http://www.tropicos.org/Name/50267771	\N	Synonym	60	60	\N	618	\N	forma	Poaceae Poa annua fo. lanuginosa Sennen	\N
5182
640	1	\N	\N	\N	640	620	1	\N	\N	\N	Poa annua fo. lanuginosa	\N
5183
680	1	\N	\N	\N	680	500	1	\N	annua ssp. exilis	\N	Poa annua ssp. exilis	\N
5184
698	1	\N	\N	\N	698	\N	\N	48	exilis	subspecies	\N	\N
5185
700	1	http://www.tropicos.org/Name/50063800	\N	Synonym	100	100	\N	698	\N	subspecies	Poaceae Poa annua subsp. exilis (Tomm. ex Freyn) Asch. & Graebn.	\N
5186
720	1	\N	\N	\N	720	700	1	\N	\N	\N	Poa annua subsp. exilis	\N
5187
738	1	\N	\N	\N	738	\N	\N	48	minima	subvariety	\N	\N
5188
740	1	http://www.tropicos.org/Name/50158097	\N	Accepted	740	740	\N	738	\N	subvariety	Poaceae Poa annua subvar. minima (Schur) Asch. & Graebn.	\N
5189
760	1	\N	\N	\N	760	740	1	\N	\N	\N	Poa annua subvar. minima	\N
5190
778	1	\N	\N	\N	778	\N	\N	48	eriolepis	variety	\N	\N
5191
780	1	http://www.tropicos.org/Name/50119145	\N	Synonym	540	540	\N	778	\N	variety	Poaceae Poa annua var. eriolepis E. Desv.	\N
5192
800	1	\N	\N	\N	800	780	1	\N	\N	\N	Poa annua var. eriolepis	\N
5193
820	1	http://www.tropicos.org/Name/42000357	\N	Accepted	820	820	\N	44	\N	family	Poaceae Poaceae Barnhart	\N
5194
840	1	\N	\N	\N	840	820	1	\N	\N	\N	Poaceae	\N
5195
841	2	\N	\N	\N	841	\N	\N	\N	\N	\N	Silene	\N
5196
846	1	\N	\N	\N	846	841	\N	124	Silene	genus	\N	\N
5197
860	1	http://www.tropicos.org/Name/40000236	\N	Accepted	860	860	\N	846	\N	genus	Caryophyllaceae Silene L.	\N
5198
880	1	\N	\N	\N	880	860	1	\N	\N	\N	Silene	\N
5199
888	1	\N	\N	\N	888	\N	\N	846	scouleri	species	\N	\N
5200
898	1	\N	\N	\N	898	\N	\N	888	pringlei	subspecies	\N	\N
5201
900	1	http://www.tropicos.org/Name/6303627	\N	Accepted	900	900	\N	898	\N	subspecies	Caryophyllaceae Silene scouleri subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire	\N
5202
920	1	\N	\N	\N	920	900	1	\N	var. grisea	\N	Silene scouleri Hook. subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire var. grisea C.L. Hitchc. & Maguire	\N
5203
960	1	\N	\N	\N	960	900	1	\N	var. grisea	\N	Silene scouleri subsp. pringlei var. grisea C.L. Hitchc. & Maguire	\N
5204
980	1	\N	\N	\N	980	\N	\N	\N	\N	\N	No suitable matches found.	\N
5205
1000	1	\N	\N	\N	1000	\N	\N	\N	\N	\N	Fam_indet. Boyle#6501	\N
5206
1043	54	1	\N	\N	1043	560	\N	\N	\N	\N	Poa annua	\N
5207
1046	54	2	\N	\N	1046	600	\N	\N	\N	\N	Poa annua L.	\N
5208
1049	54	3	\N	\N	1049	800	\N	\N	\N	\N	Poa annua var. eriolepis	\N
5209
1052	54	4	\N	\N	1052	720	\N	\N	\N	\N	Poa annua subsp. exilis	\N
5210
1055	54	5	\N	\N	1055	680	\N	\N	\N	\N	Poa annua ssp. exilis	\N
5211
1058	54	6	\N	\N	1058	760	\N	\N	\N	\N	Poa annua subvar. minima	\N
5212
1061	54	7	\N	\N	1061	640	\N	\N	\N	\N	Poa annua fo. lanuginosa	\N
5213
1064	54	8	\N	\N	1064	960	\N	\N	\N	\N	Silene scouleri subsp. pringlei var. grisea C.L. Hitchc. & Maguire	\N
5214
1067	54	9	\N	\N	1067	920	\N	\N	\N	\N	Silene scouleri Hook. subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire var. grisea C.L. Hitchc. & Maguire	\N
5215
1070	54	10	\N	\N	1070	400	\N	\N	\N	\N	Fabaceae Inga sp.3	\N
5216
1073	54	11	\N	\N	1073	360	\N	\N	\N	\N	Fabaceae Inga "fuzzy leaf"	\N
5217
1076	54	12	\N	\N	1076	440	\N	\N	\N	\N	Fabaceae unknown #2	\N
5218
1079	54	13	\N	\N	1079	320	\N	\N	\N	\N	Fabaceae Boyle#6500	\N
5219
1082	54	14	\N	\N	1082	1000	\N	\N	\N	\N	Fam_indet. Boyle#6501	\N
5220
1085	54	15	\N	\N	1085	240	\N	\N	\N	\N	Compositae indet. sp.1	\N
5384
25	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Poa	\N
5385
26	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Poaceae	\N
5386
28	1	\N	\N	\N	\N	26	\N	\N	Poaceae	family	\N	\N
5387
30	1	\N	\N	\N	\N	25	\N	28	Poa	genus	\N	\N
5388
32	1	\N	\N	\N	\N	\N	\N	30	annua	species	\N	\N
5389
42	1	\N	\N	\N	\N	\N	\N	32	annua	variety	\N	\N
5390
44	1	http://www.tropicos.org/Name/25517736	\N	Accepted	44	44	\N	42	\N	variety	Poaceae Poa annua var. annua	\N
5391
56	1	\N	\N	\N	\N	\N	\N	30	infirma	species	\N	\N
5392
68	1	http://www.tropicos.org/Name/25514158	\N	Accepted	68	68	\N	56	\N	species	Poaceae Poa infirma Kunth	\N
5393
74	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Caryophyllaceae	\N
5394
76	1	\N	\N	\N	\N	74	\N	\N	Caryophyllaceae	family	\N	\N
5395
92	1	http://www.tropicos.org/Name/42000077	\N	Accepted	92	92	\N	76	\N	family	Caryophyllaceae Caryophyllaceae Juss.	\N
5396
96	1	\N	\N	\N	92	92	1	\N	\N	\N	Caryophyllaceae	\N
5397
98	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Compositae	\N
5398
100	1	\N	\N	\N	\N	98	\N	\N	Compositae	family	\N	\N
5399
116	1	http://www.tropicos.org/Name/50255940	\N	Synonym	20	20	\N	100	\N	family	Compositae Giseke	\N
5400
120	1	\N	\N	\N	20	116	1	\N	\N	\N	Compositae	\N
5401
144	1	\N	\N	\N	20	116	1	\N	indet. sp.1	\N	Compositae indet. sp.1	\N
5402
146	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Fabaceae	\N
5403
148	1	\N	\N	\N	\N	146	\N	\N	Fabaceae	family	\N	\N
5404
164	1	http://www.tropicos.org/Name/42000184	\N	Accepted	164	164	\N	148	\N	family	Fabaceae Fabaceae Lindl.	\N
5405
168	1	\N	\N	\N	164	164	1	\N	\N	\N	Fabaceae	\N
5406
192	1	\N	\N	\N	164	164	1	\N	Boyle#6500	\N	Fabaceae Boyle#6500	\N
5407
193	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Inga	\N
5408
198	1	\N	\N	\N	\N	193	\N	148	Inga	genus	\N	\N
5409
212	1	http://www.tropicos.org/Name/40031040	\N	Accepted	212	212	\N	198	\N	genus	Fabaceae Inga Mill.	\N
5410
216	1	\N	\N	\N	212	212	1	\N	"fuzzy leaf"	\N	Fabaceae Inga "fuzzy leaf"	\N
5411
240	1	\N	\N	\N	212	212	1	\N	sp.3	\N	Fabaceae Inga sp.3	\N
5412
264	1	\N	\N	\N	164	164	1	\N	unknown #2	\N	Fabaceae unknown #2	\N
5413
288	1	\N	\N	\N	212	212	1	\N	\N	\N	Inga	\N
5414
308	1	http://www.tropicos.org/Name/40012319	\N	Accepted	308	308	\N	30	\N	genus	Poaceae Poa L.	\N
5415
312	1	\N	\N	\N	308	308	1	\N	\N	\N	Poa	\N
5416
332	1	http://www.tropicos.org/Name/25509881	\N	Accepted	332	332	\N	32	\N	species	Poaceae Poa annua L.	\N
5417
336	1	\N	\N	\N	332	332	1	\N	\N	\N	Poa annua	\N
5418
360	1	\N	\N	\N	332	332	1	\N	\N	\N	Poa annua L.	\N
5419
378	1	\N	\N	\N	\N	\N	\N	32	lanuginosa	forma	\N	\N
5420
380	1	http://www.tropicos.org/Name/50267771	\N	Synonym	44	44	\N	378	\N	forma	Poaceae Poa annua fo. lanuginosa Sennen	\N
5421
384	1	\N	\N	\N	44	380	1	\N	\N	\N	Poa annua fo. lanuginosa	\N
5422
408	1	\N	\N	\N	308	308	1	\N	annua ssp. exilis	\N	Poa annua ssp. exilis	\N
5423
426	1	\N	\N	\N	\N	\N	\N	32	exilis	subspecies	\N	\N
5424
428	1	http://www.tropicos.org/Name/50063800	\N	Synonym	68	68	\N	426	\N	subspecies	Poaceae Poa annua subsp. exilis (Tomm. ex Freyn) Asch. & Graebn.	\N
5425
432	1	\N	\N	\N	68	428	1	\N	\N	\N	Poa annua subsp. exilis	\N
5426
450	1	\N	\N	\N	\N	\N	\N	32	minima	subvariety	\N	\N
5427
452	1	http://www.tropicos.org/Name/50158097	\N	Accepted	452	452	\N	450	\N	subvariety	Poaceae Poa annua subvar. minima (Schur) Asch. & Graebn.	\N
5428
456	1	\N	\N	\N	452	452	1	\N	\N	\N	Poa annua subvar. minima	\N
5429
474	1	\N	\N	\N	\N	\N	\N	32	eriolepis	variety	\N	\N
5430
476	1	http://www.tropicos.org/Name/50119145	\N	Synonym	332	332	\N	474	\N	variety	Poaceae Poa annua var. eriolepis E. Desv.	\N
5431
480	1	\N	\N	\N	332	476	1	\N	\N	\N	Poa annua var. eriolepis	\N
5432
500	1	http://www.tropicos.org/Name/42000357	\N	Accepted	500	500	\N	28	\N	family	Poaceae Poaceae Barnhart	\N
5433
504	1	\N	\N	\N	500	500	1	\N	\N	\N	Poaceae	\N
5434
505	2	\N	\N	\N	\N	\N	\N	\N	\N	\N	Silene	\N
5435
510	1	\N	\N	\N	\N	505	\N	76	Silene	genus	\N	\N
5436
524	1	http://www.tropicos.org/Name/40000236	\N	Accepted	524	524	\N	510	\N	genus	Caryophyllaceae Silene L.	\N
5437
528	1	\N	\N	\N	524	524	1	\N	\N	\N	Silene	\N
5438
536	1	\N	\N	\N	\N	\N	\N	510	scouleri	species	\N	\N
5439
546	1	\N	\N	\N	\N	\N	\N	536	pringlei	subspecies	\N	\N
5440
548	1	http://www.tropicos.org/Name/6303627	\N	Accepted	548	548	\N	546	\N	subspecies	Caryophyllaceae Silene scouleri subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire	\N
5441
552	1	\N	\N	\N	548	548	1	\N	var. grisea	\N	Silene scouleri Hook. subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire var. grisea C.L. Hitchc. & Maguire	\N
5442
576	1	\N	\N	\N	548	548	1	\N	var. grisea	\N	Silene scouleri subsp. pringlei var. grisea C.L. Hitchc. & Maguire	\N
5443
579	51	1	\N	\N	332	336	\N	\N	\N	\N	Poa annua	\N
5444
582	51	2	\N	\N	332	360	\N	\N	\N	\N	Poa annua L.	\N
5445
585	51	3	\N	\N	332	480	\N	\N	\N	\N	Poa annua var. eriolepis	\N
5446
588	51	4	\N	\N	68	432	\N	\N	\N	\N	Poa annua subsp. exilis	\N
5447
591	51	5	\N	\N	308	408	\N	\N	\N	\N	Poa annua ssp. exilis	\N
5448
594	51	6	\N	\N	452	456	\N	\N	\N	\N	Poa annua subvar. minima	\N
5449
597	51	7	\N	\N	44	384	\N	\N	\N	\N	Poa annua fo. lanuginosa	\N
5450
600	51	8	\N	\N	548	576	\N	\N	\N	\N	Silene scouleri subsp. pringlei var. grisea C.L. Hitchc. & Maguire	\N
5451
603	51	9	\N	\N	548	552	\N	\N	\N	\N	Silene scouleri Hook. subsp. pringlei (S. Watson) C.L. Hitchc. & Maguire var. grisea C.L. Hitchc. & Maguire	\N
5452
606	51	10	\N	\N	212	240	\N	\N	\N	\N	Fabaceae Inga sp.3	\N
5453
609	51	11	\N	\N	212	216	\N	\N	\N	\N	Fabaceae Inga "fuzzy leaf"	\N
5454
612	51	12	\N	\N	164	264	\N	\N	\N	\N	Fabaceae unknown #2	\N
5455
615	51	13	\N	\N	164	192	\N	\N	\N	\N	Fabaceae Boyle#6500	\N
5456
616	1	\N	\N	\N	\N	\N	\N	\N	\N	\N	Fam_indet. Boyle#6501	\N
5457
618	51	14	\N	\N	\N	616	\N	\N	\N	\N	Fam_indet. Boyle#6501	\N
5458
621	51	15	\N	\N	20	144	\N	\N	\N	\N	Compositae indet. sp.1	\N
5221 5459
\.
5222 5460

  
5223 5461

  
......
5232 5470
20	20	is included in
5233 5471
20	4	is included in
5234 5472
20	2	is included in
5235
41	41	is included in
5473
25	25	is included in
5474
26	26	is included in
5475
28	28	is included in
5476
28	26	is included in
5477
30	30	is included in
5478
30	28	is included in
5479
30	26	is included in
5480
30	25	is included in
5481
32	32	is included in
5482
32	30	is included in
5483
32	28	is included in
5484
32	26	is included in
5485
32	25	is included in
5236 5486
42	42	is included in
5487
42	32	is included in
5488
42	30	is included in
5489
42	28	is included in
5490
42	26	is included in
5491
42	25	is included in
5237 5492
44	44	is included in
5238 5493
44	42	is included in
5239
46	46	is included in
5240
46	41	is included in
5241
48	48	is included in
5242
48	46	is included in
5243
48	41	is included in
5244
58	58	is included in
5245
58	48	is included in
5246
58	46	is included in
5247
58	41	is included in
5248
60	60	is included in
5249
60	58	is included in
5250
60	48	is included in
5251
60	46	is included in
5252
60	41	is included in
5253
88	88	is included in
5254
88	46	is included in
5255
88	41	is included in
5494
44	32	is included in
5495
44	30	is included in
5496
44	28	is included in
5497
44	26	is included in
5498
44	25	is included in
5499
56	56	is included in
5500
56	30	is included in
5501
56	28	is included in
5502
56	26	is included in
5503
56	25	is included in
5504
68	68	is included in
5505
68	56	is included in
5506
68	30	is included in
5507
68	28	is included in
5508
68	26	is included in
5509
68	25	is included in
5510
74	74	is included in
5511
76	76	is included in
5512
76	74	is included in
5513
92	92	is included in
5514
92	76	is included in
5515
92	74	is included in
5516
96	96	is included in
5517
96	92	is included in
5518
96	76	is included in
5519
96	74	is included in
5520
98	98	is included in
5256 5521
100	100	is included in
5257
100	88	is included in
5258
100	46	is included in
5259
100	41	is included in
5260
122	122	is included in
5261
124	124	is included in
5262
124	122	is included in
5263
140	140	is included in
5264
140	124	is included in
5265
140	122	is included in
5266
160	160	is included in
5267
160	140	is included in
5268
160	124	is included in
5269
160	122	is included in
5270
162	162	is included in
5522
100	98	is included in
5523
116	116	is included in
5524
116	100	is included in
5525
116	98	is included in
5526
116	20	is included in
5527
116	4	is included in
5528
116	2	is included in
5529
120	120	is included in
5530
120	116	is included in
5531
120	100	is included in
5532
120	98	is included in
5533
120	20	is included in
5534
120	4	is included in
5535
120	2	is included in
5536
144	144	is included in
5537
144	116	is included in
5538
144	100	is included in
5539
144	98	is included in
5540
144	20	is included in
5541
144	4	is included in
5542
144	2	is included in
5543
146	146	is included in
5544
148	148	is included in
5545
148	146	is included in
5271 5546
164	164	is included in
5272
164	162	is included in
5273
180	180	is included in
5274
180	20	is included in
5275
180	4	is included in
5276
180	2	is included in
5277
200	200	is included in
5278
200	180	is included in
5279
200	20	is included in
5280
200	4	is included in
5281
200	2	is included in
5547
164	148	is included in
5548
164	146	is included in
5549
168	168	is included in
5550
168	164	is included in
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff