biodiversity19 1.0.22 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +3 -0
- data/Gemfile +1 -3
- data/Gemfile.lock +8 -14
- data/VERSION +1 -1
- data/lib/biodiversity/parser.rb +12 -7
- data/lib/biodiversity/parser/scientific_name_canonical.treetop +2 -0
- data/lib/biodiversity/parser/scientific_name_clean.treetop +219 -46
- data/lib/biodiversity/parser/scientific_name_dirty.treetop +36 -36
- data/spec/parser/scientific_name_clean.spec.rb +29 -2
- data/spec/parser/scientific_name_dirty.spec.rb +0 -2
- data/spec/parser/test_data.txt +48 -16
- data/spec/parser/todo.txt +2 -0
- metadata +3 -3
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
archive-tar-minitar (0.5.2)
|
5
4
|
columnize (0.3.6)
|
5
|
+
debugger (1.2.1)
|
6
|
+
columnize (>= 0.3.1)
|
7
|
+
debugger-linecache (~> 1.1.1)
|
8
|
+
debugger-ruby_core_source (~> 1.1.4)
|
9
|
+
debugger-linecache (1.1.2)
|
10
|
+
debugger-ruby_core_source (>= 1.1.1)
|
11
|
+
debugger-ruby_core_source (1.1.4)
|
6
12
|
diff-lcs (1.1.3)
|
7
13
|
git (1.2.5)
|
8
14
|
jeweler (1.8.4)
|
@@ -11,8 +17,6 @@ GEM
|
|
11
17
|
rake
|
12
18
|
rdoc
|
13
19
|
json (1.7.5)
|
14
|
-
linecache19 (0.5.12)
|
15
|
-
ruby_core_source (>= 0.1.4)
|
16
20
|
parallel (0.5.18)
|
17
21
|
polyglot (0.3.3)
|
18
22
|
rake (0.9.2.2)
|
@@ -26,16 +30,6 @@ GEM
|
|
26
30
|
rspec-expectations (2.11.2)
|
27
31
|
diff-lcs (~> 1.1.3)
|
28
32
|
rspec-mocks (2.11.2)
|
29
|
-
ruby-debug-base19 (0.11.25)
|
30
|
-
columnize (>= 0.3.1)
|
31
|
-
linecache19 (>= 0.5.11)
|
32
|
-
ruby_core_source (>= 0.1.4)
|
33
|
-
ruby-debug19 (0.11.6)
|
34
|
-
columnize (>= 0.3.1)
|
35
|
-
linecache19 (>= 0.5.11)
|
36
|
-
ruby-debug-base19 (>= 0.11.19)
|
37
|
-
ruby_core_source (0.1.5)
|
38
|
-
archive-tar-minitar (>= 0.5.2)
|
39
33
|
treetop (1.4.10)
|
40
34
|
polyglot
|
41
35
|
polyglot (>= 0.3.1)
|
@@ -44,8 +38,8 @@ PLATFORMS
|
|
44
38
|
ruby
|
45
39
|
|
46
40
|
DEPENDENCIES
|
41
|
+
debugger
|
47
42
|
jeweler
|
48
43
|
parallel
|
49
44
|
rspec
|
50
|
-
ruby-debug19
|
51
45
|
treetop
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0
|
1
|
+
1.1.0
|
data/lib/biodiversity/parser.rb
CHANGED
@@ -12,17 +12,12 @@ module PreProcessor
|
|
12
12
|
TAXON_CONCEPTS2 = /\s+(\(?s\.\s?s\.|\(?s\.\s?l\.|\(?s\.\s?str\.|\(?s\.\s?lat\.|sec\.|sec|near)\b.*$/
|
13
13
|
TAXON_CONCEPTS3 = /(,\s*|\s+)(pro parte|p\.\s?p\.)\s*$/i
|
14
14
|
NOMEN_CONCEPTS = /(,\s*|\s+)(\(?nomen|\(?nom\.|\(?comb\.).*$/i
|
15
|
-
COMPARATORS = /\s+(aff\.|aff)\b.*$/i
|
16
|
-
CF_COMPARATOR = /\s+(cf\.|cf)\s+/i
|
17
15
|
LAST_WORD_JUNK = /(,\s*|\s+)(spp\.|spp|var\.|var|von|van|sensu|new|non|nec|cf\.|cf|sp\.|sp|ssp\.|ssp|subsp|subgen|hybrid|hort\.|hort)\s*$/i
|
18
16
|
|
19
17
|
def self.clean(a_string)
|
20
|
-
[NOTES, TAXON_CONCEPTS1, TAXON_CONCEPTS2, TAXON_CONCEPTS3, NOMEN_CONCEPTS,
|
18
|
+
[NOTES, TAXON_CONCEPTS1, TAXON_CONCEPTS2, TAXON_CONCEPTS3, NOMEN_CONCEPTS, LAST_WORD_JUNK].each do |i|
|
21
19
|
a_string = a_string.gsub(i, '')
|
22
20
|
end
|
23
|
-
[CF_COMPARATOR].each do |i|
|
24
|
-
a_string = a_string.gsub(i, ' ')
|
25
|
-
end
|
26
21
|
a_string = a_string.tr('ſ','s') #old 's'
|
27
22
|
a_string
|
28
23
|
end
|
@@ -100,7 +95,17 @@ class ScientificNameParser
|
|
100
95
|
elsif unknown_placement?(a_string)
|
101
96
|
@parsed = { :verbatim => a_string }
|
102
97
|
else
|
103
|
-
|
98
|
+
begin
|
99
|
+
@parsed = @clean.parse(a_string) || @dirty.parse(a_string)
|
100
|
+
unless @parsed
|
101
|
+
index = @dirty.index || @clean.index
|
102
|
+
salvage_match = a_string[0..index].match(/(.*[^,|\s]+)[,|\s]?\b.+$/)
|
103
|
+
salvage_string = salvage_match ? salvage_match[1] : a_string
|
104
|
+
@parsed = @dirty.parse(salvage_string) || @canonical.parse(a_string) || { :verbatim => a_string }
|
105
|
+
end
|
106
|
+
rescue
|
107
|
+
@parsed = {:scientificName => {:parsed => false, :verbatim => name, :error => 'Parser error'}}
|
108
|
+
end
|
104
109
|
end
|
105
110
|
|
106
111
|
def @parsed.verbatim=(a_string)
|
@@ -178,6 +178,8 @@ grammar ScientificNameClean
|
|
178
178
|
end
|
179
179
|
|
180
180
|
rule scientific_name_1
|
181
|
+
multiuninomial_name
|
182
|
+
/
|
181
183
|
multinomial_name
|
182
184
|
/
|
183
185
|
uninomial_name
|
@@ -209,10 +211,34 @@ grammar ScientificNameClean
|
|
209
211
|
#/
|
210
212
|
#latin_word
|
211
213
|
end
|
212
|
-
|
214
|
+
|
215
|
+
rule unparsed
|
216
|
+
.+ space {
|
217
|
+
|
218
|
+
def value
|
219
|
+
''
|
220
|
+
end
|
221
|
+
|
222
|
+
def hybrid
|
223
|
+
false
|
224
|
+
end
|
225
|
+
|
226
|
+
def canonical
|
227
|
+
''
|
228
|
+
end
|
229
|
+
|
230
|
+
def pos
|
231
|
+
{interval.begin => ['unparsed', interval.end]}
|
232
|
+
end
|
233
|
+
|
234
|
+
def details
|
235
|
+
{:unparsed => text_value}
|
236
|
+
end
|
237
|
+
}
|
238
|
+
end
|
213
239
|
|
214
240
|
rule multinomial_name
|
215
|
-
a:genus space b:infragenus space
|
241
|
+
a:genus space b:infragenus space aid:annotation_identification? space c:species space_hard d:infraspecies_mult {
|
216
242
|
def value
|
217
243
|
a.value + " " + b.value + " " + c.value + " " + d.value
|
218
244
|
end
|
@@ -234,17 +260,29 @@ grammar ScientificNameClean
|
|
234
260
|
end
|
235
261
|
}
|
236
262
|
/
|
237
|
-
a:genus space b:infragenus space
|
263
|
+
a:genus space b:infragenus space aid:annotation_identification? space c:species {
|
238
264
|
def value
|
239
|
-
|
265
|
+
if defined? aid.apply
|
266
|
+
a.value + " " + b.value + aid.apply(c)
|
267
|
+
else
|
268
|
+
a.value + " " + b.value + " " + c.value
|
269
|
+
end
|
240
270
|
end
|
241
271
|
|
242
272
|
def canonical
|
243
|
-
|
273
|
+
if defined? aid.apply
|
274
|
+
a.canonical + aid.canonical(c)
|
275
|
+
else
|
276
|
+
a.canonical + " " + c.canonical
|
277
|
+
end
|
244
278
|
end
|
245
279
|
|
246
280
|
def pos
|
247
|
-
|
281
|
+
if defined? aid.apply
|
282
|
+
a.pos.merge(b.pos).merge(aid.pos(c))
|
283
|
+
else
|
284
|
+
a.pos.merge(b.pos).merge(c.pos)
|
285
|
+
end
|
248
286
|
end
|
249
287
|
|
250
288
|
def hybrid
|
@@ -252,11 +290,15 @@ grammar ScientificNameClean
|
|
252
290
|
end
|
253
291
|
|
254
292
|
def details
|
255
|
-
|
293
|
+
if defined? aid.apply
|
294
|
+
a.details.merge(b.details).merge(aid.apply(c))
|
295
|
+
else
|
296
|
+
a.details.merge(b.details).merge(c.details)
|
297
|
+
end
|
256
298
|
end
|
257
299
|
}
|
258
300
|
/
|
259
|
-
a:genus space
|
301
|
+
a:genus space aid:annotation_identification? space b:species space_hard c:infraspecies_mult {
|
260
302
|
def value
|
261
303
|
a.value + " " + b.value + " " + c.value
|
262
304
|
end
|
@@ -278,17 +320,29 @@ grammar ScientificNameClean
|
|
278
320
|
end
|
279
321
|
}
|
280
322
|
/
|
281
|
-
a:genus space
|
323
|
+
a:genus space aid:annotation_identification? space b:species {
|
282
324
|
def value
|
283
|
-
|
325
|
+
if defined? aid.apply
|
326
|
+
a.value + aid.apply(b)
|
327
|
+
else
|
328
|
+
a.value + " " + b.value
|
329
|
+
end
|
284
330
|
end
|
285
331
|
|
286
332
|
def canonical
|
287
|
-
|
333
|
+
if defined? aid.apply
|
334
|
+
a.canonical + aid.canonical(b)
|
335
|
+
else
|
336
|
+
a.canonical + " " + b.canonical
|
337
|
+
end
|
288
338
|
end
|
289
339
|
|
290
340
|
def pos
|
291
|
-
|
341
|
+
if defined? aid.apply
|
342
|
+
a.pos.merge(aid.pos(b))
|
343
|
+
else
|
344
|
+
a.pos.merge(b.pos)
|
345
|
+
end
|
292
346
|
end
|
293
347
|
|
294
348
|
def hybrid
|
@@ -296,7 +350,58 @@ grammar ScientificNameClean
|
|
296
350
|
end
|
297
351
|
|
298
352
|
def details
|
299
|
-
|
353
|
+
if defined? aid.apply
|
354
|
+
a.details.merge(aid.details(b))
|
355
|
+
else
|
356
|
+
a.details.merge(b.details)
|
357
|
+
end
|
358
|
+
end
|
359
|
+
}
|
360
|
+
/
|
361
|
+
a:genus space aid:annotation_identification space b:unparsed {
|
362
|
+
def value
|
363
|
+
a.value + aid.apply(b)
|
364
|
+
end
|
365
|
+
|
366
|
+
def canonical
|
367
|
+
a.canonical + aid.canonical(b)
|
368
|
+
end
|
369
|
+
|
370
|
+
def pos
|
371
|
+
a.pos.merge(aid.pos(b))
|
372
|
+
end
|
373
|
+
|
374
|
+
def hybrid
|
375
|
+
false
|
376
|
+
end
|
377
|
+
|
378
|
+
def details
|
379
|
+
a.details.merge(aid.details(b))
|
380
|
+
end
|
381
|
+
}
|
382
|
+
end
|
383
|
+
|
384
|
+
rule multiuninomial_name
|
385
|
+
a:uninomial_name space b:rank_uninomial space c:uninomial_name {
|
386
|
+
|
387
|
+
def value
|
388
|
+
a.value + " " + b.value + " " + c.value
|
389
|
+
end
|
390
|
+
|
391
|
+
def canonical
|
392
|
+
a.canonical
|
393
|
+
end
|
394
|
+
|
395
|
+
def hybrid
|
396
|
+
false
|
397
|
+
end
|
398
|
+
|
399
|
+
def pos
|
400
|
+
a.pos.merge(b.pos(c))
|
401
|
+
end
|
402
|
+
|
403
|
+
def details
|
404
|
+
a.details.merge(b.details(c))
|
300
405
|
end
|
301
406
|
}
|
302
407
|
end
|
@@ -324,7 +429,11 @@ grammar ScientificNameClean
|
|
324
429
|
/
|
325
430
|
infraspecies {
|
326
431
|
def details
|
327
|
-
|
432
|
+
if super[:annotation_identification]
|
433
|
+
{:infraspecies => [{:annotation_identification => super[:annotation_identification], :ignored => super[:ignored]}]}
|
434
|
+
else
|
435
|
+
{:infraspecies => [super[:infraspecies]]}
|
436
|
+
end
|
328
437
|
end
|
329
438
|
}
|
330
439
|
end
|
@@ -352,7 +461,7 @@ grammar ScientificNameClean
|
|
352
461
|
end
|
353
462
|
|
354
463
|
rule infraspecies_string
|
355
|
-
sel:rank
|
464
|
+
sel:rank space a:species_word {
|
356
465
|
def value
|
357
466
|
sel.apply(a)
|
358
467
|
end
|
@@ -369,6 +478,30 @@ grammar ScientificNameClean
|
|
369
478
|
end
|
370
479
|
}
|
371
480
|
/
|
481
|
+
aid:annotation_identification space a:species_word ![\.] {
|
482
|
+
def value
|
483
|
+
aid.apply(a)
|
484
|
+
end
|
485
|
+
|
486
|
+
def canonical
|
487
|
+
aid.canonical(a)
|
488
|
+
end
|
489
|
+
|
490
|
+
def pos
|
491
|
+
def a.pos
|
492
|
+
{interval.begin => ['infraspecies', a.interval.end]}
|
493
|
+
end
|
494
|
+
aid.pos(a)
|
495
|
+
end
|
496
|
+
|
497
|
+
def details
|
498
|
+
def a.details
|
499
|
+
{:infraspecies => {:string => value, :rank => 'n/a'}}
|
500
|
+
end
|
501
|
+
aid.details(a)
|
502
|
+
end
|
503
|
+
}
|
504
|
+
/
|
372
505
|
a:species_word ![\.] {
|
373
506
|
def value
|
374
507
|
a.value
|
@@ -403,14 +536,14 @@ grammar ScientificNameClean
|
|
403
536
|
end
|
404
537
|
|
405
538
|
rule rank
|
406
|
-
("morph."/"f.sp."/"B"/"ssp."/"ssp"/"mut."/"nat"/"nothosubsp."/"convar."/"pseudovar."/"sect."/"ser."/"var."/"subvar."/ "[var.]" /"var"/"subsp."/"subsp"/"subf."/"race"/"forma"/"form."/"form"/"fo."/"f."/"α"/"ββ"/"β"/"γ"/"δ"/"ε"/"φ"/"θ"/"μ"/"a."/"b."/"c."/"d."/"e."/"g."/"k."/"****"/"**"/"*")
|
539
|
+
("morph."/"f.sp."/"B "/"ssp."/"ssp "/"mut."/"nat "/"nothosubsp."/"convar."/"pseudovar."/"sect."/"ser."/"var."/"subvar."/ "[var.]" /"var "/"subsp."/"subsp "/"subf."/"race "/"forma "/"fma."/"fma "/"form."/"form "/"fo."/"f."/"α"/"ββ"/"β"/"γ"/"δ"/"ε"/"φ"/"θ"/"μ"/"a."/"b."/"c."/"d."/"e."/"g."/"k."/"****"/"**"/"*")
|
407
540
|
{
|
408
541
|
def value
|
409
542
|
text_value.strip
|
410
543
|
end
|
411
544
|
|
412
545
|
def apply(a)
|
413
|
-
" " + text_value + " " + a.value
|
546
|
+
" " + text_value.strip + " " + a.value
|
414
547
|
end
|
415
548
|
|
416
549
|
def canonical(a)
|
@@ -418,11 +551,28 @@ grammar ScientificNameClean
|
|
418
551
|
end
|
419
552
|
|
420
553
|
def pos(a)
|
421
|
-
|
554
|
+
interval_end = text_value[-1] == ' ' ? interval.end - 1 : interval.end
|
555
|
+
{interval.begin => ['infraspecific_type', interval_end], a.interval.begin => ['infraspecies', a.interval.end]}
|
422
556
|
end
|
423
557
|
|
424
558
|
def details(a = nil)
|
425
|
-
{:infraspecies => {:string => (a.value rescue nil), :rank => text_value}}
|
559
|
+
{:infraspecies => {:string => (a.value rescue nil), :rank => text_value.strip}}
|
560
|
+
end
|
561
|
+
}
|
562
|
+
end
|
563
|
+
|
564
|
+
rule rank_uninomial
|
565
|
+
("sect."/"sect "/"subsect."/"subsect "/"trib."/"trib "/"subtrib."/"subtrib "/"fam."/"fam "/"subfam."/"subfam "/"supertrib."/"supertrib ") {
|
566
|
+
def value
|
567
|
+
text_value.strip
|
568
|
+
end
|
569
|
+
|
570
|
+
def pos(uni)
|
571
|
+
{interval.begin => ['rank_uninomial', interval.end], uni.interval.begin => ['uninomial', uni.interval.end]}
|
572
|
+
end
|
573
|
+
|
574
|
+
def details(uni)
|
575
|
+
{:rank_uninomials => value, :uninomial2 => uni.details[:uninomial]}
|
426
576
|
end
|
427
577
|
}
|
428
578
|
end
|
@@ -454,28 +604,6 @@ grammar ScientificNameClean
|
|
454
604
|
end
|
455
605
|
|
456
606
|
rule species_string
|
457
|
-
# a:species_word &(space_hard author_prefix_word space_hard) {
|
458
|
-
# def value
|
459
|
-
# a.value
|
460
|
-
# end
|
461
|
-
#
|
462
|
-
# def canonical
|
463
|
-
# a.value
|
464
|
-
# end
|
465
|
-
#
|
466
|
-
# def hybrid
|
467
|
-
# a.hybrid rescue false
|
468
|
-
# end
|
469
|
-
#
|
470
|
-
# def pos
|
471
|
-
# {a.interval.begin => ['species', a.interval.end]}
|
472
|
-
# end
|
473
|
-
#
|
474
|
-
# def details
|
475
|
-
# {:species => {:string => a.value}}
|
476
|
-
# end
|
477
|
-
# }
|
478
|
-
# /
|
479
607
|
species_word {
|
480
608
|
def canonical
|
481
609
|
value
|
@@ -847,7 +975,7 @@ grammar ScientificNameClean
|
|
847
975
|
|
848
976
|
|
849
977
|
rule unknown_auth
|
850
|
-
("auct."/"auct"/"hort."/"hort"/"anon."/"anon"/"ht."/"ht") {
|
978
|
+
("auct."/"auct"/"hort."/"hort"/"anon."/"anon"/"ht."/"ht") !latin_word {
|
851
979
|
def value
|
852
980
|
text_value
|
853
981
|
end
|
@@ -1130,10 +1258,55 @@ grammar ScientificNameClean
|
|
1130
1258
|
}
|
1131
1259
|
end
|
1132
1260
|
|
1133
|
-
rule
|
1134
|
-
("aff."/"
|
1261
|
+
rule annotation_identification
|
1262
|
+
("sp.aff."/"sp. aff."/"sp."/"sp "/"spp."/"spp "/"aff."/"aff "/"?") {
|
1263
|
+
|
1264
|
+
def value
|
1265
|
+
text_value.strip
|
1266
|
+
end
|
1267
|
+
|
1268
|
+
def apply(sp)
|
1269
|
+
''
|
1270
|
+
end
|
1271
|
+
|
1272
|
+
def canonical(sp)
|
1273
|
+
''
|
1274
|
+
end
|
1275
|
+
|
1276
|
+
def pos(sp)
|
1277
|
+
interval_end = text_value[-1] == ' ' ? interval.end - 1 : interval.end
|
1278
|
+
{interval.begin => ['annotation_identification', interval.end]}
|
1279
|
+
end
|
1280
|
+
|
1281
|
+
def details(sp)
|
1282
|
+
{:annotation_identification => value, :ignored => sp.details}
|
1283
|
+
end
|
1284
|
+
}
|
1285
|
+
/
|
1286
|
+
("cf."/"cf ") {
|
1287
|
+
def value
|
1288
|
+
text_value.strip
|
1289
|
+
end
|
1290
|
+
|
1291
|
+
def apply(sp)
|
1292
|
+
' ' + value + ' ' + sp.value
|
1293
|
+
end
|
1294
|
+
|
1295
|
+
def canonical(sp)
|
1296
|
+
' ' + sp.canonical
|
1297
|
+
end
|
1298
|
+
|
1299
|
+
def pos(sp)
|
1300
|
+
interval_end = text_value[-1] == ' ' ? interval.end - 1 : interval.end
|
1301
|
+
{interval.begin => ['annotation_identification', interval.end]}.merge(sp.pos)
|
1302
|
+
end
|
1303
|
+
|
1304
|
+
def details(sp)
|
1305
|
+
{:annotation_identification => value, :species => sp.details}
|
1306
|
+
end
|
1307
|
+
}
|
1135
1308
|
end
|
1136
|
-
|
1309
|
+
|
1137
1310
|
rule species_word
|
1138
1311
|
a:[0-9]+ "-"? b:latin_word {
|
1139
1312
|
def value
|
@@ -1241,7 +1414,7 @@ grammar ScientificNameClean
|
|
1241
1414
|
end
|
1242
1415
|
|
1243
1416
|
rule year_number
|
1244
|
-
[12] [7890] [0-9] [0-9]
|
1417
|
+
[12] [7890] [0-9] ([0-9] [\?]?/"?") {
|
1245
1418
|
def value
|
1246
1419
|
text_value
|
1247
1420
|
end
|
@@ -92,42 +92,42 @@ grammar ScientificNameDirty
|
|
92
92
|
super
|
93
93
|
end
|
94
94
|
|
95
|
-
rule infraspecies_string
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
end
|
95
|
+
# rule infraspecies_string
|
96
|
+
# sel:rank space_hard a:species_word {
|
97
|
+
# def value
|
98
|
+
# sel.apply(a)
|
99
|
+
# end
|
100
|
+
# def canonical
|
101
|
+
# sel.canonical(a)
|
102
|
+
# end
|
103
|
+
#
|
104
|
+
# def pos
|
105
|
+
# sel.pos(a)
|
106
|
+
# end
|
107
|
+
#
|
108
|
+
# def details
|
109
|
+
# sel.details(a)
|
110
|
+
# end
|
111
|
+
# }
|
112
|
+
# /
|
113
|
+
# a:species_word ![\\.] {
|
114
|
+
# def value
|
115
|
+
# a.value
|
116
|
+
# end
|
117
|
+
#
|
118
|
+
# def canonical
|
119
|
+
# value
|
120
|
+
# end
|
121
|
+
#
|
122
|
+
# def pos
|
123
|
+
# {interval.begin => ['infraspecies', interval.end]}
|
124
|
+
# end
|
125
|
+
#
|
126
|
+
# def details
|
127
|
+
# {:infraspecies => {:string => value, :rank => 'n/a'}}
|
128
|
+
# end
|
129
|
+
# }
|
130
|
+
# end
|
131
131
|
|
132
132
|
rule species
|
133
133
|
a:species_string space b:year {
|
@@ -28,6 +28,12 @@ describe ScientificNameClean do
|
|
28
28
|
details(sn).should == [{:uninomial=>{:string=>"Pseudocercospora", :authorship=>"Spegazzini, 1910", :basionymAuthorTeam=>{:authorTeam=>"Spegazzini", :author=>["Spegazzini"], :year=>"1910"}}}]
|
29
29
|
pos(sn).should == {0=>["uninomial", 16], 17=>["author_word", 27], 29=>["year", 33]}
|
30
30
|
end
|
31
|
+
|
32
|
+
it "should parse uninomials with uninomial ranks" do
|
33
|
+
sn = "Epacridaceae trib. Archerieae Crayn & Quinn"
|
34
|
+
parse(sn).should_not be_nil
|
35
|
+
details(sn).should == [{:uninomial=>{:string=>"Epacridaceae"}, :rank_uninomials=>"trib.", :uninomial2=>{:string=>"Archerieae", :authorship=>"Crayn & Quinn", :basionymAuthorTeam=>{:authorTeam=>"Crayn & Quinn", :author=>["Crayn", "Quinn"]}}}]
|
36
|
+
end
|
31
37
|
|
32
38
|
it 'should parse names with a valid 2 letter genus' do
|
33
39
|
["Ca Dyar 1914",
|
@@ -204,6 +210,23 @@ describe ScientificNameClean do
|
|
204
210
|
parse("Zophosis persis (Chatanay) 1914").should_not be_nil
|
205
211
|
#parse("Zophosis persis Chatanay (1914)").should_not be_nil
|
206
212
|
end
|
213
|
+
|
214
|
+
it "should be able to parse name with identificaation annotation -- aff cf sp spp" do
|
215
|
+
sn = 'Diplocephalus aff. procerus Thaler, 1972'
|
216
|
+
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :annotation_identification=>"aff.", :ignored=>{:species=>{:string=>"procerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}}]
|
217
|
+
sn = 'Diplocephalus aff procerus Thaler, 1972'
|
218
|
+
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :annotation_identification=>"aff", :ignored=>{:species=>{:string=>"procerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}}]
|
219
|
+
sn = 'Diplocephalus affprocerus Thaler, 1972'
|
220
|
+
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :species=>{:string=>"affprocerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}]
|
221
|
+
sn = 'Diplocephalus cf. procerus Thaler, 1972'
|
222
|
+
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :annotation_identification=>"cf.", :species=>{:species=>{:string=>"procerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}}]
|
223
|
+
sn = 'Diplocephalus cf procerus Thaler, 1972'
|
224
|
+
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :annotation_identification=>"cf", :species=>{:species=>{:string=>"procerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}}]
|
225
|
+
sn = 'Sphingomonas sp. 37'
|
226
|
+
details(sn).should == [{:genus=>{:string=>"Sphingomonas"}, :annotation_identification=>"sp.", :ignored=>{:unparsed=>"37"}}]
|
227
|
+
sn = "Thryothorus leucotis spp. bogotensis"
|
228
|
+
details(sn).should == [{:genus=>{:string=>"Thryothorus"}, :species=>{:string=>"leucotis"}, :infraspecies=>[{:annotation_identification=>"spp.", :ignored=>{:infraspecies=>{:string=>"bogotensis", :rank=>"n/a"}}}]}]
|
229
|
+
end
|
207
230
|
|
208
231
|
it 'should parse scientific name' do
|
209
232
|
sn = "Pseudocercospora dendrobii(H.C. Burnett)U. Braun & Crous 2003"
|
@@ -291,6 +314,12 @@ describe ScientificNameClean do
|
|
291
314
|
parse(sn).should_not be_nil
|
292
315
|
pos(sn).should == {0=>["genus", 4], 5=>["species", 10], 11=>["unknown_author", 14]}
|
293
316
|
end
|
317
|
+
|
318
|
+
it 'should parse normal names with hort or anon in them' do
|
319
|
+
sn = "Mus musculus hortulanus"
|
320
|
+
pr = parse(sn).should_not be_nil
|
321
|
+
pos(sn).should == {0=>["genus", 3], 4=>["species", 12], 13=>["infraspecies", 23]}
|
322
|
+
end
|
294
323
|
|
295
324
|
it 'should parse real world examples' do
|
296
325
|
sn = "Stagonospora polyspora M.T. Lucas & Sousa da Câmara 1934"
|
@@ -539,8 +568,6 @@ describe ScientificNameClean do
|
|
539
568
|
parse('Dipoena yoshidai Ono, in Ono et al., 1991').should_not be_nil
|
540
569
|
sn = 'Latrodectus mactans bishopi Kaston, 1938'
|
541
570
|
details(sn).should == [{:genus=>{:string=>"Latrodectus"}, :species=>{:string=>"mactans"}, :infraspecies=>[{:string=>"bishopi", :rank=>"n/a", :authorship=>"Kaston, 1938", :basionymAuthorTeam=>{:authorTeam=>"Kaston", :author=>["Kaston"], :year=>"1938"}}]}]
|
542
|
-
sn = 'Diplocephalus aff. procerus Thaler, 1972'
|
543
|
-
details(sn).should == [{:genus=>{:string=>"Diplocephalus"}, :species=>{:string=>"procerus", :authorship=>"Thaler, 1972", :basionymAuthorTeam=>{:authorTeam=>"Thaler", :author=>["Thaler"], :year=>"1972"}}}]
|
544
571
|
sn = 'Thiobacillus x Parker and Prisk 1953' #have to figure out black lists for this one
|
545
572
|
sn = 'Bacille de Plaut, Kritchevsky and Séguin 1921'
|
546
573
|
details(sn).should == [{:uninomial=>{:string=>"Bacille", :authorship=>"de Plaut, Kritchevsky and Séguin 1921", :basionymAuthorTeam=>{:authorTeam=>"de Plaut, Kritchevsky and Séguin", :author=>["de Plaut", "Kritchevsky", "Séguin"], :year=>"1921"}}}]
|
@@ -76,8 +76,6 @@ describe ScientificNameDirty do
|
|
76
76
|
details(sn).should == [{:genus=>{:string=>"Campylobacter"}, :species=>{:string=>"pyloridis", :authorship=>"Marshall et al.1985.", :basionymAuthorTeam=>{:authorTeam=>"Marshall et al.", :author=>["Marshall et al."], :year=>"1985"}}}]
|
77
77
|
sn = 'Staphylococcus hyicus chromogenes Devriese et al. 1978 (Approved Lists 1980).'
|
78
78
|
details(sn).should == [{:genus=>{:string=>"Staphylococcus"}, :species=>{:string=>"hyicus"}, :infraspecies=>[{:string=>"chromogenes", :rank=>"n/a", :authorship=>"Devriese et al. 1978", :basionymAuthorTeam=>{:authorTeam=>"Devriese et al.", :author=>["Devriese et al."], :year=>"1978"}}]}]
|
79
|
-
sn = 'Kitasatospora corrig. griseola Takahashi et al. 1985.'
|
80
|
-
details(sn).should == [{:genus=>{:string=>"Kitasatospora"}, :species=>{:string=>"griseola", :authorship=>"Takahashi et al. 1985.", :basionymAuthorTeam=>{:authorTeam=>"Takahashi et al.", :author=>["Takahashi et al."], :year=>"1985"}}}]
|
81
79
|
sn = 'Beijerinckia derxii venezuelae corrig. Thompson and Skerman, 1981'
|
82
80
|
details(sn).should == [{:genus=>{:string=>"Beijerinckia"}, :species=>{:string=>"derxii"}, :infraspecies=>[{:string=>"venezuelae", :rank=>"n/a", :authorship=>"Thompson and Skerman, 1981", :basionymAuthorTeam=>{:authorTeam=>"Thompson and Skerman", :author=>["Thompson", "Skerman"], :year=>"1981"}}]}]
|
83
81
|
details('Streptomyces parvisporogenes ignotus 1960').should == [{:genus=>{:string=>"Streptomyces"}, :species=>{:string=>"parvisporogenes"}, :infraspecies=>[{:string=>"ignotus", :rank=>"n/a", :year=>"1960"}]}]
|
data/spec/parser/test_data.txt
CHANGED
@@ -39,6 +39,13 @@ Qu Durkoop|{"scientificName":{"parsed":true, "parser_version":"test_version", "p
|
|
39
39
|
As Slipinski 1982|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"As Slipinski 1982","normalized":"As Slipinski 1982","canonical":"As","hybrid":false,"details":[{"uninomial":{"string":"As","authorship":"Slipinski 1982","basionymAuthorTeam":{"authorTeam":"Slipinski","author":["Slipinski"],"year":"1982"}}}],"positions":{"0":["uninomial",2],"3":["author_word",12],"13":["year",17]}}}
|
40
40
|
Ba Solem 1983|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Ba Solem 1983","normalized":"Ba Solem 1983","canonical":"Ba","hybrid":false,"details":[{"uninomial":{"string":"Ba","authorship":"Solem 1983","basionymAuthorTeam":{"authorTeam":"Solem","author":["Solem"],"year":"1983"}}}],"positions":{"0":["uninomial",2],"3":["author_word",8],"9":["year",13]}}}
|
41
41
|
|
42
|
+
#multi-uninomials
|
43
|
+
Poaceae subtrib. Scolochloinae Soreng|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Poaceae subtrib. Scolochloinae Soreng", "normalized":"Poaceae subtrib. Scolochloinae Soreng", "canonical":"Poaceae", "hybrid":false, "details":[{"uninomial":{"string":"Poaceae"}, "rank_uninomials":"subtrib.", "uninomial2":{"string":"Scolochloinae", "authorship":"Soreng", "basionymAuthorTeam":{"authorTeam":"Soreng", "author":["Soreng"]}}}], "parser_run":1, "positions":{"0":["uninomial", 7], "8":["rank_uninomial", 16], "17":["uninomial", 37]}}}
|
44
|
+
Zygophyllaceae subfam. Tribuloideae D.M.Porter|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Zygophyllaceae subfam. Tribuloideae D.M.Porter", "normalized":"Zygophyllaceae subfam. Tribuloideae D.M.Porter", "canonical":"Zygophyllaceae", "hybrid":false, "details":[{"uninomial":{"string":"Zygophyllaceae"}, "rank_uninomials":"subfam.", "uninomial2":{"string":"Tribuloideae", "authorship":"D.M.Porter", "basionymAuthorTeam":{"authorTeam":"D.M.Porter", "author":["D.M.Porter"]}}}], "parser_run":1, "positions":{"0":["uninomial", 14], "15":["rank_uninomial", 22], "23":["uninomial", 46]}}}
|
45
|
+
Cordia (Adans.) Kuntze sect. Salimori|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Cordia (Adans.) Kuntze sect. Salimori", "normalized":"Cordia (Adans.) Kuntze sect. Salimori", "canonical":"Cordia", "hybrid":false, "details":[{"uninomial":{"string":"Cordia", "authorship":"(Adans.) Kuntze", "combinationAuthorTeam":{"authorTeam":"Kuntze", "author":["Kuntze"]}, "basionymAuthorTeam":{"authorTeam":"Adans.", "author":["Adans."]}}, "rank_uninomials":"sect.", "uninomial2":{"string":"Salimori"}}], "parser_run":1, "positions":{"0":["uninomial", 6], "8":["author_word", 14], "16":["author_word", 22], "23":["rank_uninomial", 28], "29":["uninomial", 37]}}}
|
46
|
+
Poaceae supertrib. Arundinarodae L.Liu|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Poaceae supertrib. Arundinarodae L.Liu", "normalized":"Poaceae supertrib. Arundinarodae L.Liu", "canonical":"Poaceae", "hybrid":false, "details":[{"uninomial":{"string":"Poaceae"}, "rank_uninomials":"supertrib.", "uninomial2":{"string":"Arundinarodae", "authorship":"L.Liu", "basionymAuthorTeam":{"authorTeam":"L.Liu", "author":["L.Liu"]}}}], "parser_run":1, "positions":{"0":["uninomial", 7], "8":["rank_uninomial", 18], "19":["uninomial", 38]}}}
|
47
|
+
Alchemilla subsect. Sericeae A.Plocek|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Alchemilla subsect. Sericeae A.Plocek", "normalized":"Alchemilla subsect. Sericeae A.Plocek", "canonical":"Alchemilla", "hybrid":false, "details":[{"uninomial":{"string":"Alchemilla"}, "rank_uninomials":"subsect.", "uninomial2":{"string":"Sericeae", "authorship":"A.Plocek", "basionymAuthorTeam":{"authorTeam":"A.Plocek", "author":["A.Plocek"]}}}], "parser_run":1, "positions":{"0":["uninomial", 10], "11":["rank_uninomial", 19], "20":["uninomial", 37]}}}
|
48
|
+
|
42
49
|
#canonical binomial
|
43
50
|
Pseudocercospora dendrobii|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora dendrobii","normalized":"Pseudocercospora dendrobii","canonical":"Pseudocercospora dendrobii","hybrid":false,"details":[{"genus":{"string":"Pseudocercospora"},"species":{"string":"dendrobii"}}],"positions":{"0":["genus",16],"21":["species",30]}}}
|
44
51
|
Cucurbita pepo|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Cucurbita pepo", "normalized":"Cucurbita pepo", "canonical":"Cucurbita pepo", "hybrid":false, "details":[{"genus":{"string":"Cucurbita"}, "species":{"string":"pepo"}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 14]}}}
|
@@ -52,9 +59,9 @@ Platypus bicaudatulus Schedl, 1935h|{"scientificName":{"parsed":true, "parser_ve
|
|
52
59
|
#TODO Donatia novae-zelandiae Hook.f.
|
53
60
|
|
54
61
|
#binomial with several authours
|
55
|
-
Pseudocercospora dendrobii
|
56
|
-
Pseudocercospora dendrobii
|
57
|
-
Pseudocercospora dendrobii
|
62
|
+
Pseudocercospora dendrobii Goh & W.H. Hsieh 1990|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Pseudocercospora dendrobii Goh & W.H. Hsieh 1990", "normalized":"Pseudocercospora dendrobii Goh et W.H. Hsieh 1990", "canonical":"Pseudocercospora dendrobii", "hybrid":false, "details":[{"genus":{"string":"Pseudocercospora"}, "species":{"string":"dendrobii", "authorship":"Goh & W.H. Hsieh 1990", "basionymAuthorTeam":{"authorTeam":"Goh & W.H. Hsieh", "author":["Goh", "W.H. Hsieh"], "year":"1990"}}}], "parser_run":1, "positions":{"0":["genus", 16], "17":["species", 26], "27":["author_word", 30], "33":["author_word", 37], "38":["author_word", 43], "44":["year", 48]}}}
|
63
|
+
Pseudocercospora dendrobii Goh and W.H. Hsieh 1990|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Pseudocercospora dendrobii Goh and W.H. Hsieh 1990", "normalized":"Pseudocercospora dendrobii Goh et W.H. Hsieh 1990", "canonical":"Pseudocercospora dendrobii", "hybrid":false, "details":[{"genus":{"string":"Pseudocercospora"}, "species":{"string":"dendrobii", "authorship":"Goh and W.H. Hsieh 1990", "basionymAuthorTeam":{"authorTeam":"Goh and W.H. Hsieh", "author":["Goh", "W.H. Hsieh"], "year":"1990"}}}], "parser_run":1, "positions":{"0":["genus", 16], "17":["species", 26], "27":["author_word", 30], "35":["author_word", 39], "40":["author_word", 45], "46":["year", 50]}}}
|
64
|
+
Pseudocercospora dendrobii Goh et W.H. Hsieh 1990|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Pseudocercospora dendrobii Goh et W.H. Hsieh 1990", "normalized":"Pseudocercospora dendrobii Goh et W.H. Hsieh 1990", "canonical":"Pseudocercospora dendrobii", "hybrid":false, "details":[{"genus":{"string":"Pseudocercospora"}, "species":{"string":"dendrobii", "authorship":"Goh et W.H. Hsieh 1990", "basionymAuthorTeam":{"authorTeam":"Goh et W.H. Hsieh", "author":["Goh", "W.H. Hsieh"], "year":"1990"}}}], "parser_run":1, "positions":{"0":["genus", 16], "17":["species", 26], "27":["author_word", 30], "34":["author_word", 38], "39":["author_word", 44], "45":["year", 49]}}}
|
58
65
|
Schottera nicaeënsis (J.V. Lamouroux ex Duby) Guiry & Hollenberg|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Schottera nicaeënsis (J.V. Lamouroux ex Duby) Guiry & Hollenberg", "normalized":"Schottera nicaeensis (J.V. Lamouroux ex Duby) Guiry et Hollenberg", "canonical":"Schottera nicaeensis", "hybrid":false, "details":[{"genus":{"string":"Schottera"}, "species":{"string":"nicaeensis", "authorship":"(J.V. Lamouroux ex Duby) Guiry & Hollenberg", "combinationAuthorTeam":{"authorTeam":"Guiry & Hollenberg", "author":["Guiry", "Hollenberg"]}, "basionymAuthorTeam":{"authorTeam":"J.V. Lamouroux", "author":["J.V. Lamouroux"], "exAuthorTeam":{"authorTeam":"Duby", "author":["Duby"]}}}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 20], "22":["author_word", 26], "27":["author_word", 36], "40":["author_word", 44], "46":["author_word", 51], "54":["author_word", 64]}}}
|
59
66
|
Hirsutëlla mâle|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hirsutëlla mâle", "normalized":"Hirsutella male", "canonical":"Hirsutella male", "hybrid":false, "details":[{"genus":{"string":"Hirsutella"}, "species":{"string":"male"}}], "parser_run":2, "positions":{"0":["genus", 10], "11":["species", 15]}}}
|
60
67
|
Triticum repens vulgäre|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Triticum repens vulgäre", "normalized":"Triticum repens vulgare", "canonical":"Triticum repens vulgare", "hybrid":false, "details":[{"genus":{"string":"Triticum"}, "species":{"string":"repens"}, "infraspecies":[{"string":"vulgare", "rank":"n/a"}]}], "parser_run":2, "positions":{"0":["genus", 8], "9":["species", 15], "16":["infraspecies", 23]}}}
|
@@ -65,6 +72,7 @@ Aëtosaurus ferratus|{"scientificName":{"parsed":true, "parser_version":"test_ve
|
|
65
72
|
Pseudocercospora dendrobii U. Braun & Crous 2003|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora dendrobii U. Braun & Crous 2003","normalized":"Pseudocercospora dendrobii U. Braun et Crous 2003","canonical":"Pseudocercospora dendrobii","hybrid":false,"details":[{"genus":{"string":"Pseudocercospora"},"species":{"string":"dendrobii","authorship":"U. Braun & Crous 2003","basionymAuthorTeam":{"authorTeam":"U. Braun & Crous","author":["U. Braun","Crous"],"year":"2003"}}}],"positions":{"0":["genus",16],"17":["species",26],"27":["author_word",29],"30":["author_word",35],"38":["author_word",43],"44":["year",48]}}}
|
66
73
|
|
67
74
|
#iczn: species name with infragenus
|
75
|
+
Hegeter (Hegeter) tenuipunctatus Brullé, 1838|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hegeter (Hegeter) tenuipunctatus Brullé, 1838", "normalized":"Hegeter (Hegeter) tenuipunctatus Brullé 1838", "canonical":"Hegeter tenuipunctatus", "hybrid":false, "details":[{"genus":{"string":"Hegeter"}, "infragenus":{"string":"Hegeter"}, "species":{"string":"tenuipunctatus", "authorship":"Brullé, 1838", "basionymAuthorTeam":{"authorTeam":"Brullé", "author":["Brullé"], "year":"1838"}}}], "parser_run":1, "positions":{"0":["genus", 7], "9":["infragenus", 16], "18":["species", 32], "33":["author_word", 39], "41":["year", 45]}}}
|
68
76
|
Hegeter (Hegeter) intercedens Lindberg H 1950|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Hegeter (Hegeter) intercedens Lindberg H 1950","normalized":"Hegeter (Hegeter) intercedens Lindberg H 1950","canonical":"Hegeter intercedens","hybrid":false,"details":[{"genus":{"string":"Hegeter"},"infragenus":{"string":"Hegeter"},"species":{"string":"intercedens","authorship":"Lindberg H 1950","basionymAuthorTeam":{"authorTeam":"Lindberg H","author":["Lindberg H"],"year":"1950"}}}],"positions":{"0":["genus",7],"9":["infragenus",16],"18":["species",29],"30":["author_word",38],"39":["author_word",40],"41":["year",45]}}}
|
69
77
|
Brachytrypus (B.) grandidieri|{"scientificName":{"parsed":true, "verbatim":"Brachytrypus (B.) grandidieri", "normalized":"Brachytrypus (B.) grandidieri", "canonical":"Brachytrypus grandidieri", "hybrid":false, "details":[{"genus":{"string":"Brachytrypus"}, "infragenus":{"string":"B."}, "species":{"string":"grandidieri"}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 12], "14":["infragenus", 16], "18":["species", 29]}}}
|
70
78
|
Cyprideis (Cyprideis) thessalonike amasyaensis|{"scientificName":{"parsed":true, "verbatim":"Cyprideis (Cyprideis) thessalonike amasyaensis", "normalized":"Cyprideis (Cyprideis) thessalonike amasyaensis", "canonical":"Cyprideis thessalonike amasyaensis", "hybrid":false, "details":[{"genus":{"string":"Cyprideis"}, "infragenus":{"string":"Cyprideis"}, "species":{"string":"thessalonike"}, "infraspecies":[{"string":"amasyaensis", "rank":"n/a"}]}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 9], "11":["infragenus", 20], "22":["species", 34], "35":["infraspecies", 46]}}}
|
@@ -78,7 +86,10 @@ Sténométope laevissimus Bibron 1855|{"scientificName":{"parsed":true, "parser_
|
|
78
86
|
Choriozopella trägårdhi Lawrence, 1947|{"scientificName":{"parsed":true, "verbatim":"Choriozopella trägårdhi Lawrence, 1947", "normalized":"Choriozopella tragardhi Lawrence 1947", "canonical":"Choriozopella tragardhi", "hybrid":false, "details":[{"genus":{"string":"Choriozopella"}, "species":{"string":"tragardhi", "authorship":"Lawrence, 1947", "basionymAuthorTeam":{"authorTeam":"Lawrence", "author":["Lawrence"], "year":"1947"}}}], "parser_version":"test_version", "parser_run":2, "positions":{"0":["genus", 13], "14":["species", 23], "24":["author_word", 32], "34":["year", 38]}}}
|
79
87
|
Isoëtes asplundii H. P. Fuchs|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Isoëtes asplundii H. P. Fuchs", "normalized":"Isoetes asplundii H. P. Fuchs", "canonical":"Isoetes asplundii", "hybrid":false, "details":[{"genus":{"string":"Isoetes"}, "species":{"string":"asplundii", "authorship":"H. P. Fuchs", "basionymAuthorTeam":{"authorTeam":"H. P. Fuchs", "author":["H. P. Fuchs"]}}}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 17], "18":["author_word", 20], "21":["author_word", 23], "24":["author_word", 29]}}}
|
80
88
|
Cerambyx thomæ GMELIN J. F., 1790|{"scientificName":{"parsed":true, "verbatim":"Cerambyx thomæ GMELIN J. F., 1790", "normalized":"Cerambyx thomae GMELIN J. F. 1790", "canonical":"Cerambyx thomae", "hybrid":false, "details":[{"genus":{"string":"Cerambyx"}, "species":{"string":"thomae", "authorship":"GMELIN J. F., 1790", "basionymAuthorTeam":{"authorTeam":"GMELIN J. F.", "author":["GMELIN J. F."], "year":"1790"}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 14], "15":["author_word", 21], "22":["author_word", 24], "25":["author_word", 27], "29":["year", 33]}}}
|
89
|
+
#Campethera cailliautii fülleborni|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Endoxyla sp. GM-, 2003", "normalized":"Endoxyla", "canonical":"Endoxyla", "hybrid":false, "details":[{"genus":{"string":"Endoxyla"}, "annotation_identification":"sp.", "ignored":{"unparsed":"GM-, 2003"}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["annotation_identification", 12]}}}
|
90
|
+
|
81
91
|
#digraph unicode characters
|
92
|
+
Æschopalæa grisella Pascoe, 1864|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Æschopalæa grisella Pascoe, 1864", "normalized":"Aeschopalaea grisella Pascoe 1864", "canonical":"Aeschopalaea grisella", "hybrid":false, "details":[{"genus":{"string":"Aeschopalaea"}, "species":{"string":"grisella", "authorship":"Pascoe, 1864", "basionymAuthorTeam":{"authorTeam":"Pascoe", "author":["Pascoe"], "year":"1864"}}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 19], "20":["author_word", 26], "28":["year", 32]}}}
|
82
93
|
Læptura laetifica Dow, 1913|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"L\u00e6ptura laetifica Dow, 1913","normalized":"Laeptura laetifica Dow 1913","canonical":"Laeptura laetifica","hybrid":false,"details":[{"genus":{"string":"Laeptura"},"species":{"string":"laetifica","authorship":"Dow, 1913","basionymAuthorTeam":{"authorTeam":"Dow","author":["Dow"],"year":"1913"}}}],"positions":{"0":["genus",7],"8":["species",17],"18":["author_word",21],"23":["year",27]}}}
|
83
94
|
Leptura lætifica Dow, 1913|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Leptura l\u00e6tifica Dow, 1913","normalized":"Leptura laetifica Dow 1913","canonical":"Leptura laetifica","hybrid":false,"details":[{"genus":{"string":"Leptura"},"species":{"string":"laetifica","authorship":"Dow, 1913","basionymAuthorTeam":{"authorTeam":"Dow","author":["Dow"],"year":"1913"}}}],"positions":{"0":["genus",7],"8":["species",16],"17":["author_word",20],"22":["year",26]}}}
|
84
95
|
Leptura leætifica Dow, 1913|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Leptura le\u00e6tifica Dow, 1913","normalized":"Leptura leaetifica Dow 1913","canonical":"Leptura leaetifica","hybrid":false,"details":[{"genus":{"string":"Leptura"},"species":{"string":"leaetifica","authorship":"Dow, 1913","basionymAuthorTeam":{"authorTeam":"Dow","author":["Dow"],"year":"1913"}}}],"positions":{"0":["genus",7],"8":["species",17],"18":["author_word",21],"23":["year",27]}}}
|
@@ -88,25 +99,33 @@ Leœptura laetifica Dow, 1913|{"scientificName":{"parsed":true, "parser_version"
|
|
88
99
|
Œdicnemus capensis|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"\u0152dicnemus capensis","normalized":"Oedicnemus capensis","canonical":"Oedicnemus capensis","hybrid":false,"details":[{"genus":{"string":"Oedicnemus"},"species":{"string":"capensis"}}],"positions":{"0":["genus",9],"10":["species",18]}}}
|
89
100
|
Œnanthe œnanthe|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"\u0152nanthe \u0153nanthe","normalized":"Oenanthe oenanthe","canonical":"Oenanthe oenanthe","hybrid":false,"details":[{"genus":{"string":"Oenanthe"},"species":{"string":"oenanthe"}}],"positions":{"0":["genus",7],"8":["species",15]}}}
|
90
101
|
Hördeum vulgare cœrulescens|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hördeum vulgare cœrulescens", "normalized":"Hordeum vulgare coerulescens", "canonical":"Hordeum vulgare coerulescens", "hybrid":false, "details":[{"genus":{"string":"Hordeum"}, "species":{"string":"vulgare"}, "infraspecies":[{"string":"coerulescens", "rank":"n/a"}]}], "parser_run":2, "positions":{"0":["genus", 7], "8":["species", 15], "16":["infraspecies", 27]}}}
|
102
|
+
Hordeum vulgare cœrulescens Metzger|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hordeum vulgare cœrulescens Metzger", "normalized":"Hordeum vulgare coerulescens Metzger", "canonical":"Hordeum vulgare coerulescens", "hybrid":false, "details":[{"genus":{"string":"Hordeum"}, "species":{"string":"vulgare"}, "infraspecies":[{"string":"coerulescens", "rank":"n/a", "authorship":"Metzger", "basionymAuthorTeam":{"authorTeam":"Metzger", "author":["Metzger"]}}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 15], "16":["infraspecies", 27], "28":["author_word", 35]}}}
|
91
103
|
Hordeum vulgare f. cœrulescens|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hordeum vulgare f. cœrulescens", "normalized":"Hordeum vulgare f. coerulescens", "canonical":"Hordeum vulgare coerulescens", "hybrid":false, "details":[{"genus":{"string":"Hordeum"}, "species":{"string":"vulgare"}, "infraspecies":[{"string":"coerulescens", "rank":"f."}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 15], "16":["infraspecific_type", 18], "19":["infraspecies", 30]}}}
|
92
104
|
|
93
105
|
# old style s (ſ)
|
94
106
|
Musca domeſtica Linnaeus 1758 sec. Pemberton 1947|{"scientificName":{"parsed":true, "verbatim":"Musca domeſtica Linnaeus 1758 sec. Pemberton 1947", "normalized":"Musca domestica Linnaeus 1758", "canonical":"Musca domestica", "hybrid":false, "details":[{"genus":{"string":"Musca"}, "species":{"string":"domestica", "authorship":"Linnaeus 1758", "basionymAuthorTeam":{"authorTeam":"Linnaeus", "author":["Linnaeus"], "year":"1758"}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 5], "6":["species", 15], "16":["author_word", 24], "25":["year", 29]}}}
|
107
|
+
Amphisbæna fuliginoſa Linnaeus 1758|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Amphisbæna fuliginoſa Linnaeus 1758", "normalized":"Amphisbaena fuliginosa Linnaeus 1758", "canonical":"Amphisbaena fuliginosa", "hybrid":false, "details":[{"genus":{"string":"Amphisbaena"}, "species":{"string":"fuliginosa", "authorship":"Linnaeus 1758", "basionymAuthorTeam":{"authorTeam":"Linnaeus", "author":["Linnaeus"], "year":"1758"}}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 30], "31":["year", 35]}}}
|
95
108
|
|
96
|
-
#basionym in parenthesis
|
109
|
+
#basionym author in parenthesis
|
97
110
|
Zophosis persis (Chatanay, 1914)|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Zophosis persis (Chatanay, 1914)","normalized":"Zophosis persis (Chatanay 1914)","canonical":"Zophosis persis","hybrid":false,"details":[{"genus":{"string":"Zophosis"},"species":{"string":"persis","authorship":"(Chatanay, 1914)","basionymAuthorTeam":{"authorTeam":"Chatanay","author":["Chatanay"],"year":"1914"}}}],"positions":{"0":["genus",8],"9":["species",15],"17":["author_word",25],"27":["year",31]}}}
|
98
111
|
Zophosis persis (Chatanay 1914)|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Zophosis persis (Chatanay 1914)","normalized":"Zophosis persis (Chatanay 1914)","canonical":"Zophosis persis","hybrid":false,"details":[{"genus":{"string":"Zophosis"},"species":{"string":"persis","authorship":"(Chatanay 1914)","basionymAuthorTeam":{"authorTeam":"Chatanay","author":["Chatanay"],"year":"1914"}}}],"positions":{"0":["genus",8],"9":["species",15],"17":["author_word",25],"26":["year",30]}}}
|
99
112
|
Zophosis persis (Chatanay), 1914|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Zophosis persis (Chatanay), 1914","normalized":"Zophosis persis (Chatanay 1914)","canonical":"Zophosis persis","hybrid":false,"details":[{"genus":{"string":"Zophosis"},"species":{"string":"persis","authorship":"(Chatanay), 1914","basionymAuthorTeam":{"author_team":"(Chatanay), 1914","author":["Chatanay"],"year":"1914"}}}],"positions":{"0":["genus",8],"9":["species",15],"17":["author_word",25],"28":["year",32]}}}
|
113
|
+
Zophosis quadrilineata (Oliv. )|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Zophosis quadrilineata (Oliv. )", "normalized":"Zophosis quadrilineata (Oliv.)", "canonical":"Zophosis quadrilineata", "hybrid":false, "details":[{"genus":{"string":"Zophosis"}, "species":{"string":"quadrilineata", "authorship":"(Oliv. )", "basionymAuthorTeam":{"authorTeam":"Oliv.", "author":["Oliv."]}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 22], "24":["author_word", 29]}}}
|
114
|
+
Zophosis quadrilineata (Olivier 1795)|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Zophosis quadrilineata (Olivier 1795)", "normalized":"Zophosis quadrilineata (Olivier 1795)", "canonical":"Zophosis quadrilineata", "hybrid":false, "details":[{"genus":{"string":"Zophosis"}, "species":{"string":"quadrilineata", "authorship":"(Olivier 1795)", "basionymAuthorTeam":{"authorTeam":"Olivier", "author":["Olivier"], "year":"1795"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 22], "24":["author_word", 31], "32":["year", 36]}}}
|
100
115
|
|
101
116
|
#binomial with basionym and combination authors
|
102
117
|
Pseudocercospora dendrobii(H.C. Burnett)U. Braun & Crous 2003|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora dendrobii(H.C. Burnett)U. Braun & Crous 2003","normalized":"Pseudocercospora dendrobii (H.C. Burnett) U. Braun et Crous 2003","canonical":"Pseudocercospora dendrobii","hybrid":false,"details":[{"genus":{"string":"Pseudocercospora"},"species":{"string":"dendrobii","authorship":"(H.C. Burnett)U. Braun & Crous 2003","combinationAuthorTeam":{"authorTeam":"U. Braun & Crous","author":["U. Braun","Crous"],"year":"2003"},"basionymAuthorTeam":{"authorTeam":"H.C. Burnett","author":["H.C. Burnett"]}}}],"positions":{"0":["genus",16],"17":["species",26],"27":["author_word",31],"36":["author_word",43],"44":["author_word",46],"47":["author_word",52],"55":["author_word",60],"65":["year",69]}}}
|
103
118
|
Pseudocercospora dendrobii(H.C. Burnett, 1873)U. Braun & Crous 2003|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora dendrobii(H.C. Burnett, 1873)U. Braun & Crous 2003","normalized":"Pseudocercospora dendrobii (H.C. Burnett 1873) U. Braun et Crous 2003","canonical":"Pseudocercospora dendrobii","hybrid":false,"details":[{"genus":{"string":"Pseudocercospora"},"species":{"string":"dendrobii","authorship":"(H.C. Burnett, 1873)U. Braun & Crous 2003","combinationAuthorTeam":{"authorTeam":"U. Braun & Crous","author":["U. Braun","Crous"],"year":"2003"},"basionymAuthorTeam":{"authorTeam":"H.C. Burnett","author":["H.C. Burnett"],"year":"1873"}}}],"positions":{"0":["genus",16],"17":["species",26],"27":["author_word",31],"36":["author_word",43],"45":["year",49],"50":["author_word",52],"53":["author_word",58],"61":["author_word",66],"71":["year",75]}}}
|
104
119
|
Pseudocercospora dendrobii(H.C. Burnett 1873)U. Braun & Crous , 2003|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora dendrobii(H.C. Burnett 1873)U. Braun & Crous , 2003","normalized":"Pseudocercospora dendrobii (H.C. Burnett 1873) U. Braun et Crous 2003","canonical":"Pseudocercospora dendrobii","hybrid":false,"details":[{"genus":{"string":"Pseudocercospora"},"species":{"string":"dendrobii","authorship":"(H.C. Burnett 1873)U. Braun & Crous , 2003","combinationAuthorTeam":{"authorTeam":"U. Braun & Crous","author":["U. Braun","Crous"],"year":"2003"},"basionymAuthorTeam":{"authorTeam":"H.C. Burnett","author":["H.C. Burnett"],"year":"1873"}}}],"positions":{"0":["genus",16],"17":["species",26],"27":["author_word",31],"36":["author_word",43],"44":["year",48],"49":["author_word",51],"52":["author_word",57],"60":["author_word",65],"71":["year",75]}}}
|
120
|
+
Sedella pumila (Benth.) Britton & Rose|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Sedella pumila (Benth.) Britton & Rose", "normalized":"Sedella pumila (Benth.) Britton et Rose", "canonical":"Sedella pumila", "hybrid":false, "details":[{"genus":{"string":"Sedella"}, "species":{"string":"pumila", "authorship":"(Benth.) Britton & Rose", "combinationAuthorTeam":{"authorTeam":"Britton & Rose", "author":["Britton", "Rose"]}, "basionymAuthorTeam":{"authorTeam":"Benth.", "author":["Benth."]}}}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 14], "16":["author_word", 22], "24":["author_word", 31], "34":["author_word", 38]}}}
|
105
121
|
|
106
122
|
#infraspecies without rank
|
123
|
+
Hydnellum scrobiculatum zonatum (Batsch) K. A. Harrison 1961|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hydnellum scrobiculatum zonatum (Batsch) K. A. Harrison 1961", "normalized":"Hydnellum scrobiculatum zonatum (Batsch) K. A. Harrison 1961", "canonical":"Hydnellum scrobiculatum zonatum", "hybrid":false, "details":[{"genus":{"string":"Hydnellum"}, "species":{"string":"scrobiculatum"}, "infraspecies":[{"string":"zonatum", "rank":"n/a", "authorship":"(Batsch) K. A. Harrison 1961", "combinationAuthorTeam":{"authorTeam":"K. A. Harrison", "author":["K. A. Harrison"], "year":"1961"}, "basionymAuthorTeam":{"authorTeam":"Batsch", "author":["Batsch"]}}]}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 23], "24":["infraspecies", 31], "33":["author_word", 39], "41":["author_word", 43], "44":["author_word", 46], "47":["author_word", 55], "56":["year", 60]}}}
|
107
124
|
Hydnellum scrobiculatum zonatum (Banker) D. Hall & D.E. Stuntz 1972|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Hydnellum scrobiculatum zonatum (Banker) D. Hall & D.E. Stuntz 1972","normalized":"Hydnellum scrobiculatum zonatum (Banker) D. Hall et D.E. Stuntz 1972","canonical":"Hydnellum scrobiculatum zonatum","hybrid":false,"details":[{"genus":{"string":"Hydnellum"},"species":{"string":"scrobiculatum"},"infraspecies":[{"string":"zonatum","rank":"n\/a","authorship":"(Banker) D. Hall & D.E. Stuntz 1972","combinationAuthorTeam":{"authorTeam":"D. Hall & D.E. Stuntz","author":["D. Hall","D.E. Stuntz"],"year":"1972"},"basionymAuthorTeam":{"authorTeam":"Banker","author":["Banker"]}}]}],"positions":{"0":["genus",9],"10":["species",23],"24":["infraspecies",31],"33":["author_word",39],"41":["author_word",43],"44":["author_word",48],"51":["author_word",55],"56":["author_word",62],"63":["year",67]}}}
|
108
125
|
Hydnellum (Hydnellum) scrobiculatum zonatum (Banker) D. Hall & D.E. Stuntz 1972|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Hydnellum (Hydnellum) scrobiculatum zonatum (Banker) D. Hall & D.E. Stuntz 1972","normalized":"Hydnellum (Hydnellum) scrobiculatum zonatum (Banker) D. Hall et D.E. Stuntz 1972","canonical":"Hydnellum scrobiculatum zonatum","hybrid":false,"details":[{"genus":{"string":"Hydnellum"},"infragenus":{"string":"Hydnellum"},"species":{"string":"scrobiculatum"},"infraspecies":[{"string":"zonatum","rank":"n\/a","authorship":"(Banker) D. Hall & D.E. Stuntz 1972","combinationAuthorTeam":{"authorTeam":"D. Hall & D.E. Stuntz","author":["D. Hall","D.E. Stuntz"],"year":"1972"},"basionymAuthorTeam":{"authorTeam":"Banker","author":["Banker"]}}]}],"positions":{"0":["genus",9],"11":["infragenus",20],"22":["species",35],"36":["infraspecies",43],"45":["author_word",51],"53":["author_word",55],"56":["author_word",60],"63":["author_word",67],"68":["author_word",74],"75":["year",79]}}}
|
109
126
|
Hydnellum scrobiculatum zonatum|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Hydnellum scrobiculatum zonatum","normalized":"Hydnellum scrobiculatum zonatum","canonical":"Hydnellum scrobiculatum zonatum","hybrid":false,"details":[{"genus":{"string":"Hydnellum"},"species":{"string":"scrobiculatum"},"infraspecies":[{"string":"zonatum","rank":"n\/a"}]}],"positions":{"0":["genus",9],"10":["species",23],"24":["infraspecies",31]}}}
|
127
|
+
Mus musculus hortulanus|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Mus musculus hortulanus", "normalized":"Mus musculus hortulanus", "canonical":"Mus musculus hortulanus", "hybrid":false, "details":[{"genus":{"string":"Mus"}, "species":{"string":"musculus"}, "infraspecies":[{"string":"hortulanus", "rank":"n/a"}]}], "parser_run":1, "positions":{"0":["genus", 3], "4":["species", 12], "13":["infraspecies", 23]}}}
|
128
|
+
Ortygospiza atricollis mülleri|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Ortygospiza atricollis mülleri", "normalized":"Ortygospiza atricollis mulleri", "canonical":"Ortygospiza atricollis mulleri", "hybrid":false, "details":[{"genus":{"string":"Ortygospiza"}, "species":{"string":"atricollis"}, "infraspecies":[{"string":"mulleri", "rank":"n/a"}]}], "parser_run":2, "positions":{"0":["genus", 11], "12":["species", 22], "23":["infraspecies", 30]}}}
|
110
129
|
|
111
130
|
#infraspecies with rank
|
112
131
|
Aus bus Linn. var. bus|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Aus bus Linn. var. bus", "normalized":"Aus bus Linn. var. bus", "canonical":"Aus bus bus", "hybrid":false, "details":[{"genus":{"string":"Aus"}, "species":{"string":"bus", "authorship":"Linn.", "basionymAuthorTeam":{"authorTeam":"Linn.", "author":["Linn."]}}, "infraspecies":[{"string":"bus", "rank":"var."}]}], "parser_run":1, "positions":{"0":["genus", 3], "4":["species", 7], "8":["author_word", 13], "14":["infraspecific_type", 18], "19":["infraspecies", 22]}}}
|
@@ -125,18 +144,21 @@ Polypodium pectinatum L.f. typica Rosenst.|{"scientificName":{"parsed":true, "pa
|
|
125
144
|
Polypodium pectinatum L. f. thisisjunk Rosent.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L. f. thisisjunk Rosent.", "normalized":"Polypodium pectinatum L. f. thisisjunk Rosent.", "canonical":"Polypodium pectinatum thisisjunk", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L.", "basionymAuthorTeam":{"authorTeam":"L.", "author":["L."]}}, "infraspecies":[{"string":"thisisjunk", "rank":"f.", "authorship":"Rosent.", "basionymAuthorTeam":{"authorTeam":"Rosent.", "author":["Rosent."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 24], "25":["infraspecific_type", 27], "28":["infraspecies", 38], "39":["author_word", 46]}}}
|
126
145
|
Polypodium lineare C.Chr. f. caudatoattenuatum Takeda|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium lineare C.Chr. f. caudatoattenuatum Takeda", "normalized":"Polypodium lineare C.Chr. f. caudatoattenuatum Takeda", "canonical":"Polypodium lineare caudatoattenuatum", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"lineare", "authorship":"C.Chr.", "basionymAuthorTeam":{"authorTeam":"C.Chr.", "author":["C.Chr."]}}, "infraspecies":[{"string":"caudatoattenuatum", "rank":"f.", "authorship":"Takeda", "basionymAuthorTeam":{"authorTeam":"Takeda", "author":["Takeda"]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 18], "19":["author_word", 25], "26":["infraspecific_type", 28], "29":["infraspecies", 46], "47":["author_word", 53]}}}
|
127
146
|
Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.", "normalized":"Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.", "canonical":"Rhododendron weyrichii albiflorum", "hybrid":false, "details":[{"genus":{"string":"Rhododendron"}, "species":{"string":"weyrichii", "authorship":"Maxim.", "basionymAuthorTeam":{"authorTeam":"Maxim.", "author":["Maxim."]}}, "infraspecies":[{"string":"albiflorum", "rank":"f.", "authorship":"T.Yamaz.", "basionymAuthorTeam":{"authorTeam":"T.Yamaz.", "author":["T.Yamaz."]}}]}], "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 22], "23":["author_word", 29], "30":["infraspecific_type", 32], "33":["infraspecies", 43], "44":["author_word", 52]}}}
|
147
|
+
Armeria maaritima (Mill.) Willd. fma. originaria Bern.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Armeria maaritima (Mill.) Willd. fma. originaria Bern.", "normalized":"Armeria maaritima (Mill.) Willd. fma. originaria Bern.", "canonical":"Armeria maaritima originaria", "hybrid":false, "details":[{"genus":{"string":"Armeria"}, "species":{"string":"maaritima", "authorship":"(Mill.) Willd.", "combinationAuthorTeam":{"authorTeam":"Willd.", "author":["Willd."]}, "basionymAuthorTeam":{"authorTeam":"Mill.", "author":["Mill."]}}, "infraspecies":[{"string":"originaria", "rank":"fma.", "authorship":"Bern.", "basionymAuthorTeam":{"authorTeam":"Bern.", "author":["Bern."]}}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 17], "19":["author_word", 24], "26":["author_word", 32], "33":["infraspecific_type", 37], "38":["infraspecies", 48], "49":["author_word", 54]}}}
|
148
|
+
Cotoneaster (Pyracantha) rogersiana var.aurantiaca|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Cotoneaster (Pyracantha) rogersiana var.aurantiaca", "normalized":"Cotoneaster (Pyracantha) rogersiana var. aurantiaca", "canonical":"Cotoneaster rogersiana aurantiaca", "hybrid":false, "details":[{"genus":{"string":"Cotoneaster"}, "infragenus":{"string":"Pyracantha"}, "species":{"string":"rogersiana"}, "infraspecies":[{"string":"aurantiaca", "rank":"var."}]}], "parser_run":1, "positions":{"0":["genus", 11], "13":["infragenus", 23], "25":["species", 35], "36":["infraspecific_type", 40], "40":["infraspecies", 50]}}}
|
149
|
+
#TODO: Homalanthus nutans (Mull.Arg.) Benth. & Hook. f. ex Drake|{}
|
128
150
|
|
129
151
|
#infraspecies_multiple
|
130
152
|
Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall & D.E. Stuntz 1972|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall & D.E. Stuntz 1972", "normalized":"Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall et D.E. Stuntz 1972", "canonical":"Hydnellum scrobiculatum zonatum parvum", "hybrid":false, "details":[{"genus":{"string":"Hydnellum"}, "species":{"string":"scrobiculatum"}, "infraspecies":[{"string":"zonatum", "rank":"var."}, {"string":"parvum", "rank":"f.", "authorship":"(Banker) D. Hall & D.E. Stuntz 1972", "combinationAuthorTeam":{"authorTeam":"D. Hall & D.E. Stuntz", "author":["D. Hall", "D.E. Stuntz"], "year":"1972"}, "basionymAuthorTeam":{"authorTeam":"Banker", "author":["Banker"]}}]}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 23], "24":["infraspecific_type", 28], "29":["infraspecies", 36], "37":["infraspecific_type", 39], "40":["infraspecies", 46], "48":["author_word", 54], "56":["author_word", 58], "59":["author_word", 63], "66":["author_word", 70], "71":["author_word", 77], "78":["year", 82]}}}
|
131
153
|
Senecio fuchsii C.C.Gmel. subsp. fuchsii var. expansus (Boiss. & Heldr.) Hayek|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Senecio fuchsii C.C.Gmel. subsp. fuchsii var. expansus (Boiss. & Heldr.) Hayek", "normalized":"Senecio fuchsii C.C.Gmel. subsp. fuchsii var. expansus (Boiss. et Heldr.) Hayek", "canonical":"Senecio fuchsii fuchsii expansus", "hybrid":false, "details":[{"genus":{"string":"Senecio"}, "species":{"string":"fuchsii", "authorship":"C.C.Gmel.", "basionymAuthorTeam":{"authorTeam":"C.C.Gmel.", "author":["C.C.Gmel."]}}, "infraspecies":[{"string":"fuchsii", "rank":"subsp."}, {"string":"expansus", "rank":"var.", "authorship":"(Boiss. & Heldr.) Hayek", "combinationAuthorTeam":{"authorTeam":"Hayek", "author":["Hayek"]}, "basionymAuthorTeam":{"authorTeam":"Boiss. & Heldr.", "author":["Boiss.", "Heldr."]}}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 15], "16":["author_word", 25], "26":["infraspecific_type", 32], "33":["infraspecies", 40], "41":["infraspecific_type", 45], "46":["infraspecies", 54], "56":["author_word", 62], "65":["author_word", 71], "73":["author_word", 78]}}}
|
132
154
|
Senecio fuchsii C.C.Gmel. subsp. fuchsii var. fuchsii|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Senecio fuchsii C.C.Gmel. subsp. fuchsii var. fuchsii", "normalized":"Senecio fuchsii C.C.Gmel. subsp. fuchsii var. fuchsii", "canonical":"Senecio fuchsii fuchsii fuchsii", "hybrid":false, "details":[{"genus":{"string":"Senecio"}, "species":{"string":"fuchsii", "authorship":"C.C.Gmel.", "basionymAuthorTeam":{"authorTeam":"C.C.Gmel.", "author":["C.C.Gmel."]}}, "infraspecies":[{"string":"fuchsii", "rank":"subsp."}, {"string":"fuchsii", "rank":"var."}]}], "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 15], "16":["author_word", 25], "26":["infraspecific_type", 32], "33":["infraspecies", 40], "41":["infraspecific_type", 45], "46":["infraspecies", 53]}}}
|
133
|
-
|
155
|
+
Euastrum divergens var. rhodesiense f. coronulum A.M. Scott & Prescott|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Euastrum divergens var. rhodesiense f. coronulum A.M. Scott & Prescott", "normalized":"Euastrum divergens var. rhodesiense f. coronulum A.M. Scott et Prescott", "canonical":"Euastrum divergens rhodesiense coronulum", "hybrid":false, "details":[{"genus":{"string":"Euastrum"}, "species":{"string":"divergens"}, "infraspecies":[{"string":"rhodesiense", "rank":"var."}, {"string":"coronulum", "rank":"f.", "authorship":"A.M. Scott & Prescott", "basionymAuthorTeam":{"authorTeam":"A.M. Scott & Prescott", "author":["A.M. Scott", "Prescott"]}}]}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 18], "19":["infraspecific_type", 23], "24":["infraspecies", 35], "36":["infraspecific_type", 38], "39":["infraspecies", 48], "49":["author_word", 53], "54":["author_word", 59], "62":["author_word", 70]}}}
|
134
156
|
|
135
157
|
#species and infraspecies without epithets, comparisons
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
158
|
+
Acarinina aff. pentacamerata|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Acarinina aff. pentacamerata", "normalized":"Acarinina", "canonical":"Acarinina", "hybrid":false, "details":[{"genus":{"string":"Acarinina"}, "annotation_identification":"aff.", "ignored":{"species":{"string":"pentacamerata"}}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["annotation_identification", 14]}}}
|
159
|
+
Acarinina aff pentacamerata|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Acarinina aff pentacamerata", "normalized":"Acarinina", "canonical":"Acarinina", "hybrid":false, "details":[{"genus":{"string":"Acarinina"}, "annotation_identification":"aff", "ignored":{"species":{"string":"pentacamerata"}}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["annotation_identification", 14]}}}
|
160
|
+
Abturia cf. alabamensis (Morton )|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Abturia cf. alabamensis (Morton )", "normalized":"Abturia cf. alabamensis (Morton)", "canonical":"Abturia alabamensis", "hybrid":false, "details":[{"genus":{"string":"Abturia"}, "annotation_identification":"cf.", "species":{"species":{"string":"alabamensis", "authorship":"(Morton )", "basionymAuthorTeam":{"authorTeam":"Morton", "author":["Morton"]}}}}], "parser_run":1, "positions":{"0":["genus", 7], "8":["annotation_identification", 11], "12":["species", 23], "25":["author_word", 31]}}}
|
161
|
+
Abturia cf alabamensis (Morton )|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Abturia cf alabamensis (Morton )", "normalized":"Abturia cf alabamensis (Morton)", "canonical":"Abturia alabamensis", "hybrid":false, "details":[{"genus":{"string":"Abturia"}, "annotation_identification":"cf", "species":{"species":{"string":"alabamensis", "authorship":"(Morton )", "basionymAuthorTeam":{"authorTeam":"Morton", "author":["Morton"]}}}}], "parser_run":1, "positions":{"0":["genus", 7], "8":["annotation_identification", 11], "11":["species", 22], "24":["author_word", 30]}}}
|
140
162
|
Alyxia reinwardti var|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Alyxia reinwardti var", "normalized":"Alyxia reinwardti", "canonical":"Alyxia reinwardti", "hybrid":false, "details":[{"genus":{"string":"Alyxia"}, "species":{"string":"reinwardti"}}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 17]}}}
|
141
163
|
Alyxia reinwardti var.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Alyxia reinwardti var.", "normalized":"Alyxia reinwardti", "canonical":"Alyxia reinwardti", "hybrid":false, "details":[{"genus":{"string":"Alyxia"}, "species":{"string":"reinwardti"}}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 17]}}}
|
142
164
|
Alyxia reinwardti ssp|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Alyxia reinwardti ssp", "normalized":"Alyxia reinwardti", "canonical":"Alyxia reinwardti", "hybrid":false, "details":[{"genus":{"string":"Alyxia"}, "species":{"string":"reinwardti"}}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 17]}}}
|
@@ -147,7 +169,11 @@ Xenodon sp|{"scientificName":{"parsed":true, "parser_version":"test_version", "v
|
|
147
169
|
Xenodon sp.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Xenodon sp.", "normalized":"Xenodon", "canonical":"Xenodon", "hybrid":false, "details":[{"uninomial":{"string":"Xenodon"}}], "parser_run":1, "positions":{"0":["uninomial", 7]}}}
|
148
170
|
Formicidae cf.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Formicidae cf.", "normalized":"Formicidae", "canonical":"Formicidae", "hybrid":false, "details":[{"uninomial":{"string":"Formicidae"}}], "parser_run":1, "positions":{"0":["uninomial", 10]}}}
|
149
171
|
Formicidae cf|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Formicidae cf", "normalized":"Formicidae", "canonical":"Formicidae", "hybrid":false, "details":[{"uninomial":{"string":"Formicidae"}}], "parser_run":1, "positions":{"0":["uninomial", 10]}}}
|
150
|
-
|
172
|
+
Acastoides spp.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Acastoides spp.", "normalized":"Acastoides", "canonical":"Acastoides", "hybrid":false, "details":[{"uninomial":{"string":"Acastoides"}}], "parser_run":1, "positions":{"0":["uninomial", 10]}}}
|
173
|
+
Sphingomonas sp. 37|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Sphingomonas sp. 37", "normalized":"Sphingomonas", "canonical":"Sphingomonas", "hybrid":false, "details":[{"genus":{"string":"Sphingomonas"}, "annotation_identification":"sp.", "ignored":{"unparsed":"37"}}], "parser_run":1, "positions":{"0":["genus", 12], "13":["annotation_identification", 16]}}}
|
174
|
+
Thryothorus leucotis spp. bogotensis|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Thryothorus leucotis spp. bogotensis", "normalized":"Thryothorus leucotis", "canonical":"Thryothorus leucotis", "hybrid":false, "details":[{"genus":{"string":"Thryothorus"}, "species":{"string":"leucotis"}, "infraspecies":[{"annotation_identification":"spp.", "ignored":{"infraspecies":{"string":"bogotensis", "rank":"n/a"}}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 20], "21":["annotation_identification", 25]}}}
|
175
|
+
Endoxyla sp. GM-, 2003|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Endoxyla sp. GM-, 2003", "normalized":"Endoxyla", "canonical":"Endoxyla", "hybrid":false, "details":[{"genus":{"string":"Endoxyla"}, "annotation_identification":"sp.", "ignored":{"unparsed":"GM-, 2003"}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["annotation_identification", 12]}}}
|
176
|
+
Liopropoma sp.2 Not applicable|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Liopropoma sp.2 Not applicable", "normalized":"Liopropoma", "canonical":"Liopropoma", "hybrid":false, "details":[{"genus":{"string":"Liopropoma"}, "annotation_identification":"sp.", "ignored":{"unparsed":"2 Not applicable"}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["annotation_identification", 14]}}}
|
151
177
|
|
152
178
|
#unknown authorship
|
153
179
|
Tragacantha leporina (?) Kuntze|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Tragacantha leporina (?) Kuntze","normalized":"Tragacantha leporina (?) Kuntze","canonical":"Tragacantha leporina","hybrid":false,"details":[{"genus":{"string":"Tragacantha"},"species":{"string":"leporina","authorship":"(?) Kuntze","combinationAuthorTeam":{"authorTeam":"Kuntze","author":["Kuntze"]},"basionymAuthorTeam":{"authorTeam":"(?)","author":["?"]}}}],"positions":{"0":["genus",11],"12":["species",20],"22":["unknown_author",23],"25":["author_word",31]}}}
|
@@ -219,6 +245,7 @@ Arthopyrenia hyalospora x|{"scientificName":{"parsed":true, "parser_version":"te
|
|
219
245
|
Arthopyrenia hyalospora × ?|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Arthopyrenia hyalospora \u00d7 ?","normalized":"Arthopyrenia hyalospora \u00d7 ?","canonical":"Arthopyrenia hyalospora","hybrid":true,"details":[{"genus":{"string":"Arthopyrenia"},"species":{"string":"hyalospora"}},"?"],"positions":{"0":["genus",12],"13":["species",23]}}}
|
220
246
|
Agrostis L. × Polypogon Desf.|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Agrostis L. \u00d7 Polypogon Desf.","normalized":"Agrostis L. \u00d7 Polypogon Desf.","canonical":"Agrostis × Polypogon","hybrid":true,"details":[{"uninomial":{"string":"Agrostis","authorship":"L.","basionymAuthorTeam":{"authorTeam":"L.","author":["L."]}}},{"uninomial":{"string":"Polypogon","authorship":"Desf.","basionymAuthorTeam":{"authorTeam":"Desf.","author":["Desf."]}}}],"positions":{"0":["uninomial",8],"9":["author_word",11],"14":["uninomial",23],"24":["author_word",29]}}}
|
221
247
|
Agrostis stolonifera L. × Polypogon monspeliensis (L.) Desf.|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Agrostis stolonifera L. \u00d7 Polypogon monspeliensis (L.) Desf.","normalized":"Agrostis stolonifera L. \u00d7 Polypogon monspeliensis (L.) Desf.","canonical":"Agrostis stolonifera × Polypogon monspeliensis","hybrid":true,"details":[{"genus":{"string":"Agrostis"},"species":{"string":"stolonifera","authorship":"L.","basionymAuthorTeam":{"authorTeam":"L.","author":["L."]}}},{"genus":{"string":"Polypogon"},"species":{"string":"monspeliensis","authorship":"(L.) Desf.","combinationAuthorTeam":{"authorTeam":"Desf.","author":["Desf."]},"basionymAuthorTeam":{"authorTeam":"L.","author":["L."]}}}],"positions":{"0":["genus",8],"9":["species",20],"21":["author_word",23],"26":["genus",35],"36":["species",49],"51":["author_word",53],"55":["author_word",60]}}}
|
248
|
+
Coeloglossum viride (L.) Hartman x Dactylorhiza majalis (Rchb. f.) P.F. Hunt & Summerhayes ssp. praetermissa (Druce) D.M. Moore & Soó|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Coeloglossum viride (L.) Hartman x Dactylorhiza majalis (Rchb. f.) P.F. Hunt & Summerhayes ssp. praetermissa (Druce) D.M. Moore & Soó", "normalized":"Coeloglossum viride (L.) Hartman × Dactylorhiza majalis (Rchb. f.) P.F. Hunt et Summerhayes ssp. praetermissa (Druce) D.M. Moore et Soó", "canonical":"Coeloglossum viride × Dactylorhiza majalis praetermissa", "hybrid":true, "details":[{"genus":{"string":"Coeloglossum"}, "species":{"string":"viride", "authorship":"(L.) Hartman", "combinationAuthorTeam":{"authorTeam":"Hartman", "author":["Hartman"]}, "basionymAuthorTeam":{"authorTeam":"L.", "author":["L."]}}}, {"genus":{"string":"Dactylorhiza"}, "species":{"string":"majalis", "authorship":"(Rchb. f.) P.F. Hunt & Summerhayes", "combinationAuthorTeam":{"authorTeam":"P.F. Hunt & Summerhayes", "author":["P.F. Hunt", "Summerhayes"]}, "basionymAuthorTeam":{"authorTeam":"Rchb. f.", "author":["Rchb. f."]}}, "infraspecies":[{"string":"praetermissa", "rank":"ssp.", "authorship":"(Druce) D.M. Moore & Soó", "combinationAuthorTeam":{"authorTeam":"D.M. Moore & Soó", "author":["D.M. Moore", "Soó"]}, "basionymAuthorTeam":{"authorTeam":"Druce", "author":["Druce"]}}]}], "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 19], "21":["author_word", 23], "25":["author_word", 32], "35":["genus", 47], "48":["species", 55], "57":["author_word", 62], "63":["author_word", 65], "67":["author_word", 71], "72":["author_word", 76], "79":["author_word", 90], "91":["infraspecific_type", 95], "96":["infraspecies", 108], "110":["author_word", 115], "117":["author_word", 121], "122":["author_word", 127], "130":["author_word", 133]}}}
|
222
249
|
#TODO Asplenium rhizophyllum X A. ruta-muraria E.L. Braun 1939|''
|
223
250
|
#TODO Asplenium rhizophyllum DC. x ruta-muraria E.L. Braun 1939|''
|
224
251
|
#TODO Asplenium rhizophyllum x ruta-muraria|''
|
@@ -229,8 +256,7 @@ Agrostis stolonifera L. × Polypogon monspeliensis (L.) Desf.|{"scientificName":
|
|
229
256
|
Polypodium x vulgare nothosubsp. mantoniae (Rothm.) Schidlay|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium x vulgare nothosubsp. mantoniae (Rothm.) Schidlay", "normalized":"Polypodium × vulgare nothosubsp. mantoniae (Rothm.) Schidlay", "canonical":"Polypodium vulgare mantoniae", "hybrid":true, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"vulgare"}, "infraspecies":[{"string":"mantoniae", "rank":"nothosubsp.", "authorship":"(Rothm.) Schidlay", "combinationAuthorTeam":{"authorTeam":"Schidlay", "author":["Schidlay"]}, "basionymAuthorTeam":{"authorTeam":"Rothm.", "author":["Rothm."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "14":["species", 21], "22":["infraspecific_type", 33], "34":["infraspecies", 43], "45":["author_word", 51], "53":["author_word", 61]}}}
|
230
257
|
|
231
258
|
#empty spaces
|
232
|
-
|
233
|
-
|
259
|
+
Asplenium Xinexpectatum(E. L. Braun ex Friesner )Morton |{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":" Asplenium Xinexpectatum(E. L. Braun ex Friesner )Morton ", "normalized":"Asplenium × inexpectatum (E. L. Braun ex Friesner) Morton", "canonical":"Asplenium inexpectatum", "hybrid":true, "details":[{"genus":{"string":"Asplenium"}, "species":{"string":"inexpectatum", "authorship":"(E. L. Braun ex Friesner )Morton", "combinationAuthorTeam":{"authorTeam":"Morton", "author":["Morton"]}, "basionymAuthorTeam":{"authorTeam":"E. L. Braun", "author":["E. L. Braun"], "exAuthorTeam":{"authorTeam":"Friesner", "author":["Friesner"]}}}}], "parser_run":1, "positions":{"4":["genus", 13], "21":["species", 33], "34":["author_word", 36], "37":["author_word", 39], "40":["author_word", 45], "49":["author_word", 57], "64":["author_word", 70]}}}
|
234
260
|
|
235
261
|
####
|
236
262
|
#
|
@@ -238,7 +264,7 @@ Polypodium x vulgare nothosubsp. mantoniae (Rothm.) Schidlay|{"scientificName":
|
|
238
264
|
#
|
239
265
|
####
|
240
266
|
|
241
|
-
#removing
|
267
|
+
#removing annotations
|
242
268
|
Acarospora cratericola cratericola Shenk 1974 group|{"scientificName":{"parsed":true, "verbatim":"Acarospora cratericola cratericola Shenk 1974 group", "normalized":"Acarospora cratericola cratericola Shenk 1974", "canonical":"Acarospora cratericola cratericola", "hybrid":false, "details":[{"genus":{"string":"Acarospora"}, "species":{"string":"cratericola"}, "infraspecies":[{"string":"cratericola", "rank":"n/a", "authorship":"Shenk 1974", "basionymAuthorTeam":{"authorTeam":"Shenk", "author":["Shenk"], "year":"1974"}}]}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 22], "23":["infraspecies", 34], "35":["author_word", 40], "41":["year", 45]}}}
|
243
269
|
Acarospora cratericola cratericola Shenk 1974 species group|{"scientificName":{"parsed":true, "verbatim":"Acarospora cratericola cratericola Shenk 1974 species group", "normalized":"Acarospora cratericola cratericola Shenk 1974", "canonical":"Acarospora cratericola cratericola", "hybrid":false, "details":[{"genus":{"string":"Acarospora"}, "species":{"string":"cratericola"}, "infraspecies":[{"string":"cratericola", "rank":"n/a", "authorship":"Shenk 1974", "basionymAuthorTeam":{"authorTeam":"Shenk", "author":["Shenk"], "year":"1974"}}]}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 22], "23":["infraspecies", 34], "35":["author_word", 40], "41":["year", 45]}}}
|
244
270
|
Acarospora cratericola cratericola Shenk 1974 species complex|{"scientificName":{"parsed":true, "verbatim":"Acarospora cratericola cratericola Shenk 1974 species complex", "normalized":"Acarospora cratericola cratericola Shenk 1974", "canonical":"Acarospora cratericola cratericola", "hybrid":false, "details":[{"genus":{"string":"Acarospora"}, "species":{"string":"cratericola"}, "infraspecies":[{"string":"cratericola", "rank":"n/a", "authorship":"Shenk 1974", "basionymAuthorTeam":{"authorTeam":"Shenk", "author":["Shenk"], "year":"1974"}}]}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 22], "23":["infraspecies", 34], "35":["author_word", 40], "41":["year", 45]}}}
|
@@ -268,7 +294,8 @@ Abarema clypearia (Jack) Kosterm., p.p.|{"scientificName":{"parsed":true, "verba
|
|
268
294
|
Abarema clypearia (Jack) Kosterm., p. p.|{"scientificName":{"parsed":true, "verbatim":"Abarema clypearia (Jack) Kosterm., p. p.", "normalized":"Abarema clypearia (Jack) Kosterm.", "canonical":"Abarema clypearia", "hybrid":false, "details":[{"genus":{"string":"Abarema"}, "species":{"string":"clypearia", "authorship":"(Jack) Kosterm.", "combinationAuthorTeam":{"authorTeam":"Kosterm.", "author":["Kosterm."]}, "basionymAuthorTeam":{"authorTeam":"Jack", "author":["Jack"]}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 7], "8":["species", 17], "19":["author_word", 23], "25":["author_word", 33]}}}
|
269
295
|
Indigofera phyllogramme var. aphylla R.Vig., p.p.B|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Indigofera phyllogramme var. aphylla R.Vig., p.p.B", "normalized":"Indigofera phyllogramme var. aphylla R.Vig.", "canonical":"Indigofera phyllogramme aphylla", "hybrid":false, "details":[{"genus":{"string":"Indigofera"}, "species":{"string":"phyllogramme"}, "infraspecies":[{"string":"aphylla", "rank":"var.", "authorship":"R.Vig.", "basionymAuthorTeam":{"authorTeam":"R.Vig.", "author":["R.Vig."]}}]}], "parser_run":2, "positions":{"0":["genus", 10], "11":["species", 23], "24":["infraspecific_type", 28], "29":["infraspecies", 36], "37":["author_word", 43]}}}
|
270
296
|
|
271
|
-
#removing nomenclatural
|
297
|
+
#removing nomenclatural annotations
|
298
|
+
Amphiprora pseudoduplex (Osada & Kobayasi, 1990) comb. nov.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Amphiprora pseudoduplex (Osada & Kobayasi, 1990) comb. nov.", "normalized":"Amphiprora pseudoduplex (Osada et Kobayasi 1990)", "canonical":"Amphiprora pseudoduplex", "hybrid":false, "details":[{"genus":{"string":"Amphiprora"}, "species":{"string":"pseudoduplex", "authorship":"(Osada & Kobayasi, 1990)", "basionymAuthorTeam":{"authorTeam":"Osada & Kobayasi", "author":["Osada", "Kobayasi"], "year":"1990"}}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 23], "25":["author_word", 30], "33":["author_word", 41], "43":["year", 47]}}}
|
272
299
|
Arthopyrenia hyalospora (Nyl.) R.C. Harris comb. nov.|{"scientificName":{"parsed":true, "verbatim":"Arthopyrenia hyalospora (Nyl.) R.C. Harris comb. nov.", "normalized":"Arthopyrenia hyalospora (Nyl.) R.C. Harris", "canonical":"Arthopyrenia hyalospora", "hybrid":false, "details":[{"genus":{"string":"Arthopyrenia"}, "species":{"string":"hyalospora", "authorship":"(Nyl.) R.C. Harris", "combinationAuthorTeam":{"authorTeam":"R.C. Harris", "author":["R.C. Harris"]}, "basionymAuthorTeam":{"authorTeam":"Nyl.", "author":["Nyl."]}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 23], "25":["author_word", 29], "31":["author_word", 35], "36":["author_word", 42]}}}
|
273
300
|
Acanthophis lancasteri WELLS & WELLINGTON (nomen nudum)|{"scientificName":{"parsed":true, "verbatim":"Acanthophis lancasteri WELLS & WELLINGTON (nomen nudum)", "normalized":"Acanthophis lancasteri WELLS et WELLINGTON", "canonical":"Acanthophis lancasteri", "hybrid":false, "details":[{"genus":{"string":"Acanthophis"}, "species":{"string":"lancasteri", "authorship":"WELLS & WELLINGTON", "basionymAuthorTeam":{"authorTeam":"WELLS & WELLINGTON", "author":["WELLS", "WELLINGTON"]}}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 22], "23":["author_word", 28], "31":["author_word", 41]}}}
|
274
301
|
Acontias lineatus WAGLER 1830: 196 (nomen nudum)|{"scientificName":{"parsed":true, "verbatim":"Acontias lineatus WAGLER 1830: 196 (nomen nudum)", "normalized":"Acontias lineatus WAGLER 1830", "canonical":"Acontias lineatus", "hybrid":false, "details":[{"genus":{"string":"Acontias"}, "species":{"string":"lineatus", "authorship":"WAGLER 1830: 196", "basionymAuthorTeam":{"authorTeam":"WAGLER", "author":["WAGLER"], "year":"1830"}}}], "parser_version":"test_version", "parser_run":2, "positions":{"0":["genus", 8], "9":["species", 17], "18":["author_word", 24], "25":["year", 29]}}}
|
@@ -308,8 +335,10 @@ Eichornia crassipes ( (Martius) ) Solms-Laub.|{"scientificName":{"parsed":true,
|
|
308
335
|
|
309
336
|
#year without authorship
|
310
337
|
Acarospora cratericola 1929|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Acarospora cratericola 1929","normalized":"Acarospora cratericola 1929","canonical":"Acarospora cratericola","hybrid":false,"details":[{"genus":{"string":"Acarospora"},"species":{"string":"cratericola","year":"1929"}}],"positions":{"0":["genus",10],"11":["species",22],"23":["year",27]}}}
|
338
|
+
Goggia gemmula 1996|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Goggia gemmula 1996", "normalized":"Goggia gemmula 1996", "canonical":"Goggia gemmula", "hybrid":false, "details":[{"genus":{"string":"Goggia"}, "species":{"string":"gemmula", "year":"1996"}}], "parser_run":2, "positions":{"0":["genus", 6], "7":["species", 14], "15":["year", 19]}}}
|
311
339
|
|
312
340
|
#authorship with filius (son of)
|
341
|
+
Oxytropis minjanensis Rech. f.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Oxytropis minjanensis Rech. f.", "normalized":"Oxytropis minjanensis Rech. f.", "canonical":"Oxytropis minjanensis", "hybrid":false, "details":[{"genus":{"string":"Oxytropis"}, "species":{"string":"minjanensis", "authorship":"Rech. f.", "basionymAuthorTeam":{"authorTeam":"Rech. f.", "author":["Rech. f."]}}}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 21], "22":["author_word", 27], "28":["author_word", 30]}}}
|
313
342
|
Platypus bicaudatulus Schedl f. 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl f. 1935", "normalized":"Platypus bicaudatulus Schedl f. 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl f. 1935", "basionymAuthorTeam":{"authorTeam":"Schedl f.", "author":["Schedl f."], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 31], "32":["year", 36]}}}
|
314
343
|
Platypus bicaudatulus Schedl filius 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl filius 1935", "normalized":"Platypus bicaudatulus Schedl filius 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl filius 1935", "basionymAuthorTeam":{"authorTeam":"Schedl filius", "author":["Schedl filius"], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 35], "36":["year", 40]}}}
|
315
344
|
Fimbristylis ovata (Burm. f.) J. Kern|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Fimbristylis ovata (Burm. f.) J. Kern", "normalized":"Fimbristylis ovata (Burm. f.) J. Kern", "canonical":"Fimbristylis ovata", "hybrid":false, "details":[{"genus":{"string":"Fimbristylis"}, "species":{"string":"ovata", "authorship":"(Burm. f.) J. Kern", "combinationAuthorTeam":{"authorTeam":"J. Kern", "author":["J. Kern"]}, "basionymAuthorTeam":{"authorTeam":"Burm. f.", "author":["Burm. f."]}}}], "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 18], "20":["author_word", 25], "26":["author_word", 28], "30":["author_word", 32], "33":["author_word", 37]}}}
|
@@ -327,6 +356,7 @@ Polypodium pectinatum L. f.|{"scientificName":{"parsed":true, "parser_version":"
|
|
327
356
|
Polypodium pectinatum (L. f.) typica Rosent|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum (L. f.) typica Rosent", "normalized":"Polypodium pectinatum (L. f.) typica Rosent", "canonical":"Polypodium pectinatum typica", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"(L. f.)", "basionymAuthorTeam":{"authorTeam":"L. f.", "author":["L. f."]}}, "infraspecies":[{"string":"typica", "rank":"n/a", "authorship":"Rosent", "basionymAuthorTeam":{"authorTeam":"Rosent", "author":["Rosent"]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "23":["author_word", 25], "26":["author_word", 28], "30":["infraspecies", 36], "37":["author_word", 43]}}}
|
328
357
|
|
329
358
|
#year range
|
359
|
+
Eurodryas orientalis Herrich-Schäffer 1845-1847|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Eurodryas orientalis Herrich-Schäffer 1845-1847", "normalized":"Eurodryas orientalis Herrich-Schäffer 1845-1847", "canonical":"Eurodryas orientalis", "hybrid":false, "details":[{"genus":{"string":"Eurodryas"}, "species":{"string":"orientalis", "authorship":"Herrich-Schäffer 1845-1847", "basionymAuthorTeam":{"authorTeam":"Herrich-Schäffer", "author":["Herrich-Schäffer"], "year":"1845-1847"}}}], "parser_run":2, "positions":{"0":["genus", 9], "10":["species", 20], "21":["author_word", 37], "38":["year", 47]}}}
|
330
360
|
Tridentella tangeroae Bruce, 1987-92|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Tridentella tangeroae Bruce, 1987-92","normalized":"Tridentella tangeroae Bruce 1987-92","canonical":"Tridentella tangeroae","hybrid":false,"details":[{"genus":{"string":"Tridentella"},"species":{"string":"tangeroae","authorship":"Bruce, 1987-92","basionymAuthorTeam":{"authorTeam":"Bruce","author":["Bruce"],"year":"1987-92"}}}],"positions":{"0":["genus",11],"12":["species",21],"22":["author_word",27],"29":["year",36]}}}
|
331
361
|
|
332
362
|
#year in square brackets
|
@@ -344,8 +374,10 @@ Morea (Morea) Burt 2342343242 23424322342 23424234|{"scientificName":{"parsed":t
|
|
344
374
|
Nautilus asterizans von|{"scientificName":{"parsed":true, "verbatim":"Nautilus asterizans von", "normalized":"Nautilus asterizans", "canonical":"Nautilus asterizans", "hybrid":false, "details":[{"genus":{"string":"Nautilus"}, "species":{"string":"asterizans"}}], "parser_version":"test_version", "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 19]}}}
|
345
375
|
|
346
376
|
#salvage canonical
|
347
|
-
Morea ssjjlajajaj324$33 234243242|{"scientificName":{"parsed":true, "parser_version":"test_version", "
|
377
|
+
Morea ssjjlajajaj324$33 234243242|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Morea ssjjlajajaj324$33 234243242", "normalized":"Morea", "canonical":"Morea", "hybrid":false, "details":[{"uninomial":{"string":"Morea"}}], "parser_run":2, "positions":{"0":["uninomial", 5]}}}
|
348
378
|
Morea (Morea) burtius 2342343242 23424322342 23424234|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Morea (Morea) burtius 2342343242 23424322342 23424234","normalized":"Morea (Morea) burtius","canonical":"Morea burtius","hybrid":false,"details":[{"genus":{"string":"Morea"},"infragenus":{"string":"Morea"},"species":{"string":"burtius"}}],"positions":{"0":["genus",5],"7":["infragenus",12],"14":["species",21]}}}
|
349
379
|
Verpericola megasoma ""Dall" Pils.|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Verpericola megasoma \"\"Dall\" Pils.","normalized":"Verpericola megasoma","canonical":"Verpericola megasoma","hybrid":false,"details":[{"genus":{"string":"Verpericola"},"species":{"string":"megasoma"}}],"positions":{"0":["genus",11],"12":["species",20]}}}
|
380
|
+
Verpericola megasoma "Dall" Pils.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Verpericola megasoma \"Dall\" Pils.", "normalized":"Verpericola megasoma", "canonical":"Verpericola megasoma", "hybrid":false, "details":[{"genus":{"string":"Verpericola"}, "species":{"string":"megasoma"}}], "parser_run":2, "positions":{"0":["genus", 11], "12":["species", 20]}}}
|
350
381
|
Moraea spathulata ( (L. f. Klatt|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Moraea spathulata ( (L. f. Klatt","normalized":"Moraea spathulata","canonical":"Moraea spathulata","hybrid":false,"details":[{"genus":{"string":"Moraea"},"species":{"string":"spathulata"}}],"positions":{"0":["genus",6],"7":["species",17]}}}
|
351
|
-
|
382
|
+
Stewartia micrantha (Chun) Sealy, Bot. Mag. 176: t. 510. 1967.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Stewartia micrantha (Chun) Sealy, Bot. Mag. 176: t. 510. 1967.", "normalized":"Stewartia micrantha (Chun) Sealy, Bot. Mag.", "canonical":"Stewartia micrantha", "hybrid":false, "details":[{"genus":{"string":"Stewartia"}, "species":{"string":"micrantha", "authorship":"(Chun) Sealy, Bot. Mag.", "combinationAuthorTeam":{"authorTeam":"Sealy, Bot. Mag.", "author":["Sealy", "Bot. Mag."]}, "basionymAuthorTeam":{"authorTeam":"Chun", "author":["Chun"]}}}], "parser_run":2, "positions":{"0":["genus", 9], "10":["species", 19], "21":["author_word", 25], "27":["author_word", 32], "34":["author_word", 38], "39":["author_word", 43]}}}
|
383
|
+
Pyrobaculum neutrophilum V24Sta|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Pyrobaculum neutrophilum V24Sta", "normalized":"Pyrobaculum neutrophilum", "canonical":"Pyrobaculum neutrophilum", "hybrid":false, "details":[{"genus":{"string":"Pyrobaculum"}, "species":{"string":"neutrophilum"}}], "parser_run":2, "positions":{"0":["genus", 11], "12":["species", 24]}}}
|
data/spec/parser/todo.txt
CHANGED
@@ -26,3 +26,5 @@ Polypodium lineare C.Chr. f. caudatoattenuatum Takeda Polypodium
|
|
26
26
|
|
27
27
|
Rosa gallica × tomentosa var. eglandulosa R.Keller Rosa gallica
|
28
28
|
Rosa gallica × afzeliana subsp. vosagiaca forma subcomplicata R.Keller Rosa gallica
|
29
|
+
|
30
|
+
Salmonella sp. (ser.) brancaster Macdonald, Sivell, Emms and Taylor 1948
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biodiversity19
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: treetop
|
@@ -162,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
segments:
|
164
164
|
- 0
|
165
|
-
hash:
|
165
|
+
hash: 1697761162885604721
|
166
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
167
|
none: false
|
168
168
|
requirements:
|