An intelligent semantic web application for exploring MovieLens data using ontology-based reasoning and SPARQL!
DAVI is a robust semantic web platform engineered to interface with the MovieLens dataset. It uses a custom ontology to structure data and Apache Jena Fuseki to provide a powerful SPARQL endpoint. The project aims to facilitate complex semantic queries, intelligent filtering based on inferred relationships, and dynamic data visualization (using 3D Force Graph).
Server
Database
DevOps
- Semantic Querying: Advanced SPARQL integration for deep data retrieval.
- Interactive Visualization: Explore the movie knowledge graph in 3D using force-directed graphs.
- Ontology Awareness: Fully compliant with a custom
schema.ttlfor strict data structuring. - Smart Filtering: Filter movies by Genre, Year, and Rating using semantic queries.
- Data Analysis: Visual analytics of movie distribution and trends.
- RESTful Architecture: Clean, documented API endpoints via FastAPI.
This project uses Docker, Python, and Node.js.
- Docker
docker --version
- Python
python --version
- Node.js & npm (for Frontend)
node --version npm --version
- Clone the project
git clone https://github.com/Ana-Maria-C/DAVI.git
cd DAVI- Install Backend Dependencies
cd backend
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
pip install -r requirements.txt- Install Frontend Dependencies
cd ../frontend
npm install- Start the Database (Fuseki)
# In the root directory
docker-compose up -d- Initialize Data (First time only)
# Ensure Python venv is active
python data/upload_to_fuseki.py- Start the Backend Server
cd backend
python -m uvicorn app.main:app --reloadThe server will run at http://localhost:8000.
- Start the Frontend Application
cd frontend
npm startThe application will run at http://localhost:4200.
To deploy the entire stack using Docker Compose:
docker-compose up -d --build- Web Interface: Go to
http://localhost:4200to browse movies, visualize the graph, and analyze data. - API Docs: Visit
http://localhost:8000/docsto interact with the Swagger UI. - SPARQL Endpoint: Query the Fuseki server directly at
http://localhost:3030/movielens/sparql.
- Basic Ontology Design
- FastAPI Service Skeleton
- Fuseki Integration
- Angular Frontend Implementation
- 3D Graph Visualization
Contributions are always welcome!
See contributing.md for ways to get started.
-
How do I reset the database?
- Delete the
data/fuseki_datafolder and restart the Docker container, then runpython data/upload_to_fuseki.pyagain.
- Delete the
-
Where is the ontology file?
- It is located in
ontology/schema.ttl.
- It is located in
Distributed under the MIT License.
Here you can find all the resources and documentation related to the DAVI project.
The complete source code is hosted on GitHub:
- Scholarly HTML (Report): scholarly/scholarly.html
- API Documentation: Swagger UI (runs locally)
- OpenAPI Spec: openapi.json
- Video Presentation: YouTube Link