Skip to content

WebVOWL/WebVOWL-Legacy

Repository files navigation

WebVOWL Legacy

The legacy branch mirrors the original WebVOWL in look and feel.
Behind the scenes, however, a lot has been done to reduce loading time and memory consumption.

Papers

  • Our paper describing the changes up to v1.2.8 is published in the book ESWC 2025 Satelite Events.
  • The full paper describing the changes up to v1.3.8 is available here.

Changes from the original WebVOWL

Performance is measured using a Windows 11 Home HP ENVY Laptop 13 with 8 GB of RAM and a Intel(R) Core(TM) i5-10210U CPU running Firefox v136.0.1 (64-bit) on the following inputs:

Shorthand Full name Type Size Version URL
FOAF Friend of a Friend Ontology $n=70$,
$m=50$
20140114 Download
ENVO The Environment Ontology Ontology $n=12387$,
$m=7038$
5/2/2025 Download
YAGO YAGO, tiny version Knowledge Graph $n=166425$,
$m=132882$
4.5 Download

where:
$~~~~~~~~$ $n=\text{edges}$,
$~~~~~~~~$ $m=\text{nodes}$

Comparisons were completed using the Firefox Profiler to measure the same operation, with and without the described improvement, and each measurement has been repeated 3 times and averaged. The speedup is then given by the time difference, $\frac{\text{original time}}{\text{new time}}$ $=$ speedup.

Significant performance improvements

Improvement Time complexity
(original $\rightarrow$ new)
Load Time Improvement
(input: original/new)
CountAndSetLayers $O(n^2) \rightarrow O(n)$ FOAF: $1.5s/0.6s=2.5$
ENVO: $631.7s/594.9s=1.06$
YAGO: $\text{DNC}^*$
CountAndSetLoops $O(n^2) \rightarrow O(n)$ FOAF: $1.5s/1.6s=0.94$
ENVO: $631.7s/407.2s=1.55$
YAGO: DNC
GetOtherEqualProperty $O(n^2) \rightarrow O(n^2)$
$\Omega(n^2) \rightarrow \Omega(n)^\dagger$
FOAF: $1.5s/2.0=0.75$
ENVO: $631.7s/564.0s=1.12$
YAGO: DNC
StoreLinksOnNodes $O(n \cdot m) \rightarrow O(n+m)$ FOAF: $1.5s/2.0s=0.75$
ENVO: $631.7s/494.5s=1.28$
YAGO: DNC
CombineClassesOrProperties $O(\beta^2) \rightarrow O(\beta)$ FOAF: $1.5s/2.4s=0.63$
ENVO: $631.7s/546.4s=1.16$
YAGO: DNC
MergeRangesOfEquivalentProperties $O(n^2 \cdot \epsilon) \rightarrow O(n \cdot \epsilon)$ FOAF: $1.5s/0.9s=1.67$
ENVO: $631.7s/282.7s=2.23$
YAGO: DNC
$\text{SubclassFilter}^\ddagger$ $O(n \cdot (n+m)) \rightarrow O(n^2+m)$ FOAF: $0.2s/0.2s=1$
ENVO: $63.8s/0.6s=106.33$
YAGO: $\text{DNC}/7.6s$
$\text{Search}^\ddagger$ $O(k \cdot t(f-t+1)) \rightarrow O(\tau)^\S$ FOAF: $7.33ms/5.66ms=1.3$
ENVO: $51.33ms/23.66ms=2.17$
YAGO: $\text{DNC}/88.67ms$
All changes FOAF: $1.5s/0.23s=6.52$
ENVO: $631.7s/1.23s=513.58$
YAGO: $\text{DNC}/18.7s$

where:
$~~~~~~~~$ $^*$ DNC (Did Not Complete) used when the loading time exceeded 20 minutes.
$~~~~~~~~$ $^\dagger$ Best-/average-case.
$~~~~~~~~$ $^\ddagger$ Result is feature runtime, not overall loading time.
$~~~~~~~~$ $^\S$ Average-case.
$~~~~~~~~$ $n=\text{edges}$.
$~~~~~~~~$ $m=\text{nodes}$.
$~~~~~~~~$ $\beta=\text{the largest amount of either classes or properties}$.
$~~~~~~~~$ $\epsilon=\text{the equivalents of each property including itself}$.
$~~~~~~~~$ $k=\text{string array of node and edge names}$.
$~~~~~~~~$ $f=\text{string of a node or edge name}$.
$~~~~~~~~$ $t=\text{string of the search term}$.
$~~~~~~~~$ $\tau=\lvert w_s\rvert+\sum_{i=1}^{\lvert W_g\rvert} \lvert w_i\rvert - \lvert w_s\rvert$.

Reduced memory usage

Input Peak memory usage
(original/all changes)
Reduced by
FOAF 22.8MB/15.1MB $34\%$
ENVO 524MB/227.33MB $57\%$
YAGO DNC/3.95GB

Extended Search Functionality

We present an extended search functionality. It allows the user to search for any element in the graph and if the searched element is not currently rendered on screen, a subgraph is created such that the searched element and its nearby connected elements are shown, replacing the previously rendered graph. Using the Reset button, the user is then able to return to the big picture view of the graph.

The new search feature is backed by a custom trie of word/data pairs designed to scale well with large ontologies.

Run Using Docker

Pull image: docker pull ghcr.io/webvowl/webvowl-legacy:latest

Or use the docker compose file with command docker-compose up -d

Building the docker image Make sure you are inside the `WebVOWL` directory and you have Docker installed.

Run the following command to build the docker image:

docker build . -t webvowl:legacy_dev

Visit http://localhost:8080 to use WebVOWL.

Development setup

Note

The OWL2VOWL converter is not supported on the local development server

  1. Clone the project locally
  2. Install Node.js from http://nodejs.org/download/
  3. Install Maven from https://maven.apache.org/download.cgi
  4. Open the terminal in the WebVOWL directory

Now you can execute these commands:

  • npm run webserver to start a local live-updating webserver in development mode
  • npm run release builds the release files into the deploy directory

Visit http://localhost:8080 to use WebVOWL.

Additional information

To export the VOWL visualization to an SVG image, all css styles have to be included into the SVG code. This means that if you change the CSS code in the vowl.css file, you also have to update the code that inlines the styles - otherwise the exported SVG will not look the same as the displayed graph.

The tool which creates the code that inlines the styles can be found in the VowlCssToD3RuleConverter directory. Please follow the instructions in its README file.

Packages

 
 
 

Contributors 13