Publicado el 14 de Abril del 2021
534 visualizaciones desde el 14 de Abril del 2021
2,0 MB
115 paginas
Creado hace 14a (01/07/2010)
UNIVERSIDAD DE OVIEDO
Máster en Ingeniería Web
TRABAJO FIN DE MÁSTER
TRIOO, estudio e implementación de modelos de datos RDF en
lenguajes orientados a objetos
Sergio Fernández López
UNIVERSIDAD DE OVIEDO
MÁSTER EN INGENIERÍA WEB
TRABAJO FIN DE MÁSTER
TRIOO, estudio e implementación de modelos de datos RDF en
lenguajes orientados a objetos
VoBo del Director
DIRECTORES: José Emilio Labra Gayo
Diego Berrueta Muñoz
AUTOR:
Sergio Fernández López
RESUMEN
El proyecto trioo tiene como objetivo desarrollar una tecnología que permita
de una manera lo más sencilla posible utilizar datos RDF directamente desde
lenguajes orientados a objetos, permitiendo que el origen y la forma de los
datos no tenga consecuencias para los diseños orientados a objetos, a la vez
que la semántica de los datos se refleje de la manera más fiel posible. l obje-
tivo no es sólo utilzar y persistir datos en bases de datos RDF, sino tambiñen
consumir datos disponibles en la Web y exponer los modelos de negocio de las
aplicaciones como Linked Data. La industria del software ya ofrece desde hace
varios año de soluciones que abordan el mismo problema sobre otro tipo de
modelos de datos, por ejemplo el relacional. Pero todavía no hay una solución
equivalente para RDF, debido a que muchas de las actuales alternativas están
demasiado inspiradas o basadas en sus homologas para las bases de datos rela-
cionales. Y el modelo de RDF tiene muchas particularidades semánticas que
deben tratarse como tal. Por tanto, desde nuestro punto de vista, es un reto muy
atractivo tratar de proveer una tecnología para manejar adecuadamente datos
RDF de una forma orientada a objetos.
sistencia.
Semántica, RDF, SPARQL, Linked Data, lenguajes orientados a objetos, per-
Más detalles en http://trioo.wikier.org/
5
ABSTRACT
The trioo project aims to develop a technology able to easily manage RDF
data directly from object-oriented programming languages, allowing the usage
of that data without negative influences in object-oriented designs and trying
to keep the semantics of data as accurate as possible. The objective is not only
to persist that data on RDF stores, but also to consume data available on the
Web and to expose the business model of applications as Linked Data. The
software industry already offers some solutions since some years ago for re-
lational databases. But it is clear that there is not any satisfactory solution to
work with RDF. Because many of the current alternatives are strongly rely on
inherited design patterns too close to the entity-relational model. And the RDF
model has many special features and semantics that should be treated as such.
Therefore, form our point of view, provide a technology capable for managing
RDF data in a object-oriented way is a appealing challenge.
tence.
Semantics, RDF, SPARQL, Linked Data, Object-oriented languages, persis-
Further details at http://trioo.wikier.org/
7
“The important thing is not to stop questioning.
Curiosity has its own reason for existing.”
Albert Einstein
9
AGRADECIMIENTOS
Aunque suene a tópico, este trabajo no hubiera sido posible sin el apoyo de
mucha gente. Empezando por mis directores Diego y Labra, por haber confiado
en mi de nuevo. A toda la gente que me ha hechado una mano, tanto técnica
como científicamente. Mis compañeros de trabajo por apoyarme siempre. Mis
amigos por comprenderme estos dos duros años. Y a mi familia, que siempre
ha confiado en mi.
De verdad, gracias a todos.
11
LICENCIA
El contenido de este documento se encuentra bajo la licencia Creative Com-
mons Reconocimiento 3.01. Por tanto, usted es libre de adaptar, compartir, dis-
tribuir y transmitir este trabajo, siempre y cuando cite la fuente original.
A excepción del artículo reproducido en el Anexo A, del cual los autores
han cedido los derechos a SciTePress (Science and Technology Publications,
Lda) para su publicación.
1 http://creativecommons.org/licenses/by/3.0/es/
13
HISTORIAL DEL DOCUMENTO
Fecha
Octubre 2009
Febrero 2010
Marzo 2010
Mayo 2010
Junio 2010
Julio 2010
Versión Comentarios
0.1
0.2
0.3
0.4
0.5
1.0
Primer esqueleto de la memoria
Añadido el estado del arte
Primera versión del análisis de los modelos computacionales
Revisión de los primeros capítulos
Borrador
Versión definitiva
15
ÍNDICE GENERAL
1
. . . . . . . . . . . .
1.1 Introducción .
. . . . . . . . . . . .
1.2 Problema .
.
. . . . . . . . . . .
.
.
1.3 Tesis .
.
1.4 Objetivos
. . . . . . . . . . . .
.
.
1.5 Organización del documento . . . . . . . . . . . . . .
.
.
. . .
.
. . .
. . .
. . .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
2.1 Patrones .
.
.
.
.
. . .
. . . . . . . . . . . .
2.2 Tecnologías .
2.3 Herramientas
. . .
. . . . . . . .
. . . . . . . .
. . .
.
2.1.1 Active Record .
.
2.1.2 Data Mapper
.
.
.
.
. . . .
. . . . . . .
. . . . . . .
. . . .
. . . .
2.3.1 Persistencia sobre almacenes relacionales .
. .
2.3.2 Persistencia sobre almacenes orientados objetos . . .
.
2.3.3 Persistencia sobre almacenes libres de esquema . .
. .
2.3.4 Persistencia sobre almacenes XML . . . . . . . . . .
.
2.3.5 Persistencia sobre almacenes RDF . . . . . .
. . . .
.
2.3.6 Persistencia sobre otro tipo de almacenes de datos
.
2.4 Resumen y conclusiones del estado del arte . . . . . . . .
. .
. . . . . . . . . . . .
. . . . . . . . . . .
. . . .
. .
3.1 Modelos computacionales
3.1.1 Modelo computacional orientado a objetos
3.1.2 Modelo RDF .
. . . .
.
. . . . . . . .
.
. . .
. . . . . . . . . . .
3.2 Comparación .
. .
.
.
.
.
.
. . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . .
. . . . . .
. . . . . . .
. . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . .
. . . .
. . . .
2
3
4
.
.
.
.
.
.
. .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. .
3.2.1 Estado y comportamiento . .
.
3.2.2 Identidad .
3.2.3 Tipado .
.
.
3.2.4 Inferencia de tipos
3.2.5 Navegabilidad .
.
.
.
3.3.1 Expresividad .
3.3.2 Restricciones de integridad . . .
3.3.3 Versionado .
. . . . . . .
. . .
.
. . . . . . . .
. . . . . . . .
. .
.
.
.
3.3 Otros aspectos .
. . . . . . . . . . .
.
3.4 Conclusiones extraídas .
.
.
. .
. . . . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
4.1 Requisitos tecnológicos .
.
.
.
4.1.1 Persistencia .
4.1.2 Publicación .
4.1.3 Legibilidad .
4.1.4 Diferencias estructurales .
4.1.5 Mapeos dinámicos . . . . . . . .
4.1.6 Configuración .
. . . . . . . .
. . .
4.2 Lenguajes candidatos .
. . .
.
.
.
.
.
.
.
.
.
.
.
4.2.1 Candidatos al detalle . . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . .
. . . . . . . . . . . .
. . . .
. . . .
. . . . . . . . . . . .
1
1
1
4
4
5
7
7
8
8
8
9
9
13
17
17
19
29
30
33
33
33
36
38
38
38
39
40
41
42
42
43
44
44
45
45
45
46
47
47
47
48
48
50
17
51
53
53
54
55
55
56
57
57
57
57
58
59
60
61
61
63
65
65
77
83
. . . . . . . .
. . . .
. . . . . . . .
4.3 Experimentación . . . .
Índicegeneral
5.1 jtrioo .
. . . . .
. . .
5
5.2 pryoo . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . .
5.1.1 Anotaciones . . . .
5.1.2 Registro de clases . . . .
5.1.3 API .
. . . . . . . . . .
5.1.4 Interceptación de métodos . . . . . . . . . . . .
5.1.5 Generación de consultas . . . . . . . . . . . . .
5.1.6 CURIEs . . . . . . . . .
. . . . . . . . .
5.1.7 Propiedades multivaluadas . . . . . . .
. . . .
. . . . . . . .
. .
.
. . .
.
. . .
. . .
.
. .
. . . .
. . . .
. . . . . . . .
. . .
5.2.1 Versión del lenguaje .
.
5.2.2 API .
5.2.3 Meta-programación . .
. . .
5.2.4 Asimetría __getattr__/__setattr__ en Python . . . . . .
. . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . .
. . . .
. . . .
5.3 Conclusiones extraídas . . . . . . . . .
. . . .
A.1 TRIOO, Keeping the Semantics of Data Safe and Sound into
. . . . .
Object-Oriented Software . . . . . . . . . . .
. . . .
6
A
B
Bibliografía
18
ÍNDICE DE FIGURAS
. . . .
. . . .
.
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Figura 26
Figura 27
Figura 28
Figura 29
Figura 30
Figura 31
Figura 32
Figura 33
Figura 34
Figura 35
Figura 36
Figura 37
Figura 38
Figura 39
. . . . .
. . . . . . . . .
. . . . . . . .
. . . .
. .
. . . . . . . . .
. .
Pila de tecnologías de la Web Semántica.
. . . . .
Patrón Data Mapper
. . . .
. . . . .
Sencillo ejemplo del ActiveRecord de RoR. .
. . . . . .
Ejemplo del uso de los modelos de Django.
. . . . . . . . . . .
Uso de GORM en Grails. .
Pila de tecnologías de Hibernate. . . . . . . . . . .
. .
Ejemplo de mapeo de consultas con MyBatis . . . . .
. .
. . . . . . . .
Ejemplo básico de uso de MyBatis.
. .
Ejemplo del uso clásico de SQLAlchemy.
. . . . .
. .
Ejemplo del uso declarativo de SQLAlchemy. . . .
Uso de Apache JDO.
. . . . . . . . . . . . . .
. .
Metadata para JDO.
. . . . .
. . . . . . . . . .
Sencillo ejemplo de uso de Dobbin.
. . . . . . . . .
Ejemplo de uso del API de Durus.
. .
.
. . . . . . . . . .
Ejemplo básico de uso de ZODB.
. . . . . . . . . . .
Fragmento de un XML Schema.
.
Clase Java con anotaciones de JAXB.
Ejemplo de uso de ActiveRDF . . . .
. . . . .
. . . . . . . . . . .
Ejemplo de uso de Empire. . .
Comentarios de: TRIOO, estudio e implementación de modelos de datos RDF en lenguajes orientados a objetos (0)
No hay comentarios