========
Overview
========

The Resource Registry manages a graph of entities and relationships representing resources and facets, 
along with their connections. Contexts provide a hierarchically organized visibility layer that controls 
access to these graph entities. The service uses OrientDB as the underlying database and provides REST 
APIs for complete CRUD operations on all elements of the information model.

**Academic Reference:**

For the theoretical foundations and detailed design rationale of the gCube Information System 
(of which the Resource Registry is the core component), see: Frosini, L. (2019). *Transactional REST 
Information System for Federated Research Infrastructures enabling Virtual Research Environments*. 
Università degli Studi di Pisa. https://doi.org/10.5281/zenodo.7464022


**Key Features:**

- **Context Management**: Operations to create and manage hierarchical gCube contexts;
- **Type Management**: Schema and type definition management with inheritance hierarchies;
- **Graph Entity Management**: Unified CRUD operations for resources, facets, and their relationships 
  (IsRelatedTo, ConsistsOf), including context sharing capabilities;
- **Schema Validation**: Automatic compliance checking against defined types;
- **Advanced Queries**: Support for prepared queries, JSON queries and query templates.

===========
Quick Links
===========

**Documentation and API Access**

.. raw:: html

   <table border="1" class="docutils">
   <colgroup>
   <col width="30%" />
   <col width="70%" />
   </colgroup>
   <thead valign="bottom">
   <tr><th>Resource</th>
   <th>Description</th>
   </tr>
   </thead>
   <tbody valign="top">
   <tr><td><strong>Service Documentation</strong></td>
   <td>You are here - Complete Service Documentation</td>
   </tr>
   <tr><td><strong>API Documentation</strong></td>
   <td><a href="../api-docs/index.html" target="_blank">REST-API docs</a></td>
   </tr>
   <tr><td><strong>API Testing</strong></td>
   <td><a href="../api-docs/swagger.html" target="_blank">Swagger UI</a></td>
   </tr>
   <tr><td><strong>OpenAPI Specification</strong></td>
   <td><a href="../api-docs/openapi.json" target="_blank">openapi.json</a></td>
   </tr>
   </tbody>
   </table>

=============
Architecture
=============

The service is based on SmartGears 4 and uses:

- **JAX-RS**: For REST API exposure;
- **OrientDB**: As graph database for persistence;
- **gCube Jackson**: For JSON serialization/deserialization (repackaged version of Jackson library);
- **gCube Security Framework**: For authentication and authorization.
