-
Notifications
You must be signed in to change notification settings - Fork 1
/
feed.xml
3206 lines (2500 loc) · 210 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title xml:lang="en">Global Names Architecture</title>
<atom:link type="application/atom+xml" href="http://globalnames.org/feed.xml" rel="self"/>
<link>http://globalnames.org/</link>
<pubDate>Sun, 21 Apr 2024 11:29:29 +0000</pubDate>
<lastBuildDate>Sun, 21 Apr 2024 11:29:29 +0000</lastBuildDate>
<language>en-US</language>
<generator>Jekyll v4.3.2</generator>
<description>Scientific Name Services</description>
<image>
<description>Scientific Names Services</description>
<url>http://globalnames.org/img/logo-rss.png</url>
<title>Global Names Architecture</title>
<link>http://globalnames.org/</link>
<width>144</width>
<height>73</height>
</image>
<item>
<title>GNverifier release v0.6.2, Advanced Search</title>
<link>http://globalnames.org/news/2021/12/12/gnverifier-0.6.2/</link>
<pubDate>Sun, 12 Dec 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNverifier</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/12/12/gnverifier-0.6.2/</guid>
<description><p><a href="https://github.com/gnames/gnverifier">GNverifier</a> can help to answer the following questions:</p>
<ul>
<li>Is a name-string a real name?</li>
<li>Is it spelled correctly, and if not, what might be the correct spelling?</li>
<li>Is the name currently in use?</li>
<li>If it is a synonym, what data sources consider to be currently accepted names?</li>
<li>Is a name a homonym?</li>
<li>What is a taxon that the name points to, and where is it placed in various
classifications?</li>
</ul>
<p>Biannual <a href="https://github.com/gnames/gnverifier">GNverifier</a> database update is done for 14 datasets, new datasets are
pending to be added.</p>
<p>The <a href="https://github.com/gnames/gnverifier/releases/tag/v0.6.2">v0.6.2</a> version of <a href="https://github.com/gnames/gnverifier">GNverifier</a> is out. It brings new features and some
changes in API, input and output format. The main change is an ability to
perform a search by name details, such as an abbreviated genus, author, year.</p>
<p>For example <code class="language-plaintext highlighter-rouge">g:M. sp:galloprovincialis au:Oliv. y:-1800</code> will search for a
name with genus starting with <code class="language-plaintext highlighter-rouge">M</code>, <code class="language-plaintext highlighter-rouge">galloprovincialis</code> as a specific epithet,
an author starting with <code class="language-plaintext highlighter-rouge">Oliv</code> and a year earlier or equal to <code class="language-plaintext highlighter-rouge">1800</code>.</p>
<p>Both name-verification and search return the same format of results. Because of
that we needed to change the name of some fields in the output, so their
meaning would correspond to both verification and search outputs.</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">inputId</code> changed to <code class="language-plaintext highlighter-rouge">id</code></li>
<li><code class="language-plaintext highlighter-rouge">input</code> changed to <code class="language-plaintext highlighter-rouge">name</code></li>
<li><code class="language-plaintext highlighter-rouge">preferredResults changed to </code>results`</li>
</ul>
<p>GNverifier’s <a href="https://apidoc.globalnames.org/gnames">API v1</a> still can be used
(it did not undrgo any format changes), but the <a href="https://verifier.globalnames.org">web-page</a> and command line app
<code class="language-plaintext highlighter-rouge">gnverifier</code> moved to use new
<a href="https://apidoc.globalnames.org/gnames-beta">API v0</a>. When the new API
stabilizes, it will be renamed to API v2.</p>
<h2 id="install-gnverifier-with-homebrew">Install GNverifier with Homebrew</h2>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew tap gnames/gn
brew <span class="nb">install </span>gnverifier
</code></pre></div></div>
<p>or</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew upgrade gnverifier
</code></pre></div></div>
<h2 id="changes-in-functionality-since-v030">Changes in functionality since v0.3.0</h2>
<ul>
<li><a href="https://verifier.globalnames.org">web-page</a> shows the date when a name was imported into <a href="https://github.com/gnames/gnverifier">GNverifier</a> database.</li>
<li>to make it easier to cite <a href="https://github.com/gnames/gnverifier">GNverifier</a>, there is a <a href="https://zenodo.org/record/5774421#.YbXkDYpMFOQ">DOI information</a> on
its <a href="https://github.com/gnames/gnverifier">GitHub page</a>.</li>
<li>tab-delimited values (TSV) format is now supported.</li>
<li>added <a href="https://www.algaebase.org">AlgaeBase</a> to data-sources.</li>
<li>there are now options to return all matched results (use with caution, as
the output might be excessively big).</li>
<li>show score details in the output and on the <a href="https://verifier.globalnames.org">web-page</a>.</li>
<li><a href="https://github.com/gnames/gnverifier#advanced-search">advanced search</a> is added to both command line and web-based user interfaces.</li>
</ul>
<h2 id="deprecation-of-services">Deprecation of services.</h2>
<p><a href="http://gni.globalnames.org">GNI</a> is the oldest version of GN name-verification algorithms. Most of its
functionality now exists in <a href="https://github.com/gnames/gnverifier">GNverifier</a>, so the <a href="http://gni.globalnames.org">GNI web-site</a> is
going to be removed in the beginning of 2022.</p>
<p>The <a href="https://index.globalnames.org">Scala version of GNI</a> will also be
scheduled for removal.</p>
<p><a href="https://resolver.globalnames.org">GNresolver</a> will continue to run the longest.
It will not be deprecated until <a href="https://github.com/gnames/gnverifier">GNverifier</a> API v2 will be released.</p>
<p>If you use old systems, consider switching to <a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a>
because older systems will eventually be deprecated and stopped.</p>
</description>
</item>
<item>
<title>GNparser (Go language) release 1.5.0</title>
<link>http://globalnames.org/news/2021/10/28/gnparser-1.5.0/</link>
<pubDate>Thu, 28 Oct 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNparser</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/10/28/gnparser-1.5.0/</guid>
<description><p><a href="https://github.com/gnames/gnparser/releases/tag/v1.5.0">GNparser v1.5.0</a> is out. The following changes happened since 1.3.3:</p>
<h2 id="v150"><a href="https://github.com/gnames/gnparser/compare/v1.4.2...v1.5.0">v1.5.0</a></h2>
<p>Courtesy of Toby Marsden (@tobymarsden) GNparser in ‘cultivars mode’ is able to parse graft-chymeras.
An example: “Cytisus purpureus + Laburnum anagyroides”.
Note that cultivar-specific names are not recognized outside of the cultivars mode.</p>
<h2 id="v142"><a href="https://github.com/gnames/gnparser/compare/v1.4.1...v1.4.2">v1.4.2</a></h2>
<p>Add support for authors with prefix ‘ver’.
An example: “Cryptopleura farlowiana (J.Agardh) ver Steeg &amp; Jossly”.</p>
<h2 id="v141"><a href="https://github.com/gnames/gnparser/compare/v1.4.0...v1.4.1">v1.4.1</a></h2>
<p>Fixed parsing of multinomials where authorship is not separated by space.
An example: “Paeonia daurica coriifolia(Rupr.) D.Y.Hong”.</p>
<h2 id="v140"><a href="https://github.com/gnames/gnparser/compare/v1.3.3...v1.4.0">v1.4.0</a></h2>
<p>Support an output in tab-separated values format. Quite often TSV format is much easier to parse than CSV.
Tab character is much less common inside of scientific names than <code class="language-plaintext highlighter-rouge">,</code> character.
Therefore just splitting by <code class="language-plaintext highlighter-rouge">\t</code> breaks a row into its components in many cases.
It is still recommended to use CSV libraries for any given language to avoid unexpected problems.</p>
<p>Authors that contain prefixes <code class="language-plaintext highlighter-rouge">do</code> and <code class="language-plaintext highlighter-rouge">de los</code> are now parsed correctly.
An example: “… de Cássia Silva do Nascimento …”</p>
<p>Authors with suffex <code class="language-plaintext highlighter-rouge">ter</code> are parsed correctly.
An example: “Dematiocladium celtidicola Crous, M.J. Wingf. &amp; Y. Zhang ter”.</p>
<p>Added support for non-ASCII apostrophes in Authors’ names.
An example: “Galega officinalis (L.) L`Hèr.”.</p>
<h2 id="new-gnparser-c-binding-package-for-nodejs-by-toby-marsden">New GNparser C-binding package for Node.js by Toby Marsden</h2>
<p>Toby Marsden also <a href="https://github.com/amazingplants/node-gnparser">created GNparser wrapper for Node.js</a>.</p>
<h2 id="update-of-c-binding-for-ruby-based-parser">Update of C-binding for Ruby-based parser</h2>
<p>The new v5.3.4 [<code class="language-plaintext highlighter-rouge">biodiversity</code> Ruby gem][biodiversity] is released using C-binding to GNparser v1.4.2</p>
</description>
</item>
<item>
<title>GNparser (Go language) release 1.3.3</title>
<link>http://globalnames.org/news/2021/08/13/gnparser-1.3.3/</link>
<pubDate>Fri, 13 Aug 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNparser</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/08/13/gnparser-1.3.3/</guid>
<description><p><a href="https://github.com/gnames/gnparser/releases/tag/v1.3.3">GNparser v1.3.3</a> is out. The following changes happened since 1.3.0:</p>
<ul>
<li>
<p>GNparser received a <a href="https://zenodo.org/badge/DOI/10.5281/zenodo.5180412.svg">citable DOI</a> (v1.3.1)</p>
</li>
<li>
<p><a href="https://github.com/gnames/gnparser/issues/53">Names-exceptions</a> that are hard to parse because they use some nomenclautral,
or biochemical terms as specific epithets are [now covered]. Some examples:</p>
</li>
</ul>
<pre><code class="language-txt">Navicula bacterium
Xestia cfuscum
Bolivina prion
Bembidion satellites
Acrostichum nudum
Gnathopleustes den
</code></pre>
<ul>
<li>2-letter generic names are appended with <a href="https://github.com/gnames/gnparser/issues/182">3 more genera</a> (<code class="language-plaintext highlighter-rouge">Do</code>, <code class="language-plaintext highlighter-rouge">Oo</code>, <code class="language-plaintext highlighter-rouge">Du</code>).</li>
</ul>
<pre><code class="language-txt">Do holotrichius (beetle)
Oo spinosum (arachnid)
Nu aakhu (annelid)
</code></pre>
<ul>
<li>Known prefixes in authorships are appended with <a href="https://github.com/gnames/gnparser/issues/183">3 more prefixes</a> adding
support for authors like:</li>
</ul>
<pre><code class="language-txt">delle Chiaje
dos Santos
ten Broeke
ten Hove
</code></pre>
<ul>
<li>
<p>Parsing of names with <a href="https://github.com/gnames/gnparser/issues/184">ms in</a> like <code class="language-plaintext highlighter-rouge">Crisia eburneodenticulata Smitt ms in Busk, 1875</code> is
supported (normalized to <code class="language-plaintext highlighter-rouge">Crisia eburneodenticulata Smitt ex Busk, 1875</code>).</p>
</li>
<li>
<p>More <a href="https://github.com/gnames/gnparser/issues/184">annotation ‘stop’ words are added</a>, fixing parsing for names like:</p>
</li>
</ul>
<pre><code class="language-txt">Crisina excavata (d'Orbigny, 1853) non (d'Orbigny, 1853)
Eulima excellens Verkrüzen fide Paetel, 1887
Porina reussi Meneghini in De Amicis, 1885 vide Neviani (1900)
</code></pre>
<p>Many thanks to @diatomsRcool, @KatjaSchulz and @joelnitta for feature requests
and bug reports!</p>
<h2 id="clib-libraries-are-now-provided-with-each-new-release">Clib libraries are now provided with each new release</h2>
<p>GNparser can be incorportated via C-binding into many other languages. To make
such incorporation easier, the clib files for MacOS, Linux and MS Windows are
now provided with <a href="https://github.com/gnames/gnparser/releases/tag/v1.3.3">every new release</a>.</p>
<pre><code class="language-txt">macos-latest-clib.zip
ubuntu-latest-clib.zip
windows-latest-clib.zip
</code></pre>
<h2 id="update-of-c-binding-for-ruby-based-parser">Update of C-binding for Ruby-based parser</h2>
<p>The new v5.3.3 <a href="https://rubygems.org/gems/biodiversity"><code class="language-plaintext highlighter-rouge">biodiversity</code> Ruby gem</a> is released using C-binding to
GNparser v1.3.3</p>
<h2 id="gnparser-for-javascript">GNparser for JavaScript</h2>
<p>@tobymarsden incorporated GNparser C-binding into a <a href="https://github.com/gnames/gnparser/issues/181">Node.js package</a>. He plans to release the new package for NPM.</p>
</description>
</item>
<item>
<title>Why Go is a great language for biodiversity informatics</title>
<link>http://globalnames.org/news/2021/07/14/go/</link>
<pubDate>Wed, 14 Jul 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>review</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/07/14/go/</guid>
<description><p>We, as a biodiversity informatics community, use quite a few programming
languages. Python, Java, R, Ruby are probably the most popular ones. After
working for the last few years with a language Go I think it would be very
beneficial to add it to the biodiversity informatics toolset.</p>
<p>When I started writing in Go, the language seemed to be a bit clunky, did not
have much of cool shiny language constructs that other modern languages have. I
felt there were no “cute” syntax gold nuggets that are common in languages like
Ruby or Python. However, I think Go is amasing for solving many biodiversity
informatics problems.</p>
<p>I tried about 10 different languages for the last 12 years working on
Encyclopedia Of Life and Global Names projects, and for the last 5 years Go
is the language of choice for the vast majority of projects I make.</p>
<p>Lets look at the key features of the language that influenced my choice.</p>
<h2 id="feature-1-amazing-code-readability">Feature 1: Amazing code readability</h2>
<p>Biodiversity informatics runs mostly in academia. In academia projects
blossom and wither depending on availability of funds. Funds often appear and
dissapear, students and postdocs come and go, and quite often people have to
continue development of projects written by someone else.</p>
<p>Therefore, an ability to understand a code written by another person is crucial
for longevity of academia projects. So many important and interesting
developments become stale or died out only because their code was too hard to
understand by newcomers.</p>
<p>I found that code written in Go is one of the easiest to understand. The
simplicity of syntax was one of major design goals in Go, and most of the common
programming tasks can be solved only in one way. Go designers decided on a
brutally minimalistic approach, as a result Go has very little bloat and in vast
majority of cases has no duplication of features between its syntactic
constructs.</p>
<p>As a result a programming style of novice and experienced programmers does not
differ that much. It is great for supporting projects written by others, and for
learning from Go code itself how to solve common problems.</p>
<h2 id="feature-2-go-is-easy-to-learn">Feature 2: Go is easy to learn</h2>
<p>Minimalistic approach to the language design makes it possible to learn Go with
5-20 times less effort than other languages. Specification of the language is
tiny and just going through an <a href="https://tour.golang.org/welcome/1">‘official’ Go tutorial</a> is enough to
become productive after a few hours.</p>
<h2 id="feature-3-go-is-easy-to-maintain">Feature 3: Go is easy to maintain</h2>
<p>Developers of the language released Go v1.0 in 2012 and plan to support backward
compatibility for many years to come. Starting with Go v1.11 there is also
support for versioning of community packages as dependencies. As a result
it is possible to write a program or library and use it without any changes
inspite of new versions of Go appearing regularly. If a library or a program
depends on Open Source packages, the specific version of each package can be
set in a <code class="language-plaintext highlighter-rouge">go.mod</code> file.</p>
<p>New versions of Go appear regularly, and to use recently added features a
developer can provide Go version in <code class="language-plaintext highlighter-rouge">go.mod</code>.</p>
<p>Go team is very careful when they consider new features, and such features are
implemented only after much thought and discussion. As a result even massive new
functionalities do not create backward incompatibilities.</p>
<h2 id="feature-4-go-is-fast">Feature 4: Go is fast</h2>
<p>Go is much faster than such languages like Python, Ruby, Perl or R. In addition
concurrency and parallel execution of the code is a core concept of Go.
Writing concurrent code in Go is orders of magnitude easier than
in C, and after some practice becomes a second nature of a developer.</p>
<p>The combination of the language speed and parallel execution of the code on
multi-core CPUs allows to make Go programs up to 100 times faster than programs
written in interpreted languages. Go is somewhat slower than C, but Go programs
are often faster than analogous C programs, because of the ease of developing
concurrency and parallelism in Go.</p>
<h2 id="feature-5-speed-of-programming-is-great">Feature 5: Speed of programming is great</h2>
<p>Go is quite expressive, and, in my experience, the speed of developing in Go
is comparable with speed of development in Python or Ruby.</p>
<p>Also, running tests in Go is very fast, even big programs
can be tested without a long wait. It allows to run tests often, or run
them on each save.</p>
<h2 id="feature-6-very-fast-compilation">Feature 6: Very fast compilation</h2>
<p>Go is a compiled language, and requires compilation of its code before
execution. The speed of compiling the code is usually almost instantaneous,
and the language developers spend a lot of effort to keep it this way. The
speed of compiling is only slightly slower than executing Python or Ruby
code.</p>
<h2 id="feature-7-convenient-executable-files">Feature 7: Convenient executable files</h2>
<p>As a rule, Go compiles a program into a self-sufficient single executable file.
Most of Go programs have no external dependencies and, as a result, are very
easy to distribute and install. Downloading one file and running it is all what
is required. Go supports cross-compilation. It means that it can create
executable files for any supported OS on one computer. For example, a computer
running Linux can create executables for MS Windows, Mac OS, and Linux in one
go.</p>
<p>The size of the executable files is really tiny. For example, the size of a
name-finding project written in Ruby (GNRD) is about a gigabyte, while the
analogous code in Go is only 50 megabytes.</p>
<p>Small size of executables and lack of external dependencies make Go fantastic
for publishing projects as Docker images, or deplying such images on Kubernetes.</p>
<h2 id="feature-8-go-is-great-for-remote-apis-and-web-applications">Feature 8: Go is great for remote APIs and web-applications</h2>
<p>Writing an extemely fast web-server in Go is a trivial task. Developing
web-applications is quite easy with provided template methods. Distributing
web-applications is also easy, because all the static files are usually
included into a single binary. Besides a traditional REST approach to APIs
there is a very fast streaming gRPC approach.</p>
<h2 id="feature-9-rich-ecosystem-of-open-source-libraries">Feature 9: Rich ecosystem of Open Source libraries</h2>
<p>Inspite of being a relatively young language (v1.0.0 was released in 2012) Go
has a very active community and a large number of libraries for many development
needs. Specific libraries for biodiversity informatics are scarse so far, but
they start to appear. For example Global Names provides libraries for <a href="https://github.com/gnames/gnfinder">finding</a>,
<a href="https://github.com/gnames/gnparser">parsing</a> and <a href="https://github.com/gnames/gnverifier">verifying</a> of scientific names.</p>
<h2 id="feature-10-go-code-can-be-used-in-many-other-languages-via-c-bindings">Feature 10: Go code can be used in many other languages via C-bindings</h2>
<p>It is possible to compile Go into a C library, and use it via C-binding with
many other languages (C, R, Ruby, Python, Java for example).</p>
<p>It is also possible to incorporate C libraries into Go, however most of
functionality usually provided by C libraries is already implemented in pure Go
and, most of the time, introducing such depencencies is not required. For
example there are fantastic Go drivers for most popular databases.</p>
<h2 id="feature-11-there-are-very-good-tools-for-go-developers">Feature 11: There are very good tools for Go developers</h2>
<p>A lot of tools exist for Go that simplify development. Go creators pioneered an
idea of auto-formatting of a written code. There are fantastic plugins for Go
development in VS code, Vim, Emacs etc. JetBrains releases a standalone Go
development platform. Go plugins incorporate linting, formatting,
debugging, refactoring tools. Most of these tools can also be used as a
stand-alone command line applications. Go has powerful profiling and tracing
tools as well.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I hope this post gave you an idea why Go is good for biodiversity informatics,
and you can try to start solving problems that appear in your work using Go
language. I would suggest to pick a small well-defined task, that requires fast
execution, read the <a href="https://tour.golang.org/welcome/1">tour of Go</a> tutotiral, install Go and its tools for your
favorite editor and start hacking the code!</p>
</description>
</item>
<item>
<title>GNparser (Go language) release 1.3.0</title>
<link>http://globalnames.org/news/2021/07/05/gnparser-1.3.0/</link>
<pubDate>Mon, 05 Jul 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNparser</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/07/05/gnparser-1.3.0/</guid>
<description><p><a href="https://github.com/gnames/gnparser/releases/tag/v1.3.0">GNparser v1.3.0</a> is out. The major new functionality is an ability
to recognize and parse botanical cultivar names. This ability was added to
<a href="https://github.com/gnames/gnparser">GNparser</a> by <a href="https://github.com/tobymarsden">Toby Marsden</a>, thanks Toby for a great patch!</p>
<p>In addition to <a href="https://www.iapt-taxon.org/nomen/main.php">ICN</a> nomenclatural code for botanical scientific names there is
an <a href="https://www.ishs.org/sites/default/files/static/ScriptaHorticulturae_18.pdf">ICNCP</a> nomenclatural code for cultivated plants. <a href="https://www.ishs.org/sites/default/files/static/ScriptaHorticulturae_18.pdf">ICNCP</a> supports names
like:</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Dahlia ‘Doris Day’
Fragaria 'Cambridge Favourite'
Rosa multiflora cv. 'Crimson Rambler'
</code></pre></div></div>
<p>Now, if these names are parsed as cultivars, the cultivar epithet is included
into a canonical form like <code class="language-plaintext highlighter-rouge">Rosa multiflora ‘Crimson Rambler’</code>. However such
addition would create problems for users who are more interested in the
canonical form according to <a href="https://www.iapt-taxon.org/nomen/main.php">ICN</a>: <code class="language-plaintext highlighter-rouge">Rosa multiflora</code>. Therefore, by default
<a href="https://github.com/gnames/gnparser">GNparser</a> will process such names according to <a href="https://www.iapt-taxon.org/nomen/main.php">ICN</a> code, providing a
warning:</p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="nl">"quality"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
</span><span class="nl">"warning"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Cultivar epithet"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>If a user does need to treat such names as cultivars, there is a flag in the
command line app: <code class="language-plaintext highlighter-rouge">gnparser "Rosa multiflora cv. 'Crimson Rambler'" -C</code>. When
parsed with this flag, warning will disappear and canonical forms will include
cultivar information. <a href="https://parser.globalnames.org">GNparser web-interface</a> has a “cultivar checkbox” now,
as well as there is a “cultivar” option in <a href="https://apidoc.globalnames.org/gnparser">GNparser RESTful API</a>.</p>
<p>Parsed detailed data for cultivars:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnparser <span class="s2">"Rosa multiflora cv. 'Crimson Rambler'"</span> <span class="nt">-C</span> <span class="nt">-d</span> <span class="nt">-f</span> pretty
</code></pre></div></div>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="nl">"parsed"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="nl">"quality"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
</span><span class="nl">"verbatim"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa multiflora cv. 'Crimson Rambler'"</span><span class="p">,</span><span class="w">
</span><span class="nl">"normalized"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa multiflora ‘Crimson Rambler’"</span><span class="p">,</span><span class="w">
</span><span class="nl">"canonical"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"stemmed"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa multiflor ‘Crimson Rambler’"</span><span class="p">,</span><span class="w">
</span><span class="nl">"simple"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa multiflora ‘Crimson Rambler’"</span><span class="p">,</span><span class="w">
</span><span class="nl">"full"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa multiflora ‘Crimson Rambler’"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"cardinality"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w">
</span><span class="nl">"details"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"species"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nl">"genus"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa"</span><span class="p">,</span><span class="w">
</span><span class="nl">"species"</span><span class="p">:</span><span class="w"> </span><span class="s2">"multiflora"</span><span class="p">,</span><span class="w">
</span><span class="nl">"cultivar"</span><span class="p">:</span><span class="w"> </span><span class="s2">"‘Crimson Rambler’"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nl">"words"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"verbatim"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa"</span><span class="p">,</span><span class="w">
</span><span class="nl">"normalized"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Rosa"</span><span class="p">,</span><span class="w">
</span><span class="nl">"wordType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"GENUS"</span><span class="p">,</span><span class="w">
</span><span class="nl">"start"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
</span><span class="nl">"end"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"verbatim"</span><span class="p">:</span><span class="w"> </span><span class="s2">"multiflora"</span><span class="p">,</span><span class="w">
</span><span class="nl">"normalized"</span><span class="p">:</span><span class="w"> </span><span class="s2">"multiflora"</span><span class="p">,</span><span class="w">
</span><span class="nl">"wordType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SPECIES"</span><span class="p">,</span><span class="w">
</span><span class="nl">"start"</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w">
</span><span class="nl">"end"</span><span class="p">:</span><span class="w"> </span><span class="mi">15</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="w">
</span><span class="nl">"verbatim"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Crimson Rambler"</span><span class="p">,</span><span class="w">
</span><span class="nl">"normalized"</span><span class="p">:</span><span class="w"> </span><span class="s2">"‘Crimson Rambler’"</span><span class="p">,</span><span class="w">
</span><span class="nl">"wordType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CULTIVAR"</span><span class="p">,</span><span class="w">
</span><span class="nl">"start"</span><span class="p">:</span><span class="w"> </span><span class="mi">21</span><span class="p">,</span><span class="w">
</span><span class="nl">"end"</span><span class="p">:</span><span class="w"> </span><span class="mi">36</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">],</span><span class="w">
</span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"38ff69c4-7e1a-5a26-bfc4-ee641fed6ba7"</span><span class="p">,</span><span class="w">
</span><span class="nl">"parserVersion"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nightly"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>In addition Toby found and helped to fix problems with <a href="https://github.com/amazingplants/gnparser/blob/378a4d1d4907a3d696b2fe02a0336ca6445d2bc7/ent/stemmer/stemmer.go">stemming of hybrid
formulas</a> and with providing correct <a href="https://github.com/gnames/gnparser/issues/174">output for hybrid signs</a>
in the “details:words” section. Again, thanks for this contribution <a href="https://github.com/tobymarsden">Toby
Marsden</a>!</p>
<p>You can grab <a href="https://github.com/gnames/gnparser/releases/tag/v1.3.0">GNparser v1.3.0</a> binaries and follow <a href="https://github.com/gnames/gnparser#installation">installation instructions</a>,
or use <a href="https://brew.sh/">Homebrew</a> to install it on operating systems that support it:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew tap gnames/gn
brew <span class="nb">install </span>gnparser
</code></pre></div></div>
</description>
</item>
<item>
<title>GNfinder release v0.14.1</title>
<link>http://globalnames.org/news/2021/06/19/gnfinder-0.14.1/</link>
<pubDate>Sat, 19 Jun 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNfinder</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/06/19/gnfinder-0.14.1/</guid>
<description><p>Find scientific names in plain texts, PDF files, MS documents etc.</p>
<p><a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> is a program for finding scientific names in texts.
GNfinder exists for several years now and is responsible for creation of name
indices for Biodiversity Heritage Library (BHL) and HathiTrust Digital Library.
The program is fast enough to process 5 million pages of BHL in just a couple
of hours.</p>
<p>The new <a href="https://github.com/gnames/gnfinder/releases/v0.14.1"><strong>GNfinder</strong> v0.14.1</a> can find names not only
in plain UTF8-encoded texts, but also in a large variety of files including
PDF, MS Word, MS Excel, and images. In this blog post we describe how it
can be used.</p>
<p><a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> code follows <a href="https://semver.org">Semantic Versioning</a> practices. So
users need to be aware that for versions 0.x.x backward incompatible changes
might happen.</p>
<h2 id="summary">Summary</h2>
<p><a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> is a command line application, that can also be used
as a RESTful service. In the near future it will also have a web-based user
interface and will run at <code class="language-plaintext highlighter-rouge">https://finder.globalnames.org</code></p>
<p>The program uses heuristic and Natural Language Processing (NLP) algorithms for
name finding.</p>
<h2 id="performance">Performance</h2>
<p>For a test we used 4MB PDF file that contains ~2000 unique names. These names
are mentioned in text ~13000 times.</p>
<p>Time for conversion to UTF8-encoded plain text: 2.5 sec</p>
<p>Time for name-finding: 0.4 sec</p>
<p>Time for name-verification of 2000 uniquely found names: 2.5 sec</p>
<h2 id="installation">Installation</h2>
<p>The program consists of one stand-alone file, so it is easy to install. The
binaries for MS WIndows, Mac OS or Linux can be downloaded from
<a href="https://github.com/gnames/gnfinder/releases/v0.14.1">GitHub</a>. In addition <a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> can be
installed using a Homebrew package manager with the following terminal commands:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew tap gnames/gn
brew <span class="nb">install </span>gnfinder
</code></pre></div></div>
<p>For more detailed installation instructions see the <a href="https://github.com/gnames/gnfinder">documentation</a>
on GitHub.</p>
<h2 id="usages">Usages</h2>
<p><a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> is a command line application. It requires an internet
connection for converting files to UTF8-encoded text and for name-verification.</p>
<p>To get help use:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnfinder <span class="nt">-h</span>
</code></pre></div></div>
<p>To get names from a UTF8-encoded text file (with -U flag no internet connection
is required):</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnfinder <span class="nt">-U</span> file-with-names.txt
</code></pre></div></div>
<p>To get names from any other kind of file:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnfinder file.pdf
</code></pre></div></div>
<p>To find names, to verify them and to output results in JSON format:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnfinder file.pdf <span class="nt">-v</span> <span class="nt">-f</span> pretty <span class="o">&gt;</span> file-names.csv
</code></pre></div></div>
<p>To convert PDF file into text:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnfinder <span class="nt">-I</span> file.pdf <span class="o">&gt;</span> file.txt
</code></pre></div></div>
<h2 id="tutorial">Tutorial</h2>
<p>I wrote a <a href="https://globalnames.org/docs/tut-gnfinder/">tutorial</a> how to exctract scientific names in parallel from a
large number of PDF files.</p>
<p>For more information read the <a href="https://github.com/gnames/gnfinder">documentation</a> on GitHub.</p>
<h2 id="restful-api">RESTful (API)</h2>
<p>You can run <a href="https://github.com/gnames/gnfinder"><strong>GNfinder</strong></a> as a <a href="https://apidoc.globalnames.org/gnfinder">RESTful API</a>
service as well. For now API can work only with UTF-8 encoded texts, but other
file formats will be available via API as well after completion of a
web-based user interface.</p>
</description>
</item>
<item>
<title>GNverifier release v0.3.0</title>
<link>http://globalnames.org/news/2021/04/10/gnverifier-0.3.0/</link>
<pubDate>Sat, 10 Apr 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNverifier</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/04/10/gnverifier-0.3.0/</guid>
<description><p>Very fast scientific name checker is out.</p>
<p>There are millions of checklists in use by scientists and nature enthusiasts.
Very often, such lists contain misspellings or outdated names. To help
researchers clean up their checklists and monitor their quality, we are
releasing <a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a> v0.3.0 written in Go language.</p>
<p><a href="https://github.com/gnames/gnverifier"><strong>GNverivier</strong></a> code follows <a href="https://semver.org">Semantic Versioning</a> practices. So
users need to be aware that for versiong 0.x.x backward incompatible changes
might happen.</p>
<p>We released several implementations of name-verification
(reconciliation/resolution) before. All of them did not have enough speed for
verifying massive lists of scientific names. This release provides from 10x to
100x throughput improvements compared to older implementations.</p>
<h2 id="summary">Summary</h2>
<p><a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a> can help to answer the following questions:</p>
<ul>
<li>Is a name-string a real name?</li>
<li>Is it spelled correctly, and if not, what might be the correct spelling?</li>
<li>Is the name currently in use?</li>
<li>If it is a synonym, what data sources consider to be currently accepted names?</li>
<li>Is a name a homonym?</li>
<li>What is a taxon that the name points to, and where is it placed in various
classifications?</li>
</ul>
<p>Name verification and reconciliation involves several steps.</p>
<ul>
<li>Exact match: input name matches canonical form located in one or more
data-sources.</li>
<li>Fuzzy match: if no exact match is found, there is a fuzzy matching of
canonical forms</li>
<li>Partial Exact match: if the previous two steps failed, we remove words from
the end or from the middle of a name and try to match what is left until we
end up with a bare genus.</li>
<li>Partial Fuzzy match: in case if the partial exact match did not work, and the
remained name is not uninomial, we apply fuzzy matching algorithms.</li>
</ul>
<p>A scoring algorithm then sorts matched results. The <a href="https://verifier.globalnames.org/about">“About”
page</a> contains more detailed information about matching and scoring.</p>
<h2 id="performance">Performance</h2>
<p>We observe speeds of ~2,500 names per second for checklists that are coming
from optical character recognition process and contain many misspellings.</p>
<h2 id="usages">Usages</h2>
<p>The simplest way to use <a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a> is via
<a href="https://verifier.globalnames.org">web-interface</a>. The online application emits results in HTML,
CSV and JSON formats and can process up to 5000 names per request.</p>
<p>For larger datasets, and as an alternative, there is a <a href="https://github.com/gnames/gnverifier/releases/tag/v0.3.0">command line
application</a> that can be downloaded for Windows, Mac, and Linux.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnverifier file-with-names.txt
</code></pre></div></div>
<p>This version adds an option <code class="language-plaintext highlighter-rouge">-c</code> or <code class="language-plaintext highlighter-rouge">--capitalize</code> to fix name-strings’
capitalization before verification. It is beneficial for web-interface, as it
allows users “to be lazy” when they try to match names.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gnverifier <span class="s2">"drsophila melanogaster"</span> <span class="nt">-c</span> <span class="nt">-f</span> pretty
INFO[0000] Using config file: /home/dimus/.config/gnverifier.yaml.
<span class="o">{</span>
<span class="s2">"inputId"</span>: <span class="s2">"b20a7c40-f593-5a68-a048-0a24742b4283"</span>,
<span class="s2">"input"</span>: <span class="s2">"drsophila melanogaster"</span>,
<span class="s2">"inputCapitalized"</span>: <span class="nb">true</span>,
<span class="s2">"matchType"</span>: <span class="s2">"Fuzzy"</span>,
<span class="s2">"bestResult"</span>: <span class="o">{</span>
<span class="s2">"dataSourceId"</span>: 1,
<span class="s2">"dataSourceTitleShort"</span>: <span class="s2">"Catalogue of Life"</span>,
<span class="s2">"curation"</span>: <span class="s2">"Curated"</span>,
<span class="s2">"recordId"</span>: <span class="s2">"2586298"</span>,
<span class="s2">"localId"</span>: <span class="s2">"69bbaee49e7c2f749ee7712f3f168920"</span>,
<span class="s2">"outlink"</span>: <span class="s2">"http://www.catalogueoflife.org/annual-checklist/2019/details/species/id/69bbaee49e7c2f749ee7712f3f168920"</span>,
<span class="s2">"entryDate"</span>: <span class="s2">"2020-06-15"</span>,
<span class="s2">"matchedName"</span>: <span class="s2">"Drosophila melanogaster Meigen, 1830"</span>,
<span class="s2">"matchedCardinality"</span>: 2,
<span class="s2">"matchedCanonicalSimple"</span>: <span class="s2">"Drosophila melanogaster"</span>,
<span class="s2">"matchedCanonicalFull"</span>: <span class="s2">"Drosophila melanogaster"</span>,
<span class="s2">"currentRecordId"</span>: <span class="s2">"2586298"</span>,
<span class="s2">"currentName"</span>: <span class="s2">"Drosophila melanogaster Meigen, 1830"</span>,
<span class="s2">"currentCardinality"</span>: 2,
<span class="s2">"currentCanonicalSimple"</span>: <span class="s2">"Drosophila melanogaster"</span>,
<span class="s2">"currentCanonicalFull"</span>: <span class="s2">"Drosophila melanogaster"</span>,
<span class="s2">"isSynonym"</span>: <span class="nb">false</span>,
<span class="s2">"classificationPath"</span>: <span class="s2">"Animalia|Arthropoda|Insecta|Diptera|Drosophilidae|Drosophila|Drosophila melanogaster"</span>,
<span class="s2">"classificationRanks"</span>: <span class="s2">"kingdom|phylum|class|order|family|genus|species"</span>,
<span class="s2">"classificationIds"</span>: <span class="s2">"3939792|3940206|3940214|3946159|3946225|4031785|2586298"</span>,
<span class="s2">"editDistance"</span>: 1,
<span class="s2">"stemEditDistance"</span>: 1,
<span class="s2">"matchType"</span>: <span class="s2">"Fuzzy"</span>
<span class="o">}</span>,
<span class="s2">"dataSourcesNum"</span>: 28,
<span class="s2">"curation"</span>: <span class="s2">"Curated"</span>
<span class="o">}</span>
</code></pre></div></div>
<p>It is possible to map a checklist to one of 100+ data sources aggregated in
<a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a>.</p>
<p>The following command will match all names from
<code class="language-plaintext highlighter-rouge">file-with-names.txt</code> against <code class="language-plaintext highlighter-rouge">the Catalogue of Life.</code></p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnverifier file-with-names.txt <span class="nt">-s</span> 1 <span class="nt">-o</span> <span class="nt">-f</span> pretty
</code></pre></div></div>
<p>It is also possible to run web-interface locally by running:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnverifier <span class="nt">-p</span> 4000
</code></pre></div></div>
<p>After running the command above, the interface can be accessed by a browser via
<code class="language-plaintext highlighter-rouge">https://globalnames.org</code> URL.</p>
<p>One can find a complete list of <code class="language-plaintext highlighter-rouge">gnverifier</code> by running:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gnverifier <span class="nt">-h</span>
</code></pre></div></div>
<h2 id="application-programming-interface-api">Application Programming Interface (API)</h2>
<p><a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a> does not keep all the data needed for processing
name-strings locally. It uses a <a href="https://app.swaggerhub.com/apis-docs/dimus/gnames/1.0.0">remote API</a> located at
<code class="language-plaintext highlighter-rouge">https://verifier.globalnames.org/api/v1</code>.</p>
<p>The RESTful API is public. It has an <a href="https://app.swaggerhub.com/apis-docs/dimus/gnames/1.0.0">OpenAPI description</a> and is
available for external scripts.</p>
<h2 id="deprecation-of-old-systems">Deprecation of old systems</h2>
<p>There are several older approaches to solve the same problem:</p>
<ul>
<li><a href="https://gni.globalnames.org">GNI</a></li>
<li><a href="https://resolver.globalnames.org">GNresolver</a></li>
<li><a href="https://index.globalnames.org">GNI Scala</a></li>
</ul>
<p>If you use any of these, consider switching to <a href="https://github.com/gnames/gnverifier"><strong>GNverifier</strong></a>
because older systems will eventually be deprecated and stopped.</p>
</description>
</item>
<item>
<title>GNparser (Go language) release 1.2.0</title>
<link>http://globalnames.org/news/2021/04/10/gnarser-1.2.0/</link>
<pubDate>Sat, 10 Apr 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNparser</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/04/10/gnarser-1.2.0/</guid>
<description><p><a href="https://github.com/gnames/gnparser/releases/tag/v1.2.0">Version 1.2.0</a> of <a href="https://github.com/gnames/gnparser">GNparser</a> is out. It adds an option to parse low-case names
in case if a checklist does not follow nomenclatural standards.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gnparser <span class="s2">"plantago major"</span> <span class="nt">--capitalize</span>
Id,Verbatim,Cardinality,CanonicalStem,CanonicalSimple,CanonicalFull,Authorship,Year,Quality
085e38af-e19b-56e5-9fec-5d81a467a656,plantago major,2,Plantago maior,Plantago major,Plantago major,,,4
</code></pre></div></div>
<p>Capitalization does not apply if for named hybrids</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gnparser <span class="s2">"xAus bus"</span> <span class="nt">-c</span>
Id,Verbatim,Cardinality,CanonicalStem,CanonicalSimple,CanonicalFull,Authorship,Year,Quality
9b24b828-88a6-58b7-ac76-1342c8ac135d,xAus bus,2,Aus bus,Aus bus,× Aus bus,,,3
</code></pre></div></div>
<p>GNparser assigns Quality=4 (the worst) and issues a warning.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gnparser <span class="s2">"plantago major"</span> <span class="nt">-c</span> <span class="nt">-f</span> pretty
<span class="o">{</span>
<span class="s2">"parsed"</span>: <span class="nb">true</span>,
<span class="s2">"quality"</span>: 4,
<span class="s2">"qualityWarnings"</span>: <span class="o">[</span>
<span class="o">{</span>
<span class="s2">"quality"</span>: 4,
<span class="s2">"warning"</span>: <span class="s2">"Name starts with low-case character"</span>
<span class="o">}</span>
<span class="o">]</span>,
<span class="s2">"verbatim"</span>: <span class="s2">"plantago major"</span>,
<span class="s2">"normalized"</span>: <span class="s2">"Plantago major"</span>,
<span class="s2">"canonical"</span>: <span class="o">{</span>
<span class="s2">"stemmed"</span>: <span class="s2">"Plantago maior"</span>,
<span class="s2">"simple"</span>: <span class="s2">"Plantago major"</span>,
<span class="s2">"full"</span>: <span class="s2">"Plantago major"</span>
<span class="o">}</span>,
<span class="s2">"cardinality"</span>: 2,
<span class="s2">"id"</span>: <span class="s2">"085e38af-e19b-56e5-9fec-5d81a467a656"</span>,
<span class="s2">"parserVersion"</span>: <span class="s2">"nightly"</span>
<span class="o">}</span>
</code></pre></div></div>
</description>
</item>
<item>
<title>GNparser (Go language) release 1.1.0</title>
<link>http://globalnames.org/news/2021/03/23/gnparser/</link>
<pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>GNparser</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2021/03/23/gnparser/</guid>
<description><p>Scientific name parsing allows to determine a <em>canonical form</em>, the
<em>authorship</em> of a name, and receive other meta-information. Canonical forms are
crucial for comparing names from different data sources.</p>
<p>We are releasing <a href="https://github.com/gnames/gnparser"><strong>GNparser</strong></a> v1.1.0 written in Go language. We
support <a href="https://semver.org/">Semantic Versioning</a>, therefore it is a stable version. Output format,
functions, and settings are going to be backward compatible for many years
(until v2).</p>
<p>This is the 3rd implementation of name-parsing for Global Names Architecture
project. First one, written in Ruby, <a href="https://github.com/GlobalNamesArchitecture/biodiversity"><strong>biodiversity gem</strong></a>,
uses now the Go code of <a href="https://github.com/gnames/gnparser"><strong>GNparser</strong></a>. Second one, written in Scala
<a href="https://github.com/GlobalNamesArchitecture/gnparser">is archived</a>, and awaits for a new maintainer.</p>
<h2 id="summary">Summary</h2>
<p><a href="https://github.com/gnames/gnparser"><strong>GNparser</strong></a> is a sophisticated software, it is able to parse the
most complex scientific names. It is also very fast, and able to parse more
than 200 million names in an hour. The parser is a core component of many other
Global Names Architecture projects.</p>
<p>It can be used via:</p>
<ul>
<li><a href="https://parser.globalnames.org">Web page</a></li>
<li><a href="https://app.swaggerhub.com/apis-docs/dimus/gnparser/1.0.0">REST API</a></li>
<li><a href="https://github.com/gnames/gnparser#command-line">Command line application</a></li>
<li><a href="https://rubygems.org/gems/biodiversity">Ruby Gem</a></li>
<li><a href="https://github.com/ropensci/rgnparser">R package</a></li>
<li><a href="https://github.com/gnames/gnparser#use-as-a-library-in-go">Go Library</a></li>
</ul>
<p>We also provide
<a href="https://github.com/gnames/gnparser/blob/master/binding/main.go">C-binding</a> to
its code. This approach allows to incorporate <a href="https://github.com/gnames/gnparser"><strong>GNparser</strong></a> natively
into all languages that support C-binding (such as Java, Python, Ruby etc)</p>
<h2 id="improvements-since-the-last-scala-based-release-of-gnparser">Improvements since the last Scala-based release of GNparser</h2>
<ul>
<li>
<p>Speed — about 2 times faster than Scala-based version for CSV output,
and about 8 times faster for JSON output.</p>
</li>
<li><a href="https://github.com/gnames/gnparser/issues/27">Issue #27</a> — support for <code class="language-plaintext highlighter-rouge">agamosp. agamossp. agamovar.</code> ranks.</li>
<li><a href="https://github.com/gnames/gnparser/issues/28">Issue #28</a> — support for non-ASCII apostrophes.</li>
<li><a href="https://github.com/gnames/gnparser/issues/36">Issue #36</a> — support <code class="language-plaintext highlighter-rouge">_</code> as a space for files in Newick format.</li>
<li><a href="https://github.com/gnames/gnparser/issues/40">Issue #40</a> — support names where one of parentheses is missing.</li>
<li><a href="https://github.com/gnames/gnparser/issues/43">Issue #43</a> — support for <code class="language-plaintext highlighter-rouge">notho-</code> (hybrid) ranks.</li>
<li><a href="https://github.com/gnames/gnparser/issues/45">Issue #45</a> — support for <code class="language-plaintext highlighter-rouge">natio</code> rank.</li>
<li><a href="https://github.com/gnames/gnparser/issues/46">Issue #46</a> — support for <code class="language-plaintext highlighter-rouge">subg.</code> rank.</li>
<li><a href="https://github.com/gnames/gnparser/issues/48">Issue #48</a> — improve transliteration of diactritical characters.</li>
<li><a href="https://github.com/gnames/gnparser/issues/49">Issue #49</a> — support for outdated names with several hyphens in specific
epithet.</li>
<li><a href="https://github.com/gnames/gnparser/issues/51">Issue #51</a> — distinguish between <code class="language-plaintext highlighter-rouge">Aus (Bus) cus</code> in botany and zoology
(author or subgenus).</li>
<li><a href="https://github.com/gnames/gnparser/issues/52">Issue #52</a> — support hyphen in outdated genus names.</li>
<li><a href="https://github.com/gnames/gnparser/issues/57">Issue #57</a> — warn when <code class="language-plaintext highlighter-rouge">f.</code> might mean either <code class="language-plaintext highlighter-rouge">filius</code> or <code class="language-plaintext highlighter-rouge">forma</code>.</li>
<li><a href="https://github.com/gnames/gnparser/issues/58">Issue #58</a> — distinguish between <code class="language-plaintext highlighter-rouge">Aus (Bus)</code> in ICN and ICZN
(author or subgenus).</li>
<li><a href="https://github.com/gnames/gnparser/issues/63">Issue #63</a> — normalize <code class="language-plaintext highlighter-rouge">format</code> to <code class="language-plaintext highlighter-rouge">f.</code> instead of <code class="language-plaintext highlighter-rouge">fm.</code>.</li>
<li><a href="https://github.com/gnames/gnparser/issues/60">Issue #60</a> — allow outdated ranks in form of Greek letters.</li>
<li><a href="https://github.com/gnames/gnparser/issues/61">Issue #61</a> — support authors’ names with <code class="language-plaintext highlighter-rouge">bis</code> suffix.</li>
<li><a href="https://github.com/gnames/gnparser/issues/66">Issue #66</a> — remove HTML tags from names, unless asked otherwise.</li>
<li><a href="https://github.com/gnames/gnparser/issues/67">Issue #67</a> — add name’s authorship to the “root” of JSON structure.</li>
<li><a href="https://github.com/gnames/gnparser/issues/68">Issue #68</a> — provide stemmed canonical form.</li>
<li><a href="https://github.com/gnames/gnparser/issues/69">Issue #69</a> — provide shared C library to bind <strong>GNparser</strong> to
other languages.</li>
<li><a href="https://github.com/gnames/gnparser/issues/72">Issue #72</a> — parse surrogate names from BOLD project.</li>
<li><a href="https://github.com/gnames/gnparser/issues/75">Issue #75</a> — normalize subspecies to subsp.</li>
<li><a href="https://github.com/gnames/gnparser/issues/74">Issue #74</a> — support CSV output.</li>
<li><a href="https://github.com/gnames/gnparser/issues/78">Issue #78</a> — parse virus-like non-virus names correctly.</li>
<li><a href="https://github.com/gnames/gnparser/issues/79">Issue #79</a> — make CSV as a default output.</li>
<li><a href="https://github.com/gnames/gnparser/issues/80">Issue #80</a> — add cardinality to output.</li>
<li><a href="https://github.com/gnames/gnparser/issues/81">Issue #81</a> — support year ranges like ‘1778/79’.</li>
<li><a href="https://github.com/gnames/gnparser/issues/82">Issue #82</a> — parse authors with prefix <code class="language-plaintext highlighter-rouge">zu</code>.</li>
<li><a href="https://github.com/gnames/gnparser/issues/89">Issue #89</a> — allow <code class="language-plaintext highlighter-rouge">subspec.</code> as a rank.</li>
<li><a href="https://github.com/gnames/gnparser/issues/90">Issue #90</a> — allow <code class="language-plaintext highlighter-rouge">ß</code> in names.</li>
<li><a href="https://github.com/gnames/gnparser/issues/93">Issue #93</a> — parse <code class="language-plaintext highlighter-rouge">y</code> from Spanish papers as an author separator.</li>
<li><a href="https://github.com/gnames/gnparser/issues/127">Issue #127</a> — release a stable 1.0.0 version.</li>
<li><a href="https://github.com/gnames/gnparser/issues/162">Issue #162</a> — support bacterial <code class="language-plaintext highlighter-rouge">Candidatus</code> names.</li>
</ul>
</description>
</item>
<item>
<title>gnfinder release 0.9.1 -- bug fixes</title>
<link>http://globalnames.org/news/2019/12/11/gnfinder/</link>
<pubDate>Wed, 11 Dec 2019 12:52:20 +0000</pubDate>
<dc:creator>dimus</dc:creator>
<category>gnfinder</category>
<category>release</category>
<guid isPermaLink="true">http://globalnames.org/news/2019/12/11/gnfinder/</guid>
<description><p>We are releasing a bug-fixing version (v0.9.1) of
<a href="https://github.com/gnames/gnfinder">gnfinder</a>, a written in Go project that
provides ability to search for scientific names in plain UTF-8 encoded texts.
It now has a better version and build timestamp report, its black list
dictionary expanded by 5 more words, and a bug fixed that prevents client
programs to break if name-verification returned an error instead of result.
We also started experimenting with making gnfinder available for other
languages through a C-shared library.</p>
<p>More can be found in gnfinder’s
<a href="https://github.com/gnames/gnfinder/blob/master/CHANGELOG.md">CHANGELOG file</a>.</p>