Expert guidance for working with EMBL-EBI's Ontology Lookup Service (OLS4), a full-stack ontology browser with Java/Maven backend, React frontend, Neo4j graph database, and Solr search. Includes dataload pipeline, testing, and deployment workflows.
Expert guidance for the EMBL-EBI Ontology Lookup Service (OLS4), a sophisticated bioinformatics platform for browsing and searching biological ontologies.
OLS4 is a full-stack application consisting of:
When working with OLS4, follow these steps:
**CRITICAL**: Always build in this order to avoid dependency issues:
```bash
mvn clean package
cd frontend && npm install # takes 30 seconds, timeout 120+ seconds
cd frontend && REACT_APP_ENV=dev npm run build # takes 2-3 seconds
```
**ALWAYS** run local dataload tests after making changes:
```bash
mkdir -p /tmp/test_output
dataload/create_datafiles.sh ./testcases/owl2-primer/minimal.json /tmp/test_output --loadLocalFiles --noDates
```
**DO NOT** run `test_dataload.sh` or `test_api.sh` in sandboxed environments -- they require internet access.
#### Option A: Full Docker Setup (requires network)
```bash
export OLS4_CONFIG=./dataload/configs/efo.json
docker compose up
```
#### Option B: Local Development (requires external Neo4j and Solr)
```bash
export NEO4J_HOME=/path/to/neo4j
export SOLR_HOME=/path/to/solr
export OLS4_HOME=/home/runner/work/ols4/ols4
export OLS_SOLR_HOST=http://localhost:8983
export OLS_NEO4J_HOST=bolt://localhost:7687
./dev-testing/start-backend.sh
./dev-testing/start-frontend.sh
```
For any code changes, complete these validation steps:
**Dataload workflow test**:
```bash
mkdir -p /tmp/validation
dataload/create_datafiles.sh ./testcases/owl2-primer/minimal.json /tmp/validation --loadLocalFiles --noDates
```
**Frontend validation**:
```bash
cd frontend
npm run build # Check for build errors
npx tsc --noEmit # Check TypeScript errors (note: codebase has 80+ existing errors)
```
**Backend validation** (requires running Neo4j/Solr):
```bash
curl http://localhost:8080/api/ontologies
```
**Repository structure**:
**Key configuration files**:
**Technology stack**:
**Network restrictions**: Always use `--loadLocalFiles --noDates` flags for local testing
**Memory issues**: Adjust heap size for large ontologies:
```bash
export JAVA_OPTS="-Xms5G -Xmx10G"
```
**TypeScript errors**: Focus only on new errors introduced by your changes (codebase has 80+ existing issues)
**Build failures**:
**Version mismatches**: CI uses Java 14, local development uses Java 17 (both work)
**Complete validation workflow after making changes**:
```bash
mvn clean package # 1-2 minutes
cd frontend && npm install && npm run build # 30 seconds
mkdir -p /tmp/test && dataload/create_datafiles.sh ./testcases/owl2-primer/minimal.json /tmp/test --loadLocalFiles --noDates
cd frontend && npx tsc --noEmit
```
**Quick local test**:
```bash
mkdir -p /tmp/out && dataload/create_datafiles.sh ./testcases/owl2-primer/minimal.json /tmp/out --loadLocalFiles --noDates
```
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/ols4-ontology-lookup-service/raw