Unreleased Version

This documentation covers the next release of VIVO, version 2.0.x.
If you are able to help contribute to this documentation, please contact sysadmin at duraspace dot org
Looking for another version? See all documentation.

Skip to end of metadata
Go to start of metadata

Version 2.0.0

Please review the upgrade notes carefully

It is important that you reload the data in your triple store, as well as consider the impact that the dependency changes may have on your customisations and integrations.

There are no ontology changes, and data produced by 2.0 is compatible with 1.6 - 1.9 (and vice versa). It is not required to upgrade to this release prior to subsequent releases. Please see Upgrading VIVO for more details.

What's New

Bootstrap Theme - "Tenderfoot"

Tenderfoot is a new, responsive theme for VIVO. Based on the work by Symplectic, it uses Bootstrap 3 to provide a view that scales better to different sizes of devices.

Branding and Theming Improvements

It is no longer necessary to modify or create a new theme if all you want to do is apply some local CSS and/or message customisations to your installation. By applying local customisations on top of a theme, it allows for the possibility to swap compatible themes whilst retaining your site definitions, and easier upgrades in the future, where you don't need to merge changes to templates in a theme.

For theme developers, the remaining JSP pages now render their body and are wrapped by the Freemarker page structure, so you don't need to maintain a separate JSP page structure, and ensure that the structure matches that in Freemarker. This allows more flexibility in the theme structure, without adversely affecting the JSP pages.

Multi-Lingual Improvements

The message lookups have been extended, so that application wide VIVO messages are distinct from Theme messages (and distinct from Vitro messages). It also allows for an additional "local" messages bundle, which overrides the theme, VIVO and Vitro layers.

Language packs can now be added to VIVO through the dependency mechanism, although you will still need to edit your runtime.properties to enable the languages in your UI.

Linked Data Fragments

Linked Data Fragments presents a lightweight means of obtaining triples from a linked data application as a web service, with very low overhead, and high reliability (it only pattern matches for triples, there are no arbitrary complex queries, so individual requests can not have a high impact on the server).


This release includes an updated ORCiD integration that can use the ORCiD v2 API. Note that ORCiD are planning to shut down the v1.x API endpoints.

Note that the configuration options have been changed, and you will need to update your runtime.properties.

The only options that are required now are:

orcid.clientId = 0000-0000-0000-000X
orcid.clientPassword = 00000000-0000-0000-0000-000000000000
orcid.webappBaseUrl = http://localhost:8080/vivo
orcid.externalIdCommonName = VIVO Cornell Identifier
orcid.apiVersion = 2.0
orcid.api = sandbox

orcid.apiVersion is simply the version value (e.g. 1.2, 2.0), and orcid.api is just "release" (for the production API), and "sandbox" for the sandbox.

Direct2Experts Endpoint

For any sites wishing to participate in the Direct2Experts federated site - http://direct2experts.org/ - VIVO now includes the necessary endpoints. Please see the Direct2Experts websites for more information on how to participate.

RDF 1.1 support

VIVO has now been updated to use Jena 3, which brings full RDF 1.1 support. As a result, internally all literals are treated as having a datatype - those with a language tag are rdf:langString, and any other are xsd:string, and the triple stores need to be reloaded to ensure that they have consistent internal representations. Only applications that directly open the triple stores using Jena libraries, or have SPARQL that explicitly references datatypes will be affected. Please see the upgrade notes for how to perform the migration and evaluate any impact.

In particular, if you are using VIVO Harvester, you will need to use a VIVO Harvester 2.x version.

Dependency Convergence and Vulnerability Elimination

Along with Jena 3 and Bootstrap, all the dependencies have been reevaluated and upgraded to ensure convergence.

In the back end, multiple conflicting versions of dependencies have been eliminated (e.g. httpclient, OSGi bundles), and all code now works with consistent versions of dependencies. Multiple JSON parsers have been removed, and all code now uses only Jackson.

Dependencies with known vulnerabilities, as determined by the Maven dependency-check plugin have been upgraded where a newer version exists.

In all, 38 dependencies have been removed, although 22 have been added due to unbundling the OSGi dependencies. Only 11 dependencies retrain the same version as VIVO 1.9.

In the front end, jQuery has been updated to support Bootstrap. D3.js has been upgraded to v4. All jQuery plugins have been updated to work with the updated jQuery.

One javascript library used to format the index page has been removed due to being GPL licensed, and replaced with an MIT licensed equivalent.

Beyond simple theming changes (e.g. logos, colours, text), local customisations may need to be upgraded for the dependency changes.

Vocabulary Services

AGROVOC has been updated to use a new API.

UMLS has been transitioned to the NIH service. In order to use this, you need to obtain an application key from NIH (free registration).

Reasoning Improvements

If SameAs reasoning is enabled (by default, this is disabled), the reasoner will now generate the correct vitro:mostSpecificType.

List View Query Improvements

List view configuration files can now include <precise-subquery></precisde-subquery> elements. Due to the way SDB works, OPTIONAL clauses are slow because they are evaluated independently, and then joined with the rest of the query restrictions. <precise-subquery> allows you to duplicate the external restrictions that the clause will be joined with. This results in much more efficient SQL queries.

By including the restrictons inside a <precise-subquery> element, we can eliminate the CONSTRUCT that would otherwise be used, making it easier to maintain the SELECT query.

For triple stores other than SDB, the <precise-subquery> element is filtered out, as it is often unnecessary to include these extra restrictions, and in some cases may hurt performance. However, the filtering can always be enabled or disabled globally via the runtime.properties.

Performance Improvements

Search results render faster if they contain Person results. Indexing time has also been improved.

Updating data via the UI is faster.

Graph URIs are now cached for triple stores using a Jena implementation - this is a significant difference for TDB triple stores.

Full handling of TDB type conversions, preventing isomorphic test failures that result in reloading filegraph on restart.

Servlet 3.0

VIVO already required the use of a Servlet 3.0 compatible version of Tomcat. The web.xml has now been upgraded to take advantage of the servlet 3.0 spec, which allows developers to use annotations for servlet configuration. If you have a customisation that adds a new servlet, you can enable it without modifying the web.xml file.

Java 9

The Maven projects and code have had updates to work with the latest Java JDK 9. Note that Java 9 is a very recent release, and has not been extensively tested with VIVO. Also, Java 9 removes support for endorsed dirs, so you need to use a compatible version of Tomcat.

Additional Error Checking During Builds

The Maven projects now integrate Google's Error Prone - http://errorprone.info/ - tool into the compilation to detect serious errors in the Java code. Any customisations and contributions will now automatically be checked, preventing many serious errors from entering the code base.

Testing Framework

The Selenium IDE tests have been updated to use specific named selectors, rather than positions. Additional attributes (domain and range for faux properties) have been added to the UI to allow for this.

This allows the tests to be run against both the old (wilma) and new (tenderfoot) themes, and will make the tests more robust in the event of future ontology changes.

Note that Selenium IDE no longer works with the current versions of Firefox. Whilst we can currently run the test suite using a Java project and WebDriver, we will need to consider how these tests can be maintained in the future.


Graham Triggs, DuraSpace

Mike Conlon, DuraSpace

Huda Khan, Cornell

Jim Blake, Cornell

Benjamin Gross, UNAVCO / Clarivate Analytics

Ted Lawless, Clarivate Analytics

Sabih Ali, Digital Science

Simon Porter, Digital Science

Rebecca Younes, Cornell

Stefan Wolff, TU Dresden

Jose Luis Martin, UC3M

Steve McKay, Plum Analytics

Jacob Levernier, University of Pennsylvania

Tatiana Walther, TIB Hannover

Resolved Issues


VIVO-1335 - Getting issue details... STATUS

VIVO-1084 - Getting issue details... STATUS

VIVO-1312 - Getting issue details... STATUS


VIVO-1346 - Getting issue details... STATUS

VIVO-1270 - Getting issue details... STATUS

VIVO-1290 - Getting issue details... STATUS

VIVO-1375 - Getting issue details... STATUS

VIVO-1376 - Getting issue details... STATUS

VIVO-1381 - Getting issue details... STATUS

VIVO-1393 - Getting issue details... STATUS

VIVO-1397 - Getting issue details... STATUS

VIVO-1399 - Getting issue details... STATUS

VIVO-1400 - Getting issue details... STATUS

VIVO-1403 - Getting issue details... STATUS

VIVO-1063 - Getting issue details... STATUS

VIVO-1246 - Getting issue details... STATUS

VIVO-1247 - Getting issue details... STATUS

VIVO-1248 - Getting issue details... STATUS

VIVO-1280 - Getting issue details... STATUS

VIVO-1272 - Getting issue details... STATUS

VIVO-1273 - Getting issue details... STATUS

VIVO-1294 - Getting issue details... STATUS

VIVO-1307 - Getting issue details... STATUS

VIVO-1309 - Getting issue details... STATUS

VIVO-1317 - Getting issue details... STATUS

VIVO-1318 - Getting issue details... STATUS

VIVO-1319 - Getting issue details... STATUS

VIVO-1367 - Getting issue details... STATUS

VIVO-1379 - Getting issue details... STATUS

VIVO-1382 - Getting issue details... STATUS

VIVO-1383 - Getting issue details... STATUS

VIVO-1384 - Getting issue details... STATUS

VIVO-1385 - Getting issue details... STATUS

VIVO-1386 - Getting issue details... STATUS

VIVO-1387 - Getting issue details... STATUS

Bug Fixes

VIVO-855 - Getting issue details... STATUS

VIVO-1394 - Getting issue details... STATUS

VIVO-1401 - Getting issue details... STATUS

VIVO-1060 - Getting issue details... STATUS

VIVO-1306 - Getting issue details... STATUS

VIVO-1310 - Getting issue details... STATUS

VIVO-1311 - Getting issue details... STATUS

VIVO-1314 - Getting issue details... STATUS

VIVO-1342 - Getting issue details... STATUS

VIVO-1374 - Getting issue details... STATUS


VIVO-842 - Getting issue details... STATUS

VIVO-684 - Getting issue details... STATUS

VIVO-1041 - Getting issue details... STATUS

VIVO-1368 - Getting issue details... STATUS


  • No labels