NSL Services

ALA-NSL Linked data services 

Prototype services over Names, Taxa and References documented within the Australian Faunal Directory (AFD), the Australian Plant Name Index (APNI) and the Australian Plant Census (APC).

Quick Start: Searching
To find a name or accepted taxon by case sensitive exact match, construct a URL of the form:
  • http://biodiversity.org.au/name/The name
  • http://biodiversity.org.au/taxon/The name

For fuzzy matching and paramaterised searching, see

Quick Start: Bulk Data
The latest bulk output directory is http://biodiversity.org.au/dataexport/2012-07-16 .
Quick Start: Sparql
A sparql service is available athttp://biodiversity.org.au/sparql
A simple web interface for this service is athttp://biodiversity.org.au/dataexport/html/NSL_SPARQL.html

An attempt is made to use the TDWG vocabularies published at http://rs.tdwg.org/ontology in the hope that these outputs help to inform ongoing and collaborative evolution of an open 'TDWG ontology'. This means that we are not in a position to guarantee stability of the RDF, XML and HTML (especially the HTML) presented. In fact it would be wise to expect, or even request, our outputs from these services to change.

We will undertake to maintain the LSIDs, the abstract URIs and URLs for all data objects.

Please do your best to tear it apart.   

More services are in the pipeline. There is active development of listing services for names, taxa and classifications.  We will also add support for JSON and Darwin Core output and perhaps, where it makes sense to do so, ... even CSV.

Seven local collections are exposed at this time:

afd.name apni.name
afd.taxon apni.taxon
afd.publication apni.publication apni.reference

These namespaces are published as linked data using abstract URIs of the following form:
http: //biodiversity.org.au /name.space /localIdentifier

  • AFD identifies records using UUIDs,
  • APNI uses legacy unique integer sequences (guaranteed persistent since 1990).

http://biodiversity.org.au/afd.taxon/e6bd32ed-2462-44ae-a7f5-bed60b59807d
http://biodiversity.org.au/apni.name/50015
http://biodiversity.org.au/apni.taxon/309365.html

or try

http://linkeddata.uriburner.com/about/html/http/biodiversity.org.au/apni.name/50015

Three branch services are exposed:

afd apc reference

These provide taxonomic trees. The afd and apc trees are our accepted taxonomies.
The reference tree is available for many botanical taxa. It is the taxonomy as it appears in a reference.

These services have URLs of the following form:
http: //biodiversity.org.au /branch /<branch-name> /<localIdentifier> .<format>

http://biodiversity.org.au/branch/apc/408808.html
http://biodiversity.org.au/branch/reference/408808.csv
http://biodiversity.org.au/branch/afd/b0791b23-8d6b-4239-979d-9e100f123010.html

Formats are html, csv, xml, and json.

The branch service also takes three optional parameters:

  • synonyms=yes|no
  • stoprank=a rank code or name
  • levels=any nonnegative integer

http://biodiversity.org.au/branch/afd/5d6076b1-b7c7-487f-9d61-0fea0111cc7e.html?sublevels=2
http://biodiversity.org.au/branch/apc/417544.csv?stoprank=fam&synonyms=no

There are currently two services based on name "strings":

A name lookup service to facilitate client access to name objects using URI of the form

A taxon name resolution service to current taxon, according to AFD/APC, for a given name using URI of the form

These name string URI also support content negiotiation but it should be noted that the naked URI is not a Resource Name.  Name lookup can not be guaranteed to return a single object and the taxon name resolution may return entirely different taxa at different times.  

Names are case sensitive. All AFD names above Genus currently use UPPER case.

A prototype generic search API employing lucene can be found at:

Content negotiation is supported for rdf+xml (based on TDWG lsid vocs), xml (TCS) and html

http://biodiversity.org.au/afd.taxon/e6bd32ed-2462-44ae-a7f5-bed60b59807d.xml
http://biodiversity.org.au/apni.name/50015.rdf
http://biodiversity.org.au/apni.taxon/178480.html

LSID equivalents for these URNs are also supported

urn:lsid:biodiversity.org.au:afd.taxon:e6bd32ed-2462-44ae-a7f5-bed60b59807d
urn:lsid:biodiversity.org.au:apni.name:50015

http://lsid.tdwg.org/urn:lsid:biodiversity.org.au:apni.name:50015

The NSL classification service returns a "Branch" listing from node according to the classification (where available) from AFD or APC that places each treated name into the Current "NSL" tree at one location as either an accepted name or synonym.

http://biodiversity.org.au/branch/afd/e6bd32ed-2462-44ae-a7f5-bed60b59807d
http://biodiversity.org.au/branch/apc/309365

Content negotiation supported by these services include .html, .csv and .json extensions.

Full OAI-PMH services are available

http://biodiversity.org.au/oaipmh?verb=Identify
http://biodiversity.org.au/oaipmh?verb=ListSets

http://biodiversity.org.au/oaipmh?verb=ListIdentifiers&metadataPrefix=oai_dc&set=urn:lsid:biodiversity.org.au:afd.taxon:111
http://biodiversity.org.au/oaipmh?verb=ListIdentifiers&metadataPrefix=oai_dc&from=2012-01-01T00:00:00&set=urn:lsid:biodiversity.org.au:afd.name

The  TAPIR implementation based on the TCS schema has been removed.

IBIS 2009-07-01 Page last modified on Sep 28, 2012 00:12

Comments

Greg Whitbread says:

Comments? Please!

Anonymous says:

You probably want something more useful than I don't like the colour? Peter N.

Anonymous says:

Hi Greg,

It's really great stuff. Should be trivial for us to use the XML, making TWiki transform RDF is turning out to be harder than it should be.

The example linked to Dodonae+viscosa doesn't seem to work, but Dodonae%20viscosa does.

Anonymous says:

You might consider using an underscore between the genus and species.

So Dodonae+viscosa become Dodonae_viscosa.

This should solve the problem above and it is a a wiki-friendly identifier.

  • pjd (Pete)

Paul Murray says:

For name searches, we have a TAPIR interface courtesy Matt Hand. The name-literal-as-psudeo-id a useful entry point, but it doesn't actually return a document with an "about" of the id you asked for.

For other entry points, you can use APNI http://www.anbg.gov.au/cpbr/databases/apni-search-full.html . Any url of the form http://www.anbg.gov.au/cgi-bin/apni?taxon_id=48107 is equivalent to the uri http://biodiversity.org.au/apni.name/48107

AFD http://www.environment.gov.au/biodiversity/abrs/online-resources/fauna/afd/home is a little sneakier. If you navigate to an AFD profile page http://www.environment.gov.au/biodiversity/abrs/online-resources/fauna/afd/taxa/Nematoda and look at the source, you will find an afdTaxonGUID and afdNameGUID div. URIs can be constructed from
them such as http://biodiversity.org.au/afd.taxon/f2ea4aa2-621d-49d2-b180-648a45bf91c8

Of course, once it's all working acceptably we should hyperlink link the human-friendly webapps back to the linked data with proper html liks. Alternatively, we may alter the page so that the hyperlinks are present, but hidden. That way, web spiders can index them, but it won't confuse people who want to see only human-readable pages.

Greg Whitbread says:

Pete,

Plus in offending URL changed to space which works.

Anonymous says:

Nice work Greg. Cheers, Ben.

Anonymous says:

Great work! Some quick comments.

There's some inconsistency in the example metadata. For example, for http://bioguid.info/urn:lsid:biodiversity.org.au:apni.name:50015 (Didiscus pilosus var. glaberrimus) the metadata has two values for specificEpithet (pilosus and glaberrimus), which clearly can't be correct.

I don't think you've followed the TDWG vocabularies correctly. http://bioguid.info/urn:lsid:biodiversity.org.au:apni.name:50015 has the statement

http://rs.tdwg.org/ontology/voc/TaxonName#publishedIn urn:lsid:biodiversity.org.au:apni.reference:143163

publishedIn is part of http://rs.tdwg.org/ontology/voc/Common, not http://rs.tdwg.org/ontology/voc/TaxonName. Furthermore, the range of publishedIn is a string, not a resource. I think you need to use http://rs.tdwg.org/ontology/voc/Common#publishedInCitation (personally I find these names counter intuitive, but that's what the spec says).

Given that APNI contributes to IPNI, can you include links to the IPNI LSIDs where appropriate (for example, http://bioguid.info/urn:lsid:ipni.org:names:144078-3 )

Lastly, not thrilled with Confluence. Why can't I sign in to add comments? As it stands all comments are anonymous, which doesn't encourage me to contribute (plus it means I can't follow links to people's names and find out who they are). Is there an admin option to allow people to sign up to comment, but not edit the text on the page?

Rod Page

Paul Murray says:

specificEpithet: fixed (copy & paste bug)
use of publishedIn: fixed (need a better diagram of the ontology)

Anonymous says:

Very impressive.  Very thorough.

As opposed to Rod, I actually don't mind the anonymous commenting - saves having to create yet another Login!!  Could use OpenID though I suppose.

Anyway, one comment - I tried resolving the LSIDs using my .NET code (very similar to Java code so I would have thought Java based resolution would have the same problem??).  I found that it would not resolve the MetadataHTTP port - it failed with a "The remote server returned an error: (406) Not Acceptable." error.  It may be due to the HTTP accept header, which is set to application/xml+rdf.  Does the server take note of the accept headers?  It seems to return something if you just enter the encoded url into a browser (http://biodiversity.org.au/authority/metadata?acceptedFormats=application/xml+rdf&lsid=urn:lsid:biodiversity.org.au:apni.name:50015).  It does work fine with the MetadataHTTPDirect port however.

Kevin Richards

Paul Murray says:

The rdf mime type is application/rdf+xml (rfc3870) .

http://biodiversity.org.au/authority/metadata?acceptedFormats=application/rdf+xml&lsid=urn:lsid:biodiversity.org.au:apni.name:50015

On the back end, both the URI and the LSID resolver look at the Accept header and attempt to find a match.

I'll have to find Kevin's contact details - that's the main problem with this anonymous business. Landcare NZ? [edit: done, but our email server is not happy at the moment].

Anonymous says:

The JSON format response from the name service (i.e. for Cracticus Tibicen) is not valid JSON. It is returning an object with literal integers instead of strings as property names. Numeric properties are fine, however you must enclose the numbers in quotes to make it valid JSON. Alternately, use an array. Please refer to the JSON website.

This is mainly a problem for JSON parsers, not JavaScript implementations, as the latter tend to be more lenient and coalesce non-string property names gracefully.

Two JSON readers currently plagued by the invalid JSON are PHP's json_decode and Python's json module.

Python, for instance, currently returns the following exception for the previously mentioned JSON document:

ValueError: Expecting property name: line 3 column 1 (char 15)

ValueError: Expecting property name: line 3 column 1 (char 15)

Anonymous says:

Whoops, should have signed that!

Samuel Cochran <sj26@thefrontiergroup.com.au>

Paul Murray says:

... Yes, this seems to be correct. This is a bit of a problem: I was hoping to represent XML array-style elements as a combination array (for the elements) and properties (for attributes). You would be able to access the nested elements like_so[4] and also get named properties.

But, it's simply not valid. Drat. If I fix it, it will break the code of everyone that is currently using it.

I'll see what I can do.


Browse Space

- Pages
- Blog
- Labels
- Attachments
- Bookmarks
- Mail
- Advanced
- Page Approval

Explore Confluence

- Popular Labels
- Notation Guide

Your Account

Log In

 

Other Features

Add Content