A semantic web-based platform for integrated management of human resources, workspaces, and ICT assets within organizational environments.
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.
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
- 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
- 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
- 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
- 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
- Direct SPARQL endpoint access for custom queries
- Support for both INSERT and SELECT operations
- Manual data ingestion for non-routine scenarios
- 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.
- 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
- 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
- Ontology-driven data validation
- RDF-compliant data structures
- SPARQL-powered data retrieval and insertion
- Automated compliance checking against defined ontological axioms
- Role-based access policies aligned with organizational structure
- Segmented interfaces for different user types
- Authentication-based controls for sensitive operations
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
- 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
- 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)
- 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
manage.py: Django command-line utility for administrative tasks (migrations, running the server, etc.)db.sqlite3: SQLite database file storing application data
The project configuration directory containing:
settings.py: Django settings and configuration (DEBUG mode, installed apps, database config)urls.py: Main URL routing configurationwsgi.py: WSGI application entry point for production deploymentasgi.py: ASGI application entry point for async support__pycache__/: Python bytecode cache
The main Django app handling workspace and asset allocation logic:
models.py: Core data models including:UserProfile: User account managementOrganization,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 validationfilters.py: Dynamic filtering for database queriestables.py: Table definitions for data displayurls.py: App-specific URL routingadmin.py: Django admin interface configurationapps.py: App configurationusers.py: User management utilitiestests.py: Unit testsmigrations/: Database schema version control (13+ migration files)
RESTful API for external data access:
serializers.py: API data serializationviews.py: API endpoint handlersurls.py: API route definitionsutils.py: Utility functions for API operationspredefQueries.py: Pre-defined database queriestests/: API test suite
Extended user functionality:
models.py: User-related modelsviews.py: User-specific viewsurls.py: User routes
Static files served to the browser:
css/: Stylesheetsbootstrap.css,tailwind.min.css: CSS frameworksstyle.css: Custom application stylesall.min.css: Icon/utility styles
js/: JavaScript libraries and scriptsbootstrap.js,htmx.min.js: Frontend frameworksthree.module.js,OrbitControls.js,web-ifc-api.js: 3D visualization (IFC viewer)- Custom scripts for data rendering
scripts/: Utility scriptsMetaDataRenderer.js,StaticTreeRenderer.js: Data rendering enginesRequest.js,Utils.js: Helper utilitiesdomReady.js,es6-promise-3.2.2.min.js: Polyfills
icons/: Icon assetswasm/: WebAssembly modules (for 3D/IFC processing)
Django templates for rendering views:
base.html: Base template with common layoutlogin.html: User authentication pagefirstpage.html: Landing/home page- Entity Management Pages:
employees.html,employees_list.html,newemployee.htmloffices.html,offices_list.html,newoffice.htmlictassets.html,ictassets_list.html,newictasset.htmlfurniture.html,newfurniture.htmlworkspace_detail.html,emplWPM.html
- Data Visualization:
ifc_viewer.html: 3D IFC building model viewerictasset_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.
GNU Affero General Public License v3.0
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.








