An LLM‑based tool for semantic annotation and knowledge graph creation using ontologies for research data
- KONDA
KONDA is a web-based application designed to assist researchers in managing research data effectively. It leverages AI to extract metadata from datasets and papers, transforming them into structured knowledge representations like ontologies and knowledge graphs.
⚠️ LLM Disclaimer: KONDA integrates with external language models but does not ship, host, or provide model access. Configure your own provider in.env(see.env.example). API keys, usage, and provider terms remain the responsibility of the user.
The following diagram illustrates the main processing pipeline of KONDA, from dataset upload to knowledge graph creation and RDF export.
The following diagram illustrates the high-level architecture of KONDA, showing how the user interface, backend services, LLM providers, and the Neo4j graph database interact.
- WebFrameworkRouter: Built-in
net/httppackage - ServerPort: configurable via
BACKEND_PORT(default:5050)
- ReactivityLibrary:
htmxwithAlpine.js - CSSFramework:
Tailwind CSSwithdaisyUIcomponents
- Air: Live-reloading for Go applications
- NPM: Used for Tailwind CSS processing
Ensure that your system has the following installed:
- Go: Version
1.23or later - Node.js: Version
22.12or later - poppler: for the pdf2go lib
- Neo4j: Version
Neo4j 5.26.3with plugins - Git LFS: Required to fetch the Neo4j base database dump tracked in this repository
Create a .env file based on the provided template:
cp .env.example .envThen open the .env file and fill in the required configuration values according to your setup.
This application relies on a properly configured Neo4j instance.
To set up Neo4j for KONDA:
-
Install Neo4j
- Option A – DozerDB
- Visit:
https://dozerdb.org/ - Follow the installation instructions for your system. DozerDB bundles Neo4j with the required plugins and configuration.
- Visit:
- Option B – Standard Neo4j Server
- Visit:
https://neo4j.com/download - Install Neo4j 5.26.3 for your platform.
- Visit:
- Option A – DozerDB
-
Enable Required Plugins Ensure the following Neo4j plugins are installed and enabled:
- APOC
- neo4j-genai-plugin
- neosemantics (n10s)
Do not forget to add the following settings to your
neo4j.conf(Neo4j 5.x) to enable the RDF HTTP endpoint and allow required procedures:# n10s RDF HTTP endpoint (this app calls /rdf/...) server.unmanaged_extension_classes=n10s.endpoint=/rdf # Allow http requests to these endpoints dbms.security.http_auth_allowlist=|/|/browser.*|/db/.*|/rdf/.* # Allow plugins dbms.security.procedures.allowlist=apoc.*,n10s.*,genai.* dbms.security.procedures.unrestricted=apoc.*,n10s.*,genai.*
-
Load Base Database Dump
- This repository includes the BaseDB dump at
dump/basedb.dump(tracked via Git LFS). - If Git LFS is not installed on your system, install and initialize it with:
git lfs install
- After cloning the repository, download the database dump with:
git lfs pull
- Stop Neo4j and load the dump (Neo4j 5.x):
neo4j-admin database load basedb --from-path="<PATH_TO_REPO>/dump" --overwrite-destination=true - Start Neo4j
neo4j console
- This repository includes the BaseDB dump at
⚠️ Make sure your Neo4j instance is running and the database is accessible using the credentials provided in the.envfile.
This is a list of the generic ontologies used in the BaseDB:
aeon.owl - dcat3.ttl - euroscivoc.owl - gfo.owl - modsci.owl - prov.ttl - ro.owl - skos.rdf - bfo.ttl - dcterms.ttl - fair.owl - gist.owl - oboe-core.owl - rdf.ttl - sepio.owl - stato.owl - bibo.ttl - dpv.ttl - foaf.rdf - gpo.owl - owl.ttl - rdfs.ttl - sio.owl - vcard.ttl - cc.rdf - edam.owl - geo.ttl - m4i.owl - premis3.owl - reproduce-me.owl - sioc.rdf - xsd.xml
-
Install Node.js dependencies:
npm install
-
Build the frontend:
npm run build
-
Build the project:
go build -o ./konda . -
Run the application:
./konda
-
Open a browser and go to
http://localhost:5050(or the port set in your.env).
KONDA can visualize the generated knowledge graph interactively. You can integrate any graph visualization library you prefer.
⚠️ NVL was originally intended as the default graph visualizer. Since this project is published under GPLv3, it cannot be redistributed together with NVL (@neo4j-nvl/*).
⚠️ If you redistribute this project, do not bundle or ship NVL with the GPLv3-licensed code.
If you have the proper license, you can enable the NVL-based visualization locally as follows:
-
Install the NVL packages locally
npm install @neo4j-nvl/base @neo4j-nvl/interaction-handlers
These packages, and their transitive dependency
@neo4j-nvl/layout-workers, are subject to Neo4j’s proprietary license. Do not redistribute them as part of a GPLv3 release of this project. -
Re-enable the NVL imports in
web/scripts.jsIn
web/scripts.js, locate the commented lines near the bottom and uncomment them:// window.neo4jNVL = require("@neo4j-nvl/base"); // window.neo4jNVLInteraction = require("@neo4j-nvl/interaction-handlers");
-
Re-enable the NVL script in
view/pages/knowledge-graph.htmlIn
view/pages/knowledge-graph.html:-
Inside the
{{ define "scripts" }}block you will find a<script type="module">whose entire body is wrapped in a block comment and starts with:// NVL usage /* let nvlInstance = null; document.addEventListener("DOMContentLoaded", fetchAndDisplayGraphData); document.addEventListener("tasks-complete", fetchAndDisplayGraphData); ... */
-
Remove the surrounding
/*and*/so that the NVL-related JavaScript executes again.
-
-
Restore the NVL graph container markup
In
view/pages/knowledge-graph.html, uncomment the HTML block labelledNVL containerand remove/adjust the “visualization is disabled” placeholder.Optional: also uncomment the Help bullets (HTML comment) to restore NVL-specific interaction/color guidance.
-
Rebuild the frontend
After making these changes, rebuild the frontend so Parcel picks up the NVL dependencies:
npm run build
At this point, the interactive NVL-based visualization should render again.
For development, use Air to automatically reload the project when changes are detected.
Please make sure that you have installed the executable files for all the necessary tools before starting your project:
Start the Neo4j DB:
NEO4J_HOME/bin/neo4j consoleTo start live-reloading development mode, run:
airVisit port 5050 to access the app. For auto-reload on save in your browser, visit port 5051.
If your Neo4j runs on another machine, set NEO4J_DB_URL and NEO4J_HTTP_URL accordingly (or use an SSH tunnel that forwards 7474 and 7687 to your local machine).
The tool is a pipeline of six steps.
- Upload Dataset: Upload your data files and optional context documents (e.g. PDFs); set domain if needed.
- Find Ontology: Search and select ontologies to load into Neo4j for annotation and mapping.
- Entity Recognition: LLM-extracted or manual entities; add, edit, or remove as needed.
- Relation Extraction: LLM-extracted or manual relations between entities.
- Ontology Annotation: Map entities/categories to ontology terms (URIs) from the selected ontologies.
- Knowledge Graph Export: Inspect the graph and RDF, then export (Turtle, RDF/XML, or JSON-LD). Use Back to re-run from an earlier step if needed.
Find a video demonstrating KONDA's functionalities at YouTube: KONDA Demonstration Video
If you use KONDA in your research or application, please cite the following paper:
[1] S.-Y. Kim, M. Görz, and S. Geisler, “KONDA: An LLM-based Tool for Semantic Annotation and Knowledge Graph Creation Using Ontologies for Research Data,” in Proc. 5th Int. Workshop on Scientific Knowledge: Representation, Discovery, and Assessment (Sci-K), Nara, Japan, CEUR-WS.org, Nov. 2025. DOI:10.18154/RWTH-2026-04351
A formal citation file is included as CITATION.cff for automated reference managers and repositories.
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
See the LICENSE file for the full license text.
- Title: KONDA
- Description: An LLM-based tool for semantic annotation and knowledge graph creation using ontologies for research data.
- Keywords: semantic annotation, knowledge graphs, ontologies, research data management, large language model
- Authors: Martin Görz & Data Stream Management and Analysis Group (RWTH Aachen University)
- Supervisor: Soo-Yon Kim
- Repository Created On: 20 April, 2026
- License: GNU GPLv3


