Architecture Overview
Microservices
1. Shipment Service (svc-envio-encomienda)
Port: 8080Technology: Spring Boot + MySQL + JPA/Hibernate
This service handles all CRUD operations for shipments, clients, and branches (sucursales).
-
Controllers: REST API endpoints
EnvioController(svc-envio-encomienda/src/main/java/org/jchilon3mas/springcloud/svc/envio/encomienda/web/EnvioController.java:19)ClienteControllerSucursalController
-
Services: Business logic
EnvioServiceImpl(svc-envio-encomienda/src/main/java/org/jchilon3mas/springcloud/svc/envio/encomienda/servicios/Impl/EnvioServiceImpl.java:32)- Handles state transitions
- Validates business rules
-
Entities:
Envio(svc-envio-encomienda/src/main/java/org/jchilon3mas/springcloud/svc/envio/encomienda/entidades/Envio.java:17)ClienteEncomiendaSucursal
-
Integration Service:
IntegracionSemanticaServicesends shipment data to semantic service automatically
2. Semantic Service (svc-web-semantica)
Port: 8081Technology: Spring Boot + Apache Jena + OWL/RDF
This service manages the semantic knowledge graph and provides natural language search capabilities.
-
Controller:
SemanticController(svc-web-semantica/src/main/java/org/jchilon3mas/springcloud/svc/web/semantica/svc_web_semantica/controllers/SemanticController.java:14) -
Services:
SemanticService: Manages RDF triples, executes SPARQL queriesBusquedaSemanticaService(svc-web-semantica/src/main/java/org/jchilon3mas/springcloud/svc/web/semantica/svc_web_semantica/services/BusquedaSemanticaService.java:18): Translates natural language to SPARQL
-
Ontology:
encomiendas.ttldefines the semantic structure - Storage: Apache Jena TDB (file-based RDF database)
Data Flow
Creating a Shipment
Controller validates and delegates
EnvioController receives request and calls EnvioServiceImpl.registrarEnvio()Business logic execution
- Validates client exists
- Validates origin/destination branches
- Generates tracking code:
ENV-{timestamp} - Generates 4-digit delivery password
- Sets initial state:
PENDIENTE
Automatic synchronization
IntegracionSemanticaService.notificarNuevoEnvio() sends shipment data to semantic service:Convert to RDF triples
Semantic service receives data at
POST /api/v1/grafo/sincronizar-envio and creates RDF triples based on the ontology:Semantic Search Query
Natural language processing
BusquedaSemanticaService.procesarLenguajeNatural() (svc-web-semantica/src/main/java/org/jchilon3mas/springcloud/svc/web/semantica/svc_web_semantica/services/BusquedaSemanticaService.java:33) extracts parameters:- States: pendiente, en tránsito, entregado, cancelado, disponible
- Dates: “hoy”, “ayer”, “esta semana”, “DD/MM/YYYY”, date ranges
- Weight: “entre 2 y 5 kg”, “más de 10 kg”
- Cities: Lima, Cusco, Arequipa, etc.
- DNI: 8-digit patterns
- Phone: 9-digit patterns
- Tracking codes: ENV-xxxxxxxxxx
- Vehicle plates: ABC-123 format
Communication Patterns
Synchronous REST Communication
The shipment service communicates with the semantic service via HTTP:Manual Synchronization
You can manually sync all shipments:- Initial setup with existing data
- Recovery after semantic service downtime
- Testing and development
Scalability Considerations
Current Architecture
- Single instance of each service
- File-based RDF storage (TDB)
- Synchronous communication
Future Improvements
Asynchronous Messaging
Replace REST calls with message queue (RabbitMQ, Kafka) for better decoupling and reliability
Service Discovery
Implement Eureka or Consul for dynamic service registration
API Gateway
Add Spring Cloud Gateway for unified entry point
Distributed TDB
Use Apache Jena Fuseki server for distributed RDF storage
Technology Stack
| Component | Technology | Purpose |
|---|---|---|
| Framework | Spring Boot 3.x | Microservices foundation |
| Database | MySQL 8.0+ | Relational data storage |
| ORM | JPA/Hibernate | Object-relational mapping |
| RDF Store | Apache Jena TDB | Triple store for semantic data |
| Query Language | SPARQL | Semantic graph queries |
| Ontology | OWL 2 | Knowledge representation |
| HTTP Client | RestTemplate | Inter-service communication |
| Build Tool | Maven | Dependency management |
Next Steps
Semantic Web Concepts
Learn about RDF, OWL, and semantic technologies
Ontology Structure
Explore the encomiendas.ttl ontology