Generación de servidores GraphQL a partir de mappings RML utilizando Java y MongoDB

Sainz Del Nogal, Álvaro (2019). Generación de servidores GraphQL a partir de mappings RML utilizando Java y MongoDB. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S. de Ingenieros Informáticos (UPM), Madrid, España.

Description

Title: Generación de servidores GraphQL a partir de mappings RML utilizando Java y MongoDB
Author/s:
  • Sainz Del Nogal, Álvaro
Contributor/s:
  • Corcho García, Óscar
Item Type: Final Project
Degree: Grado en Ingeniería Informática
Date: June 2019
Subjects:
Faculty: E.T.S. de Ingenieros Informáticos (UPM)
Department: Inteligencia Artificial
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (1MB) | Preview

Abstract

En este documento se recoge la memoria completa del proyecto realizado para el trabajo de fin de grado propuesto como la Generación de servidores GraphQL a partir de mappings RML utilizando Java y MongoDB. Inicialmente consta de una breve introducción y de un extenso análisis del estado de arte de las tecnologías principales en las que se basa este proyecto: GraphQL y RML. Además, se realiza un pequeño análisis sobre las diferencias y similitudes actuales entre GraphQL y REST en un pequeño apartado comparativo. En cuestiones de desarrollo, se ha desarrollado una solución en el lenguaje de programación Java que permite la generación de un servidor con los resolvers necesarios para hacer consultas GraphQL sobre colecciones de datos en MongoDB. El programa genera todo el código mediante un mapping RML, un lenguaje declarativo mediante el cual se pueden definir mappings para generar ficheros RDF a partir de fuentes de datos como bases de datos relacionales. En este caso va a usarse la extensión RML, una extensión que permite utilizar el lenguaje R2RML en bases de datos no relacionales como MongoDB. Se ha documentado detenidamente cada aspecto del desarrollo y la implementación de la solución adjuntando figuras ilustrativas y ejemplos prácticos, con un apartado en el cual se hace un recorrido que muestra cómo se implementa un servidor GraphQL manualmente en Java, para así poder comprender la solución desarrollada en su totalidad. Además, también se explican los pasos a seguir para poder ejecutar la aplicación. Tras una extensa documentación del código desarrollado, se ha procedido a mostrar en un capítulo los resultados finales del desarrollo con un ejemplo, y su estado final. Adicionalmente, se han especificado una serie de mejoras y nuevos aspectos a desarrollar en la aplicación en un futuro posterior a la entrega del proyecto. Para finalizar la memoria, se exponen una serie de conclusiones sobre el proyecto y el trabajo realizado. Además de GraphQL y RML, se han utilizado otras tecnologías en la realización del trabajo: MongoDB como SGBD sobre el cual realizar las consultas de datos, Github como repositorio de código principal, Maven para poder gestionar las librerías y dependencias en un proyecto Maven, Eclipse como IDE, y StringTemplate como herramienta principal en la generación automática de código.---ABSTRACT---This document contains the complete memory of the project carried out for the end-ofdegree work proposed as the Generation of GraphQL servers from RML mappings using Java and MongoDB. Initially it consists of a brief introduction and an extensive analysis of the state of the art of the main technologies on which this project is based: GraphQL and RML. In addition, a small analysis of the current differences and similarities between GraphQL and REST is carried out in a small comparative section. In terms of development, a solution has been developed in the Java programming language that allows the generation of a server with the necessary resolvers to make GraphQL querys on data collections in MongoDB. The program generates all the code by means of RML mapping, a declarative language through which mappings can be defined to generate RDF files from data sources such as relational databases. In this case the RML extension will be used, an extension that allows the use of the R2RML language in non-relational databases such as MongoDB. Each aspect of the development and implementation of the solution has been carefully documented by attaching illustrative figures and practical examples, with a section that shows how to implement a GraphQL server manually in Java, in order to understand the solution developed in its entirety. In addition, it also explains the steps to follow to run the application. After an extensive documentation of the developed code, a chapter has proceeded to show the final results of the development with an example, and its final state. In addition, a series of improvements and new aspects to be developed in the application in the future after the delivery of the project have been specified. To conclude the report, a series of conclusions are presented about the project and the work carried out. In addition to GraphQL and RML, other technologies have been used in carrying out the work: MongoDB as SGBD on which to perform the data querys, Github as main code repository, Maven to manage the libraries and dependencies in a Maven project, Eclipse as IDE, and StringTemplate as the main tool in the automatic generation of code.

More information

Item ID: 55770
DC Identifier: http://oa.upm.es/55770/
OAI Identifier: oai:oa.upm.es:55770
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 15 Jul 2019 13:19
Last Modified: 15 Jul 2019 13:19
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM