• Home
  • Project
    Introduction
    • Introduction
    • Background and Motivation
    • What is a Good Timetable?
    • Project Aims and Scope
  • Graph Data
    Model
    • Graph vs Relational Data Models
    • Graph Data Model for Timetabling
    • Early Insights
    • Model Expansion
    • Graphing Time
  • Data
    Pipeline
    • ETL Overview
    • Approach
    • Configuration and Logging
    • Extract
    • Transform
    • Google Drive Load
    • Neo4j Load
    • Reflection
  • Timetable
    Metrics
    • Timetable Metrics
    • Metric Aggregations
    • Implementing Metrics
    • TQI Summary
  • Final
    Thoughts
  • Appendices
    & Extras
    • Appendix Table of Contents
    • References
    • Acknowledgements
  • Word
  1. Project Introduction
  2. Project Aims and Scope
  • Home
  • Project Introduction
    • Introduction
    • Background and Motivation
    • What is a Good Timetable?
    • Project Aims and Scope
  • Graph Data Model
    • Graph vs Relational Data Models
    • Graph Data Model for Timetabling
    • Early Insights
    • Model Expansion
    • Graphing Time
  • Data Pipeline
    • ETL Overview
    • Approach
    • Configuration and Logging
    • Extract
    • Transform
    • Google Drive Load
    • Neo4j Load
    • Reflection
  • Timetable Metrics
    • Timetable Metrics
    • Metric Aggregations
    • Implementing Metrics
    • TQI Summary
  • Final Thoughts
  • Appendices
    • Random Graph Generator
    • Technology Stack
    • Configuration
    • Anonymisation
    • ETL Summary and Code
      • ETL Summary
      • ETL Code
      • Config and Misc
      • Extract-SQL
      • Extract
      • Google Drive Load
      • Transform
      • Neo4j Load
    • Neo4j & Cypher Code
      • Cypher Queries
      • Creating Nodes and Relationships
      • Deleting Nodes and Relationships
      • General Queries
      • Count Queries
      • Hard (timetabling) Constraints
      • Student Clashes
      • Soft Constraints
      • Rooms and Spaces
      • Perspectives
      • Blue Skies Opportunities
  • Supervision
    • Supervision
    • Notes Example 1
    • Notes Example 2
    • Notes Example 3
  • References
  • Acknowledgements

On this page

  • Objectives
  1. Project Introduction
  2. Project Aims and Scope

Project Aims and Scope

The primary aim of this project is to investigate the viability of using graph data structures for enhanced timetabling analytics and reporting.

Objectives


  1. Designing an extensible, system-agnostic graph data model for university timetables
  2. Developing a configurable ETL (extract, transform, load) pipeline to transition from relational to graph database representations of timetables
  3. Discussing how graph-based approaches to timetabling analysis could contribute to measuring and improving timetable quality.

To achieve these objectives, I implement and evaluate a set of proof-of-concept analytical metrics which leverage the graph data model whilst discussing performance capabilities (and limitations) against traditional relational approaches.

It is important to note that this project is positioned as a proof-of-concept and exploratory study.

I will not:

  • reinvent a full-scale timetabling system
  • attempt to optimise real-time timetable generation

I will:

  • focus on the data engineering aspects of transitioning from relational to graph data models
  • demonstrate the potential of graph-based approaches in the analysis of university timetables
  • provide a foundation for future analytical work.

Let’s graph!

G 4zj99lz2 666n359b u0upp5hj 666n359b->u0upp5hj 4s3xzocl k8yaaeoi 4s3xzocl->k8yaaeoi 9bbhq0e8 4s3xzocl->9bbhq0e8 4s3xzocl->9bbhq0e8 5cymetka e4qukjnm 5cymetka->e4qukjnm hx0hp6dr hx0hp6dr->hx0hp6dr k8yaaeoi->k8yaaeoi 14ae1pfz k8yaaeoi->14ae1pfz jrtct42d glv43ych xpzdirk1 glv43ych->xpzdirk1 06x4bmzo glv43ych->06x4bmzo mis1btmm glv43ych->mis1btmm ce1516j0 glv43ych->ce1516j0 gzxrlpod c114j2tw gzxrlpod->c114j2tw 8bpimk72 8bpimk72->k8yaaeoi 8bpimk72->14ae1pfz ur4yo3tx 8bpimk72->ur4yo3tx onkctu6x onkctu6x->onkctu6x 85hi4ca2 onkctu6x->85hi4ca2 x0n5twep onkctu6x->x0n5twep c1sdjw8j c1sdjw8j->hx0hp6dr c1sdjw8j->u0upp5hj xh1xin78 xztqibcz xh1xin78->xztqibcz vr6qql5z vr6qql5z->666n359b wxhhelge vr6qql5z->wxhhelge 3ytehise vr6qql5z->3ytehise 2m5wokx2 mfp9is99 2m5wokx2->mfp9is99 v4x5duoh v4x5duoh->2m5wokx2 fovglxww v4x5duoh->fovglxww v4x5duoh->xztqibcz 89w9dxkj 89w9dxkj->glv43ych 89w9dxkj->glv43ych 1chkeldv 89w9dxkj->1chkeldv 89w9dxkj->mis1btmm xpzdirk1->gzxrlpod fovglxww->fovglxww fsp8cdjo fovglxww->fsp8cdjo fovglxww->mfp9is99 jnazmo3s jnazmo3s->e4qukjnm 72a2d6xd sj35t4ss 72a2d6xd->sj35t4ss lfwuczry 35yrnabr lfwuczry->35yrnabr 8cgoonso lfwuczry->8cgoonso hv8k4g84 lfwuczry->hv8k4g84 lfwuczry->hv8k4g84 hcqaqm1o hcqaqm1o->666n359b qy17mwag hcqaqm1o->qy17mwag 53bgisfb hcqaqm1o->53bgisfb 1k9klz8v eacs5e9j 1k9klz8v->eacs5e9j j812m8am 1k9klz8v->j812m8am ieb7bdce 1k9klz8v->ieb7bdce bav7hkue c114j2tw->bav7hkue e7injpqb c114j2tw->e7injpqb hj4rycy9 s3okac0a hj4rycy9->s3okac0a 85hi4ca2->hj4rycy9 85hi4ca2->9bbhq0e8 akih91pi 85hi4ca2->akih91pi wxhhelge->72a2d6xd wxhhelge->53bgisfb iw0pfpmk wt9rtovp iw0pfpmk->wt9rtovp dtmww06j iw0pfpmk->dtmww06j x0n5twep->onkctu6x x0n5twep->onkctu6x x0n5twep->85hi4ca2 x0n5twep->85hi4ca2 w084j1ko x0n5twep->w084j1ko y0sap20o y0sap20o->y0sap20o dxppp23s y0sap20o->dxppp23s y0sap20o->dxppp23s pveq6y3l y0sap20o->pveq6y3l zefyvzdp pzodwhlw hxejkaog pzodwhlw->hxejkaog 9bbhq0e8->dxppp23s m0ggeeei 9bbhq0e8->m0ggeeei 06x4bmzo->c114j2tw v850hpzb 06x4bmzo->v850hpzb 8bx5ks88 06x4bmzo->8bx5ks88 zyz74rqy zyz74rqy->hx0hp6dr zyz74rqy->c1sdjw8j 2cicgpkb zyz74rqy->2cicgpkb zyz74rqy->2cicgpkb c21k3g41 zyz74rqy->c21k3g41 6e82t0az si800de6 si800de6->fovglxww si800de6->si800de6 4rv1fae9 4rv1fae9->v4x5duoh dogjcfze 4rv1fae9->dogjcfze 4rv1fae9->dtmww06j 4rv1fae9->3ytehise qvvjbgxm qy17mwag->vr6qql5z kjba91s3 qy17mwag->kjba91s3 9ifdi52l s3tdzgmu 9ifdi52l->s3tdzgmu 14ae1pfz->eacs5e9j hxejkaog->s3tdzgmu lijfw7my lijfw7my->4zj99lz2 eacs5e9j->k8yaaeoi ur4yo3tx->hxejkaog 1tdjps87 ur4yo3tx->1tdjps87 l9axxrot ur4yo3tx->l9axxrot fsp8cdjo->v4x5duoh fsp8cdjo->fovglxww 9xro7toh 4pocwaxo akih91pi->4pocwaxo akih91pi->3ytehise v850hpzb->89w9dxkj v850hpzb->qvvjbgxm v850hpzb->e7injpqb e4qukjnm->u0upp5hj 1bkcwtuf 1bkcwtuf->c114j2tw 1bkcwtuf->06x4bmzo 1bkcwtuf->06x4bmzo 1bkcwtuf->lijfw7my dvhx7p1e 1bkcwtuf->dvhx7p1e u0upp5hj->hcqaqm1o u0upp5hj->wxhhelge u0upp5hj->c21k3g41 j33a36gy j33a36gy->9ifdi52l j33a36gy->j812m8am ewthkxdz efvvduxt efvvduxt->onkctu6x efvvduxt->4pocwaxo twne0skc twne0skc->xpzdirk1 twne0skc->1bkcwtuf 2cicgpkb->l9axxrot ozdu79aw ozdu79aw->hx0hp6dr ozdu79aw->1tdjps87 j812m8am->j33a36gy sj35t4ss->72a2d6xd sj35t4ss->53bgisfb 1tdjps87->8bpimk72 1tdjps87->8cgoonso qcsg1epp qcsg1epp->k8yaaeoi kjba91s3->53bgisfb mis1btmm->c114j2tw mis1btmm->efvvduxt 35yrnabr->4zj99lz2 35yrnabr->y0sap20o 35yrnabr->dvhx7p1e wmnsxqhi wmnsxqhi->wxhhelge tyoit3iq tyoit3iq->v4x5duoh tyoit3iq->v4x5duoh tyoit3iq->fovglxww tyoit3iq->1chkeldv 8cgoonso->j33a36gy 8bx5ks88->mis1btmm 8bx5ks88->mis1btmm ez7k5sb5 ez7k5sb5->72a2d6xd ez7k5sb5->9ifdi52l ieb7bdce->xh1xin78 4pocwaxo->85hi4ca2 4pocwaxo->4pocwaxo qez5iiiz 4pocwaxo->qez5iiiz mfp9is99->wt9rtovp mfp9is99->1chkeldv yezs4jbg yezs4jbg->tyoit3iq yezs4jbg->w084j1ko qez5iiiz->onkctu6x qez5iiiz->4pocwaxo qez5iiiz->4pocwaxo s3okac0a->5cymetka s3okac0a->vr6qql5z s3okac0a->72a2d6xd 1pk6uryz 1pk6uryz->xh1xin78 1pk6uryz->2m5wokx2 1pk6uryz->v4x5duoh 1pk6uryz->fovglxww 1pk6uryz->iw0pfpmk 1pk6uryz->1chkeldv hv8k4g84->89w9dxkj 83ayee0w 83ayee0w->y0sap20o 83ayee0w->bav7hkue 83ayee0w->lijfw7my dxppp23s->glv43ych dxppp23s->m0ggeeei dogjcfze->1chkeldv dogjcfze->dtmww06j 53bgisfb->666n359b 53bgisfb->72a2d6xd 53bgisfb->9ifdi52l 53bgisfb->xztqibcz b463lw81 53bgisfb->b463lw81 e7injpqb->bav7hkue dvhx7p1e->5cymetka dvhx7p1e->8bx5ks88 pveq6y3l->4s3xzocl pveq6y3l->pveq6y3l m0ggeeei->4s3xzocl m0ggeeei->qez5iiiz l9axxrot->pzodwhlw l9axxrot->akih91pi l9axxrot->c21k3g41 c21k3g41->c1sdjw8j c21k3g41->ozdu79aw c21k3g41->ieb7bdce c21k3g41->ieb7bdce b463lw81->hcqaqm1o b463lw81->wxhhelge ce1516j0->4s3xzocl ce1516j0->83ayee0w ce1516j0->ce1516j0 ce1516j0->ce1516j0 w084j1ko->onkctu6x w084j1ko->dxppp23s s3tdzgmu->vr6qql5z s3tdzgmu->ez7k5sb5 s3tdzgmu->b463lw81

: A randomly generated graph for illustrative purposes.

See Appendix for graph generator code

What is a Good Timetable?
Graph vs Relational Data Models

Copyright 2024, Petter Lövehagen

 

Built with Quarto