Semantically Rich I/O for the 'NeXML' Format

Provides access to phyloinformatic data in 'NeXML' format. The package should add new functionality to R such as the possibility to manipulate 'NeXML' objects in more various and refined way and compatibility with 'ape' objects.

DOI BuildStatus Windows buildstatus CRANstatus downloads

  • Maintainer: Carl Boettiger
  • Authors: Carl Boettiger, Scott Chamberlain, Hilmar Lapp, Kseniia Shumelchyk, Rutger Vos
  • License: BSD-3
  • Issues: Bug reports, feature requests, and development discussion.

An extensive and rapidly growing collection of richly annotated phylogenetics data is now available in the NeXML format. NeXML relies on state-of-the-art data exchange technology to provide a format that can be both validated and extended, providing a data quality assurance and adaptability to the future that is lacking in other formats. See Vos et al 2012 for further details on the NeXML format.

How to cite

RNeXML has been published in the following article:

Package for Reading and Writing Richly Annotated Phylogenetic, Character, and Trait Data in R.” Methods in Ecology and Evolution, 7, pp. 352-357. doi:10.1111/2041-210X.12469

Although the published version of the article is pay-walled, the source of the manuscript, and a much better rendered PDF, are included in this package (in the manuscripts folder). You can also find it freely available on arXiv.


The latest stable release of RNeXML is on CRAN, and can be installed with the usual install.packages("RNeXML") command. Some of the more specialized functionality described in the Vignettes (such as RDF manipulation) requires additional packages which can be installed using:

install.packages("RNeXML", deps = TRUE)

The development version can be installed using:


Getting Started

See the vignettes below for both a general quick start and an overview of more specialized features.




For more fine-grained list of changes or to report a bug, consult


This release addresses several aspects improving the handling of metadata:

  • add_meta() now works for trees and characters (#213, PR #217)
  • Handles nested meta elements properly (#196, PR #197)

Misc fixes:

  • enable handling of rootEdge (#207, PR #218)
  • Replaces taxize backend with faster alternative taxadb method. (#224, PR #226). This remains only a suggested package and has much lighter dependencies as well.
  • add hex


  • Fixes various (previously broken) aspects of handling polymorphic and uncertain states for discrete (non-molecular) and continuous characters, including obtaining a character matrix (#174), ensuring proper column types (#188), and serializing to NeXML (#192).
  • Adds the optional ability to, in addition to the character matrix, obtain a concordant formatted matrix of state types (standard, polymorphic, uncertain).
  • Fixes loss of certain literal-valued metadata when serializing to NeXML. #193
  • Drops package phylobase as dependency. (Also removes circular dependency chain, because phylobase depends on RNeXML.)


  • Fix failing checks on CRAN that require a network connection


  • avoid rdf-based tests on solaris architecture, where suggested package rdflib is not available. (CRAN request.)

v2.1.0 2018-05-05

  • taxize as Suggests only
  • drop rrdf in favor of rdflib
  • drop Sxslt in favor of xslt

v2.0.8 2017-11-17

  • patch for compatibility with upcoming release of testthat

v2.0.7 2016-06-28

  • Bugfixes following release of new dplyr and new tidyr dependencies

v2.0.6 2016-03-07

  • Migrate Additional_repositories to new address for OmegaHat project.

v2.0.5 2015-12-31

  • get_metadata(), get_taxa() now return much richer data.frames instead of named vectors. This is potentially a non-backwards compatible change if scripts use the output of these functions as lists (#129). See updated metadata vignette. This introduces new dependencies dplyr and lazyeval.
  • more robust nexml_read() method for URLs, (#123)
  • Avoid assuming the namespace prefix nex for nexml elements (#51, #124, #126). Includes a fix server-side on the NeXML validator as well.
  • nexml_validate() points to the new validator. (#126)

v2.0.4 2015-10-14

  • Fix compatibility issue with recent phytools release.

v2.0.3 2015-05-27

  • Upgrade tests to be compatible with newest testthat (0.10.0), bumps testthat dependency version up (#119) thanks @hadley

v2.0.2 2015-05-01

  • Add four new vignettes describing the use of various advanced features in the package: the use of SPARQL queries, advanced use of metadata features, an example of how to extend NeXML with simmap data as the use case, and documentation on the central S4 data structure used in the package.
  • Implements the use of Title Case in the package title, as requested (on several occasions) by the CRAN maintainers.

v2.0.1 2014-12-26

  • Update DESCRIPTION to provide a standard install.packages() compatible repository for rrdf, as per request from the CRAN team.

v2.0.0 2014-12-06

  • add URL and BugReports to Description. #103

  • for consistency with other add_ methods, the nexml object is now the last, not the first, argument to add_basic_meta. As this changes the function API, it could break code that does not explicitly name the arguments, so we release this as 2.0.0

v1.1.3 2014-08-06

Minor bugfix

  • Fixes typo that caused validator to fail when couldn't be reached

v1.1.2 2014-07-19

Less aggressive unit-tests

  • nexml_validate now returns NULL if the validation cannot be performed. Unit tests now consider either TRUE or NULL as acceptable.
  • Just skips the uuid unit test if uuid package is not available
  • Documented versioning practice in NEWS
  • Unit tests relying on the Figshare API are not run (without failing) if authentication to figshare server fails
  • Documentation updated to include examples for all functions

v1.1-0 2014-07-18

Initial Release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


2.4.5 by Carl Boettiger, a year ago,

Report a bug at

Browse source code at

Authors: Carl Boettiger [cre, aut] , Scott Chamberlain [aut] , Hilmar Lapp [aut] , Kseniia Shumelchyk [aut] , Rutger Vos [aut]

Documentation:   PDF Manual  

Task views: Phylogenetics, Especially Comparative Methods

BSD_3_clause + file LICENSE license

Imports XML, plyr, reshape2, httr, uuid, dplyr, lazyeval, tidyr, stringr, stringi, xml2

Depends on ape, methods

Suggests spelling, rdflib, geiger, phytools, knitr, rfigshare, knitcitations, testthat, rmarkdown, rlang, xslt, covr, taxadb

Imported by phylobase.

Suggested by rotl.

See at CRAN