Project

General

Profile

Revision 0f99e0f2

ID0f99e0f2956a192f5c6947a271409e4ef25a0ada
Parent ed06021d
Child ea654742

Added by Andreas Müller over 2 years ago

cleanup

View differences:

cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptionBase.java
64 64
 * </ul>
65 65
 *
66 66
 * @author m.doering
67
 * @version 1.0
68 67
 * @since 08-Nov-2007 13:06:24
69 68
 */
70 69

  
......
104 103
    @XmlIDREF
105 104
    @XmlSchemaType(name="IDREF")
106 105
    @ManyToMany(fetch = FetchType.LAZY)  //FIXME what is the difference between this and IdentifiableEntity.sources
107
    private Set<Reference> descriptionSources = new HashSet<Reference>();
106
    private Set<Reference> descriptionSources = new HashSet<>();
108 107

  
109 108
    @XmlElementWrapper(name = "DescriptiveDataSets")
110 109
    @XmlElement(name = "DescriptiveDataSet")
......
127 126
    @OneToMany(fetch=FetchType.LAZY, mappedBy = "inDescription", orphanRemoval=true)
128 127
    @Cascade( { CascadeType.SAVE_UPDATE, CascadeType.MERGE, CascadeType.DELETE})
129 128
    @ContainedIn
130
    private Set<DescriptionElementBase> descriptionElements = new HashSet<DescriptionElementBase>();
129
    private Set<DescriptionElementBase> descriptionElements = new HashSet<>();
131 130

  
132 131
    @XmlElement(name = "ImageGallery")
133 132
    private boolean imageGallery;
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Synonym.java
82 82
//    @NotNull(groups = Level2.class)
83 83
    private Taxon acceptedTaxon;
84 84

  
85
//
86
//    @XmlElement(name = "IsProParte")
87
//    private boolean proParte = false;
88
//
89
//    @XmlElement(name = "IsPartial")
90
//    private boolean partial = false;
91

  
92

  
93 85
    @XmlElement(name = "Type")
94 86
    @XmlIDREF
95 87
    @XmlSchemaType(name = "IDREF")
......
134 126
	 */
135 127
	//TODO should be private, but still produces Spring init errors
136 128
	public Synonym(){
137
		this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Synonym>();
129
		this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<>();
138 130
	}
139 131

  
140 132
	private Synonym(TaxonName taxonName, Reference sec, String secDetail){
141 133
		super(taxonName, sec, secDetail);
142
		this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<Synonym>();
134
		this.cacheStrategy = new TaxonBaseDefaultCacheStrategy<>();
143 135
	}
144 136

  
145 137
//********************** GETTER/SETTER ******************************/
......
170 162
            checkHomotypic();
171 163
        }
172 164
    }
173
//
174
//    /**
175
//     * Returns "true" if the proParte flag is set.
176
//     * This indicates that the {@link name.TaxonName taxon name} used as a
177
//     * {@link Synonym synonym} designated originally a real taxon which later has
178
//     * been split. In this case the synonym is therefore the synonym of at least
179
//     * two different ("accepted/valid") {@link Taxon taxa}.
180
//     */
181
//    public boolean isProParte() {
182
//        return proParte;
183
//    }
184
//
185
//    /**
186
//     * @see #isProParte()
187
//     */
188
//    public void setProParte(boolean proParte) {
189
//        this.proParte = proParte;
190
//    }
191
//
192
//    /**
193
//     * Returns "true" if the <cod>partial</code> flag is set.
194
//     * This indicates that the {@link name.TaxonName taxon name} used as <code>this</code>
195
//     * {@link Synonym synonym} designated originally a real taxon which later has
196
//     * been lumped together with another one. In this case the
197
//     * ("accepted/valid") {@link Taxon taxon} has therefore at least
198
//     * two different synonyms (for the two lumped real taxa).
199
//     */
200
//    public boolean isPartial() {
201
//        return partial;
202
//    }
203
//
204
//    /**
205
//     * @see #isPartial()
206
//     */
207
//    public void setPartial(boolean partial) {
208
//        this.partial = partial;
209
//    }
210

  
211 165

  
212 166
    public SynonymType getType() {
213 167
        return type;
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonServiceImpl.java
1441 1441
            boolean highlightFragments, Integer pageSize, Integer pageNumber,
1442 1442
            List<OrderHint> orderHints, List<String> propertyPaths) throws IOException, LuceneParseException {
1443 1443

  
1444
        LuceneSearch luceneSearch = prepareFindByFullTextSearch(clazz, queryString, classification, includeUnpublished, languages, highlightFragments, null);
1444
        LuceneSearch luceneSearch = prepareFindByFullTextSearch(clazz, queryString, classification,
1445
                includeUnpublished, languages, highlightFragments, null);
1445 1446

  
1446 1447
        // --- execute search
1447 1448
        TopGroups<BytesRef> topDocsResultSet;
......
1830 1831
                String fromField = "inDescription.taxon.id"; // in DescriptionElementBase index
1831 1832

  
1832 1833
                /*
1833
                 * Here i was facing wired and nasty bug which took me bugging be really for hours until I found this solution.
1834
                 * Here I was facing a weired and nasty bug which took me bugging be really for hours until I found this solution.
1834 1835
                 * Maybe this is a bug in java itself.
1835 1836
                 *
1836 1837
                 * When the string toField is constructed by using the expression TaxonRelationshipType.MISAPPLIED_NAME_FOR().getUuid().toString()
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/search/QueryFactory.java
260 260

  
261 261
        Builder uuidInQueryBuilder = new Builder();
262 262
        if(entities != null && entities.size() > 0 ){
263
            for(IdentifiableEntity entity : entities){
263
            for(IdentifiableEntity<?> entity : entities){
264 264
                uuidInQueryBuilder.add(newEntityUuidQuery(uuidFieldName, entity), Occur.SHOULD);
265 265
            }
266 266
        }
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/search/SearchResult.java
21 21

  
22 22
    private T entity;
23 23

  
24
    public SearchResult() {}
25

  
24 26
    public T getEntity() {
25 27
        return entity;
26 28
    }
27

  
28 29
    public void setEntity(T entity) {
29 30
        this.entity = entity;
30 31
    }
31 32

  
32
    public SearchResult() {
33
    @Override
34
    public String toString() {
35
        return "SearchResult [entity=" + entity + "]";
33 36
    }
34 37

  
35 38
}
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.java
87 87

  
88 88
    private static Logger logger = Logger.getLogger(TaxonServiceSearchTest.class);
89 89

  
90
    private static final String ABIES_BALSAMEA_UUID = "f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8";
91
    private static final String ABIES_ALBA_UUID = "7dbd5810-a3e5-44b6-b563-25152b8867f4";
92
    private static final String CLASSIFICATION_UUID = "2a5ceebb-4830-4524-b330-78461bf8cb6b";
93
    private static final String CLASSIFICATION_ALT_UUID = "d7c741e3-ae9e-4a7d-a566-9e3a7a0b51ce";
94
    private static final String D_ABIES_BALSAMEA_UUID = "900108d8-e6ce-495e-b32e-7aad3099135e";
95
    private static final String D_ABIES_ALBA_UUID = "ec8bba03-d993-4c85-8472-18b14942464b";
96
    private static final String D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID = "e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1";
90
    private static final UUID ABIES_BALSAMEA_UUID = UUID.fromString("f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8");
91
    private static final UUID ABIES_ALBA_UUID = UUID.fromString("7dbd5810-a3e5-44b6-b563-25152b8867f4");
92
    private static final UUID CLASSIFICATION_UUID = UUID.fromString("2a5ceebb-4830-4524-b330-78461bf8cb6b");
93
    private static final UUID CLASSIFICATION_ALT_UUID = UUID.fromString("d7c741e3-ae9e-4a7d-a566-9e3a7a0b51ce");
94
    private static final UUID D_ABIES_BALSAMEA_UUID = UUID.fromString("900108d8-e6ce-495e-b32e-7aad3099135e");
95
    private static final UUID D_ABIES_ALBA_UUID = UUID.fromString("ec8bba03-d993-4c85-8472-18b14942464b");
96
    private static final UUID D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID = UUID.fromString("e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1");
97
    private static final UUID ABIES_SUBALPINA_UUID = UUID.fromString("9fee273c-c819-4f1f-913a-cd910465df51");
98

  
97 99
    private static final int NUM_OF_NEW_RADOM_ENTITIES = 1000;
100

  
98 101
    private boolean includeUnpublished = true;
99 102

  
100 103

  
......
240 243
    public final void testFindByDescriptionElementFullText_TooManyClauses() throws IOException, LuceneParseException {
241 244

  
242 245
        // generate 1024 terms to reproduce the bug
243
        TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));
246
        TaxonDescription description = (TaxonDescription) descriptionService.find(D_ABIES_ALBA_UUID);
244 247
        Set<String> uniqueRandomStrs = new HashSet<>(1024);
245 248
        while(uniqueRandomStrs.size() < 1024){
246 249
            uniqueRandomStrs.add(RandomStringUtils.random(10, true, false));
......
399 402
    @DataSet
400 403
    public final void testFullText_Grouping() throws IOException, LuceneParseException, LuceneMultiSearchException {
401 404

  
402
        TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));
405
        TaxonDescription description = (TaxonDescription) descriptionService.find(D_ABIES_ALBA_UUID);
403 406
        Set<String> uniqueRandomStrs = new HashSet<>(1024);
404 407
        int numOfItems = 100;
405 408
        while(uniqueRandomStrs.size() < numOfItems){
......
580 583

  
581 584
        refreshLuceneIndex();
582 585

  
583
        Taxon t_abies_balsamea = (Taxon)taxonService.find(UUID.fromString(ABIES_BALSAMEA_UUID));
584
        TaxonDescription d_abies_balsamea = (TaxonDescription)descriptionService.find(UUID.fromString(D_ABIES_BALSAMEA_UUID));
586
        Taxon t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);
587
        TaxonDescription d_abies_balsamea = (TaxonDescription)descriptionService.find(D_ABIES_BALSAMEA_UUID);
585 588

  
586 589
        Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);
587 590
        Assert.assertEquals("expecting to find the GERMAN 'Balsam-Tanne'", 1, pager.getCount().intValue());
......
630 633
        refreshLuceneIndex();
631 634

  
632 635
        // put taxon into other classification, new taxon node
633
        Classification classification = classificationService.find(UUID.fromString(CLASSIFICATION_UUID));
634
        Classification alternateClassification = classificationService.find(UUID.fromString(CLASSIFICATION_ALT_UUID));
636
        Classification classification = classificationService.find(CLASSIFICATION_UUID);
637
        Classification alternateClassification = classificationService.find(CLASSIFICATION_ALT_UUID);
635 638

  
636 639
        // TODO: why is the test failing when the childNode is already retrieved here, and not after the following four lines?
637 640
        //TaxonNode childNode = classification.getChildNodes().iterator().next();
......
643 646

  
644 647
        // check for the right taxon node
645 648
        TaxonNode childNode = classification.getChildNodes().iterator().next();
646
        Assert.assertEquals("expecting Abies balsamea sec.", childNode.getTaxon().getUuid().toString(), ABIES_BALSAMEA_UUID);
647
        Assert.assertEquals("expecting default classification", childNode.getClassification().getUuid().toString(), CLASSIFICATION_UUID);
649
        Assert.assertEquals("expecting Abies balsamea sec.", childNode.getTaxon().getUuid(), ABIES_BALSAMEA_UUID);
650
        Assert.assertEquals("expecting default classification", childNode.getClassification().getUuid(), CLASSIFICATION_UUID);
648 651

  
649 652
        // moving the taxon around, the rootnode is only a proxy
650 653
        alternateClassification.setRootNode(HibernateProxyHelper.deproxy(alternateClassification.getRootNode(), TaxonNode.class));
......
658 661
//        });
659 662

  
660 663
        // reload classification
661
        classification = classificationService.find(UUID.fromString(CLASSIFICATION_UUID));
664
        classification = classificationService.find(CLASSIFICATION_UUID);
662 665
        pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", alternateClassification, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);
663 666
        Assert.assertEquals("GERMAN 'Balsam-Tanne' should now be found in other classification", 1, pager.getCount().intValue());
664 667

  
......
677 680
    public final void testFindByDescriptionElementFullText_CategoricalData() throws IOException, LuceneParseException {
678 681

  
679 682
        // add CategoricalData
680
        DescriptionBase d_abies_balsamea = descriptionService.find(UUID.fromString(D_ABIES_BALSAMEA_UUID));
683
        DescriptionBase d_abies_balsamea = descriptionService.find(D_ABIES_BALSAMEA_UUID);
681 684
        // Categorical data
682 685
        CategoricalData cdata = CategoricalData.NewInstance();
683 686
        cdata.setFeature(Feature.DESCRIPTION());
......
768 771

  
769 772
        refreshLuceneIndex();
770 773

  
771
        classificationService.find(UUID.fromString(CLASSIFICATION_UUID));
774
        classificationService.find(CLASSIFICATION_UUID);
772 775

  
773 776
        boolean NO_UNPUBLISHED = false;
774 777

  
......
1023 1026

  
1024 1027

  
1025 1028
        // 1. remove existing taxon relation
1026
        Taxon t_abies_balsamea = (Taxon)taxonService.find(UUID.fromString(ABIES_BALSAMEA_UUID));
1029
        Taxon t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);
1027 1030
        Set<TaxonRelationship> relsTo = t_abies_balsamea.getRelationsToThisTaxon();
1028 1031
        Assert.assertEquals(1, relsTo.size());
1029 1032
        TaxonRelationship taxonRelation = relsTo.iterator().next();
......
1037 1040
        Assert.assertEquals("misappliedNames with matching area & status filter, should match nothing now", 0, pager.getCount().intValue());
1038 1041

  
1039 1042
        // 2. now add abies_kawakamii_sensu_komarov as misapplied name for t_abies_alba and search for misapplications in russia: ABSENT
1040
        Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(UUID.fromString(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));
1041
        Taxon t_abies_alba = (Taxon)taxonService.find(UUID.fromString(ABIES_ALBA_UUID));
1043
        Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);
1044
        Taxon t_abies_alba = (Taxon)taxonService.find(ABIES_ALBA_UUID);
1042 1045
        t_abies_alba.addMisappliedName(t_abies_kawakamii_sensu_komarov, null, null);
1043 1046

  
1044 1047
        taxonService.update(t_abies_kawakamii_sensu_komarov);
......
1066 1069
        Set<PresenceAbsenceTerm> absent = new HashSet<>();
1067 1070
        absent.add(PresenceAbsenceTerm.ABSENT());
1068 1071

  
1069
        Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(UUID.fromString(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));
1070
        Taxon t_abies_alba = (Taxon)taxonService.find(UUID.fromString(ABIES_ALBA_UUID));
1072
        Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);
1073
        Taxon t_abies_alba = (Taxon)taxonService.find(ABIES_ALBA_UUID);
1071 1074
        t_abies_alba.addMisappliedName(t_abies_kawakamii_sensu_komarov, null, null);
1072 1075

  
1073 1076
        /* Since the upgrade from hibernate search 4 to 5.5
......
1078 1081
         */
1079 1082
        taxonService.update(t_abies_alba);
1080 1083

  
1081
          commitAndStartNewTransaction(null);
1084
        commitAndStartNewTransaction(null);
1082 1085

  
1083
          Pager pager = taxonService.findTaxaAndNamesByFullText(
1086
        Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(
1084 1087
                  EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),
1085 1088
                  "Abies", null, a_germany_canada_russia, absent, null, true, null, null, null, null);
1086
          Assert.assertEquals("misappliedNames with matching area & status filter, should find one", 1, pager.getCount().intValue());
1089
        Assert.assertEquals("misappliedNames with matching area & status filter, should find one", 1, pager.getCount().intValue());
1087 1090
    }
1088 1091

  
1089 1092

  
......
1112 1115
        Assert.assertEquals("Expecting one entity when searching for area 'present'", 1, pager.getCount().intValue());
1113 1116
        Assert.assertNotNull("Expecting entity", pager.getRecords().get(0).getEntity());
1114 1117
        Assert.assertEquals("Expecting Taxon entity", Taxon.class, CdmBase.deproxy(pager.getRecords().get(0).getEntity()).getClass());
1115
        Assert.assertEquals("Expecting Taxon ", ABIES_BALSAMEA_UUID, pager.getRecords().get(0).getEntity().getUuid().toString());
1118
        Assert.assertEquals("Expecting Taxon ", ABIES_BALSAMEA_UUID, pager.getRecords().get(0).getEntity().getUuid());
1116 1119

  
1117 1120
    }
1118 1121

  
......
1228 1231
    public final void createTestDataSet() throws FileNotFoundException {
1229 1232

  
1230 1233
        Classification europeanAbiesClassification = Classification.NewInstance("European Abies");
1231
        europeanAbiesClassification.setUuid(UUID.fromString(CLASSIFICATION_UUID));
1234
        europeanAbiesClassification.setUuid(CLASSIFICATION_UUID);
1232 1235
        classificationService.save(europeanAbiesClassification);
1233 1236

  
1234 1237
        Classification alternativeClassification = Classification.NewInstance("Abies alternative");
1235
        alternativeClassification.setUuid(UUID.fromString(CLASSIFICATION_ALT_UUID));
1238
        alternativeClassification.setUuid(CLASSIFICATION_ALT_UUID);
1236 1239
        classificationService.save(alternativeClassification);
1237 1240

  
1238 1241
        Reference sec = ReferenceFactory.newBook();
......
1250 1253
        IBotanicalName n_abies_alba = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
1251 1254
        n_abies_alba.setNameCache("Abies alba", true);
1252 1255
        Taxon t_abies_alba = Taxon.NewInstance(n_abies_alba, sec);
1253
        t_abies_alba.setUuid(UUID.fromString(ABIES_ALBA_UUID));
1256
        t_abies_alba.setUuid(ABIES_ALBA_UUID);
1254 1257
        taxonService.save(t_abies_alba);
1255 1258

  
1256 1259
        IBotanicalName n_abies_subalpina = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
......
1261 1264
        IBotanicalName n_abies_balsamea = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
1262 1265
        n_abies_balsamea.setNameCache("Abies balsamea", true);
1263 1266
        Taxon t_abies_balsamea = Taxon.NewInstance(n_abies_balsamea, sec);
1264
        t_abies_balsamea.setUuid(UUID.fromString(ABIES_BALSAMEA_UUID));
1267
        t_abies_balsamea.setUuid(ABIES_BALSAMEA_UUID);
1265 1268
        t_abies_balsamea.addSynonym(s_abies_subalpina, SynonymType.SYNONYM_OF());
1266 1269
        taxonService.save(t_abies_balsamea);
1267 1270

  
......
1299 1302
        TaxonDescription d_abies_alba = TaxonDescription.NewInstance(t_abies_alba);
1300 1303
        TaxonDescription d_abies_balsamea = TaxonDescription.NewInstance(t_abies_balsamea);
1301 1304

  
1302
        d_abies_alba.setUuid(UUID.fromString(D_ABIES_ALBA_UUID));
1303
        d_abies_balsamea.setUuid(UUID.fromString(D_ABIES_BALSAMEA_UUID));
1305
        d_abies_alba.setUuid(D_ABIES_ALBA_UUID);
1306
        d_abies_balsamea.setUuid(D_ABIES_BALSAMEA_UUID);
1304 1307

  
1305 1308

  
1306 1309
        // CommonTaxonName
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/TaxonServiceSearchTest.xml
6 6
  <TAXONNODE ID="5002" UUID="bf379dec-349a-4b95-bb02-1d6bf785983b" TREEINDEX="#t5000#5000#5002#" SORTINDEX="0" EXCLUDED="FALSE" UNPLACED="FALSE" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5000" TAXON_ID="5003"/>
7 7
  <TAXONNODE ID="5003" UUID="54f12949-9229-416c-9246-7bbc4d0f77a5" TREEINDEX="#t5001#5001#5003#" SORTINDEX="0" EXCLUDED="FALSE" UNPLACED="FALSE" COUNTCHILDREN="0" CLASSIFICATION_ID="5001" PARENT_ID="5001" TAXON_ID="5007"/>
8 8
  
9
  <TAXONBASE DTYPE="Taxon" ID="5000" UUID="3e72d306-0f83-4d4f-be84-6f85a604a2be" PROTECTEDTITLECACHE="false" TITLECACHE="Abies sec. Kohlbecker, A., Testcase standart views, 2013"             DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5000" SEC_ID="5000"/>
10
  <TAXONBASE DTYPE="Taxon" ID="5001" UUID="7dbd5810-a3e5-44b6-b563-25152b8867f4" PROTECTEDTITLECACHE="false" TITLECACHE="Abies alba sec. Kohlbecker, A., Testcase standart views, 2013"        DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5001" SEC_ID="5000"/>
11
  <TAXONBASE DTYPE="Synonym" ID="5002" UUID="9fee273c-c819-4f1f-913a-cd910465df51" PROTECTEDTITLECACHE="false" TITLECACHE="Abies subalpina sec. Kohlbecker, A., Testcase standart views, 2013" DOUBTFUL="false" publish="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" NAME_ID="5002" SEC_ID="5000" ACCEPTEDTAXON_ID="5003" TYPE_ID="848"/>
12
  <TAXONBASE DTYPE="Taxon" ID="5003" UUID="f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8" PROTECTEDTITLECACHE="false" TITLECACHE="Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013"    DOUBTFUL="false" publish="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5003" SEC_ID="5000"/>
13
  <TAXONBASE DTYPE="Taxon" ID="5004" UUID="ac29eb11-7a53-467c-9745-f201eacbef7a" PROTECTEDTITLECACHE="false" TITLECACHE="Abies grandis sec. Kohlbecker, A., Testcase standart views, 2013"     DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5004" SEC_ID="5000"/>
14
  <TAXONBASE DTYPE="Taxon" ID="5005" UUID="20406365-71a2-4942-a778-6622b9b6aefd" PROTECTEDTITLECACHE="false" TITLECACHE="Abies kawakamii sec. Kohlbecker, A., Testcase standart views, 2013"   DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5005" SEC_ID="5000"/>
15
  <TAXONBASE DTYPE="Taxon" ID="5006" UUID="e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1" PROTECTEDTITLECACHE="false" TITLECACHE="Abies kawakamii sec. Komarov, V. L., Flora SSSR 29"                   DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5005" SEC_ID="5001"/>
16
  <TAXONBASE DTYPE="Taxon" ID="5007" UUID="9ce1fecf-c1ad-4127-be01-85d5d9f847ce" PROTECTEDTITLECACHE="false" TITLECACHE="Abies lasiocarpa sec. Kohlbecker, A., Testcase standart views, 2013"  DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5006" SEC_ID="5000"/>
17
  <TAXONBASE DTYPE="Taxon" ID="5008" UUID="4ee2ad82-e98f-4697-86d4-5982e6a454eb" PROTECTEDTITLECACHE="false" TITLECACHE="Achillea millefolium × Achillea nobilis sec. Maarten  (2014)"         DOUBTFUL="false" publish="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="6009" SEC_ID="5000"/>  
18
  
9
  <TAXONBASE DTYPE="Taxon"   ID="5000" UUID="3e72d306-0f83-4d4f-be84-6f85a604a2be" PROTECTEDTITLECACHE="false" TITLECACHE="Abies sec. Kohlbecker, A., Testcase standart views, 2013"            DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5000" SEC_ID="5000"/>
10
  <TAXONBASE DTYPE="Taxon"   ID="5001" UUID="7dbd5810-a3e5-44b6-b563-25152b8867f4" PROTECTEDTITLECACHE="false" TITLECACHE="Abies alba sec. Kohlbecker, A., Testcase standart views, 2013"       DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5001" SEC_ID="5000"/>
11
  <TAXONBASE DTYPE="Synonym" ID="5002" UUID="9fee273c-c819-4f1f-913a-cd910465df51" PROTECTEDTITLECACHE="false" TITLECACHE="Abies subalpina sec. Kohlbecker, A., Testcase standart views, 2013"  DOUBTFUL="false" publish="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="[null]" NAME_ID="5002" SEC_ID="5000" ACCEPTEDTAXON_ID="5003" TYPE_ID="848"/>
12
  <TAXONBASE DTYPE="Taxon"   ID="5003" UUID="f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8" PROTECTEDTITLECACHE="false" TITLECACHE="Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013"   DOUBTFUL="false" publish="false" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5003" SEC_ID="5000"/>
13
  <TAXONBASE DTYPE="Taxon"   ID="5004" UUID="ac29eb11-7a53-467c-9745-f201eacbef7a" PROTECTEDTITLECACHE="false" TITLECACHE="Abies grandis sec. Kohlbecker, A., Testcase standart views, 2013"    DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5004" SEC_ID="5000"/>
14
  <TAXONBASE DTYPE="Taxon"   ID="5005" UUID="20406365-71a2-4942-a778-6622b9b6aefd" PROTECTEDTITLECACHE="false" TITLECACHE="Abies kawakamii sec. Kohlbecker, A., Testcase standart views, 2013"  DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5005" SEC_ID="5000"/>
15
  <TAXONBASE DTYPE="Taxon"   ID="5006" UUID="e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1" PROTECTEDTITLECACHE="false" TITLECACHE="Abies kawakamii sec. Komarov, V. L., Flora SSSR 29"                  DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5005" SEC_ID="5001"/>
16
  <TAXONBASE DTYPE="Taxon"   ID="5007" UUID="9ce1fecf-c1ad-4127-be01-85d5d9f847ce" PROTECTEDTITLECACHE="false" TITLECACHE="Abies lasiocarpa sec. Kohlbecker, A., Testcase standart views, 2013" DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="5006" SEC_ID="5000"/>
17
  <TAXONBASE DTYPE="Taxon"   ID="5008" UUID="4ee2ad82-e98f-4697-86d4-5982e6a454eb" PROTECTEDTITLECACHE="false" TITLECACHE="Achillea millefolium × Achillea nobilis sec. Maarten  (2014)"        DOUBTFUL="false" publish="true"  USENAMECACHE="false" TAXONSTATUSUNKNOWN="false"  NAME_ID="6009" SEC_ID="5000"/>  
18
    
19 19
  <TAXONNAME NAMETYPE="ICNAFP" ID="5000" UUID="5d27de55-1e77-4dd3-92a2-f887408836ff" PROTECTEDTITLECACHE="false" TITLECACHE="Abies"            FULLTITLECACHE="Abies"            PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Abies"            PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5000" RANK_ID="774" />
20 20
  <TAXONNAME NAMETYPE="ICNAFP" ID="5001" UUID="a418d0cc-cc6e-4e52-9740-9092a99365ff" PROTECTEDTITLECACHE="false" TITLECACHE="Abies alba"       FULLTITLECACHE="Abies alba"       PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Abies alba"       PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5001" RANK_ID="765" />
21 21
  <TAXONNAME NAMETYPE="ICNAFP" ID="5002" UUID="9ca12d79-609e-45f4-b424-ed2a60c93162" PROTECTEDTITLECACHE="false" TITLECACHE="Abies subalpina"  FULLTITLECACHE="Abies subalpina"  PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Abies subalpina"  PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5002" RANK_ID="765" />
......
27 27
  <TAXONNAME NAMETYPE="ICNAFP" ID="6008" UUID="74be4472-feb1-43a1-bdc6-b010e8b1dda0" PROTECTEDTITLECACHE="false" TITLECACHE="Abies borisii-regis"                     FULLTITLECACHE="Abies borisii-regis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Abies" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Abies borisii-regis" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="borisii-regis" TRINOMHYBRID="false" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5006" RANK_ID="765" />
28 28
  <TAXONNAME NAMETYPE="ICNAFP" ID="6009" UUID="c5538605-fe34-4bd6-9cab-afd462036a05" PROTECTEDTITLECACHE="false" TITLECACHE="Achillea millefolium × Achillea nobilis" FULLTITLECACHE="Abies borisii-regis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="true" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="[null]"              PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="true" SPECIFICEPITHET="[null]"        TRINOMHYBRID="false" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" HOMOTYPICALGROUP_ID="5006" RANK_ID="765" />
29 29
  
30
  <TAXONRELATIONSHIP ID="5000" UUID="65b5d706-f454-4345-997e-95a69803baa4" CITATIONMICROREFERENCE="[null]" ORIGINALNAMESTRING="[null]" DOUBTFUL="false" CITATION_ID="[null]" RELATEDFROM_ID="5006" RELATEDTO_ID="5003" TYPE_ID="888"/>
30
  <TAXONRELATIONSHIP ID="5000" UUID="65b5d706-f454-4345-997e-95a69803baa4" DOUBTFUL="false" RELATEDFROM_ID="5006" RELATEDTO_ID="5003" TYPE_ID="888"/>
31 31
  <REFERENCE REFTYPE="BK" ID="5000" UUID="2e47ff29-430c-4c5f-800a-a897441b557e" PROTECTEDTITLECACHE="true" TITLECACHE="Kohlbecker, A., Testcase standart views, 2013" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
32 32
  <REFERENCE REFTYPE="BK" ID="5001" UUID="ddc0f5c2-6768-467e-8a03-8a5794602281" PROTECTEDTITLECACHE="true" TITLECACHE="Komarov, V. L., Flora SSSR 29" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" NOMENCLATURALLYRELEVANT="false" PROTECTEDABBREVTITLECACHE="true" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="[null]" URI="[null]" VOLUME="[null]" AUTHORSHIP_ID="[null]" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
33 33
  <REFERENCE_AUD/>
34
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5000" UUID="c8bef21f-1d2c-47c4-b415-64c38cdbba19" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5000" AREA_ID="664" LANGUAGE_ID="[null]" STATUS_ID="1993" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
35
  <DESCRIPTIONELEMENTBASE DTYPE="TextData"        ID="5001" UUID="6e0411eb-1889-46da-ad94-76bbee3094f9" NAME="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
36
  <DESCRIPTIONELEMENTBASE DTYPE="TextData"        ID="5002" UUID="45dadcf2-ed50-40d9-b3ff-0c34819d2ef5" NAME="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="[null]" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
37
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5003" UUID="331f9689-0157-4291-bc2b-e287f3c3653e" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5000" AREA_ID="705" LANGUAGE_ID="[null]" STATUS_ID="1994" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
38
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5004" UUID="c5d56f14-4826-4165-b638-4cf8c3d4deb2" NAME="Balsam-Tanne" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
39
<!--<DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5010" UUID="eb853c83-3e79-4742-8804-11b223cdaa5e" NAME="Balsam" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>-->
40
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5005" UUID="fc8a41af-e4e7-49e6-8fae-89d215108852" NAME="&#1041;&#1072;&#1083;&#1100;&#1079;&#1072;&#1084; &#1085;&#1100;&#1099;&#1074;" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="229" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
41
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5006" UUID="130db0d0-4d4d-410c-87af-7b904dfa43b6" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5001" AREA_ID="664" LANGUAGE_ID="[null]" STATUS_ID="1993" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
42
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5007" UUID="b01a427a-01c9-4f04-82a5-ca886b7ae6a8" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5001" AREA_ID="566" LANGUAGE_ID="[null]" STATUS_ID="1995" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
43
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5008" UUID="ac13bbfa-f39d-4b9d-bcdb-805311df995c" NAME="Wei&#223;tanne" FEATURE_ID="933" INDESCRIPTION_ID="5001" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
44
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5009" UUID="d936c8a4-e2e8-4844-b22c-73b3247cb7e0" NAME="silver fir" FEATURE_ID="933" INDESCRIPTION_ID="5001" AREA_ID="[null]" LANGUAGE_ID="406" STATUS_ID="[null]" ASSOCIATEDSPECIMENOROBSERVATION_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>
34
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5000" UUID="c8bef21f-1d2c-47c4-b415-64c38cdbba19" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5000" AREA_ID="664"       LANGUAGE_ID="[null]" STATUS_ID="1993"   TAXON2_ID="[null]" />
35
  <DESCRIPTIONELEMENTBASE DTYPE="TextData"        ID="5001" UUID="6e0411eb-1889-46da-ad94-76bbee3094f9" NAME="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]"    LANGUAGE_ID="[null]" STATUS_ID="[null]" TAXON2_ID="[null]" />
36
  <DESCRIPTIONELEMENTBASE DTYPE="TextData"        ID="5002" UUID="45dadcf2-ed50-40d9-b3ff-0c34819d2ef5" NAME="[null]" FEATURE_ID="937" INDESCRIPTION_ID="5000" AREA_ID="[null]"    LANGUAGE_ID="[null]" STATUS_ID="[null]" TAXON2_ID="[null]" />
37
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5003" UUID="331f9689-0157-4291-bc2b-e287f3c3653e" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5000" AREA_ID="705"       LANGUAGE_ID="[null]" STATUS_ID="1994"   TAXON2_ID="[null]" />
38
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5004" UUID="c5d56f14-4826-4165-b638-4cf8c3d4deb2" NAME="Balsam-Tanne" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" TAXON2_ID="[null]" />
39
<!--<DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5010" UUID="eb853c83-3e79-4742-8804-11b223cdaa5e" NAME="Balsam" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" UNIT_ID="[null]" TAXON2_ID="[null]" FORMAT_ID="[null]"/>-->
40
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5005" UUID="fc8a41af-e4e7-49e6-8fae-89d215108852" NAME="&#1041;&#1072;&#1083;&#1100;&#1079;&#1072;&#1084; &#1085;&#1100;&#1099;&#1074;" FEATURE_ID="933" INDESCRIPTION_ID="5000" AREA_ID="[null]" LANGUAGE_ID="229" STATUS_ID="[null]" TAXON2_ID="[null]"/>
41
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5006" UUID="130db0d0-4d4d-410c-87af-7b904dfa43b6" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5001" AREA_ID="664" LANGUAGE_ID="[null]" STATUS_ID="1993" TAXON2_ID="[null]" />
42
  <DESCRIPTIONELEMENTBASE DTYPE="Distribution"    ID="5007" UUID="b01a427a-01c9-4f04-82a5-ca886b7ae6a8" NAME="[null]" FEATURE_ID="923" INDESCRIPTION_ID="5001" AREA_ID="566" LANGUAGE_ID="[null]" STATUS_ID="1995" TAXON2_ID="[null]" />
43
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5008" UUID="ac13bbfa-f39d-4b9d-bcdb-805311df995c" NAME="Wei&#223;tanne" FEATURE_ID="933" INDESCRIPTION_ID="5001" AREA_ID="[null]" LANGUAGE_ID="349" STATUS_ID="[null]" TAXON2_ID="[null]" />
44
  <DESCRIPTIONELEMENTBASE DTYPE="CommonTaxonName" ID="5009" UUID="d936c8a4-e2e8-4844-b22c-73b3247cb7e0" NAME="silver fir" FEATURE_ID="933" INDESCRIPTION_ID="5001" AREA_ID="[null]" LANGUAGE_ID="406" STATUS_ID="[null]" TAXON2_ID="[null]" />
45 45
  <DESCRIPTIONELEMENTBASE_AUD/>
46 46
  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5000" UUID="900108d8-e6ce-495e-b32e-7aad3099135e" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon description for Abies balsamea" IMAGEGALLERY="false" ISDEFAULT="false" TAXON_ID="5003"/>
47 47
  <DESCRIPTIONBASE DTYPE="TaxonDescription" ID="5001" UUID="ec8bba03-d993-4c85-8472-18b14942464b" PROTECTEDTITLECACHE="false" TITLECACHE="Taxon description for Abies alba"     IMAGEGALLERY="false" ISDEFAULT="false" TAXON_ID="5001"/>

Also available in: Unified diff

Add picture from clipboard (Maximum size: 40 MB)