Biodiversity

Parses taxonomic scientific name and breaks it into semantic elements.

Installation

To install gem you need RubyGems >= 1.3.6

$ sudo gem install biodiversity #for ruby 1.8.x
$ sudo gem install biodiversity19 #for ruby 1.9.x

Example usage

As a command line script

You can parse file with taxonomic names from command line. File should contain one scientific name per line

nnparser file_with_names

As a socket server

If you do not use ruby and need a fast access to the parser functionality you can use a socket server

parserver

Then you can access it via 4334 port using a socket client library of your programming language. If you want to check if socket server works for you try:

telnet localhost 4334

If you enter a line with a scientific name server will send you back parsed information in json format.

To stop telnet client type any of ‘end’,‘exit’,‘q’, ‘.’ (without quotes) instead of scientific name

$ telnet localhost 4334
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Acacia abyssinica Hochst. ex Benth. ssp. calophylla Brenan
{"scientificName":{"canonical":"Acacia abyssinica calophylla","parsed":true,"parser_run":1,"verbatim":"Acacia abyssinica Hochst. ex Benth. ssp. calophylla Brenan\r\n","positions":{"0":["genus",6],"18":["author_word",25],"29":["author_word",35],"7":["species",17],"41":["infraspecies",51],"52":["author_word",58]},"hybrid":false,"normalized":"Acacia abyssinica Hochst. ex Benth. ssp. calophylla Brenan","details":[{"species":{"basionymAuthorTeam":{"exAuthorTeam":{"author":["Benth."],"authorTeam":"Benth."},"author":["Hochst."],"authorTeam":"Hochst."},"string":"abyssinica","authorship":"Hochst. ex Benth."},"infraspecies":[{"basionymAuthorTeam":{"author":["Brenan"],"authorTeam":"Brenan"},"string":"calophylla","rank":"ssp.","authorship":"Brenan"}],"genus":{"string":"Acacia"}}]}}

As a library

You can use it as a library

require 'biodiversity'

parser = ScientificNameParser.new

# to parse a scientific name into a ruby hash
parser.parse("Plantago major")

#to get json representation
parser.parse("Plantago").to_json
#or
parser.parse("Plantago")
parser.all_json

# to clean name up
parser.parse("             Plantago       major    ")[:scientificName][:normalized] 

# to get only cleaned up latin part of the name
parser.parse("Pseudocercospora dendrobii (H.C. Burnett) U. Braun & Crous 2003")[:scientificName][:canonical]

# to get detailed information about elements of the name
parser.parse("Pseudocercospora dendrobii (H.C. Burnett 1883) U. Braun & Crous 2003")[:scientificName][:details]

# to resolve lsid and get back RDF file
LsidResolver.resolve("urn:lsid:ubio.org:classificationbank:2232671")