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

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.

Output formats available on negotiation ( or direct file type spec.)  are htmlcsvxml, and json.

Do your best to tear it apart.  

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

Quick Start:
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

where "+" or "_" can substitute for [space] in taxon names
For fuzzy matching and paramaterised searching, see

Quick Start: Bulk Data
The latest bulk output directory is http://biodiversity.org.au/dataexport  
  • XML, RDF and CSV extracts are available for each collection .
Quick Start: Sparql
A sparql service is available at http://biodiversity.org.au/sparql
A simple web interface for this service is at http://biodiversity.org.au/dataexport/html/NSL_SPARQL.html

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:


or try


The NSL classification

Three tree services are exposed:

afd apc published

They deliver the current NSL hierarchy as taken from the AFD and APC classifications.
A reference tree presenting "as published" hierarchies is also available for many botanical taxa. 

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


They deliver a branch of the tree beginning at the node identified by <TaxonIdentifier>.  

Available formats are html, csv, xml, and json

The branch service also takes three optional parameters:


Name string search

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 Name Resolution Service to current taxon for a given name according to AFD/APC

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

Names are case sensitive and All AFD names above Genus currently use UPPER case.
A prototype search API employing lucene indices can be found at:

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


LSID equivalents for all URNs are also supported




Full OAI-PMH services are available


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

IBIS 2009-07-01 Page last modified on Jun 04, 2013 13:12


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:


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


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_so4 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