Skip to content

labosca/WAMS-kg

Repository files navigation

WAMS - Workspace Allocation Management System

A semantic web-based platform for integrated management of human resources, workspaces, and ICT assets within organizational environments.

Overview

WAMS (Workspace Allocation Management System) is a Django-based web application that leverages semantic web technologies and knowledge graphs to facilitate data-driven decision-making in workspace allocation and asset management. Built for the University of Turin, the system integrates previously disconnected knowledge silos across HR, Facilities Management (FM), and ICT domains.

Use Cases

The system supports various organizational scenarios including:

  • New employee onboarding with workspace and equipment allocation
  • Team reorganization and workspace reallocation
  • Equipment inventory management and tracking
  • Space utilization analysis for facilities planning
  • Compliance reporting for occupancy regulations

Key Features

Multi-Domain Data Integration

  • HR Management: Employee records, organizational roles, and unit assignments
  • Facilities Management: Workspace tracking, occupancy monitoring, and furniture assets
  • ICT Asset Management: Equipment allocation and lifecycle tracking

Core Functionalities

For Technical Employees

  • View and filter employees, workspaces, and ICT assets
  • Insert new records for employees, workspaces, ICT equipment, and furniture
  • Access domain-specific sections (HR, ICT, FM) based on roles and responsibilities

alt text

alt text

alt text

alt text

For Organizational Unit Managers

  • Filter employees by organizational unit with hierarchical visualization
  • View comprehensive employee information including assigned assets and workspaces
  • Perform workspace (re-)allocation with automated tracking of allocation history
  • Monitor team equipment requirements and workspace capacity

alt text

alt text

For Decision Makers

  • Execute predefined competency questions (CQs) to extract insights
  • Analyze occupancy rates and space utilization across buildings and levels
  • Evaluate teamwork constraints and equipment availability
  • Access general overview and instance-specific queries

alt text

For IT Specialists

  • Direct SPARQL endpoint access for custom queries
  • Support for both INSERT and SELECT operations
  • Manual data ingestion for non-routine scenarios

alt text

Technical Architecture

Technology Stack

  • Backend: Django 5.1.5 (Python), Django REST Framework
  • Frontend: Bootstrap 5, HTMX, HTML/CSS, Tailwind CSS
  • Database: GraphDB (RDF triple store), SQLite
  • Semantic Features: SPARQL queries for knowledge graph integration (SPARQLWrapper library)
  • Ontologies: FOAF, WMTO (Workplace Management Ontology), org, rec
  • Visualization: Three.js for 3D visualization, IFC viewer for building models
  • Forms: Django Crispy Forms with Bootstrap 5

Refer to the CONFIGURATION file in this repository for GraphDB Endpoint configurration inside the Django project settings.

Design Principles

  • Object-Oriented Models: Custom Python classes for Django models instead of native ORM to support RDF integration
  • Bidirectional Mapping: Seamless data flow between Django application and graph database
  • Semantic Validation: Hardcoded SPARQL queries ensure ontological compliance
  • Modular Architecture: Domain-separated views reflecting organizational structure

System Capabilities

Dynamic Data Visualization

  • Filterable, sortable tables for employees, workspaces, and assets
  • Hierarchical organizational unit navigation with visual indentation
  • Real-time capacity calculation and occupancy rate monitoring
  • Allocation history tracking with temporal data management

Semantic Data Governance

  • Ontology-driven data validation
  • RDF-compliant data structures
  • SPARQL-powered data retrieval and insertion
  • Automated compliance checking against defined ontological axioms

Access Control

  • Role-based access policies aligned with organizational structure
  • Segmented interfaces for different user types
  • Authentication-based controls for sensitive operations

Supported Competency Questions

The system answers predefined competency questions including:

  • CQ1-CQ4: Instance-specific queries for offices, levels, buildings, and organizational units
  • CQ5-CQ8: General overview queries for occupancy analysis and space utilization
  • CQ9-CQ11: Detailed queries for specific offices, employees, and asset allocations

alt text

Data Model

Core Entities

  • Employee: Personal details, roles, organizational membership, workspace allocation
  • Workspace (Office): Room identifiers, building hierarchy, capacity, occupancy
  • ICT Asset: Equipment details, serial numbers, allocation tracking
  • Furniture Asset: Type classification, workspace assignment
  • Organizational Unit: Hierarchical structure with parent-child relationships
  • Allocation: Temporal tracking of asset and workspace assignments

Key Relationships

  • Employee ↔ Organizational Unit (membership)
  • Employee ↔ Workspace (allocation with start/end dates)
  • Employee ↔ ICT Asset (assignment through Asset Allocation nodes)
  • Workspace ↔ Building/Level (partonomy relations)
  • Workspace ↔ Furniture Asset (contains)

Benefits

  • Data Integration: Breaks down organizational silos across HR, FM, and ICT
  • Informed Decision-Making: Provides comprehensive views for workspace allocation
  • Data Quality: Role-based responsibilities ensure accuracy throughout the pipeline
  • Interoperability: RDF-based architecture enables future system integrations
  • Scalability: Modular design supports organizational growth and evolution
  • Transparency: Temporal tracking creates audit trails for all allocations

Project Structure

Root Level

  • manage.py: Django command-line utility for administrative tasks (migrations, running the server, etc.)
  • db.sqlite3: SQLite database file storing application data

Core Directories

AMScore (Main Django Project)

The project configuration directory containing:

  • settings.py: Django settings and configuration (DEBUG mode, installed apps, database config)
  • urls.py: Main URL routing configuration
  • wsgi.py: WSGI application entry point for production deployment
  • asgi.py: ASGI application entry point for async support
  • __pycache__/: Python bytecode cache

AMSallocate (Core Application)

The main Django app handling workspace and asset allocation logic:

  • models.py: Core data models including:
    • UserProfile: User account management
    • Organization, OrganizationalUnit: Organizational hierarchy
    • Office, Employee, ICT Asset, Furniture, Workspace models
    • SPARQL integration for semantic data
  • views.py: Request handlers and business logic (1100+ lines)
  • forms.py: Django forms for data entry and validation
  • filters.py: Dynamic filtering for database queries
  • tables.py: Table definitions for data display
  • urls.py: App-specific URL routing
  • admin.py: Django admin interface configuration
  • apps.py: App configuration
  • users.py: User management utilities
  • tests.py: Unit tests
  • migrations/: Database schema version control (13+ migration files)

apps (Modular Features)

v1 - REST API

RESTful API for external data access:

  • serializers.py: API data serialization
  • views.py: API endpoint handlers
  • urls.py: API route definitions
  • utils.py: Utility functions for API operations
  • predefQueries.py: Pre-defined database queries
  • tests/: API test suite
users - User Management

Extended user functionality:

  • models.py: User-related models
  • views.py: User-specific views
  • urls.py: User routes

static (Frontend Assets)

Static files served to the browser:

  • css/: Stylesheets
    • bootstrap.css, tailwind.min.css: CSS frameworks
    • style.css: Custom application styles
    • all.min.css: Icon/utility styles
  • js/: JavaScript libraries and scripts
    • bootstrap.js, htmx.min.js: Frontend frameworks
    • three.module.js, OrbitControls.js, web-ifc-api.js: 3D visualization (IFC viewer)
    • Custom scripts for data rendering
  • scripts/: Utility scripts
    • MetaDataRenderer.js, StaticTreeRenderer.js: Data rendering engines
    • Request.js, Utils.js: Helper utilities
    • domReady.js, es6-promise-3.2.2.min.js: Polyfills
  • icons/: Icon assets
  • wasm/: WebAssembly modules (for 3D/IFC processing)

templates (HTML Templates)

Django templates for rendering views:

  • base.html: Base template with common layout
  • login.html: User authentication page
  • firstpage.html: Landing/home page
  • Entity Management Pages:
    • employees.html, employees_list.html, newemployee.html
    • offices.html, offices_list.html, newoffice.html
    • ictassets.html, ictassets_list.html, newictasset.html
    • furniture.html, newfurniture.html
    • workspace_detail.html, emplWPM.html
  • Data Visualization:
    • ifc_viewer.html: 3D IFC building model viewer
    • ictasset_detail.html: Detailed asset information
  • HTMX Integration (tables/, sparql/):
    • HTMxtable_partial.html, bootstrap_htmx.html: Dynamic table templates
    • SPARQL query interface: query.html, queryList.html, queryListResult.html, etc.

License

GNU Affero General Public License v3.0

Contact

For questions, issues, or contributions, please open an issue on this repository.


Note: This is a personal project related to an academic research project at the University of Turin, created for specific use cases. While contributions are appreciated, please note that maintenance may be limited.

About

Workplace Asset Management System (WAMS) based on a graph store and a Django framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors