Overview

Upgrading to VIVO 1.10.0 from a previous version of VIVO requires you to unload the data in your triple store and reload it, using tools provided. See Upgrading VIVO. You will also need to consider the impact that the dependency changes may have on your customizations and integrations. Preserving your customizations and integrations can be done using a Maven custom installer. See Preserving Customizations During Build

There are no ontology changes, and data produced by 1.10.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

Data Distribution API

The Data Distribution API uses configuration files you specify to create custom APIs of your design.  You can specify the data to be returned, the addresses to be used, API parameters and formats of output.  The Data Distribution API can be used to provide data for web sites, prepare reports, and much more.  See Data Distribution API

Triple Pattern Fragments (TPF)

TPF 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). See Triple Pattern Fragments

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.

Argon 2i Password Hashing

VIVO now hashes passwords using Argon-2i replacing MD5.  See Configuration Reference.

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.

ORCiD API v2

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 required properties 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. See Direct2Experts API for a description of the VIVO implementation in 1.10, and information regarding participation in this federated search site.

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

Issues Resolved

Sub-task

Bug

New Feature

Task

Improvement

Test

Code Task

Documentation

Release Managers

Ralph O'Flinn, University of Alabama, Birmingham

Andrew Woods, DuraSpace

Contributors

Qazi Azim Ijaz Ahmad, TIB Hannover

Sabih Ali, Digital Science

Martin Barber, TIB Hannover

Jim Blake, Cornell

Mike Conlon, University of Florida

Don Elsborg, University of Colorda

Kitio Fofack, Université du Québec à Montréal

Benjamin Gross, UNAVCO / Clarivate Analytics

Christian Hauschke, TIB Hannover

Violeta Ilik, Columbia University

Huda Khan, Cornell

Ted Lawless, Clarivate Analytics / Brown University

Jacob Levernier, University of Pennsylvania

Brian Lowe, Ontocale

Jose Luis Martin, UC3M

Steve McKay, Plum Analytics

Javed Muhammed, Cornell University

Ralph O'Flinn, University of Alabama, Birmingham

Simon Porter, Digital Science

Graham Triggs, Duraspace / TIB Hannover

Tatiana Walther, TIB Hannover

Marijane White, Oregon Health Science University

Stefan Wolff, SLUB Dresden

Andrew Woods, Duraspace

Rebecca Younes, Cornell