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")