Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel
Excerpt

A picture diagram of the VIVO software architecture, with explanatory notes.

 

Presentation

Template Engine

Templates

JSPs

Data

VIVO has four data stores. When copying, backing up, or restoring a VIVO installation, all four data stores should be considered.

Content RDF

This is where most of VIVO's information is stored. Names of individuals, relationships between individuals, types of individuals (for example, Person or Organization), are all stored in the Content RDF

Content RDF uses a triple-store or other SPARQL endpoint. Usually, the triple-store is a Jena SDB implementation, with a MySQL database.

The interface is specified by RDFService.java.

Configuration RDF

This is where VIVO's behavior is stored, like which templates are used to display what types of data. It is also the storage for VIVO's user accounts.

Configuration RDF uses a triple-store or other SPARQL endpoint. Beginning with release 1.7 of VIVO, the triple-store is a Jena TDB implementation, with files kept in the home directory of the VIVO application. In previous releases, the Configuration RDF used a Jena RDB implementation, sharing the MySQL database with the Content RDF.

The interface is specified by RDFService.java.

Search Engine

In theory, all of the search operations in VIVO could be performed using SPARQL queries against the RDF. In practice, however, a dedicated search engine gives a much faster response. The search engine is available to VIVO's users, to assist in finding pages of interest. The search engine is also used internally, to provide prompt response to requests for auto-completion, indexes, counts, and other data.

The search engine permits queries that yield faceted results, for a more successful search. Usually, it is implemented with a Solr web application. By default, Solr is installed in the same web server as VIVO. However, it is easy to move Solr to a different web server, to improve performance.

The interface is specified by SearchEngine.java

Uploaded Files

VIVO allows individuals to upload images for their profile pages. VIVO also generates a thumbnail image for more compact display. These images are kept in the Uploaded Files storage. Each file is assigned a URI, so it can be distinguished from other files of the same name. Currently this is only used for images, but VIVO could be customized to store other types of files here as well.

The default implementation uses a storage system similar to PairTree.

The interface is specified by FileStorage.java

...

Logic

Controllers

Search Indexer

Reasoner

DAOs

Filtering

...

Presentation

Content Models

Configuration Models

Search Engine

Template Engine

Templates

JSPs

APIs

...

Security

Authentication

Authorization