A containerized environment for Graph Data Engineering, Semantic Modeling (RDF/OWL), and Graph Data Science.
This repository provides a reproducible stack using Neo4j Community Edition paired with Jupyter Lab. It implements an immutable infrastructure pattern by baking critical dependencies directly into the container image.
- Database: Neo4j Community (Version pinned in
.env.example). - Semantic Layer: Neosemantics (n10s) for RDF import/export and ontology management. Installed via custom Docker build.
- Data Engineering: APOC and Graph Data Science (GDS) libraries enabled.
- Client: Jupyter Lab (Python 3.11) with Neo4j Bolt driver, configured for ETL pipelines and analysis.
All configuration is centralized in the .env.example file.
Rename it to .env and adjust settings as needed.
cp .env.example .env
- Configure Environment
Review the
.env.examplefile. The default settings are optimized for a standard development machine (1GB Heap / 2GB Max).
cp .env.example .env- Build and Run The build step is required to fetch the correct Neosemantics jar file.
docker-compose up -d --build
- Access Services
- Neo4j Browser:
http://localhost:7474 - Jupyter Lab:
http://localhost:8888
notebooks/: Python scripts for data ingestion and graph algorithms.import/: Directory mapped to Neo4j and Jupyter for CSV datasets and OWL files.data/: Persisted database files.logs/: Database logs.
To initialize the semantic config, run the following in the Neo4j Browser or via the provided Python notebook:
CREATE CONSTRAINT n10s_unique_uri FOR (r:Resource) REQUIRE r.uri IS UNIQUE;
CALL n10s.graphconfig.init();