ALL passwords will need to be reset on Monday September 26th.

Old Release

This documentation relates to an old version of VIVO, version 1.10.x. Looking for another version? See all documentation.

Skip to end of metadata
Go to start of metadata


Custom entry forms allow VIVO to transcend the general-purpose, utilitarian editing scheme of Vitro. Without custom entry forms, VIVO users must edit each RDF triple individually. With a custom entry form, users can edit a complex data structure on a single page. 

VIVO is distributed with a dozens of custom entry form generators. You may want to modify these form generators, or add more of your own.

An example

Say you wish to establish that a particular person is a member of a particular academic department. This relationship can be expressed as a member role.  See Membership Model

But what if the academic department doesn't exist in VIVO yet? You will want to create that department, and assign a name to it. You may also want to record the member role in that department, when their membership began, and when it ended (if it is not ongoing).

Without a custom entry form, you would need to record each piece of data individually.

VIVO includes a custom form generator for this relationship. The custom entry form looks like this:

How is it created?

The creation of custom entry forms is an arcane and eldritch art, for which little documentation is available.

Each form requires a Java class known as a EditConfigurationGenerator. The generator describes the data structure being created, lists the SPARQL queries used, and includes a reference to the Freemarker template that will render the form.

You can start by examining the existing generators in this directory

and the Freemarker templates found here

  • Note: The directory structure has changed in version 1.9+.
    [VIVO]/src/... is now [VIVO]/api/src/main/java/...
    [VIVO]/productMods/... is now [VIVO]/webapp/src/main/webapp/...


There is also a short page of technical description called Implementing custom forms using N3 editing.

  • No labels