Code Monkey home page Code Monkey logo

vivo's Introduction

VIVO: Connect, Share, Discover

Build Deploy DOI

VIVO is an open source semantic web tool for research discovery -- finding people and the research they do.

VIVO supports editing, searching, browsing and visualizing research activity in order to discover people, programs, facilities, funding, scholarly works and events. VIVO's search returns results faceted by type for rapid retrieval of desired information across disciplines.

Resources

VIVO Project web site

https://vivo.lyrasis.org/

VIVO Project Wiki

https://wiki.lyrasis.org/display/VIVO/

Installation Instructions

Installation instructions for all releases can be found at this location on the wiki:
https://wiki.lyrasis.org/display/VIVODOC/All+Documentation

When you select the wiki pages for technical documentation for the release you would like to install at https://wiki.lyrasis.org/display/VIVODOC/All+Documentation, please open the Installing VIVO section and follow the instructions.

Docker

VIVO docker container is available at vivoweb/vivo with accompanying vivoweb/vivo-solr. These can be used independently or with docker-compose.

Docker Compose

Docker Compose variable substitution:

.env defaults

SOLR_RESET_CORE=false
SOLR_VERBOSE=no

SOLR_HOST_PORT=8983
SOLR_CONTAINER_PORT=8983

SOLR_CORES=./vivo-cores

VIVO_RESET_HOME=false
VIVO_VERBOSE=no

VIVO_TDB_FILE_MODE=direct

VIVO_HOST_VIVO_HOME=./vivo-home
VIVO_CONTAINER_VIVO_HOME=/usr/local/vivo/home

VIVO_HOST_PORT=8080
VIVO_CONTAINER_PORT=8080
  • SOLR_RESET_CORE: Convenience to reset VIVO Solr core when starting container. Caution, will require complete reindex.

  • SOLR_VERBOSE: Increase log verbosity.

  • SOLR_HOST_PORT: Host port binding for solr service port mapping.

  • SOLR_CONTAINER_PORT: Container port binding for solr service port mapping.

  • SOLR_CORES: Solr cores data directories on your host machine which will mount to volume in docker container. Set this environment variable to persist your Solr data on your host machine.

  • VIVO_RESET_HOME: Convenience to reset VIVO home when starting container. Caution, will delete local configuration, content, and configuration model.

  • VIVO_VERBOSE: Increase log verbosity.

  • VIVO_TDB_FILE_MODE: TDB file mode. See https://jena.apache.org/documentation/tdb/configuration.html#file-access-mode.

  • VIVO_HOST_VIVO_HOME: VIVO home directory on your host machine which will mount to volume in docker container. Set this environment variable to persist your VIVO data on your host machine.

  • VIVO_CONTAINER_VIVO_HOME: VIVO home directory within the container.

  • VIVO_HOST_PORT: Host port binding for VIVO Tomcat service port mapping.

  • VIVO_CONTAINER_PORT: Container port binding for VIVO Tomcat service port mapping.

Before building VIVO, you will also need to clone (and switch to the same branch, if other than main) of Vitro. The Vitro project must be cloned to a sibling directory next to VIVO so that it can be found during the build.

Build and start VIVO.

  1. In VIVO (with Vitro cloned alongside it), run:
mvn clean package -s installer/example-settings.xml
docker-compose up

Docker Image

To build and run local Docker image.

docker build -t vivoweb/vivo:development .
docker run -p 8080:8080 vivoweb/vivo:development

Community

There are several ways to contact and join the VIVO community. All of them are listed at https://vivo.lyrasis.org/contact/

Contributing Code

If you would like to contribute code to the VIVO project, please read instructions at this page. Contributors welcome!

Citing VIVO

If you are using VIVO in your publications or projects, please cite the software paper in the Journal of Open Source Software:

BibTeX

@article{Conlon2019,
  doi = {10.21105/joss.01182},
  url = {https://doi.org/10.21105/joss.01182},
  year = {2019},
  publisher = {The Open Journal},
  volume = {4},
  number = {39},
  pages = {1182},
  author = {Michael Conlon and Andrew Woods and Graham Triggs and Ralph O'Flinn and Muhammad Javed and Jim Blake and Benjamin Gross and Qazi Asim Ijaz Ahmad and Sabih Ali and Martin Barber and Don Elsborg and Kitio Fofack and Christian Hauschke and Violeta Ilik and Huda Khan and Ted Lawless and Jacob Levernier and Brian Lowe and Jose Martin and Steve McKay and Simon Porter and Tatiana Walther and Marijane White and Stefan Wolff and Rebecca Younes},
  title = {{VIVO}: a system for research discovery},
  journal = {Journal of Open Source Software}
}

vivo's People

Contributors

aviggio avatar awoods avatar bdc34 avatar brianjlowe avatar chenejac avatar delsborg avatar dependabot[bot] avatar drspeedo avatar edemerzel avatar gneissone avatar grahamtriggs avatar hauschke avatar hlm7 avatar hudajkhan avatar ivanmrsulja avatar j2blake avatar jcorson55 avatar lawlesst avatar litvinovg avatar lwrubel avatar mconlon17 avatar michel-heon avatar milospp avatar nateprewitt avatar roflinn avatar smmckay avatar stefan-wolff avatar tworrall avatar vivo-uab avatar wwelling avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vivo's Issues

VIVO-32: Modify VIVO to allow user creation of new classes in a local namespace and punning of those classes as individuals of type owl:Thing

Jon Corson-Rikert (Migrated from VIVO-32) said:

See discussion on the Ontology Call 3/6/13; there are times when it would be more correct in OWL terms to let users create new classes rather than only individuals. The classic example of this would be to create a new Award or Honor class (e.g., a local teaching award given every year), and then subsequently create instances of that award by picking from a drop down list of available award classes. The current example brought up by Steven at Brown would be to create an OWL class for each course that has persistence across many individual semester classes.
It would also likely be necessary to add property statements to the OWL classes created; punning them as individuals would enable this in a more consistent manner with the rest of VIVO than using annotations.

VIVO-12: Create the GUI for the user or the admin to select a Language

Jim Blake (Migrated from VIVO-12) said:

Add properties to runtime.properties that allow the admin to force a language other than English, or to offer a selection of languages to the user.

Add GUI elements that will present the selection of languages to the user, and accept his selection.

Add a filter that will override the Locale in the HttpRequest with the Locale that the user has chosen, or that the admin has forced.

VIVO-46: What should a controller do if it encounters an unrecoverable error?

Jim Blake (Migrated from VIVO-46) said:

In PageRoutingFilter, Brian Caruso asks what to do besides logging the unrecoverable error. The answer is not clear.

Look at ExceptionResponseValues.java. It appears to be only useful if there is an exception.

Look at FreemarkerHttpServlet, including the Template enum, the handleException() and doException() methods. (Jon is not happy that error messages are e-mailed to the VIVO admin.)

Look at error-display.ftl, error-standard.ftl, error-email.ftl, error-message.ftl, error-titled.ftl
Look at error.jsp, error404.jsp, error500.jsp, etc.

Figure out what classes of errors there are, how to handle them, and then standardize on those methods and remove the others.

Document it on the Wiki

VIVO-4: Remove the magic from the "magic license line" in source files

Jim Blake (Migrated from VIVO-4) said:

We still want to have a scanner that confirms that all source files contain the appropriate text. However, we no longer want to replace that text with something else. So the released file will be the same as the file in Git.

Check Fedora Commons source code for an appropriate statement.

Modify the scanner to look for that statement. Remove the capability to do replacements.

Modify the Release Project page.

Edit all source files to use the new text (scanner should fail before edit, succeed after edit).

VIVO-22: Make it easier to create custom form generators

Jim Blake (Migrated from VIVO-22) said:

Creating a custom entry from is one of the most common tasks of those who customize VIVO. However, the task is not easy, and the mechanism is not obvious. Possible improvements:

  • Improved documentation on the Wiki

  • Create an abstract base class that contains utility methods to ease the task. The goal of the improvement would be to increase the clarity.

  • Create a group of helper classes that essentially form an internal Domain-Oriented language for the developer to use in creating the form.

Other possibilities? Again, the area for improvement is not the mechanism, per se, but the ease of understanding what must be done to achieve a given result.

VIVO-45: VIVO Ping MySQL when connection not detected

Stephen V. Williams (Migrated from VIVO-45) said:

When server admins perform maintenance on VIVO servers, they may shut down both the MySQL and Tomcat servers at the same time and bring them up at the same time resulting in MySQL not ready for Tomcat and VIVO getting stuck with an unable to connect to MySQL error.

If VIVO could check every half hour for a MySQL connection a 12am maintenance that causes this error would resolve itself without interaction before business at 8am.

VIVO-16: Use lazy loading of attributes to speed up profile display

Jon Corson-Rikert (Migrated from VIVO-16) said:

Tim at Cornell has developed a tempate that produces horizontal tabs for VIVO property groups instead of the current vertical orientation that requires scrolling down to see the next group.

Richard from Duke asked on the dev call whether parts of the data not initially displayed could be lazy-loaded to perhaps improve performance of the initial rendering of a page.

VIVO-2: Make VIVO container-neutral

Jim Blake (Migrated from VIVO-2) said:

Currently, the WAR target does not create a Solr WAR, nor does it create the contents of the Solr home directory. When the VIVO war is created, contains the address of the home directory, which cannot be overridden. It also contains the address of the Solr home directory, and the address of the VIVO log file.

The WAR target should create these artifacts:

  1. vivo.war, which the implementer can deploy in any JEE servlet container
  2. solr.war, which the implementer can deploy in any JEE servlet container
  3. solrhome.tar, which the implementer can unpack into the desired solr home directory
    Right now, it seems that there is no need for a vivohome.tar

There must be some way for the user to specify the location of dependent directories when the WAR files are deployed. The connection between VIVO and Solr must be specified when the WAR files are deployed (or the solrhome.tar)

We must be able to install multiple VIVO instances and multiple Solr instances within the same JEE servlet container.

Ideally, the default deployment (Tomcat) should remain as easy as it is now.

The ant "war" target should not require properties that it will not use (e.g., tomcat.home, webapp.name)

This is the time to separate the build properties from the runtime properties. We need to be able to deploy the same WAR twice with different runtime properties.

How will these changes impact the OpenSocial installation procedure?

It is time to remove the default security on Solr. Both because it has been problematic, and because it uses a Tomcat-specific mechanism. It is also usually unnecessary in productions, since the Tomcat will be behind an Apache server. Document how to secure solr, if desired.

Thoroughly inspect install.html and the recent upgrade-1.6.html and setting_up_orng.html to be certain that the changes are properly reflected in these documents. Create a new section or a new doc that describes how to use the WAR target.

VIVO-7: Upgrade Solr from 3.1 to 3.6.2

Stephen V. Williams (Migrated from VIVO-7) said:

Upgrade the current implementation of Solr from 3.1 to 3.6.2. This version contains numerous upgrades including a fix to the wild card issue where a user who enters jeff* will receive all entries for Jeffery, while Jeff* returns nothing.

http://searchhub.org/2011/11/29/whats-with-lowercasing-wildcard-multiterm-queries-in-solr/
http://search-lucene.com/m/YqQLa2rmVr51/25+December+2012&subj=+ANNOUNCE+Apache+Solr+3+6+2+released

Solr 4.0 has also been released and may also address the wild card issue.

VIVO-14: Show me your code

Jim Blake (Migrated from VIVO-14) said:

I sent an appeal to the developer's list for them to show me the modifications they have made to our code. I hope to run diffs on these modifications to see where they made changes. Hopefully, we can gain insight into how VIVO should be made more configurable.

VIVO-31: Improve documentation of Google Analytics

Jon Corson-Rikert (Migrated from VIVO-31) said:

Is Google Analytics still relevant to VIVO in the post-NIH era? Yes -- it's common enough that I think we should point out how to configure it with a local key (or disable it)
Should it still refer to a page on Cornell's Confluence? No.
Should we move the page to the Confluence space at DuraSpace? Yes, but changed to document how an individual site can elect to customize the key or disable.
Should the installation document mention this? Yes
Should we modify the upgrade document to say that this only applies to the NIH-funded sites? No.
What does that mean, now? No longer relevant.

VIVO-15: Trap for characters that cause search indexing to abort

Jon Corson-Rikert (Migrated from VIVO-15) said:

UF had trouble doing a complete reindex with VIVO 1.5.1 and eventually tracked down a formfeed character that had been pasted into VIVO in 2011 from a PDF. The same error can't be triggered again by pasting into an editing form, but the bad data can be re-introduced by uploading an n-triples file, and still causes the indexing error.

This error may well predate 1.5 since they had been noticing that merged organizations had not been removed from the search index for some time while still running 1.4.1, so the index may not have been updating successfully.

The bad data has been removed, but to avoid this problem again it would be helpful to trap for characters that break the indexing, whether a bug in VIVO, in Jena, or in Solr. If VIVO could at least catch the exception and ignore the record rather than abort the indexing process that would be a big improvement.

VIVO-11: Add delimiters to Freemarker templates

Jim Blake (Migrated from VIVO-11) said:

Modify the TemplateLoader to optionally add "delimiter" strings to all Freemarker templates as they are loaded.

If the "developer.addFreemarkerDelimiters" flag is set, the TemplateLoader will insert HTML comments at the beginning and end of each template so a developer can use View Source in the browser and see what templates contributed which lines of the HTML.

The delimiters should contain a searchable key and the name of the template. Remember that templates can be deeply nested. For example:

...

The opening delimiter should not include a line-feed, so the line numbers in error messages will match those of the original file. This means that the first line will likely look like this:

<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->

Notice that the license tag is a Freemarker comment and will not show up in the View Source.

This issue doesn't apply to the closing delimiter, since the addition of lines at the end of the template will not affect the error messages.

VIVO-1110: Create class for Abstract

Nicholas Rejack (Migrated from VIVO-1110) said:

Currently abstracts are represented in VIVO via a data property, bibo:abstract. This neglects abstracts that are published separately or in journals of abstracts. In order to properly represent these, vivo:Abstract should be created as a class.

Issue discussed on 01/09/2013 ontology call with examples cited from University of Florida and Brown.

VIVO-21: UrlBuilderTest checks for URL parameter order but UrlBuilder does not guarantee order

Brian Lowe (Migrated from VIVO-21) said:

Symptoms as originally reported by Rohan Mathure:

=====

I am trying to build vivo using ant all. But one of the test keeps failing and I am not able to understand the reason why.

[java] TEST FAILED: test testGetUrlWithParams() in edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilderTest: null expected:</vivo/individual?[home=1&name=Tom]> but was:</vivo/individual?[name=Tom&home=1]>

=====

UrlBuilderTest contains this assert:

Assert.assertEquals("/vivo/individual?home=1&name=Tom", UrlBuilder.getUrl(path, params));

but UrlBuilder's addParams(String url, ParamMap params, String glue) method just iterates over params.keySet() when assembling the URL. I see no evidence that HashMap's implementation is intended to guarantee an order for the key set iterator.

It's not immediately clear whether the test or the implementation should be changed here.

VIVO-37: Ensure that all Admin pages are restricted

Jim Blake (Migrated from VIVO-37) said:

Arve Solland at Griffith reported odd behavior on his dev and test sites, and tracked it down to unsecured pages. He sent an email directly to the VIVO development team at Cornell, rather than publicize a security flaw by sending it to the list.

This is a security issue that affects all public 1.5.1 sites, including VIVO Cornell.

  1. Secure these pages, and any other unsecured Admin pages that we can find.
  2. Make sure that developers know how to secure their pages -- Wiki page
  3. Publish a security fix for this. Does it need to be a full point-release? Or is it enough to put it on GitHub? Can we provide a hot-patch to existing 1.5.1 sites? How?

VIVO-13: Links to individual pages are mangled when the would-be local name begins with a digit

Brian Lowe (Migrated from VIVO-13) said:

Reported by Josh Spangler:

"There appears to be an issue with Resource URI’s that start with a number, but also have letters. For example, I have a URI that is “5WFPNS”. In the VIVO search results, the links created to this resource don’t have the “5” at the beginning and only link to “WFPNS”, which results in a “Individual not found” message. If I manually add the “5” back into the URL bar of the browser to make it “5WFPNS” the page then works and the individual is found. This appears to be an issue with the VIVO search/index. Is this a bug/limitation of VIVO? Is it possible to have Resource URI’s that start with a number or are just a number?"

brianjlowe:
The code should be creating links of the from /individual?uri={percent-encoded URI} in these cases, since these URIs involving digits can't be decomposed into normal namespace and local name parts. But this isn't happening properly.

VIVO-25: Test to be sure that TLD files have correct URIs

Jim Blake (Migrated from VIVO-25) said:

Tomcat doesn't object if web.xml says that the URI for a particular TLD file is "A", even thought the TLD file internally says that its URI is "B". Other containers do complain about this, either with simple warning messages, or with failure.

Either enhance the web.xml unit test to check for this, or write a startup smoke test to check for it.

VIVO-23: Serialize/restore a set of VIVO graphs in a quad format like TriG or TriX

Jon Corson-Rikert (Migrated from VIVO-23) said:

From: Brian J Lowe [email protected]
Subject: Re: [Vivo-dev-all] VIVO oddity
Date: February 25, 2013 11:15:45 AM EST
To: VIVO Development List [email protected], Jim Blake [email protected]
Reply-To: VIVO Development List [email protected]

Class groups and property groups can't currently be loaded as file graphs, but you can load them into the database directly from Ingest Tools > Manage Jena Models.

Locate the graph with URI
http://vitro.mannlib.cornell.edu/default/vitro-kb-applicationMetadata

or create it if it doesn't yet exist. Then upload your class groups with the "load RDF data" button.

We could make this kind of workflow easier if we added a feature that would serialize/restore a set of VIVO graphs in a quad format like TriG or TriX.

VIVO-18: Rename default.log4j.properties

Jim Blake (Migrated from VIVO-18) said:

Installers have difficulty setting logging levels because they are looking for a file called log4j.properties, but our logging levels are set in default.log4j.properties.

To make it worse, we do in fact distribute two files called log4j.properties, but they exist in the unit test directories and are only used for unit tests.

Rename default.log4j.properties to log4j.properties. Change the build script to accept this. Change the wiki page https://wiki.duraspace.org/display/VIVO/The+VIVO+log+file and any other documentation to reflect this. Notify the development team of the change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.