AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL...

96
Acesso a Dados Baseado em Ontologias com NoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística da Universidade de São Paulo para obtenção do título de Mestre em Ciências Programa: Mestrado em Ciência da Computação Orientadora: Prof a . Dr a . Renata Wassermann São Paulo, agosto de 2017

Transcript of AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL...

Page 1: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Acesso a Dados Baseadoem Ontologias com NoSQL

Bárbara Tieko Agena

Dissertação apresentadaao

Instituto de Matemática e Estatísticada

Universidade de São Paulopara

obtenção do títulode

Mestre em Ciências

Programa: Mestrado em Ciência da ComputaçãoOrientadora: Profa. Dra. Renata Wassermann

São Paulo, agosto de 2017

Page 2: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Acesso a Dados Baseado em Ontologias com NoSQL

Esta versão da dissertação contém as correções e alterações sugeridaspela Comissão Julgadora durante a defesa da versão original do trabalho,realizada em 27/11/2017. Uma cópia da versão original está disponível no

Instituto de Matemática e Estatística da Universidade de São Paulo.

Comissão Julgadora:

• Profa. Dra. Renata Wassermann (orientadora) - IME-USP

• Profa. Dra. Kelly Rosa Braghetto - IME-USP

• Profa. Dra. Laís do Nascimento Salvador - UFBA

Page 3: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Agradecimentos

À professora Renata Wassermann e à professora Kelly Rosa Braghetto, pela orientação, confi-ança, paciência e por todo tempo dedicado a este trabalho.

A todos os professores que depositaram em mim sua confiança.

À minha família por me apoiarem em todos os momentos.

Ao meu companheiro Márcio, por estar ao meu lado e me acompanhar nesta jornada.

Aos meus amigos, por estarem próximos e compartilharem os momentos de dificuldade e alegria.

Por último, a Deus, por ter iluminado meu caminho e tornado tudo isso possível.

i

Page 4: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ii

Page 5: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Resumo

AGENA, B. T. Acesso a Dados Baseado em Ontologias com NoSQL. 2017. Dissertação(Mestrado) - Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo, 2017.

O acesso a dados baseado em ontologia (OBDA, de Ontology-Based Data Access) propõe faci-litar ao usuário acesso a dados sem o conhecimento específico de como eles estão armazenados emsuas fontes. Para isso, faz-se uso de uma ontologia como camada conceitual de alto nível, explo-rando sua capacidade de descrever o domínio e lidar com a incompletude dos dados. Atualmente,os sistemas NoSQL (Not Only SQL) estão se tornando populares, oferecendo recursos que os siste-mas de bancos de dados relacionais não suportam. Desta forma, surgiu a necessidade dos sistemasOBDA se moldarem a estes novos tipos de bancos de dados. O objetivo desta pesquisa é proporuma arquitetura nova para sistemas OBDA possibilitando o acesso a dados em bancos de dadosrelacionais e bancos de dados NoSQL. Para tal, foi proposta a utilização de um mapeamento maissimples responsável pela comunicação entre ontologia e bancos de dados. Foram construídos doisprotótipos de sistemas OBDA para sistemas NoSQL e sistemas de bancos de dados relacional parauma validação empírica da arquitetura proposta neste trabalho.

Palavras-chave: Acesso a dados baseado em ontologias, NoSQL, MongoDB, OBDA, ontologia.

iii

Page 6: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

iv

Page 7: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Abstract

AGENA, B. T. Ontology-Based Data Access with NoSQL. 2017. Dissertação (Mestrado) -Instituto de Matemática e Estatística, Universidade de São Paulo, São Paulo, 2017.

Ontology-based data access (OBDA) proposes to facilitate user access to data without specificknowledge of how they are stored in their sources. For this, an ontology is used as a high levelconceptual layer, exploring its capacity to describe the domain and deal with the incompletenessof the data. Currently, NoSQL (Not Only SQL) systems are becoming popular, offering featuresthat relational database systems do not support. In this way, the need arose for shaping OBDAsystems to deal with these new types of databases. The objective of this research is to propose anew architecture for OBDA systems allowing access to data in relational databases and NoSQLdatabases. For this, we propose the use of a simpler mapping responsible for the communicationbetween ontology and databases. Two OBDA system prototypes were constructed: one for NoSQLsystems and one for relational database systems for an empirical validation.

Keywords: Ontology-Based Data Access, NoSQL, MongoDB, OBDA, ontology.

v

Page 8: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

vi

Page 9: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Sumário

Lista de abreviaturas ix

Lista de Figuras xi

1 Introdução 11.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Organização do texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Ontologia 32.1 Construindo uma ontologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Definindo conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.1.2 Organizando a hierarquia dos conceitos . . . . . . . . . . . . . . . . . . . . . 42.1.3 Definindo propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Consulta SPARQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Acesso a dados baseado em ontologias 73.1 Sistemas OBDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 Ontop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2.1 Camada conceitual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.2 Camada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.3 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.4 Quest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 OBDA com sistemas de banco de dados NoSQL 134.1 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1.1 Mecanismos de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2 Extensão do sistema Ontop para NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 OBDA com NoSQL utilizando xR2RML . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 Framework genérico de acesso a dados baseado em ontologias 195.1 Método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

5.1.1 Camada intermediária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205.1.2 Mapeamento e comunicação com o SGBD . . . . . . . . . . . . . . . . . . . . 215.1.3 Tradutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.1.4 Exportação para RDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

vii

Page 10: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

viii SUMÁRIO

5.2 Arquitetura genérica para sistemas OBDA . . . . . . . . . . . . . . . . . . . . . . . . 225.2.1 Categorias de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6 OntoMongo 256.1 Estudo de caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

6.1.1 Definição do domínio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.1.2 Base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.1.3 Mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.1.4 Tradutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286.1.5 Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7 OntoSQL 337.1 Base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.2 Construindo consultas SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.3 Utilizando o Ontop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

7.3.1 Mapeamento Ontop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.3.2 Execução da Consulta SPARQL pelo Ontop . . . . . . . . . . . . . . . . . . . 37

8 Conclusões 438.1 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438.2 Sugestões para pesquisas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

A Arquivo OWL para ontologia de câncer de pulmão 45

B Mapeamento do OntoSQL 49

C Mapeamento Ontop 51

D Esquema de banco de dados 55

E Consulta SQL gerada pelo sistema Ontop 59

F Estrutura do arquivo JSON armazenado no MongoDB 61

G Estrutura do arquivo XML extraído pelo ScriptLattes 63

H Arquivo OWL da ontologia basic-lattes 67

I Classes do modelo de objetos do OntoMongo 79

Referências Bibliográficas 81

Page 11: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Lista de abreviaturas

ACID Atomicidade, Consistência, Isolamento e DurabilidadeCSV Comma-Separeted ValuesDL Lógica de Descrição (Description Logics)ETL Extração, Transformação, Carregamento (Extract, Transform and Load)JSON JavaScript Object NotationNoSQL Not only SQLNSCLC Câncer de Pulmão de Células Não Pequenas Non-Small Cell Lung CancerOBDA Acesso a Dados Baseado em Ontologias (Ontology-Based Data Access)ODM Mapeamento Objeto-Documento (Object Document Mapping)ORM Mapeamento Objeto-Relacional (Object-Relational Mapping)OWL Web Ontology LanguageR2RML RDB to RDF Mapping LanguageRDB Banco de Dados Relacional (Relational Database)RDF Resource Description FrameworkSCLC Câncer de Pulmão de Células Pequenas Small Cell Lung CancerSGBD Sistema Gerenciador de Banco de DadosSPARQL SPARQL Protocol and RDF Query LanguageSQL Linguagem de Consulta Estruturada (Structured Query Language)URI Uniform Resource IdentifierXML Extensible Markup Language

ix

Page 12: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

x LISTA DE ABREVIATURAS

Page 13: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Lista de Figuras

2.1 Organização hierárquica das classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Domínio e imagem das propriedades temNeoplasia e temEstagio. . . . . . . . . . . . 52.3 Grafo RDF com dois nós (sujeito e objeto) e um predicado conector feito por Klyne e Carroll

(2006). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1 Estrutura conceitual de OBDA por Calvanese et al. (2013). . . . . . . . . . . . . . . 73.2 Camada de dados: tabela tbl_patient. . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 Árvore construída a partir da consulta SPARQL 3.3. . . . . . . . . . . . . . . . . . . 10

4.1 Ontologia que descreve o domínio para a coleção bios. . . . . . . . . . . . . . . . . . 15

5.1 Estrutura conceitual do modelo OBDA . . . . . . . . . . . . . . . . . . . . . . . . . . 205.2 Incompatibilidade de impedância entre a representação de um objeto e os dados

armazenados em um banco relacional (Sadalage e Fowler, 2012) . . . . . . . . . . . . 205.3 Etapa de processamento da consulta SPARQL no modelo OBDA proposto . . . . . . 215.4 Arquitetura genérica para sistemas OBDA . . . . . . . . . . . . . . . . . . . . . . . . 23

6.1 Hierarquia das classes definidas na ontologia . . . . . . . . . . . . . . . . . . . . . . . 256.2 Ontologia basic-lattes por Araujo et al. (2017) . . . . . . . . . . . . . . . . . . . . . . 266.3 Diagrama das classes de modelo: Researcher e Publication . . . . . . . . . . . . . . . 276.4 Equivalência entre classes da ontologia e classes do modelo de objeto. . . . . . . . . . 276.5 Grafo construído a partir da consulta SPARQL . . . . . . . . . . . . . . . . . . . . . 296.6 Nó representando ?pesquisador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296.7 Exemplo do funcionamento do comando project . . . . . . . . . . . . . . . . . . . . 306.8 Nó representando ?publicacao1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.9 Simulação da execução do comando descrito no Arquivo 6.5 . . . . . . . . . . . . . . 306.10 Nó representando ?publicacao2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

7.1 Diagrama do modelo de objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.2 Grafo representando a consulta SPARQL . . . . . . . . . . . . . . . . . . . . . . . . . 357.3 Árvore representando a consulta SPARQL (Arquivo 7.8) . . . . . . . . . . . . . . . . 387.4 Trecho da Ontologia descrevendo relação entre classes Pesquisador e Artigo . . . . . 387.5 Encontrando mapeamentos que casam com a tripla T1 . . . . . . . . . . . . . . . . . 397.6 Combinação através do comando JOIN entre as consultas SQL descritas para Arti-

goPublicado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

xi

Page 14: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

xii LISTA DE FIGURAS

7.7 Combinação através do comando JOIN entre as consultas SQL descritas para Tra-balhoEmEvento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

7.8 Grafo para consulta SPARQL do Arquivo 7.8 . . . . . . . . . . . . . . . . . . . . . . 417.9 Mapeamento para classe Pesquisador . . . . . . . . . . . . . . . . . . . . . . . . . . . 427.10 Mapeamento para classe Artigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Page 15: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 1

Introdução

As áreas de pesquisa envolvendo representação de conhecimento e banco de dados evoluíram deforma que elas convergiram para a integração de suas tecnologias. A representação de conhecimentodescreve um domínio utilizando o formalismo lógico tornando-o mais preciso, permitindo que sefaçam inferências sobre o domínio modelado, normalmente utilizando bases de conhecimento con-sideradas pequenas. Com o avanço da área, houve a necessidade de se manipular dados do mundoreal que normalmente são disponíveis em grandes quantidades e em diversos formatos.

A área de pesquisa de banco de dados se concentra em armazenar e recuperar dados de formaeficiente. No entanto, as informações armazenadas em bancos de dados são hoje muito complexas,tornando-as pouco intuitivas e transparentes.

Destas necessidades surgiu o interesse em se utilizar o poder de expressividade oferecido pelaárea de representação do conhecimento e a capacidade de armazenamento e recuperação dos bancosde dados, dando origem ao paradigma de acesso a dados baseado em ontologia.

Para se extrair informações de valor, um usuário precisa, além de conhecimento técnico, deconhecimento do domínio para formular consultas relevantes. O paradigma OBDA (Calvanese et al.,2007) (Do inglês Ontology-Based Data Access, Acesso a Dados Baseado em Ontologias) propõe autilização de ontologia como camada conceitual para uma descrição mais expressiva da base dedados, propiciando uma forma mais simples e eficaz de consulta através do acesso por ontologias.

Muitos cenários atuais apresentam grandes quantidades de dados disponíveis em diversos for-matos. Em alguns destes cenários o uso de bancos de dados relacionais não é a opção mais adequadapara o armazenamento e recuperação dos dados. Desta forma, os sistemas NoSQL (Not Only SQL)surgiram para satisfazer as necessidades destas aplicações modernas.

Com o surgimento e a popularização dos sistemas NoSQL, surgiu a questão: Dado um sistemade banco de dados NoSQL, é possível utilizá-lo com sistemas OBDA?

1.1 Objetivos

O objetivo principal deste trabalho é propor um mapeamento OBDA que possa ser aplicadotanto para sistemas de bancos de dados NoSQL quanto para sistemas de bancos de dados relacio-nais. A proposta nasce da importância das aplicações OBDA suportarem o NoSQL para que sejapossível aplicá-lo a domínios dotados de grandes volumes de dados. Temos ainda como objetivofacilitar o mapeamento e o processo de conversão de consultas SPARQL em consultas para dife-rentes tipos de bancos de dados, pois é necessário que esse processo seja flexível, dada a grandequantidade e variedade desses sistemas. Para tal, propomos uma camada conceitual intermediáriaentre a ontologia e o banco de dados que provê uma estrutura mais próxima da ontologia paraos dados armazenados no banco de dados. Além disso, descrevemos um método de tradução dasconsultas para os SGBDs (Sistemas Gerenciadores de Bancos de Dados) de destino. Esta ideia foiaplicada inicialmente a um sistema que utiliza NoSQL orientado a documentos (MongoDB) e emseguida a um SGBD relacional para avaliar a viabilidade do modelo.

1

Page 16: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

2 INTRODUÇÃO 1.3

1.2 Contribuições

A principal contribuição deste trabalho é a construção de uma arquitetura para sistemas OBDAcapaz de utilizar bancos de dados relacionais e bancos de dados NoSQL. Parte deste trabalho foirealizada em conjunto com Thiago Araújo e publicada em Araujo et al. (2017). A generalização daarquitetura resultou em uma nova abordagem para a construção de um mapeamento mais simplesem sistemas OBDA e para a conversão de consultas SPARQL em consultas para SGBDs.

1.3 Organização do texto

O capítulo 2 apresenta a descrição de conceitos básicos das ontologias. O capítulo 3 trata doparadigma de Acesso a Dados Baseado em Ontologias (OBDA), descrevendo um estudo que utilizaesse paradigma com sistemas de bancos de dados relacionais. No capítulo 4 discutimos os estudosrecentes que tratam de OBDA com NoSQL. O capítulo 5 apresenta o framework genérico para acessoa dados baseado em ontologias. Nos capítulos 6 e 7 são apresentados os protótipos que utilizam oframework genérico para os sistemas de bancos de dados MongoDB e PostgreSQL, fazendo umabreve comparação com soluções mais recentes na literatura. Finalmente, o capítulo 8 resume ascontribuições desta dissertação e sugere trabalhos futuros.

Page 17: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 2

Ontologia

Como definido por Gruber (2009), na computação, uma ontologia modela um domínio do conhe-cimento. Para tal, são definidos classes (conceitos), atributos (propriedades), restrições das classese relações entre classes. As ontologias podem ser vistas como uma abstração dos modelos de dadosno contexto de bancos de dados. Porém, as ontologias permitem abstrair o conhecimento a respeitode indivíduos, seus atributos, e relações possibilitando modelar o domínio independentemente daestrutura dos dados. Desta forma, pode-se dizer que as ontologias descrevem um domínio em nível“semântico” e os esquemas de bancos de dados descrevem o domínio em nível “físico”. Possuindouma descrição no nível semântico, as ontologias possibilitam a comunicação entre fontes de dadosdistintas.

As ontologias são utilizadas para diversos propósitos, alguns deles são:

• Definir um vocabulário comum sobre o domínio de interesse para compartilhar conhecimentoentre pesquisadores da mesma area, ou mesmo, entre humanos e máquinas;

• Possibilitar o reuso do domínio do conhecimento. Uma vez definida uma ontologia para umdeterminado domínio, essa ontologia pode ser compartilhada para ser reutilizada por outrasaplicações do mesmo domínio;

• Utilizar as especificações explícitas sobre o domínio para proporcionar às pessoas um fácilentendimento, possibilitando validar o conhecimento descrito buscando por contradições einconsistências na representação do conhecimento.

2.1 Construindo uma ontologia

Nesta seção, usaremos a ontologia para o domínio de câncer de pulmão desenvolvida porCalvanese et al. (2017) para ilustrar o processo de construção de uma ontologia.

2.1.1 Definindo conceitos

O primeiro passo para se construir uma ontologia é definir quais conceitos a ontologia vaidescrever. Esses conceitos fazem parte do vocabulário utilizado pelos especialistas do domínio. Nestecenário, queremos o vocabulário utilizado pelos especialistas em câncer de pulmão. Na Tabela 2.1são definidas as classes da ontologia.

Existe uma variedade de linguagens para se descrever uma ontologia. Neste exemplo, a linguagemutilizada é a linguagem Web Ontology Language1 (OWL) que permite a descrição de propriedadese classes, relações entre classes (por exemplo disjunção), cardinalidade (por exemplo, “exatamenteum”), igualdade, características das propriedades (por exemplo, simetria) e classes enumeradas.

A descrição da classe Paciente em OWL pode ser verificada no Arquivo 2.1.1https://www.w3.org/OWL/

3

Page 18: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

4 ONTOLOGIA 2.1

PacientePessoaNeoplasiaBenignaCancerCancerDePulmaoNeoplasiaMalignaNSCLCNeoplasiaSCLCEstagio

Tabela 2.1: Classes para ontologia sobre câncer de pulmão.

Arquivo 2.1: Descrição da classe Paciente em OWL<Declarat ion>

<Class IRI="#Paciente"/></Dec larat ion>

2.1.2 Organizando a hierarquia dos conceitos

As classes definidas na Tabela 2.1 são organizadas em hierarquia. Na Figura 2.1, é possívelverificar as superclasses e subclasses. A neoplasia é definida como o aumento celular não contro-lado pelo organismo, possuindo duas categorias, a neoplasia benigna e maligna. Como podemosacompanhar pela Figura 2.1, a classe Neoplasia é superclasse das classes NeoplasiaBenigna e Neo-plasiaMaligna. A neoplasia maligna é popularmente conhecida como câncer, desta forma, a classeCancer é subclasse da classe Neoplasia. E como a ontologia tem foco somente no câncer de pulmão,temos que a classe CancerDePulmao é subclasse de Cancer. E por fim, o câncer de pulmão possuiduas subclasses NSCLC (Do inglês Non-Small Cell Lung Cancer, Câncer de Pulmão de Células NãoPequenas) e SCLC (Do inglês Small Cell Lung Cancer,Câncer de Pulmão de Células Pequenas).

Page 19: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

2.1 CONSTRUINDO UMA ONTOLOGIA 5

Figura 2.1: Organização hierárquica das classes.

Podemos ver no Arquivo 2.2 como é representado na linguagem OWL a relação que a classePaciente é subclasse de Pessoa.

Arquivo 2.2: Descrição de hierarquia entre as classes Paciente e Pessoa em OWL<SubClassOf>

<Class IRI="#Paciente"/><Class IRI="#Pessoa"/>

</SubClassOf>

2.1.3 Definindo propriedades

Com as classes e hierarquia definidas a próxima etapa consiste em definir as propriedades dasclasses. A ontologia sobre câncer de pulmão possui três propriedades chamadas de: temNome, tem-Neoplasia e temEstagio. A propriedade temNome tem como domínio (domain) a classe Pessoa e aimagem (range) uma string simples. Como ilustrada na Figura 2.2, as propriedades temNeoplasia etemEstagio possuem como imagem instâncias de outras classes. Desta forma, a imagem para estaspropriedades são vinculadas a outras classes.

Figura 2.2: Domínio e imagem das propriedades temNeoplasia e temEstagio.

As propriedades são herdadas pelas subclasses, então a classe Paciente herda a propriedade

Page 20: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

6 ONTOLOGIA 2.2

temNome de sua superclasse Pessoa.E por fim, as propriedades são preenchidas criando as instâncias das classes para formar a base

de conhecimento da ontologia. Esta base de conhecimento pode ser representada através de umgrafo RDF. O Resource Description Framework2 é uma estrutura baseada em XML criada pararepresentar as informações na Web.

A estrutura base da sintaxe do RDF é composta por um conjunto de triplas, cada uma consis-tindo de um sujeito, um predicado e um objeto. Um conjunto de triplas é chamado de um “grafoRDF”. Uma tripla RDF pode ser visualizada como um conjunto de dois nós e um arco dirigido, emque cada tripla é representada como um link do tipo nó-arco-nó como pode ser visto na Figura 2.3.Uma tripla RDF estabelece uma relação entre os sujeito e objeto definidos pelos nós.

Figura 2.3: Grafo RDF com dois nós (sujeito e objeto) e um predicado conector feito por Klyne e Carroll(2006).

2.2 Consulta SPARQL

A linguagem de consulta SPARQL Protocol and RDF Query Language3 (SPARQL) é utilizadapara se extrair informações de grafos RDF.

Dada uma fonte de dados D (que pode ser a união de várias fontes), uma consulta consisteem um padrão que é comparado com D para que os valores obtidos a partir desta correspondênciasejam processados para dar uma resposta. Podemos verificar no Arquivo 2.3 um exemplo de consultaSPARQL.

Arquivo 2.3: Exemplo de uma consulta SPARQL1 SELECT ?sobrenome ? emai l2 WHERE{3 ? pessoa : sobrenome ? sobrenome .4 ? pessoa : emai l ? emai l5 }

Dentro do comando WHERE da consulta é definido um padrão de grafo (Graph Pattern ouBasic Graph Pattern) utilizado para percorrer dados de um grafo RDF e retornar os dados quecorrespondem ao padrão de grafo. Considere o grafo RDF do Arquivo 2.4. Na consulta SPARQL,?pessoa, ?email e ?sobrenome são variáveis (por começarem com o símbolo ?). A consulta SPARQLpercorre os dados do grafo (Arquivo 2.4) verificando a correspondência dos dados. As triplas comos predicados sobrenome e email coincidem com o padrão da consulta e as variáveis são vinculadascom os dados do grafo RDF.

Arquivo 2.4: Grafo RDF de exemplo1 : barbara : sobrenome "Agena"2 : barbara : emai l "bagena@ime . usp . br"

O comando SELECT define as informações a serem apresentadas. Desta forma, os dados vin-culados às variáveis ?email e ?sobrenome são recuperadas pela consulta SPARQL do Arquivo 2.3.

2https://www.w3.org/RDF/3https://www.w3.org/TR/rdf-sparql-query/

Page 21: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 3

Acesso a dados baseado em ontologias

O acesso a dados baseado em ontologias (OBDA), como descrito por Calvanese et al. (2007),tem como objetivo facilitar o acesso do usuário aos dados de uma aplicação utilizando uma camadaconceitual. A ontologia é a melhor candidata para representar a camada conceitual, disponibilizandoao usuário o vocabulário do domínio que ele está familiarizado e abstraindo todos os detalhes sobreo armazenamento dos dados. Além disso, as ontologias dispõem de mecanismos de inferência paraencontrar possíveis inconsistências nos dados ou para recuperar informações implícitas na base dedados.

Como descrito por Calvanese et al. (2013), a estrutura OBDA é composta pela ontologia quedescreve o domínio, a base de dados que armazena os dados da aplicação e o mapeamento responsávelpela comunicação entre a camada conceitual e a camada de dados, como pode ser visto na Figura 3.1.

Uma aplicação que faça uso de OBDA recebe como entrada uma consulta SPARQL, que éconvertida em uma consulta SQL capaz de recuperar os dados necessários para responder a consultaSPARQL. Esses dados são convertidos em instâncias da ontologia para que a consulta SPARQLpossa ser executada sobre eles.

Figura 3.1: Estrutura conceitual de OBDA por Calvanese et al. (2013).

Sem o conceito de OBDA, as aplicações semânticas (aplicações utilizando ontologias) passampor um processo conhecido como ETL (Extract, Transform and Load). Esse processo consiste emextrair os dados da base de dados, transformá-los de forma adequada para futuras consultas e

7

Page 22: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

8 ACESSO A DADOS BASEADO EM ONTOLOGIAS 3.2

análises e armazenar esses dados em um repositório de triplas.Esse processo apresenta algumas desvantagens, tais como o consumo extra de memória pela

necessidade de se duplicar os dados da base e a desatualização dos dados sempre que ocorrer umaalteração na base original. Então, na maior parte das vezes é vantajoso ter acesso direto aos dadosna base original, podendo evitar tais problemas e também podendo explorar as vantagens que osgerenciadores de banco de dados (SGBD) disponibilizam.

3.1 Sistemas OBDA

Alguns sistemas OBDA já foram criados e apresentados na literatura. Entre eles o D2RQ(Bizer e Seaborne, 2004) que é um dos primeiros sistemas OBDA desenvolvidos. Possuindo suaprópria linguagem de mapeamento e utilizando a biblioteca Jena ontology API1 para construção deaplicações semânticas. Rodriguez-Muro et al. (2013b) faz uma análise do sistema D2RQ e constataque o sistema não é capaz de executar algumas consultas. Isso se dá pelo método de tradução deSPARQL-para-SQL, onde a conversão de uma consulta SPARQL em alguns casos resulta em váriasconsultas SQL sobrecarregando o SGBD.

O Ultrawrap (Sequeda et al., 2014) utiliza consultas pré-definidas (views) para construir o ma-peamento entre a ontologia e o banco de dados. Para otimizar o processo de acessar os dadoseste sistema combina o processo de reescrever a consulta SPARQL-para-SQL com a materializaçãoparcial dos dados.

3.2 Ontop

Dentre os sistemas OBDA desenvolvidos, se destaca o sistema Ontop por ser o mais recente e oque aprimorou questões de desempenho que os outros sistemas não cobrem. Ontop2 é um sistemaOBDA de código aberto desenvolvido por pesquisadores da Free University of Bozen-Bolzano quepermite a consulta sobre fontes de dados relacionais através de uma ontologia que faça a represen-tação do domínio de interesse. Ontop se destacou por sua capacidade de responder a consultas sema necessidade de uma conversão prévia do banco de dados. Um exemplo dado por Calvanese et al.(2017) que explica em mais detalhes o funcionamento do sistema Ontop é apresentado nas seções aseguir. Neste exemplo, o domínio da aplicação é sobre pacientes com câncer de pulmão.

3.2.1 Camada conceitual

Ontop utiliza uma ontologia como camada conceitual de forma a definir um vocabulário, modelaro domínio de aplicação e esconder a estrutura das fontes de dados. Ilustramos o funcionamento doOntop com um exemplo apresentado por Calvanese et al. (2017). A ontologia utilizada para esteexemplo é a ontologia referente ao domínio de câncer de pulmão descrita no capítulo 2. O arquivoOWL completo da ontologia pode ser verificado no Anexo A.

3.2.2 Camada de dados

Neste exemplo, a camada de dados possui uma tabela em um banco relacional chamada tbl_patientilustrada na Figura 3.2. Esta tabela armazena dados como identificador do registro (pid), nome dopaciente (name), estágio do câncer (stage) e tipo do câncer (type) com valores true para SCLC efalse para NSCLC.

1https://jena.apache.org/index.html2http://ontop.inf.unibz.it/

Page 23: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

3.2 ONTOP 9

Figura 3.2: Camada de dados: tabela tbl_patient.

3.2.3 Mapeamento

O mapeamento é feito na linguagem de mapeamento R2RML (RDB - relational database -to RDF Mapping Language)3 que foi definida pela comunidade internacional dos padrões web co-nhecida como World Wide Web Consortium (W3C)4. Esta linguagem foi criada para descrevermapeamentos de uma base de dados relacional para dados RDF.

Como explicado por Das et al. (2012), para mapear uma base de dados, cada tabela desta basedever estar mapeada para uma regra que gera triplas RDF. No Arquivo 3.1 podemos visualizar omapeamento (versão simplificada) responsável por popular a ontologia da Figura 2.1 com os dadosda tabela da Figura 3.2.

Arquivo 3.1: Mapeamento criado para conectar a ontologia de câncer de pulmão (Anexo A) e base de dados(Figura 3.2)

1 source : http :// exemplo/ ho sp i t a l /{ pid } rd f : type : Pac iente .2 t a r g e t SELECT pid FROM tbl_pat i ent34 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } rd f : type :NSCLC .5 t a r g e t SELECT pid , s tage FROM tbl_pat i ent WHERE type = f a l s e67 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } rd f : type :SCLC .8 t a r g e t SELECT pid , s tage FROM tbl_pat i ent WHERE type = true9

10 source : http :// exemplo/ ho sp i t a l /{ pid } : temNome {name} .11 t a r g e t SELECT pid , name FROM tbl_pat i ent1213 source : http :// exemplo/ ho sp i t a l /{ pid } : temNeoplasia : http :// exemplo/

↪→ ho sp i t a l /neoplasm/{ pid } .14 t a r g e t SELECT pid FROM tbl_pat i ent1516 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } : temEstagio : e s tag i o−I I I a .17 t a r g e t SELECT pid FROM tbl_pat i ent WHERE stage = 4

Se esta não fosse uma aplicação OBDA, seria necessário converter a base de dados para triplasutilizando o mapeamento. Neste caso, é possível comparar o mapeamento como um método paramigração dos dados da tabela tbl_patient para uma tabela de triplas (triplestore), onde o camposource do mapeamento representa a tripla RDF que será gerada e o campo target representa aconsulta SQL responsável por recuperar os dados do banco de dados para gerar a tripla RDF.Porém, no sistema OBDA são geradas apenas as triplas RDF necessárias para a responder a consultaSPARQL.

3.2.4 Quest

Rodrıguez-Muro e Calvanese (2012) desenvolveram Quest que é o núcleo do sistema Ontop res-ponsável por converter as consultas SPARQL para SQL e gerar um grafo RDF em memória. Existemalgumas ferramentas que fazem esse processo (D2RQ, Triplify, Spyder, etc), porém, essas ferramen-tas, como mencionado por Rodriguez-Muro et al. (2012), perdem eficiência na geração das consultasSQL, seja gerando consultas excessivamente complexas, ou enviando múltiplas consultas ao sistemagerenciador de banco de dados (SGBD). Enquanto isso, Quest otimiza a geração da consulta SQLproduzindo uma única consulta otimizada para ser executada de forma eficiente pelo SGBD.

3http://www.w3.org/TR/r2rml/4https://www.w3.org/

Page 24: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

10 ACESSO A DADOS BASEADO EM ONTOLOGIAS 3.2

Rodriguez-Muro e Calvanese (2011) explicam que o sistema Quest gera um segundo mapea-mento denominado T-Mapping, responsável por complementar o mapeamento original. Como noexemplo, se observarmos o mapeamento do Arquivo 3.1 podemos verificar que não existe mapea-mento definido para o conceito :Neoplasm, mas sabemos que os conceitos :NSCLC e :SCLC sãosubclasses de :Neoplasm. Desta forma, o mapeamento para :Neoplasm é gerado conforme podemosver no Arquivo 3.2.

Arquivo 3.2: T-mapping gerado para :Neoplasm1 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } rd f : type :NSCLC .2 tage t SELECT pid , s tage FROM tbl_pat i ent WHERE type = f a l s e34 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } rd f : type :SCLC .5 tage t SELECT pid , s tage FROM tbl_pat i ent WHERE type = true67 source : http :// exemplo/ ho sp i t a l / neop l a s i a /{ pid } rd f : type : Neoplas ia .8 tage t SELECT pid , s tage FROM tbl_pat i ent WHERE type = f a l s e OR type = true

Com o mapeamento finalizado, o sistema Quest é capaz de transformar a consulta SPARQL emuma consulta SQL. Otimizações com técnicas de Semantic Query Optimization são feitas sobre aconsulta SQL para se obter consultas mais eficientes, como podemos observar através do exemplo aseguir. O Arquivo 3.3 apresenta a consulta SPARQL para recuperar todos os tumores com estágio3.

Arquivo 3.3: Consulta SPARQL para recuperar todos os tumores com estágio 31 SELECT ?tumor WHERE {2 ?tumor rd f : type : Neoplasm ;3 ?tumor : hasStage : stage−I I I a . }

A partir desta consulta SPARQL é gerada uma árvore, onde cada nó da árvore é uma tripla docomando WHERE da consulta do Arquivo 3.3. Neste exemplo existem duas triplas, essas triplasse encontram nas linhas 2 e 3. Podemos ver a árvore resultante na Figura 3.3.

Figura 3.3: Árvore construída a partir da consulta SPARQL 3.3.

Pelo mapeamento, cada nó da árvore na Figura 3.3 é transformado para a consulta SQL corres-pondente como podemos ver no Arquivo 3.4.

Arquivo 3.4: Convertendo nós T1 eT2 para consulta SQL1 T1 = ?x rd f : type : Neoplasm <− SELECT pid , s tage FROM tbl_pat i ent

↪→ WHERE type = f a l s e OR type = true2 T2 = ?x : hasStage : stage−I I I a <− SELECT pid FROM tbl_pat i ent WHERE

↪→ s tage = 4

A partir das sub-consultas geradas em 3.4, a consulta no Arquivo 3.5 é gerada.

Arquivo 3.5: Consulta SQL gerada a partir de T1 eT21 SELECT Q1 . x2 FROM ( (SELECT concat ( " : db1/neoplasm /" , pid ) AS x FROM tbl_pat i ent WHERE

↪→ type = f a l s e OR type = true ) Q13 JOIN (SELECT concat ( " : db1/neoplasm /" , pid ) AS x FROM tbl_pat i ent WHERE

↪→ s tage = 4) Q2 ON Q1 . x = Q2 . x )

Rodriguez-Muro et al. (2013a) afirma que esta consulta pode ser executada pelo Sistema Geren-ciador de Banco de Dados (SGBD), porém, dependendo da consulta SPARQL de entrada, a consulta

Page 25: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

3.2 ONTOP 11

SQL correspondente gerada desta forma pode conter muitas sub-consultas e joins (self-joins redun-dantes) desnecessários, tornando-a bastante ineficiente. São utilizadas técnicas de Semantic QueryOptimization com o intuito de gerar consultas SQL mais eficientes. Podemos ver no Arquivo 3.6 aconsulta 3.5 após sofrer otimização.

Arquivo 3.6: Consulta 3.5 otimizada1 SELECT concat ( " : db1/neoplasm /" , pid ) AS x FROM tbl_pat i ent WHERE ( type =

↪→ f a l s e OR type = true ) AND stage = 4

Essa consulta otimizada é executada pelo SGBD e os dados recuperados são convertidos paraum grafo RDF onde a consulta SPARQL pode ser executada.

Page 26: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

12 ACESSO A DADOS BASEADO EM ONTOLOGIAS 3.2

Page 27: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 4

OBDA com sistemas de banco de dadosNoSQL

Com o avanço da Internet, da Computação em Nuvem e das aplicações Web, surgiram novasnecessidades para o armazenamento de dados. Como descrito por Han et al. (2011), algumas apli-cações com alta concorrência necessitam de capacidade de leitura e escrita com baixa latência, paraque sejam capazes de lidar com uma alta quantidade de requisições concorrentes sem prejudicaro funcionamento do sistema para o usuário final. Outra necessidade comum nas aplicações é aescalabilidade e disponibilidade. Com o crescimento dos dados e das requisições, os sistemas debancos de dados precisam ser capazes de suportar fácil expansão e atualização, garantindo o bomfuncionamento do sistema. Os sistemas de bancos de dados relacionais dominam o mercado, porém,quando deparados com problemas como os listados acima, apresentam limitações. Algumas apli-cações priorizam os itens acima, tendo como consequência a flexibilização das propriedades ACID(Atomicidade, Consistência, Isolamento e Durabilidade) na execução das transações.

Com o surgimento dos sistemas NoSQL, estudos recentes começam a estender a utilização desistemas OBDA em conjunto com NoSQL. Estes estudos utilizam como experimento para suassoluções o sistema de banco de dados MongoDB, que será melhor explicado na seção 4.1. Nas seções4.2 e 4.3 serão descritos os estudos realizados por Botoeva et al. (2016) e Michel et al. (2016).

4.1 MongoDB

MongoDB é um dos bancos de dados orientados a documentos mais populares atualmente. Afamília de banco de dados orientados a documentos faz o armazenamento dos dados em documentosque podem ser em formato XML, JSON, entre outros. Uma coleção em bancos de dados orientadosa documentos é equivalente a uma tabela em um banco de dados relacional, assim como cadadocumento equivale a um registro. No Arquivo 4.1 é possível ver um exemplo de um documentoarmazenado no MongoDB. Este documento possui informações de nome (name), data de nascimento(birth), contribuições (contribs) e premiações (awards). Alguns campos do documento podem conterestruturas complexas, como listas e outros objetos. Esta característica é conhecida como orientaçãoa agregados.

Arquivo 4.1: Exemplo de um documento armazenado no Mongo, retirado da coleção bios1

1 {2 "_id" : 5 ,3 "name" : {4 " f i r s t " : "Ole−Johan " ,5 " l a s t " : "Dahl"6 } ,7 " b i r th " : ISODate("1931−10−12T04 : 0 0 : 0 0Z") ,8 "death" : ISODate("2002−06−29T04 : 0 0 : 0 0Z") ,9 " c on t r i b s " : [

10 "OOP" ,

13

Page 28: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

14 OBDA COM SISTEMAS DE BANCO DE DADOS NOSQL 4.1

11 "Simula"12 ] ,13 "awards" : [14 {15 "award" : "Rosing Pr i ze " ,16 " year " : 1999 ,17 "by" : "Norwegian Data Assoc i a t i on "18 } ,19 {20 "award" : "Turing Award" ,21 " year " : 2001 ,22 "by" : "ACM"23 } ,24 {25 "award" : "IEEE John von Neumann Medal " ,26 " year " : 2001 ,27 "by" : "IEEE"28 }29 ]30 }

Os documentos armazenados em uma coleção são, de forma usual, semanticamente relacionados,mas não precisam ser estruturalmente iguais, ou seja, podem ter atributos diferentes. Podemosverificar isto considerando os documentos 4.1 e 4.2. Eles podem pertencer à mesma coleção.

Arquivo 4.2: Exemplo modificado de um documento armazenado no MongoDB, retirado da coleção bios(estrutura alterada para exemplificar diferença de estrutra)

1 {2 "_id" : 1 ,3 "name" : {4 " f i r s t " : "John " ,5 " l a s t " : "Backus"6 } ,7 " b i r th " : ISODate("1924−12−03T05 : 0 0 : 0 0Z") ,8 "death" : ISODate("2007−03−17T04 : 0 0 : 0 0Z") ,9 " ad r e s s e s " : [

10 {11 " s t a t e " : "PA" ,12 " c i t y " : " Ph i l ade lph ia "13 }14 ]15 }

4.1.1 Mecanismos de consulta

Os sistemas de bancos de dados de documentos oferecem diferentes recursos de consultas. Cadaproduto possui propriedades que podem não ser encontradas em outros sistemas de bancos de dadosorientados a documentos.

É possível consultar documentos no MongoDB usando comandos JavaScript através do terminalutilizandomongo Shell Methods. Um exemplo para este tipo de recurso são consultas com o comando“db.collection.find(query, projection)”, que recebem como parâmetro filtros para a consulta (query)e especificam quais os campos de retorno da consulta (projection).

Outra forma disponível é o Aggregation Pipeline, que é uma das possíveis formas de agregaçãooferecidas pelo framework de agregação2. As consultas neste padrão são realizadas através de umasequência de operações que são executadas em ordem, transformando o conjunto de documentos acada comando executado. Alguns dos comandos disponíveis são:

• macth: Filtragem dos documentos que casam com o campo determinado na operação;1Coleção de exemplo disponibilizada em: https://docs.mongodb.com/manual/reference/bios-example-collection/2Aggregation Framework : https://docs.mongodb.com/manual/aggregation/

Page 29: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

4.2 EXTENSÃO DO SISTEMA ONTOP PARA NOSQL 15

• unwind: Fragmentação do campo lista de um documento e produção de uma saída com Ndocumentos onde N é o tamanho da lista. Assim, cada documento contém um elemento dovetor;

• project: Configuração dos documentos, podendo alterar o valor de algum campo e adicionarou remover campos;

• group: Agrupar documentos a partir de uma expressão.

4.2 Extensão do sistema Ontop para NoSQL

Botoeva et al. (2016) propõe um framework OBDA para sistemas de banco de dados NoSQLque propõe estender o sistema Ontop para possibilitar a utilização de sistemas bancos de dadosNoSQL. Como experimento, a solução foi testada sobre o sistema de banco de dados MongoDB.Botoeva et al. (2016) utiliza a base de dados bios disponibilizada pelos criadores do MongoDB. Osdocumentos da coleção bios possuem informações de nomes, premiações, contribuições e data denascimento de pessoas. No trabalho de Botoeva et al. (2016) esta base foi reduzida a um documentocontendo as informações sobre “Kristen Nygaard” como podemos ver no Arquivo 4.3.

Arquivo 4.3: Documento da coleção bios1 {"_id " : 4 ,2 "awards " : [ {"award " : "Rosing Pr i ze " , " year " : 1999 , "by " : "Norwegian Data

↪→ Assoc i a t i on "} ,3 {"award " : "Turing Award" , " year " : 2001 , "by " : "ACM" } ,4 {"award " : "IEEE John von Neumann Medal " , " year " : 2001 , "by " : "

↪→ IEEE"} ] ,5 " b i r th " : "1926−08−27",6 " c on t r i b s " : [ "OOP" , "Simula " ] ,7 "death " : "2002−08−10",8 "name" : {" f i r s t " : " Kr i s ten " , " l a s t " : "Nygaard"}9 }

Para acessar os dados na coleção do Arquivo 4.3 existe uma ontologia na Figura 4.1 que adescreve.

Figura 4.1: Ontologia que descreve o domínio para a coleção bios.

O mapeamento é construído a partir de funções que representam o resultado de uma consultanativa do sistema de banco de dados. Neste exemplo, as funções definidas são:

• ff = {name.first}: função que recupera todos os valores de first armazenados dentro dename dos documentos da coleção;

• fl = {name.last}: função que recupera todos os valores de last armazenados dentro de namedos documentos da coleção;

• fx =: /{_id}: função que recupera o id do documento; a forma :/id denota a URI(UniformResource Identifier) utilizada na ontologia para representar o objeto pesquisador;

• fa =: /{_id}/Award/{awards.#}: função que recupera os id’s de premiações (award);

Page 30: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

16 OBDA COM SISTEMAS DE BANCO DE DADOS NOSQL 4.2

• fy = {awards.#.year}: função que recupera os valores de ano de premiação (year);

• fn = {awards.#.award}: função que recupera os valores para nome da premiação (award-Name);

O mapeamento é definido da seguinte forma:

1. {?X 7→ fx}(?X a : Scientist)

2. {?X 7→ fx, ?F 7→ ff}(?X : firstName ?F )

3. {?X 7→ fx, ?L 7→ fl}(?X : lastName ?L)

4. {?X 7→ fx, ?A 7→ fa}(?X : gotAward ?A)

5. {?A 7→ fa, ?Y 7→ fy}(?A : awardedInY ear ?Y )

6. {?A 7→ fa, ?N 7→ fn}(?A : awardName ?N)

Este mapeamento descreve o método de acesso aos dados a partir das triplas de uma con-sulta SPARQL. Caso alguma tripla da cláusula where na consulta case com a tripla definida nomapeamento, a consulta mapeada é executada.

Desta forma, a consulta SPARQL descrita no Arquivo 4.4 é utilizada para consultar os pesqui-sadores que receberam duas premiações no mesmo ano.

Arquivo 4.4: Consulta SPARQL para recuperar os pesquisadores que receberam duas premiações no mesmoano.

1 SELECT ? f irstName ? lastName ?awardName1 ?awardName2 ? year2 WHERE { ? s c i e n t i s t : f i r stName ? f i rstName .3 ? s c i e n t i s t : lastName ? lastName .4 ? s c i e n t i s t : gotAward ?aw1 .5 ? s c i e n t i s t : gotAward ?aw2 .6 ?aw1 : awardedInYear ? year .7 ?aw2 : awardedInYear ? year .8 ?aw1 : awardName ?awardName1 .9 ?aw2 : awardName ?awardName2 .

10 FILTER (?aw1 != ?aw2) }

Na consulta acima, a primeira tripla da cláusula where é ?scientist : firstName?firstName.Essa tripla casa com a tripla (?X : firstName ?F ) do mapeamento. Com isso, o sistema sabe quedeve executar as funções {?X 7→ fx, ?F 7→ ff}, ou seja, as funções que retornam o id e o valor defirst armazenado dentro de name, utilizados para gerar a tripla (: /4 : firstName ′′Kristen′′).

Utilizando o mapeamento, o grafo RDF resultante da consulta no Arquivo 4.4 é gerado e podeser visto no Arquivo 4.5.

Arquivo 4.5: Triplas RDF gerada1 ( : / 4 a : S c i e n t i s t )2 ( : / 4/Award/0 : awardedInYear 1999)3 ( : / 4 : f i rstName " Kr i s ten ")4 ( : / 4/Award/1 : awardedInYear 2001)5 ( : / 4 : lastName "Nygaard ")6 ( : / 4/Award/2 : awardedInYear 2001)7 ( : / 4 : gotAward :/4/Award/0)8 ( : / 4/Award/0 : awardName "Rosing Pr i ze ")9 ( : / 4 : gotAward :/4/Award/1)

10 ( : /4/Award/1 : awardName "Turing Award")11 ( : / 4 : gotAward :/4/Award/2)12 ( : /4/Award/2 : awardName "von Neumann Medal ")

A solução apresentada por Botoeva et al. (2016) propõe a partir da consulta SPARQL gerar vá-rias sub-consultas na linguagem de consulta correspondente ao sistema de banco de dados NoSQL

Page 31: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

4.3 OBDA COM NOSQL UTILIZANDO XR2RML 17

utilizado. E com os dados recuperados dessas sub-consultas é possível gerar o grafo RDF. Podemosverificar que os filtros são executados pela consulta SPARQL. Mesmo com o experimento apresen-tado, Botoeva et al. (2016) afirma que não é possível saber se o modelo apresentado será capaz desuportar qualquer tipo de banco de dados.

4.3 OBDA com NoSQL utilizando xR2RML

Michel et al. (2016) propõe uma solução para sistema OBDA capaz de utilizar um banco dedados MongoDB arbitrário utilizando para o mapeamento a linguagem xR2RML que é a extensãoda linguagem de mapeamento R2RML.

Como evolução da linguagem R2RML que suportava somente consultas SQL, xR2RML foidesenvolvida para dar suporte a outros tipos de sistemas de bancos de dados. Como mencionadopor Michel et al. (2015), até o momento, xR2RML suporta o acesso a sistemas de bancos de dadosNoSQL em formato CSV (Comma-Separeted Values), JSON3 (JavaScript Object Notation) e XML4

(Extensible Markup Language).Em 4.7 é apresentado um exemplo de mapeamento para uma base de dados em MongoDB

produzido por Michel et al. (2016). A base de dados no MongoDB consiste de uma coleção chamada“project” (Arquivo 4.6) contendo dois arquivos. Cada projeto (“project”) possui um nome (name),código (code) e uma lista de times (teams). Cada time é representado por uma lista de pessoas,cuja última pessoa da lista é o líder do time (<#TmLeader>).

Arquivo 4.6: Coleção MongoDB “projects”1 { " p r o j e c t " : " Finance & B i l l i n g " ,2 " code " :" f i n " ,3 "teams " : [ [ {"name" :"P. Russo "} , {"name" :"F . Underwood "} ] ,4 [ {"name" :"R. Danton"} , {"name" :"E. Meetchum"} ] ] } ,5 { " p r o j e c t " : " Customer Re lat ion " ,6 " code " :" crm" ,7 "teams " : [ [ {"name" :"R. Posner "} ,8 {"name" :"H. Dunbar " } ] ] }

O mapeamento xR2RML para a consulta do <#TmLeader> nos dados da coleção do Arquivo4.6 está representado no Arquivo 4.7.

Arquivo 4.7: Mapeamento xR2RML para a coleção MongoDB “projects”1 <#TmLeader>2 xrr : l o g i c a l S ou r c e [ xr r : query "db . p r o j e c t s . f i nd ({}) " ] ;3 r r : subjectMap [ r r : template "http :// example . org / p r o j e c t /{$ . code } " . ] ;4 r r : predicateObjectMap [ r r : p r ed i c a t e ex : teamLeader ;5 r r : objectMap [ xrr : r e f e r e n c e "$ . teams [ 0 , 1 ] [ (@. length −1) ] . name" ] ] .

Na linha 2 do arquivo de mapeamento 4.7 a propriedade xrr :logicalSource define a fonte deonde os dados serão recuperados (armazenamento lógico dos dados). Neste caso, o mapeamentoacessa os dados através da consulta “db.projects.find()” que recupera todos os documentos da co-leção. Para cada documento recuperado, o mapeamento construirá o sujeito RDF conforme descritona linha 3 pela propriedade rr :subjectMap e as relações predicado-objeto descrito nas linhas 4e 5 pelas propriedades rr :predicateObjectMap e rr :objectMap. Neste mapeamento, a únicarelação definida é a relação que conecta o projeto com o líder do time. O mapeamento do objetolíder do time é definido pela regra $.teams [0 ,1][(@.length - 1)]. name"] que recupera oúltimo nome ([(@.length - 1)]. name"]) das listas de índice 0 e 1($.teams [0 ,1]).

Com o mapeamento definido, é possível descrever o método utilizado no trabalho de Michel et al.(2016) para acessar os dados de uma coleção de arquivos no MongoDB. Utilizando o mesmo exemplo,a coleção “projects” será acessada através da consulta SPARQL no Arquivo 4.8 que recupera todosos projetos que possuam “H. Dunbar ” como líder do time.

3http://www.json.org/4https://www.w3.org/XML/

Page 32: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

18 OBDA COM SISTEMAS DE BANCO DE DADOS NOSQL 4.3

Arquivo 4.8: Consulta SPARQL que recupera os projetos que possuam “H. Dunbar” como líder do time1 SELECT ? pro j WHERE {? pro j ex : teamLeader "H. Dunbar " .}

Esta consulta SPARQL (Arquivo 4.8) será transformada em uma consulta abstrata conforme asregras da gramática no Arquivo 4.9.

Arquivo 4.9: Gramática da consulta abstrata.1 <AbsQuery > : := <Query > | <Query > FILTER < f i l t e r > | <AtomicQuery >2 <Query > : := <AbsQuery > INNER JOIN <AbsQuery > ON {v1 , . . . vn} |3 <AbsQuery > AS ch i l d INNER JOIN <AbsQuery > AS parent ON ch i l d

↪→ /<Ref > = parent/<Ref > |4 <AbsQuery > LEFT OUTER JOIN <AbsQuery > ON {v1 , . . . vn } |5 <AbsQuery > UNION <AbsQuery >6 <AtomicQuery > : := {From , Pro j e c t , Where }

Cada tripla na cláusula WHERE da consulta SPARQL é traduzida através da união dasconsultas abstratas (regra da linha 5 do Arquivo 4.9). E cada componente da regra AtomicQueryé extraída do mapeamento da seguinte forma:

• From: representa a fonte em que os dados serão recuperados (xrr :logicalSource);

• Project: os dados de retorno da consulta;

• Where: representam as condições a serem respeitadas na consulta. Essas condições podem serfiltros da consulta SPARQL ou variáveis da consulta SPARQL que devam possuir algum valordefinido pelo mapeamento;

Utilizando a gramática definida no Arquivo 4.9 é gerada a consulta abstrata descrita no Arquivo4.10 para a consulta SPARQL no Arquivo 4.8.

Arquivo 4.10: Consulta abstrata gerada a partir da gramática 4.9 para a consulta SPARQL 4.81 { From : {"db . p r o j e c t s . f i nd ({}) "} ,2 Pro j e c t : {$ . code AS ? pro j } ,3 Where : { i sNotNul l ( $ . code ) , equa l s ( $ . teams [ 0 , 1 ] [ (@. l ength −1) ] . name , "

↪→ H. Dunbar") }}

Em seguida, o próximo passo consiste em converter a consulta abstrata definida no Arquivo 4.10para a consulta no padrão find() do MongoDB.

Duas condições surgem a partir do componente WHERE :

• C1: isNotNull($.code)

• C2: equals($.teams[0,1][(@.length - 1)].name, "H. Dunbar").

Através destas condições, são gerados trechos de consultas do MongoDB, que passam por umprocesso de otimização e resultam na consulta final descrita abaixo.

Arquivo 4.11: Consulta final gerada.1 {" code " :{ $ e x i s t s : true , $ne : nu l l } , " teams . 0 " : { $ e x i s t s : t rue } , $where : ? t h i s .

↪→ teams [ 0 ] [ t h i s . teams [ 0 ] . length −1) ] . name == "H. Dunbar"?}2 {" code " :{ $ e x i s t s : true , $ne : nu l l } , " teams . 1 " : { $ e x i s t s : t rue } , $where : ? t h i s .

↪→ teams [ 1 ] [ t h i s . teams [ 1 ] . length −1) ] . name == "H. Dunbar"?}

A consulta descrita no Arquivo 4.11 retorna o resultado apresentado no Arquivo 4.12:

Arquivo 4.12: Retorno da consulta do Arquivo 4.111 { " p r o j e c t " : " Customer Re lat ion " , " code " :" crm" , "teams " : [ [ {"name" :"R.

↪→ Posner "} , {"name" :"H. Dunbar " } ] ] }

Finalmente, a partir do resultado da consulta, são geradas as triplas RDF (Arquivo 4.13).

Arquivo 4.13: Tripla RDF para o retorno da consulta do Arquivo 4.111 <http :// example . org / p r o j e c t /crm> ex : teamLeader "H. Dunbar " .

Page 33: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 5

Framework genérico de acesso a dadosbaseado em ontologias

Para atingir os objetivos desta dissertação, propomos um novo modelo OBDA capaz de acessarsistemas de bancos de dados relacional e NoSQL.

5.1 Método

A abordagem propõe um modelo OBDA que permita o acesso a dados a qualquer repositório sejaele um sistema de bancos de dados relacional ou NoSQL. Neste trabalho foi criado dois protótipodeste modelo OBDA para validação, um protótipo utilizou o sistema gerenciador de bancos de dadosrelacional PostgreSQL1 e o outro utilizou o sistema de bancos de dados MongoDB. Respectivamente,os protótipos foram nomeados de OntoSQL e OntoMongo.

O foco principal deste trabalho estava em possibilitar o acesso aos dados armazenados em bancosde dados orientado a documentos através do paradigma OBDA. Isso porque, os sistemas OBDApara acesso em bancos de dados relacionais já estão muito robustos atualmente. Possuímos tambémdois casos de uso onde os dados estão em formato de documentos, um caso de uso abordado porde Oliveira e Wassermann (2017) envolve documentos do Supremo Tribunal Federal e o outro casode uso que é utilizado nesta dissertação envolve documentes referentes a currículos acadêmicos.Além disso, utilizar o modelo OBDA com o sistema MongoDB possibilita a comparação com otrabalho feito por Botoeva et al. (2016).

A primeira etapa deste trabalho resultou a construção do protótipo OntoMongo que foi realizadoem conjunto com Araujo et al. (2017). A partir da construção deste protótipo foi possível identificarquais etapas do modelo poderiam ser generalizadas para a utilização com um sistema de bancos dedados qualquer, como por exemplo um sistema de bancos de dados relacional.

Nas próximas seções deste capítulo será explicado o modelo OBDA genérico e nos capítulos 6 e7 serão explicados a construção dos protótipos para os casos de uso utilizando o SGBD MongoDBe PostgreSQL.

A Figura 5.1 ilustra a estrutura conceitual do modelo OBDA proposto nesta dissertação. Aestrutura é similar a estrutura definida pela literatura, ilustrada pela Figura 3.1. Onde temos aontologia como camada conceitual, o banco de dados para armazenamento de dados e o mapeamentoque liga a ontologia ao banco de dados. Pensando em viabilizar a utilização de qualquer sistemade bancos de dados foi proposto a adição de uma camada intermediária com o modelo de objetorepresentando o banco de dados. A utilização desta camada intermediário tem como objetivo facilitara generalização da construção do mapeamento. Observando os trabalhos existentes, os mapeamentospara bancos relacionais são feitos utilizando consultas SQL, porém, como não existe uma linguagemde consulta universal para os sistemas NoSQL, o mapeamento precisaria ser modificado para sercompatível com cada linguagem de consulta nova.

1https://www.postgresql.org/

19

Page 34: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

20 FRAMEWORK GENÉRICO DE ACESSO A DADOS BASEADO EM ONTOLOGIAS 5.1

Figura 5.1: Estrutura conceitual do modelo OBDA

Com o objetivo de construir um mapeamento que seja independente da linguagem de consultautilizada pelo SGBD, definimos uma camada conceitual intermediária através de um conjunto declasses em um modelo orientado a objetos. A utilização do modelo de objetos para representaro esquema da base de dados é útil pois se aproxima da representação do domínio da ontologia,uma vez que tanto na orientação a objetos quanto na representação do conhecimento da ontologiapodemos descrever classes com suas relações, hierarquias e heranças.

5.1.1 Camada intermediária

O modelo proposto possui uma camada intermediária responsável por traduzir os dados ar-mazenados na base para o modelo de objetos (object model), como podemos verificar na Figura5.1. Em aplicações que armazenam dados em sistemas de bancos de dados relacionais e que sãodesenvolvidas em linguagens de programação orientadas a objetos, esse mecanismo de tradução deobjetos para o formato relacional (e vice-versa) é bastante comum. A diferença na representação dosdados relacionais e as estruturas dos dados em memória é chamado por Sadalage e Fowler (2012)de incompatibilidade de impedância. Como pode ser visto na Figura 5.2 um único objeto podeser dividido em muitos registros de muitas tabelas.

Como explicado por Sadalage e Fowler (2012), se tornou mais fácil tratar a incompatibilidadede impedância pela ampla disponibilidade de frameworks de mapeamento objeto-relacional tam-bém conhecidos por ORM (Object Relational Mapping). No caso de sistemas de bancos de dadosorientados a documentos, o mesmo problema é solucionado por ODMs (Object Document Mapping).

Figura 5.2: Incompatibilidade de impedância entre a representação de um objeto e os dados armazenadosem um banco relacional (Sadalage e Fowler, 2012)

Page 35: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

5.1 MÉTODO 21

Por serem conceitos bastante semelhantes, a construção de um mapeamento entre a ontologiae as classes do modelo de objetos fica mais simples, uma vez que ORM e ODM possuem a tarefade transformar os dados armazenados nas bases de dados em coleções de objetos. A utilização deORM/ODM traz grandes vantagens, como a capacidade de fazer a representação dos dados em ummodelo de objetos e disponibilizar operações do banco de dados, como inserção, consulta, alteraçãoe remoção.

5.1.2 Mapeamento e comunicação com o SGBD

O mapeamento é responsável por conectar os conceitos descritos pela ontologia aos conceitosdefinidos pelo modelo de objetos. Alguns métodos foram criados para ligar o nome de cada classee atributos descritos na ontologia com sua respectiva classe e atributos nas classes do modelo deobjetos.

Para cada classe descrita pelo modelo de objeto será necessário criar um mapeamento conectandoeste a um conceito da ontologia. Foram criados alguns métodos para definir o mapeamento. Arquivo5.1 demonstra a sintaxe do mapeamento. O mapeamento para um conceito é inicializado pelocomando OntoMap.mapping recebendo como parâmetro o nome da classe da ontologia que serámapeada. O comando model recebe como parâmetro o nome da classe do modelo de objeto queequivale a classe da ontologia, estabelecendo o mapeamento entre os dois conceitos. E para definir omapeamento entre os atributos são utilizados os comandos maps from que recebe como parâmetroo atributo descrito pela ontologia e o comando to que recebe como parâmetro o atributo descritopelo modelo de objeto.

Arquivo 5.1: Sintaxe do mapeamento1 OntoMap . mapping <classe_da_ontologia> do2 model <classe_do_modelo_objeto>3 maps from : ’<atr ibuto_onto log ia1 > ’ , to : :<atributo_modelo_de_objeto1>4 maps from : ’<atr ibuto_onto log ia2 > ’ , to : :<atributo_modelo_de_objeto2>5 end

Com o mapeamento configurado para fazer a comunicação entre a ontologia e a base de dados,o sistema OBDA é capaz de receber uma consulta SPARQL, como pode ser visto na Figura 5.3, etransforma-la em uma consulta para o SGBD para fazer o acesso aos dados. Através da consultaSPARQL é gerado um grafo contendo as informações que a consulta SPARQL vai acessar na base.Cada nó do grafo representa os diferentes objetos e possui os atributos que estão sendo acessadospela consulta SPARQL. Cada aresta indica a relação entre os dois objetos.

Figura 5.3: Etapa de processamento da consulta SPARQL no modelo OBDA proposto

A partir deste grafo e do mapeamento, é possível saber quais dados a consulta SPARQL precisaacessar da base de dados. Assim, os dados podem ser recuperados através das operações disponibi-lizadas pelas ORM/ODM ou de mecanismos internos que geram consultas no SGBD utilizado.

5.1.3 Tradutor

O tradutor transforma consultas SPARQL em consultas ao SGBD, utilizando para isso o ma-peamento. A consulta SPARQL é primeiro transformada em uma SPARQL Syntax Expression

Page 36: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

22 FRAMEWORK GENÉRICO DE ACESSO A DADOS BASEADO EM ONTOLOGIAS 5.2

(S-Expression) através da biblioteca sxp2, pois, como podemos ver no Arquivo 6.4, a bibliotecasxp reorganiza o corpo da consulta SPARQL facilitando o processamento da mesma. A consulta éentão transformada em um grafo que representa as triplas RDF, filtros e atributos que devem serretornados para esta consulta. O método de construção deste grafo está representado no Arquivo5.2.

Arquivo 5.2: Algoritmo que constrói grafo que representa a consulta SPARQL1 Entrada : Consulta SPARQL Q2 Saída : Grafo ca ra c t e r i z ando a consu l ta SPARQL34 L = l i s t a de t r i p l a s do corpo da consu l ta Q (BGP)5 G = gra fo vaz io67 paracada t r i p l a t ∈ L faça8 de f i na t . s u j e i t o como o s u j e i t o da t r i p l a9 de f i na t . pred icado como o pred icado da t r i p l a

10 de f i na t . ob j e to como o ob je to da t r i p l a1112 se não e x i s t e um nó em G para t . s u j e i t o então13 c r i a nó em G para t . s u j e i t o14 fim se1516 se t . pred icado é um DatatypeProperty então17 ad i c i ona a informação ao nó para t . s u j e i t o18 senão se t . pred icado é ObjectProperty então19 c r i a nó em G para t . ob j e to ad jacente a t . s u j e i t o20 fim se21 fim paracada2223 retorne G

O tradutor utiliza então os métodos das classes de modelo e o grafo gerado para produzir umaconsulta para o SGBD.

5.1.4 Exportação para RDF

Os dados extraídos do banco de dados são finalmente transformados em triplas RDF. As triplasRDF são geradas de acordo com a resposta obtida pela consulta ao banco de dados. Para cadavalor recuperado, é gerada uma tripla utilizando como sujeito o id do registro, como predicado onome equivalente ao atributo/relação na ontologia dado pelo mapeamento e como objeto o valorrecuperado.

Com isso, é então populada a ontologia, onde é realizada a consulta SPARQL.

5.2 Arquitetura genérica para sistemas OBDA

A Figura 5.4 caracteriza a arquitetura genérica proposta para sistemas OBDA.Como é possível verificar na Figura 5.4, os itens ontologia, base de dados e mapeamento devem

ser fornecidos pelo usuário que construirá o sistema OBDA. Desta forma, assumimos a existência deuma base de dados e uma ontologia que descreve o domínio para a base de dados. O mapeamento,como representado no item a , deverá ser construído pelo usuário especialista com conhecimentosdo domínio (ontologia) e conhecimento da estrutura em que os dados estão armazenados. O itemb ilustra a representação da base de dados através do modelo de objeto.

O modelo de objeto é um facilitador para a construção do mapeamento entre a ontologia e abase de dados. Nos casos em que os bancos de dados são NoSQL, a utilização do modelo de objetoprovê uma estrutura para os dados que possuem características semi-estruturadas.

2Disponível em: https://github.com/dryruby/sxp.rb

Page 37: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

5.2 ARQUITETURA GENÉRICA PARA SISTEMAS OBDA 23

Figura 5.4: Arquitetura genérica para sistemas OBDA

A entrada que o sistema OBDA recebe está representada no passo 1 , onde o usuário cria umaconsulta SPARQL com o vocabulário oferecido pela ontologia.

No passo 2 , o sistema fica responsável por construir um grafo que caracteriza as informaçõesque a consulta SPARQL deseja recuperar.

Através do grafo que representa a consulta SPARQL e o mapeamento, o passo 3 da arquiteturafica responsável por construir uma consulta para o SGBD referente ao banco de dados utilizado.Esta consulta para SGBD recupera as informações necessárias para responder a consulta SPARQLpassada pelo usuário.

Assim, no passo 4 a consulta é executada pelo SGBD e seu resultado retornado no passo 5 .No passo 6 os dados são convertidos em triplas RDF. Então, as triplas RDF geradas populam aontologia (passo 7 ), para que a consulta SPARQL possa ser executada sobre a ontologia (passo8 ). Por fim, o resultado é retornado ao usuário em 9 .

5.2.1 Categorias de desenvolvimento

Com esse modelo, podemos separar as etapas de processamento em quatro categorias, de acordocom a necessidade de modificação de cada uma.

A primeira consiste das etapas que são fixas dentro da arquitetura. São elas os passos 2 , 6 ,7 e 8 . Esses passos não necessitam de alterações pela parte do usuário especialista que instanciao sistema, uma vez que são independentes do domínio e do SGBD utilizados.

Page 38: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

24 FRAMEWORK GENÉRICO DE ACESSO A DADOS BASEADO EM ONTOLOGIAS 5.2

A segunda categoria contém as etapas que são dependentes do SGBD. Nessa categoria, se encon-tram os passos 4 e 5 . Esses passos devem ser implementados especificamente para a linguagemde consulta do SGBD a ser utilizado. A vantagem deste modelo é que essa tarefa, por mais cus-tosa que seja, só deve ser realizada uma única vez para cada linguagem. Como neste trabalho sãoapresentadas, por exemplo, traduções para a linguagem de consulta do MongoDB e para SQL, qual-quer usuário especialista que queira instanciar o modelo para um SGBD que utilize alguma dessaslinguagens não precisará realizar essa tarefa.

A terceira categoria abarca as etapas que devem ser criadas sempre que se for instanciar omodelo para utilização. A ontologia, o mapeamento a , o modelo de objetos b e a base de dadosdevem ser providos por um usuário especialista no domínio e na estrutura em que os dados estãoarmazenados. É possível, no entanto, através de processos automáticos ou semi-automáticos geraro modelo de objetos de forma não manual, restando assim somente a ontologia e o mapeamentopara serem construídos.

A última categoria apresenta as etapas que são dependentes do usuário que for utilizar a instânciacriada pelo especialista. Nas etapas 1 e 9 o usuário deve fornecer uma consulta SPARQL ereceber a resposta para sua consulta com os dados encontrados na base de dados.

Desta forma, podemos delimitar as tarefas de cada um dos envolvidos no processo de utilizaçãodeste modelo para tornar claro o esforço individual dos participantes.

Page 39: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 6

OntoMongo

O OntoMongo1 é um protótipo funcional que utiliza a arquitetura descrita no Capítulo 5 e foidesenvolvido em conjunto com outros pesquisadores e o conteúdo deste capítulo foi apresentado porAraujo et al. (2017).

OntoMongo é capaz de receber como entrada uma consulta em linguagem SPARQL e respondera essa consulta com um conjunto de informações em forma de triplas RDF. Este protótipo foidesenvolvida na linguagem de programação Ruby e utiliza o framework Ruby on Rails2 criado parafacilitar a criação de aplicações e serviços web.

6.1 Estudo de caso

Foi criado um estudo de caso aplicando a abordagem descrita para responder a uma consultaparecida à respondida por Botoeva et al. (2016), que é a de descobrir quais são os pesquisadores comduas publicações no mesmo ano. Para isto, aplicamos apenas uma parte da linguagem de consultado MongoDB que trata do método de agregação.

6.1.1 Definição do domínio

Criamos uma ontologia chamada basic-lattes a respeito de pesquisadores e sua produção bibli-ográfica, a hierarquia das classes pode ser vista na Figura 6.1.

Figura 6.1: Hierarquia das classes definidas na ontologia

A ontologia completa pode ser encontrada no Anexo H. A Figura 6.2 ilustra as classes depesquisador e artigo e a relação entre os dois que serão de maior forco nos próximos exemplos.

1Projeto de código-aberto: http://github.com/thdaraujo/onto-mongo2Framework para Ruby http://rubyonrails.org/

25

Page 40: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

26 ONTOMONGO 6.1

Figura 6.2: Ontologia basic-lattes por Araujo et al. (2017)

6.1.2 Base de dados

O banco de dados MongoDB utilizado contém 39.833 de currículos com informações sobre a pro-dução científica de pesquisadores, que foram extraídos da Plataforma Lattes do CNPq3 através doprojeto scriptLattes desenvolvido por Mena-Chalco e Junior (2009). Essa ferramenta exporta currí-culos em formato XML contendo informações detalhadas sobre as publicações dos pesquisadores. Aestrutura dos arquivos pode ser encontrada no apêndice G. Os arquivos XML foram transformadosem documentos JSON e alguns campos de interesse foram extraídos, tais como o nome do pesquisa-dor, sua lista de artigos publicados e coautores. A estrutura dos documentos armazenados no bancode dados foi construída de forma similar ao arquivo utilizado no trabalho de Botoeva et al. (2016)e pode ser encontrada no apêndice F.

A recuperação dos dados é feita utilizando uma biblioteca Ruby4 chamada mongoid5, desen-volvida pelos criadores do MongoDB como um ODM (Object-DocumentMapper) que transforma osobjetos da linguagem de programação em documentos persistidos no banco de dados MongoDB.Essa biblioteca também possui métodos para inserção e atualização desses documentos.

A Figura 6.3 ilustra a construção de duas classes que representam os documentos armazenadosno banco de dados. As classes Researcher e Publication foram construídas manualmente e seu códigopode se encontrado no Anexo I.

Para fazer uma comparação com o artigo citado, também adicionamos o pesquisador “KristenNygaard” e duas de suas publicações com o mesmo ano, que foram salvas na coleção researcher noMongoDB. Esse pesquisador será utilizado para ilustrar o processo de recuperação dos dados.

6.1.3 Mapeamento

O proximo passo é construir o mapeamento conectando os conceitos definidos pela ontologia aosconceitos definido pelo modelo de objeto. A Figura 6.4 ilustra as classes da ontologia basic-lattes esuas classes equivalente no modelo de objeto.

O mapeamento da classe Pesquisador é apresentado no Arquivo 6.1:

Arquivo 6.1: Mapeamento da classe Pesquisador com a model Researcher.1 OntoMap . mapping ’ Pesquisador ’ do2 model Researcher3 maps from : ’nome ’ , to : : name4 maps from : ’ pa i s ’ , to : : country5 maps from : ’ nome_em_citacoes ’ , to : : name_in_citations6 maps r e l a t i o n : ’ publ i cou ’ , to : : pub l i c a t i o n s7 end

A linha 1 do Arquivo 6.1 indica o começo do mapeamento para o conceito Pesquisador daontologia e que está mapeado para a classe Researcher do modelo de objeto. Nas linhas 3 a 5,

3http://lattes.cnpq.br/4Linguagem de Programação Orientada a Objetos https://www.ruby-lang.org/en/5https://docs.mongodb.com/mongoid/master/

Page 41: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

6.1 ESTUDO DE CASO 27

Figura 6.3: Diagrama das classes de modelo: Researcher e Publication

Figura 6.4: Equivalência entre classes da ontologia e classes do modelo de objeto.

cada atributo definido no modelo de objeto é mapeado para o atributo correspondente descrito pelaontologia através do método maps.

A linha 6 descreve a relação publicou entre as classes Pesquisador e Artigo mapeada para arelação publications.

De forma similar o Arquivo 6.2 apresenta o mapeamento entre a classe Artigo e o modeloPublication.

Arquivo 6.2: Script de mapeamento da classe Artigo com a model Publication.1 OntoMap . mapping ’ Art igo ’ do2 model Pub l i ca t i on3 maps from : ’ natureza ’ , to : : nature4 maps from : ’ t i t u l o ’ , to : : t i t l e5 maps from : ’ t i tu lo_em_ingles ’ , to : : t i t l e_en6 maps from : ’ ano ’ , to : : year7 maps from : ’ pa i s ’ , to : : country8 maps from : ’ idioma ’ , to : language9 maps from : ’ v e i c u l o ’ , to : media

10 maps from : ’ do i ’ , to : do i

Page 42: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

28 ONTOMONGO 6.1

11 end

6.1.4 Tradutor

Utilizando a ontologia e o mapeamento definidos, desejamos descobrir quais são as publicaçõesdistintas publicadas no mesmo ano e seu autor. Isso pode ser alcançado pela consulta SPARQLdescrita em 6.3:

Arquivo 6.3: Consulta SPARQL para consultar todos os pesquisadores que possuem duas publicações nomesmo ano

1 PREFIX : <http :// onto−mongo/ bas ic−l a t t e s/#>2 SELECT3 ?nomePesquisador ? t i t u l oPub l i c a c ao1 ? t i t u l oPub l i c a c ao2 ?ano4 WHERE5 {6 ? pesqu i sador : nome ?nomePesquisador .7 ? pesqu i sador : publ i cou ? publ i cacao1 .8 ? pesqu i sador : publ i cou ? publ i cacao2 .9 ? pub l i cacao1 : ano_publicacao ?ano .

10 ? pub l i cacao2 : ano_publicacao ?ano .11 ? pub l i cacao1 : t i t u l o ? t i t u l oPub l i c a c ao1 .12 ? pub l i cacao2 : t i t u l o ? t i t u l oPub l i c a c ao2 .13 FILTER14 (? pub l i cacao1 != ? publ i cacao2 )15 }

Primeiro, transformamos essa consulta em uma SPARQL Syntax Expression, usando a bibliotecasxp:

Arquivo 6.4: Consulta SPARQL transformada em S-Expression1 ( p r o j e c t2 (? nomePesquisador ? t i t u l oPub l i c a c ao1 ? t i t u l oPub l i c a c ao2 ?ano )3 ( f i l t e r4 (!= ? publ i cacao1 ? publ i cacao2 )5 ( bgp6 ( t r i p l e ? pesqu i sador : nome ?nomePesquisador )7 ( t r i p l e ? pesqu i sador : publ i cou ? publ i cacao1 )8 ( t r i p l e ? pesqu i sador : publ i cou ? publ i cacao2 )9 ( t r i p l e ? pub l i cacao1 : ano_publicacao ?ano )

10 ( t r i p l e ? pub l i cacao2 : ano_publicacao ?ano )11 ( t r i p l e ? pub l i cacao1 : t i t u l o ? t i t u l oPub l i c a c ao1 )12 ( t r i p l e ? pub l i cacao2 : t i t u l o ? t i t u l oPub l i c a c ao2 ) ) ) )

Essa expressão é desmembrada em suas componentes, para que possam ser transformadas naconsulta ao sistema de banco de dados. O algoritmo desmembra a consulta nas seguintes partes:

• Variáveis de saída (project);

• Filtros que devem ser aplicados (filter);

• Corpo da consulta (bgp - basic graph pattern) com as triplas (triple);

A partir da consulta SPARQL do Arquivo 6.3, é construído o grafo da Figura 6.5. Este grafo éconstruído analisando cada tripla da cláusula WHERE da consulta SPARQL.

Na linha 6 da consulta do código 6.4, a primeira tripla contém como sujeito a variável ?pes-quisador representando uma instância para a classe Pesquisador na ontologia. E como não hánenhum nó no grafo, criamos o primeiro nó representando a variável ?pesquisador. Como o pre-dicado desta tripla é um atributo (nome) e o objeto é uma variável, inserimos o atributo nome nalista de atributos do nó ?pesquisador.

Nas linhas 7 e 8, o sujeito também se refere à variável ?pesquisador, porém, o predicado éuma relação. Essa relação aponta para as variáveis ?publicacao1 e ?publicacao2 que representam

Page 43: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

6.1 ESTUDO DE CASO 29

instâncias da classe Publicacao na ontologia. Desta forma, são criados dois nós para cada umadestas variáveis. Esses dois nós são conectados ao nó ?pesquisador por causa da relação publicou.

Por fim, as triplas nas linhas 9 a 12 que têm como predicado os atributos ano_publicacao etitulo, são adicionadas à lista de atributos de seus respectivos nós.

Figura 6.5: Grafo construído a partir da consulta SPARQL

O grafo (Figura 6.5) construído será processado para gerar uma consulta no formato do fra-mework de agregação MongoDB. O processo de geração da consulta é específico para cada SGBD.Se o modelo utiliza um banco de dados relacional, é necessário processar o grafo a fim de geraruma consulta SQL. Se o sistema de banco de dados utilizado for MongoDB é necessário ser capazde processar o grafo e gerar uma consulta no formato para o framework de agregação ou em ou-tro formato disponível. Diferente dos SGBD relacionais que utilizam como padrão a linguagem deconsulta SQL, os sistemas NoSQL não possuem formato padrão de consultas. Uma vez modelada asolução OBDA para SGBDs relacionais, a solução será a mesma para qualquer sistema de banco dedados relacional. Porém, no cenário dos sistemas de bancos de dados NoSQL, modelar um sistemaOBDA que seja capaz de suportar novos sistemas NoSQL pode se tornar uma tarefa custosa. Emtrabalhos como o de Botoeva et al. (2016) e Michel et al. (2016), quando se deseja modelar OBDApara um novo SGBD é necessário aumentar a abrangência da linguagem de mapeamento e criarotimizações para construir consultas eficientes.

Desta forma, o grafo com a estrutura da consulta SPARQL é um recurso facilitador a serutilizado em sistemas OBDA, pois independentemente do SGBD, com o seu uso, o único processoque é específico para cada SGBD é a etapa da construção da consulta.

Criado o grafo de estrutura, queremos então construir a consulta que será executada no Mon-goDB a partir da consulta SPARQL descrita no Arquivo 6.3. Neste protótipo, a consulta objetivoé gerada no padrão Aggregation Pipeline do MongoDB.

O nó raiz, presente na Figura 6.6 é o primeiro a ser processado.

Figura 6.6: Nó representando ?pesquisador

A variável ?pesquisador representa instâncias da classe Pesquisador mapeada para a classeRuby “Researcher”. O nó da Figura 6.6 informa que somente o nome do pesquisador deve serrecuperado na busca que será executada no MongoDB. Desta forma, o primeiro comando para aconsulta será o comando “$project: "name": true ”. Neste comando, informamos que os documentosque serão retornados como resultado da consulta devem conter o campo name, como pode serverificado na Figura 6.7.

Em seguida, os dois nós adjacentes ao nó raiz da Figura 6.6 são processados.O nó da Figura 6.8 para a variável ?publicacao1 representa instâncias da classe Artigo ma-

peada para a classe Ruby “Publication”. As publicações são representas dentro do documento arma-zenado no MongoDB como uma lista. Para consultar este tipo de estrutura dentro dos documentos,faz-se uso do comando unwind. A lista de publicações de cada documento é desmembrada produ-zindo novos documentos para cada elemento da lista. Antes disso, no entanto, é necessário informar

Page 44: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

30 ONTOMONGO 6.1

Figura 6.7: Exemplo do funcionamento do comando project

Figura 6.8: Nó representando ?publicacao1

que o campo publications também deve ser projetado, para depois aplicar o comando unwind sobrea lista. Assim, o comando é atualizado para o comando do Arquivo 6.5

Arquivo 6.5: Adicionando comando unwind para o campo publications{

{ $p ro j e c t : {" nomePesquisador " : "name" , " pub l i cacao1 " : "↪→ $pub l i c a t i on s "}} ,

{$unwind : " $publ i cacao1 " }}

A Figura 6.9 simula a execução do comando descrito no Arquivo 6.5.

Figura 6.9: Simulação da execução do comando descrito no Arquivo 6.5

Page 45: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

6.1 ESTUDO DE CASO 31

Os atributos ano_publicacao e titulo são adicionados em outro comando project após o comandounwind, como será mostrado mais adiante.

Em seguida, o nó da Figura 6.10 é processado. Este nó é similar ao nó que representa ?pu-blicacao1. Assim, o mesmo processamento é realizado. O processo resulta na consulta do Arquivo6.6.

Figura 6.10: Nó representando ?publicacao2

Arquivo 6.6: Evolução da consulta após adicionar comando unwind para ?publicacao2{

{ $p ro j e c t : {" pesqu i sador . nomePesquisador " : "name" , " pub l i cacao1 " :↪→ " $pub l i c a t i on s " , " pub l i cacao2 " : " $pub l i c a t i on s "}} ,

{$unwind : " $publ i cacao1 " }{$unwind : " $publ i cacao2 " }{ $p ro j e c t : {" pesqu i sador . nomePesquisador " : true ,

" pub l i cacao1 " : true ," pub l i cacao2 " : true ," pub l i cacao1 . ano " : " $publ i cacao1 . year " ," pub l i cacao1 . t i t u l o " : " $publ i cacao1 . t i t l e " ," pub l i cacao2 . ano " : " $publ i cacao2 . year " ," pub l i cacao2 . t i t u l o " : " $publ i cacao2 . t i t l e " ,}

}}

Por fim, os filtros são adicionados à consulta. A linha 4 do Arquivo 6.4 apresenta filtros quedefinem que ?publicacao1 deve ser diferente de ?publicacao2. Mas também levamos em conta ainformação presente nas linhas 9 e 10: a consulta exige que o ano das publicações seja o mesmo, poisa variável ?ano é igual para ?publicacao1 e ?publicacao2. Portanto, o filtro deve garantir quecada um dos pares de publicações sejam diferentes entre si, mas sejam do mesmo ano. Em resumo,a consulta deve trazer todas as publicações distintas que foram publicadas no mesmo ano. Podemosverificar a consulta final no Arquivo 6.7.

Arquivo 6.7: Consulta Final{

{ $p ro j e c t : {" pesqu i sador . nomePesquisador " : "name" , " pub l i cacao1 " :↪→ " $pub l i c a t i on s " , " pub l i cacao2 " : " $pub l i c a t i on s "}} ,

{$unwind : " $publ i cacao1 " }{$unwind : " $publ i cacao2 " }{ $p ro j e c t : {" pesqu i sador . nomePesquisador " : true ,

" pub l i cacao1 " : true ," pub l i cacao2 " : true ," pub l i cacao1 . ano " : " $publ i cacao1 . year " ," pub l i cacao1 . t i t u l o " : " $publ i cacao1 . t i t l e " ," pub l i cacao2 . ano " : " $publ i cacao2 . year " ," pub l i cacao2 . t i t u l o " : " $publ i cacao2 . t i t l e " ," f i l t r o " : { $and : [ { $eq : [ " $publ i cacao1 . year " , "

↪→ $publ i cacao2 . year " ] } ,{ $ne : [ " $publ i cacao1 .↪→ t i t l e " , " $publ i cacao2 . t i t l e " ] } ] } }

} ,{ : $match => { ? f i l t r o ? => true }}

}

Page 46: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

32 ONTOMONGO 6.1

6.1.5 Resultado

Utilizamos o mesmo documento utilizado no trabalho de Botoeva et al. (2016) para compararo retorno. O resultado da consulta é o documento JSON do Arquivo 6.8, contendo as publicaçõesdistintas que foram publicadas no mesmo ano:

Arquivo 6.8: Documentos retornados pela consulta[ { ’_id ’ => BSON: : ObjectId ( ’5835 ef fcc048bd0001cdc239 ’ ) ,’ pe squ i sador . nomePesquisador ’=> " Kri s ten Nygaard " ,’ pub l i cacao1 . id ’=> ’5835 ef fcc048bd0001cdc23b ’ ,’ pub l i cacao2 . id ’=> ’5835 ef fcc048bd0001cdc23c ’ ,’ pub l i cacao1 . ano’=> 2001 ,’ pub l i cacao1 . t i t u l o ’=> ’ Turing Award ’ ,’ pub l i cacao2 . ano’=> 2001 ,’ pub l i cacao2 . t i t u l o ’=> ’ von Neumann Medal ’ } ]

Com esses dados, as triplas RDF são geradas para serem inseridas na ontologia (Arquivo 6.9).As triplas RDF são geradas de acordo com as triplas do comandoWHERE da consulta SPARQL.

Por exemplo, a tripla da linha 6 na consulta do Arquivo 6.4 gera triplas para o predicado :name. Avariável ?pesquisador é substituído pelo id do registro e a variável ?nomePesquisador é substituídapelo valor do campo “pesquisador.nomePesquisador” retornado pelos documentos de retorno.

Arquivo 6.9: Grafo RDF construído a partir dos dados de retorno: /5835 e f f cc048bd0001cdc239 : nome " Kr i s ten Nygaard":/5835 ef fcc048bd0001cdc23b : t i t u l o "Turing Award":/5835 ef fcc048bd0001cdc23b : ano_publicacao 2001:/5835 e f f cc048bd0001cdc23c : t i t u l o "von Neumann Medal":/5835 e f f cc048bd0001cdc23c : ano_publicacao 2001:/5835 e f f cc048bd0001cdc239 : publ i cou :/5835 e f fcc048bd0001cdc23b:/5835 e f f cc048bd0001cdc239 : publ i cou :/5835 e f f cc048bd0001cdc23c

Com as triplas inseridas, a consulta SPARQL pode ser executada sobre o grafo RDF.No trabalho de Botoeva et al. (2016), a consulta MongoDB gerada utiliza-se de várias sub-

consultas para a geração das triplas RDF, deixando os filtros por conta da consulta SPARQL.Assim, são geradas múltiplas triplas desnecessárias que serão ignoradas após a aplicação do filtro.No trabalho de Michel et al. (2016) também são geradas sub-consultas, porém, as consultas geradaspassam por um processo de otimização, o que muitas vezes é custoso para a aplicação.

O modelo descrito até aqui mostrou-se então capaz de gerar uma única consulta MongoDBcapaz de recuperar os mesmos dados que seriam recuperados pela consulta SPARQL equivalente,sem a necessidade de otimizações sobre a consulta gerada. É importante salientar neste momentoque o OntoMongo foi desenvolvido em conjunto com Araujo et al. (2017).

Page 47: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 7

OntoSQL

OntoSQL é uma segunda instância do framework genérico para a aplicação do modelo propostonesta dissertação utilizando um banco de dados relacional. Para este estudo de caso a ontologia éa mesma utilizada pelo OntoMongo (Anexo A).

7.1 Base de dados

Foi utilizado o SGBD PostgreSQL para armazenar os dados extraídos dos currículos da Plata-forma Lattes. Na Figura 7.1 temos um trecho do diagrama da modelagem dos dados extraídos doscurrículos Lattes. O esquema de banco de dados completo está descrito no Anexo D.

Figura 7.1: Diagrama do modelo de objeto

A construção das classes do modelo na linguagem Ruby para esta base foi feita de forma seme-lhante às do OntoMongo, seguindo agora a estrutura do banco relacional. O mapeamento para o

33

Page 48: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

34 ONTOSQL 7.2

OntoSQL pode ser encontrado no Apêndice B.

7.2 Construindo consultas SQL

Como mencionado anteriormente, a única etapa do método que muda de acordo com o tipo desistema gerenciador de banco de dados utilizado é a etapa de geração da consulta a ser executada noSGBD. É possível verificar a ideia da construção da consulta SQL pela descrição dada no Arquivo7.1.

Arquivo 7.1: Algoritmo responsável por construir a consulta SQL1 Entrada : Grafo ca ra c t e r i z ando a consu l ta SPARQL G e l i s t a de f i l t r o s F ,

↪→ Mapeamento M2 Saída : Consulta SQL3 Q = Consulta SQL45 paracada nó n ∈ G então6 se n pos su i um f i l h o então7 Cria j o i n ent re o pai e o f i l h o e ad i c i ona na consu l ta Q8 senão9 Ve r i f i c a em M qual tabe l a SQL é mapeada para n e ad i c i ona na consu l ta Q

10 fim se1112 Ve r i f i c a em M a cor re spondênc ia dos a t r i bu t o s d e s c r i t o s em n e ad i c i ona

↪→ em Q13 Ve r i f i c a em M a cor re spondênc ia dos f i l t r o s d e s c r i t o s em n e ad i c i ona em

↪→ Q14 fim paracada1516 Ve r i f i c a em M a cor re spondênc ia dos f i l t r o s d e s c r i t o s em F e ad i c i ona em Q1718 retorne Q

Utilizaremos a consulta SPARQL do código 7.2 para exemplificar a construção de uma consultaSQL pelo OntoSQL. Esta consulta SPARQL recupera informações de nome do pesquisador, títulodo artigo e nome da revista de todos os pesquisadores que possuem artigos publicados em revista.

Arquivo 7.2: Consulta SPARQL1 PREFIX onto : <http ://www. onto . org /obda/ bas ic−l a t t e s#>2 SELECT ?nome ? t i t u l o ? t i tu loDaRev i s ta3 WHERE {4 ? pesqu i sador onto : nome ?nome .5 ? pesqu i sador onto : publ i cou ? a r t i g o .6 ? a r t i g o onto : t i t u l o ? t i t u l o .7 ? a r t i g o onto : temDetalhamentoDaRevista ? deta lhe .8 ? deta lhe onto : t i tu l oDaRev i s ta ? t i tu loDaRev i s ta .9 }

O grafo da Figura 7.2 descreve a consulta SPARQL e através deste grafo é construída a consultaSQL.

Para a construção das consultas SQL, o OntoSQL utiliza as chamadas de métodos disponíveisno framework ORM do Ruby chamado Active Record1.

A primeira etapa da construção da consulta SQL consiste em percorrer o grafo (Figura 7.2) ecriar os JOINs2 necessários. Para associações simples entre duas entidades, a sintaxe utilizada seria“Model1.joins(:model2)” . Desta forma, se analisarmos a primeira relação no grafo, é possívelverificar que existe uma relação entre os nós ?pesquisador e ?artigo. Pelo mapeamento, sabemosque a relação no banco de dados está entre as entidades Pesquisador e Artigo. Então, definimos

1https://github.com/rails/rails/tree/master/activerecord2Comando SQL utilizado para combinar registros de duas ou mais tabelas

Page 49: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

7.3 UTILIZANDO O ONTOP 35

Figura 7.2: Grafo representando a consulta SPARQL

um JOIN entre as duas entidades da seguinte forma, “Pesquisador.joins(:artigos)”. Este métodoproduz a consulta SQL descrita no Arquivo 7.3.

Arquivo 7.3: Consulta SQL gerada a partir do comando “Pesquisador.joins(:artigos)”1 SELECT pesqu i sador .∗ , a r t i g o .∗ FROM pesqu i sador INNER JOIN a r t i g o ON

↪→ a r t i g o . pesquisador_id = pesqu i sador . id

Se o nó ?pesquisador possuísse mais nós adjacentes, bastaria adicionar as entidades como parâ-metro para o método joins.

A próxima relação descrita pelo grafo conecta os nós ?artigo e ?detalhe. Neste caso, será necessá-rio adicionar um JOIN para as entidadesArtigo e Revista. A chamada de método será modificadapara “Pesquisador.joins(:artigos=> [:revista])”. Este comando gera a consulta SQL descrita no Ar-quivo 7.4.

Arquivo 7.4: Consulta SQL gerada a partir do comando “Pesquisador.joins(:artigos => [:revista])”1 SELECT pesqu i sador .∗ , a r t i g o .∗ , r e v i s t a .∗ FROM pesqu i sador INNER JOIN

↪→ a r t i g o ON a r t i g o . pesquisador_id = pesqu i sador . id INNER JOIN↪→ r e v i s t a ON r e v i s t a . ar t igo_id = a r t i g o . id "

Por fim, os atributos descritos pelo grafo são adicionados à consulta através do método se-lect (“Pesquisador.joins(:artigos=> [:revista])’.select(pesquisador.id, pesquisador.nome, artigos.id,artigos.titulo, revista.id, revista.titulo_do_periodico_ou_revista)’ ).

A consulta resultante pode ser vista no Arquivo 7.5.

Arquivo 7.5: Consulta SQL final1 SELECT pesqu i sador . id , pesqu i sador . nome , a r t i g o . id , a r t i g o . t i t u l o , r e v i s t a .

↪→ id , r e v i s t a . t i tu lo_do_per iodico_ou_revista2 FROM pesqu i sador INNER JOIN a r t i g o ON a r t i g o . pesquisador_id = pesqu i sador .

↪→ id3 INNER JOIN r e v i s t a ON r e v i s t a . a r t igo_id = a r t i g o . id

O passo final consiste em gerar as triplas RDF da mesma maneira que foi descrito na seção6.1.5.

7.3 Utilizando o Ontop

Nesta seção descrevemos a utilização do sistema OBDA Ontop com o domínio da Plataformacurricular Lattes para que possamos verificar as similaridades e diferenças entres os dois métodos.Utilizamos a ontologia descrita na seção 6.1.1 e a base de dados descrita em 7.1.

7.3.1 Mapeamento Ontop

O mapeamento para o Ontop pode ser construído tanto na linguagem de mapeamento R2RMLdesenvolvida pela W3C, ou pela linguagem nativa do sistema. Para a construção do mapeamento

Page 50: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

36 ONTOSQL 7.3

para este exemplo, foi utilizada a linguagem de mapeamento nativa oferecida pelo sistema Ontoppor se mostrar mais simples para a compreensão.

No Arquivo 7.6 está descrito o trecho do mapeamento para o conceito Pesquisador e seusatributos descritos na ontologia.

Arquivo 7.6: Mapeamento Ontop o conceito Pesquisador definida na ontologia1 mappingId mapping−Pesquisador2 target : Pesquisador /{ id } rd f : type : Pesquisador .3 source s e l e c t id from pesqu i sador45 mappingId mapping−Pesquisador−nomeCompleto6 target : Pesquisador /{ id } : nomeCompleto {nome}^^xsd : s t r i n g .7 source s e l e c t id , nome from pesqu i sador ;89 mappingId mapping−Pesquisador−nac i ona l idade

10 target : Pesquisador /{ id } : nac i ona l idade { nac i ona l idade }^^xsd : s t r i n g .11 source s e l e c t id , nac i ona l i dade from pesqu i sador ;1213 mappingId mapping−Pesquisador−paisDeNascimento14 target : Pesquisador /{ id } : paisDeNascimento {pais_de_nascimento}^^xsd : s t r i n g

↪→ .15 source s e l e c t id , pais_de_nascimento from pesqu i sador ;1617 mappingId mapping−Pesquisador−ufNascimento18 target : Pesquisador /{ id } : ufNascimento {uf_nascimento}^^xsd : s t r i n g .19 source s e l e c t id , uf_nascimento from pesqu i sador ;2021 mappingId mapping−Pesquisador−s i g l aPa i sNac i ona l i d ade22 target : Pesquisador /{ id } : s i g l aPa i sNac i ona l i d ade { s i g l a_pa i s_nac iona l idade

↪→ }^^xsd : s t r i n g .23 source s e l e c t id , s i g l a_pa i s_nac iona l idade from pesqu i sador ;2425 mappingId mapping−Pesquisador−paisDeNaciona l idade26 target : Pesquisador /{ id } : pa isDeNacional idade { pais_de_nacional idade}^^xsd :

↪→ s t r i n g .27 source s e l e c t id , pais_de_nacional idade from pesqu i sador ;2829 mappingId mapping−Pesquisador−nomeEmCitacoesBib l iogra f icas30 target : Pesquisador /{ id } : nomeEmCitacoesBib l iogra f icas {

↪→ nome_em_citacoes_bibl iograf icas}^^xsd : s t r i n g .31 source s e l e c t id , nome_em_citacoes_bibl iograf icas from pesqu i sador ;3233 mappingId mapping−Pesquisador−textoResumoCvRh34 target : Pesquisador /{ id } : textoResumoCvRh {texto_resumo_cv_rh}^^xsd : s t r i n g

↪→ .35 source s e l e c t id , texto_resumo_cv_rh from pesqu i sador ;3637 mappingId mapping−Pesquisador−textoResumoRvRhEn38 target : Pesquisador /{ id } : textoResumoRvRhEn {texto_resumo_cv_rh_en}^^xsd :

↪→ s t r i n g .39 source s e l e c t id , texto_resumo_cv_rh_en from pesqu i sador ;4041 mappingId mapping−Pesquisador−permissaoDeDivulgacao42 target : Pesquisador /{ id } : permissaoDeDivulgacao {permissao_de_divulgacao}^^

↪→ xsd : s t r i n g .43 source s e l e c t id , permissao_de_divulgacao from pesqu i sador ;4445 mappingId mapping−Pesquisador−numero Ident i f i cador46 target : Pesquisador /{ id } : numero Ident i f i cador { numero_ident i f i cador}^^xsd :

↪→ s t r i n g .47 source s e l e c t id , numero_ident i f i cador from pesqu i sador ;4849 mappingId mapping−Pesquisador−publ icou−Art igoPubl icado50 target : Pesquisador /{ id_pesquisador } : publ i cou : Art igoPubl icado /{ id_art igo }

Page 51: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

7.3 UTILIZANDO O ONTOP 37

↪→ .51 source s e l e c t pesqu i sador . id as id_pesquisador , r e v i s t a . id as id_art igo

↪→ from pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n r e v i s t a on a r t i g o . id = r e v i s t a . ar t igo_id

5253 mappingId mapping−Pesquisador−publ icou−TrabalhoEmEvento54 target : Pesquisador /{ id_pesquisador } : publ i cou : TrabalhoEmEvento/{ id_art igo

↪→ } .55 source s e l e c t pesqu i sador . id as id_pesquisador , evento . id as id_art igo from

↪→ pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n evento on a r t i g o . id = evento . ar t igo_id

O mapeamento é composto por mappingId, source e target. O mappingId representa umidentificador para o trecho do mapeamento, source é a consulta SQL e target é a tripla comvariáveis que serão preenchidas com os valores retornados pela consulta SQL. Este mapeamento éconstruído para cada tabela e coluna da base de dados. O mapeamento completo construído paraconectar a ontologia com a base de dados pode ser encontrado no Apêndice C.

No Arquivo 7.7 podemos comparar o mapeamento do OntoSQL para os mesmo conceitos.

Arquivo 7.7: Mapeamento OntoSQL para o conceito Pesquisador definida na ontologia1 OntoMap . mapping ’ Pesquisador ’ do2 model Pesquisador3 maps from : ’ nomeCompleto ’ , to : : nome4 maps from : ’ nac iona l idade ’ , to : : nac i ona l idade5 maps from : ’ paisDeNascimento ’ , to : : pais_de_nascimento6 maps from : ’ ufNascimento ’ , to : : uf_nascimento7 maps from : ’ s i g l aPa i sNac i ona l i dade ’ , to : : s i g l a_pa i s_nac iona l idade8 maps from : ’ paisDeNacional idade ’ , to : : pais_de_nacional idade9 maps from : ’ nomeEmCitacoesBibl iograf icas ’ , to : :

↪→ nome_em_citacoes_bibl iograf icas10 maps from : ’ textoResumoCvRh ’ , to : : texto_resumo_cv_rh11 maps from : ’ textoResumoRvRhEn ’ , to : : texto_resumo_cv_rh_en12 maps from : ’ permissaoDeDivulgacao ’ , to : : permissao_de_divulgacao13 maps from : ’ numeroIdent i f i cador ’ , to : : numero_ident i f i cador14 end

O mapeamento utilizado pelo OntoSQL está interessado somente em mapear o vocabulárioutilizado pela ontologia com o vocabulário utilizado pela base de dados, transferindo ao sistemaa responsabilidade de obter as informações como o source e target descritos no mapeamento doOntop.

7.3.2 Execução da Consulta SPARQL pelo Ontop

Com o mapeamento construído é possível fazer consultas sobre a ontologia para acessarmos osdados armazenados na base de dados.

Vamos utilizar a consulta SPARQL definida no Arquivo 7.8 para detalhar a etapa de conversãoda consulta SPARQL para uma consulta SQL do Ontop. A consulta do Arquivo 7.8 recupera a listados pesquisadores que possuem publicações e a lista destas publicações.

Arquivo 7.8: Consulta SPARQL que lista os pesquisadores e suas respectivas publicações de artigos1 PREFIX : <http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#>23 SELECT ? pesqu i sador ? t i t u l o4 WHERE {5 ? pesqu i sador : publ i cou ? a r t i g o .6 ? a r t i g o : t i t u l o ? t i t u l o7 }

A consulta SPARQL (Arquivo 7.8) está representada pela árvore da Figura 7.3.Através da árvore representada na Figura 7.3 são identificados os trechos do mapeamento que

serão utilizados para gerar a consulta SQL. Esta identificação é feita analisando cada nó folha da

Page 52: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

38 ONTOSQL 7.3

Figura 7.3: Árvore representando a consulta SPARQL (Arquivo 7.8)

árvore e procurando todos os mapeamentos em que a descrição do target case com a tripla descritapelo nó folha.

Desta forma, para o nó folha T1 temos a tripla ?pesquisador :publicou ?artigo. Pelo trecho daontologia descrita na Figura 7.4 sabemos que a variável ?pesquisador representa instâncias perten-centes à classe Pesquisador da ontologia e a variável ?artigo representa instâncias pertencentes àclasse Artigo.

Figura 7.4: Trecho da Ontologia descrevendo relação entre classes Pesquisador e Artigo

A Figura 7.5 ilustra os trechos target do mapeamento que casam com a tripla T1.No Arquivo 7.9 podemos verificar o código descrevendo os mapeamento que casam com T1

(?pesquisador : publicou ?artigo).

Arquivo 7.9: Mapeamentos que casam com a tripla T112 mappingId mapping−Pesquisador−publ icou−Art igoPubl icado3 target : Pesquisador /{ id_pesquisador } : publ i cou : Art igoPubl icado /{ id_art igo }

↪→ .4 source s e l e c t pesqu i sador . id as id_pesquisador , r e v i s t a . id as id_art igo

↪→ from pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n r e v i s t a on a r t i g o . id = r e v i s t a . ar t igo_id

56 mappingId mapping−Pesquisador−publ icou−TrabalhoEmEvento7 target : Pesquisador /{ id_pesquisador } : publ i cou : TrabalhoEmEvento/{ id_art igo

↪→ } .8 source s e l e c t pesqu i sador . id as id_pesquisador , evento . id as id_art igo from

↪→ pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n evento on a r t i g o . id = evento . ar t igo_id

Da mesma forma, podemos verificar no Arquivo 7.10 o código dos mapeamentos que casam com

Page 53: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

7.3 UTILIZANDO O ONTOP 39

Figura 7.5: Encontrando mapeamentos que casam com a tripla T1

T2 (?artigo :titulo ?titulo).

Arquivo 7.10: Mapeamentos que casam com a tripla T212 mappingId mapping−ArtigoPubl icado−t i t u l o3 target : Art igoPubl icado /{ id } : t i t u l o { t i t u l o }^^xsd : s t r i n g .4 source s e l e c t r e v i s t a . id as id , a r t i g o . t i t u l o as t i t u l o from a r t i g o j o i n

↪→ r e v i s t a on a r t i g o . id = r e v i s t a . ar t igo_id56 mappingId mapping−TrabalhoEmEvento−t i t u l o7 target : TrabalhoEmEvento/{ id } : t i t u l o { t i t u l o }^^xsd : s t r i n g .8 source s e l e c t evento . id as id , a r t i g o . t i t u l o from a r t i g o j o i n evento on

↪→ a r t i g o . id = evento . ar t igo_id

As consultas SQL descritas pelo mapeamento dos Arquivos 7.9 e 7.10 são utilizadas para geraruma consulta SQL única.

Na Figura 7.6 podemos ver a combinação das consultas SQL descritas nos mapeamentos refe-rentes a ArtigoPublicado.

O mesmo ocorre para as consultas SQL descritas nos mapeamentos referentes a TrabalhoEmE-vento, ilustrado na Figura 7.7.

Page 54: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

40 ONTOSQL 7.3

Figura 7.6: Combinação através do comando JOIN entre as consultas SQL descritas para ArtigoPublicado

Figura 7.7: Combinação através do comando JOIN entre as consultas SQL descritas para TrabalhoEmE-vento

As duas consultas SQL são unidas pelo comando SQL UNION para combinar o resultado das

Page 55: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

7.3 UTILIZANDO O ONTOP 41

consultas. Por fim, a consulta gerada passa por alguns processos de otimização. A consulta finalgerada pelo sistema Ontop está descrita no Anexo E e uma versão simplificada é apresentada noArquivo 7.11.

Arquivo 7.11: Consulta SQL gerada a partir da consulta SPARQL do Arquivo 7.812 SELECT ∗3 FROM (4 SELECT5 ( ’ : Pesquisador / ’ | | QVIEW1." pesquisador_id ")AS " r e s e a r ch e r

↪→ " ,6 ( ’ : TrabalhoEmEvento / ’ | | QVIEW1." id ") AS " a r t i g o " ,7 QVIEW1." t i t u l o " AS " t i t u l o "8 FROM ar t i g o QVIEW1,9 evento QVIEW2,

10 pesqu i sador QVIEW3,11 evento QVIEW412 WHERE (QVIEW1." pesquisador_id " = QVIEW3." id ") AND13 (QVIEW1." id " = QVIEW4." art igo_id ") AND14 (QVIEW1." id " = QVIEW2." art igo_id ")15 UNION16 SELECT ( ’ : Pesquisador / ’ | | QVIEW1." pesquisador_id ") AS "

↪→ r e s e a r ch e r " ,17 ( ’ : Art igoPubl icado / ’ | | QVIEW1." id ") AS " a r t i g o " ,18 QVIEW1." t i t u l o " AS " t i t u l o "19 FROM ar t i g o QVIEW1,20 r e v i s t a QVIEW2,21 pesqu i sador QVIEW3,22 r e v i s t a QVIEW423 WHERE (QVIEW1." id " = QVIEW2." art igo_id ") AND24 (QVIEW1." pesquisador_id " = QVIEW3." id ") AND25 (QVIEW1." id " = QVIEW4." art igo_id ")26 ) SUB_QVIEW

7.3.2.1 Execução da Consulta SPARQL pelo OntoSQL

Nesta seção, é descrito o processo de construção da consulta SQL para a consulta SPARQLdescrita no Arquivo 7.8 realizado pelo OntoSQL.

A partir da consulta SPARQL (Arquivo 7.8), o grafo da Figura 7.8 é construído.

Figura 7.8: Grafo para consulta SPARQL do Arquivo 7.8

Percorrendo o grafo da Figura 7.8, a consulta SQL é construída. Avaliando o nó referente àvariável ?pesquisador é possível saber pela relação publicou definida na ontologia que a variávelreceberá valores de instâncias referentes à classe Pesquisador. O sistema OntoSQL procura entãopelo mapeamento referente à classe Pesquisador. Como mostrado na Figura 7.9, o mapeamentoindica que Pesquisador está mapeada para a classe Pesquisador da linguagem Ruby.

Seguindo para o próximo nó representando a variável ?artigo, sabemos que esta variável refere-seà instâncias da classe Artigo descrita pela ontologia. O atributo título também pertence à classe

Page 56: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

42 ONTOSQL 7.3

Figura 7.9: Mapeamento para classe Pesquisador

Artigo. A Figura 7.10 mostra o mapeamento entre a classe Artigo e seus atributos com a classeArtigo modelada na linguagem Ruby.

Figura 7.10: Mapeamento para classe Artigo

Com as informações obtidas pelo mapeamento, sabemos que a consulta SQL acessará as tabelasPesquisador e Artigo. Utilizando as chamadas de métodos disponíveis no Framework Active Recorddo Ruby é construído uma consulta SQL combinando as tabelas Pesquisador e Artigo através daoperação JOIN do SQL. No Arquivo 7.12 estão descritas as chamada de método construída para oFramework Active Record acompanhada da consulta SQL resultante.

Arquivo 7.12: Chamada de método e consulta SQL geradas.12 Pesquisador . j o i n s ( : a r t i g o ) . s e l e c t ( pesqu i sador . id , a r t i g o . id , a r t i g o . t i t u l o )34 SELECT pesqu i sador . id , a r t i g o . id , a r t i g o . t i t u l o5 FROM pesqu i sador INNER JOIN a r t i g o6 ON a r t i g o . pesquisador_id = pesqu i sador . id

É possível ver então através deste exemplo, que existem casos onde o OntoSQL produz consultassem os JOINS e UNIONS desnecessários apresentados pela consulta gerada pelo Ontop.

Page 57: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Capítulo 8

Conclusões

8.1 Considerações finais

Este trabalho abordou o problema de acessar dados armazenados em sistemas de bancos dedados NoSQL por meio de ontologias. Muitos trabalhos foram feitos para tornar possível o acessoaos dados armazenados em sistemas de bancos de dados relacionais utilizando ontologias. Com osurgimento de sistemas de bancos de dados NoSQL, um novo cenário surgiu para o acesso a dadosbaseado em ontologias.

Ong et al. (2014) afirma que diferentemente dos bancos de dados relacionais que possuem umalinguagem de consulta universal (SQL), os sistemas de bancos de dados NoSQL dispõem de inú-meras linguagens de consulta. Consequentemente, são necessárias soluções menos dependentes dalinguagem de consulta.

Esta dissertação propôs um novo método para a construção de sistemas OBDA. Ao invés demapeamentos entre triplas RDF para sub-consultas do SGBD, o mapeamento proposto conectaconceitos da ontologia com entidades de um modelo de objetos. Com este novo mapeamento, nãoé necessário fazer otimizações nas consultas do SGBD. Este ponto é tido como uma grande vanta-gem, pois, como mencionado por Calvanese et al. (2017), essas otimizações de consultas SQL sãoprocessos custosos. Além disso, permite a criação de um mapeamento menos verboso, pois não háa necessidade de definir comandos de consulta para cada um dos atributos da ontologia.

Para avaliar o funcionamento deste método, foi utilizado como estudo de caso o domínio voltadoaos dados curriculares de pesquisadores. No experimento foram utilizadas ontologias descritas emRDF e RDFS, que são os formatos atualmente suportados pelo protótipo. Essas ontologias descre-vem classes, subclasses, propriedades que descrevem relações entre classes e atributos de classes.Com este estudo de caso, foi possível utilizar o método para construir duas instâncias do sistemaOBDA, uma utilizando um sistema de bancos de dados orientado a documentos (MongoDB) e outrautilizando um sistema de bancos de dados relacional (PostgreSQL) que são capazes de traduzir asconsultas SPARQL e produzir um grafo RDF com os dados presentes no banco de dados. E diferentedo trabalho de Botoeva et al. (2016), onde a arquitetura do sistema OBDA relacional é diferenteda arquitetura para OBDA NoSQL, a arquitetura construída nesta dissertação é a mesma para ossistemas de bancos de dados relacional e NoSQL.

O protótipo OntoMongo faz consultas somente para documentos da mesma coleção implemen-tando somente os comandos de project, match, unwind e filter do framework de consulta aggregationpipeline. OntoMongo e OntoSQL ainda não dão suporte para mapeamentos que necessitem de filtros,como por exemplo no caso do mapeamento do Arquivo 3.1 para o conceito de estágio 4 onde o ma-peamento utiliza filtro na consulta SQL. A implementação desta funcionalidade pode ser disponíveisem versões futuras dos protótipos.

Com a construção do OntoMongo é possível verificar que ainda existe muitos desafios para seutilizar sistemas OBDA com bancos NoSQL. É importante ressaltar os sistemas NoSQL possuemdiversas características que não foram tratadas nesta dissertação. Da mesma forma, existem outrascaracterísticas do sistema MongoDB que não foram tratados neste trabalho.

43

Page 58: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

44 CONCLUSÕES

Este trabalho conseguiu disponibilizar dois protótipos de sistema OBDA OntoMongo e On-toSQL. Apresentando mapeamento mais simples do que o mapeamento utilizado na literatura.

8.2 Sugestões para pesquisas futuras

Como próximos passos, alguns pontos deste trabalho merecem pesquisas mais aprofundadas:

• Criação de instâncias utilizando o método proposto neste trabalho para outros sistemas debanco de dados NoSQL pertencentes a outras famílias de bancos de dados, que contenhamcaracterísticas diferentes do SGBD MongoDB;

• Ampliar o suporte às consultas SPARQL, incluindo os comandos Optional e Order by ;

• Viabilizar a utilização de ontologias mais expressivas no modelo proposto, como OWL;

• Disponibilizar o método proposto como uma biblioteca para desenvolvimento, para que estasolução possa ser utilizada em outros projetos;

• Automatizar a construção da camada intermediária (modelo de objetos) para bancos relacio-nais;

• Através do trabalho feito por Curé et al. (2013), automatizar a construção do modelo deobjetos para bancos de dados NoSQL;

• Analisar em detalhe a diferença de desempenho entre as consultas SQL geradas pelo OntoSQLe pelo Ontop, verificando em quais caso uma das ferramentas produz consultas melhores doque a outra.

Page 59: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice A

Arquivo OWL para ontologia de câncerde pulmão

Arquivo A.1: Ontologia de câncer de pulmão.<?xml ve r s i on ="1.0"?><!DOCTYPE Ontology [

<!ENTITY xsd "http ://www.w3 . org /2001/XMLSchema#" ><!ENTITY xml "http ://www.w3 . org /XML/1998/namespace" ><!ENTITY rd f s " http ://www.w3 . org /2000/01/ rdf−schema#" ><!ENTITY rd f "http ://www.w3 . org /1999/02/22− rdf−syntax−ns#" >

]><Ontology xmlns="http ://www.w3 . org /2002/07/ owl#"

xml : base="http :// exemplo/ ho sp i t a l "xmlns : rd f="http ://www.w3 . org /1999/02/22− rdf−syntax−ns#"xmlns : xml="http ://www.w3 . org /XML/1998/namespace"xmlns : xsd="http ://www.w3 . org /2001/XMLSchema#"xmlns : r d f s="http ://www.w3 . org /2000/01/ rdf−schema#"onto logyIRI="http :// exemplo/ ho sp i t a l ">

<Pre f i x name="" IRI="http :// exemplo/ ho sp i t a l#"/><Pre f i x name="owl" IRI="http ://www.w3 . org /2002/07/ owl#"/><Pre f i x name="rd f " IRI="http ://www.w3 . org /1999/02/22− rdf−syntax−ns#"/><Pre f i x name="xsd" IRI="http ://www.w3 . org /2001/XMLSchema#"/><Pre f i x name="rd f s " IRI="http ://www.w3 . org /2000/01/ rdf−schema#"/><Dec larat ion>

<Class IRI="#Cancer"/></Dec larat ion><Dec larat ion>

<Class IRI="#CancerDePulmao"/></Dec larat ion><Dec larat ion>

<Class IRI="#Estag io"/></Dec larat ion><Dec larat ion>

<Class IRI="#NSCLC"/></Dec larat ion><Dec larat ion>

<Class IRI="#Neoplas ia"/></Dec larat ion><Dec larat ion>

<Class IRI="#Neoplas iaBenigna"/></Dec larat ion><Dec larat ion>

<Class IRI="#Neoplas iaMal igna"/></Dec larat ion><Dec larat ion>

<Class IRI="#Paciente"/></Dec larat ion><Dec larat ion>

45

Page 60: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

46 APÊNDICE A

<Class IRI="#Pessoa"/></Dec larat ion><Dec larat ion>

<Class IRI="#SCLC"/></Dec larat ion><Dec larat ion>

<ObjectProperty IRI="#temEstagio"/></Dec larat ion><Dec larat ion>

<ObjectProperty IRI="#temNeoplasia"/></Dec larat ion><Dec larat ion>

<DataProperty IRI="#temNome"/></Dec larat ion><SubClassOf>

<Class IRI="#Cancer"/><Class IRI="#Neoplas iaMal igna"/>

</SubClassOf><SubClassOf>

<Class IRI="#CancerDePulmao"/><Class IRI="#Cancer"/>

</SubClassOf><SubClassOf>

<Class IRI="#NSCLC"/><Class IRI="#CancerDePulmao"/>

</SubClassOf><SubClassOf>

<Class IRI="#Neoplas iaBenigna"/><Class IRI="#Neoplas ia"/>

</SubClassOf><SubClassOf>

<Class IRI="#Neoplas iaMal igna"/><Class IRI="#Neoplas ia"/>

</SubClassOf><SubClassOf>

<Class IRI="#Paciente"/><Class IRI="#Pessoa"/>

</SubClassOf><SubClassOf>

<Class IRI="#SCLC"/><Class IRI="#CancerDePulmao"/>

</SubClassOf><ObjectPropertyDomain>

<ObjectProperty IRI="#temEstagio"/><Class IRI="#Neoplas ia"/>

</ObjectPropertyDomain><ObjectPropertyDomain>

<ObjectProperty IRI="#temNeoplasia"/><Class IRI="#Paciente"/>

</ObjectPropertyDomain><ObjectPropertyRange>

<ObjectProperty IRI="#temEstagio"/><Class IRI="#Estag io"/>

</ObjectPropertyRange><ObjectPropertyRange>

<ObjectProperty IRI="#temNeoplasia"/><Class IRI="#Neoplas ia"/>

</ObjectPropertyRange><DataPropertyDomain>

<DataProperty IRI="#temNome"/><Class IRI="#Pessoa"/>

</DataPropertyDomain><DataPropertyRange>

<DataProperty IRI="#temNome"/><Datatype abbrev iatedIRI="xsd : s t r i n g "/>

Page 61: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL PARA ONTOLOGIA DE CÂNCER DE PULMÃO 47

</DataPropertyRange></Ontology><!−− Generated by the OWL API ( ve r s i on 3 . 5 . 1 ) http :// owlapi . s ou r c e f o r g e . net

↪→ −−>

Page 62: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

48 APÊNDICE A

Page 63: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice B

Mapeamento do OntoSQL

Arquivo B.1: Mapeamento OntoSQL1 OntoMap . mapping ’ Pesquisador ’ do2 model Pesquisador3 maps from : ’ nomeCompleto ’ , to : : nome4 maps from : ’ nac iona l idade ’ , to : : nac i ona l idade5 maps from : ’ paisDeNascimento ’ , to : : pais_de_nascimento6 maps from : ’ ufNascimento ’ , to : : uf_nascimento7 maps from : ’ s i g l aPa i sNac i ona l i dade ’ , to : : s i g l a_pa i s_nac iona l idade8 maps from : ’ paisDeNacional idade ’ , to : : pais_de_nacional idade9 maps from : ’ nomeEmCitacoesBibl iograf icas ’ , to : :

↪→ nome_em_citacoes_bibl iograf icas10 maps from : ’ textoResumoCvRh ’ , to : : texto_resumo_cv_rh11 maps from : ’ textoResumoRvRhEn ’ , to : : texto_resumo_cv_rh_en12 maps from : ’ permissaoDeDivulgacao ’ , to : : permissao_de_divulgacao13 maps from : ’ numeroIdent i f i cador ’ , to : : numero_ident i f i cador14 end15 OntoMap . mapping ’ Artigo ’ do16 model Art igo17 maps from : ’ natureza ’ , to : : natureza18 maps from : ’ t i t u l o ’ , to : : t i t u l o19 maps from : ’ anoDoArtigo ’ , to : : ano_do_artigo20 maps from : ’ idioma ’ , to : : idioma21 maps from : ’ meioDeDivulgacao ’ , to : : meio_de_divulgacao22 maps from : ’ homePageDoTrabalho ’ , to : : home_page_do_trabalho23 maps from : ’ f l agRe l evanc ia ’ , to : : f l a g_r e l e vanc i a24 maps from : ’ doi ’ , to : : do i25 maps from : ’ t i tu l oDoAr t i go Ing l e s ’ , to : : t i tu lo_do_art igo_ing l e s26 maps from : ’ f l a gD i vu l g a c aoC i en t i f i c a ’ , to : : f l a g_d i vu l g a c ao_c i en t i f i c a27 maps from : ’ volume ’ , to : : volume28 maps from : ’ f a s c i c u l o ’ , to : : f a s c i c u l o29 maps from : ’ s e r i e ’ , to : : s e r i e30 maps from : ’ p a g i n a I n i c i a l ’ , to : : p ag i na_ in i c i a l31 maps from : ’ paginaFinal ’ , to : : pag ina_f ina l32 maps from : ’ t ipo ’ , to : : t i po33 end34 OntoMap . mapping ’ ArtigoEmRevista ’ do35 model Revista36 maps from : ’ t i tu loDoPer iod icoOuRevista ’ , to : :

↪→ t i tu lo_do_per iodico_ou_revista37 maps from : ’ i s sn ’ , to : : i s s n38 maps from : ’ loca lDePubl icacao ’ , to : : loca l_de_publ icacao39 maps from : ’ pais ’ , to : : pa i s40 end41 OntoMap . mapping ’ ArtigoEmEvento ’ do42 model Evento43 maps from : ’ c l a s s i f i cacaoDoEvento ’ , to : : c l a s s i f i cacao_do_evento44 maps from : ’ nomeDoEvento ’ , to : : nome_do_evento

49

Page 64: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

50 APÊNDICE B

45 maps from : ’ cidadeDoEvento ’ , to : : cidade_do_evento46 maps from : ’ anoDeRealizacao ’ , to : : ano_de_real izacao47 maps from : ’ t i tuloDosAnaisOuProceedings ’ , to : :

↪→ t itulo_dos_anais_ou_proceedings48 maps from : ’ isbn ’ , to : : i sbn49 maps from : ’ nomeDaEditora ’ , to : : nome_da_editora50 maps from : ’ cidadeDaEditora ’ , to : : cidade_da_editora51 maps from : ’ pais ’ , to : : pa i s52 end53 OntoMap . mapping ’ Coautor ’ do54 model Coautor55 maps from : ’ nomeCompletoDoAutor ’ , to : : nome_completo_do_autor56 maps from : ’ nomeParaCitacao ’ , to : : nome_para_citacao57 maps from : ’ ordemDeAutoria ’ , to : : ordem_de_autoria58 maps from : ’ nroIdCnpq ’ , to : : nro_id_cnpq59 end60 OntoMap . mapping ’ AreaDoConhecimento ’ do61 model AreaDoConhecimento62 maps from : ’ nomeGrandeAreaDoConhecimento ’ , to : :

↪→ nome_grande_area_do_conhecimento63 maps from : ’ nomeDaAreaDConhecimento ’ , to : : nome_da_area_do_conhecimento64 maps from : ’ nomeDaSubAreaDoConhecimento ’ , to : :

↪→ nome_da_sub_area_do_conhecimento65 maps from : ’ nomeDaEspecialidade ’ , to : : nome_da_especialidade66 end

Page 65: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice C

Mapeamento Ontop

Arquivo C.1: Mapeamento Ontop1 [ PrefixDeclaration ]2 : http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#3 owl : http ://www.w3 . org /2002/07/ owl#4 rd f : http ://www.w3 . org /1999/02/22− rdf−syntax−ns#5 xsd : http ://www.w3 . org /2001/XMLSchema#6 rd f s : http ://www.w3 . org /2000/01/ rdf−schema#78 [ SourceDeclaration ]9 sourceUri onto sq l

10 connectionUrl jdbc : p o s t g r e s q l : // l o c a l h o s t /myapp_development11 username Barbara12 password13 driverClass org . p o s t g r e s q l . Dr iver1415 [ MappingDeclaration ] @co l l e c t i on [ [16 mappingId mapping−Pesquisador17 target : Pesquisador /{ id } rd f : type : Pesquisador .18 source s e l e c t id from pesqu i sador1920 mappingId mapping−Pesquisador−nomeCompleto21 target : Pesquisador /{ id } : nomeCompleto {nome}^^xsd : s t r i n g .22 source s e l e c t id , nome from pesqu i sador ;2324 mappingId mapping−Pesquisador−nac i ona l i dade25 target : Pesquisador /{ id } : nac i ona l idade { nac i ona l idade }^^xsd : s t r i n g .26 source s e l e c t id , nac i ona l idade from pesqu i sador ;2728 mappingId mapping−Pesquisador−paisDeNascimento29 target : Pesquisador /{ id } : paisDeNascimento {pais_de_nascimento}^^xsd : s t r i n g

↪→ .30 source s e l e c t id , pais_de_nascimento from pesqu i sador ;3132 mappingId mapping−Pesquisador−ufNascimento33 target : Pesquisador /{ id } : ufNascimento {uf_nascimento}^^xsd : s t r i n g .34 source s e l e c t id , uf_nascimento from pesqu i sador ;3536 mappingId mapping−Pesquisador−s i g l aPa i sNac i ona l i d ade37 target : Pesquisador /{ id } : s i g l aPa i sNac i ona l i dade { s i g l a_pa i s_nac iona l idade

↪→ }^^xsd : s t r i n g .38 source s e l e c t id , s i g l a_pa i s_nac iona l idade from pesqu i sador ;3940 mappingId mapping−Pesquisador−paisDeNaciona l idade41 target : Pesquisador /{ id } : pa isDeNacional idade { pais_de_nacional idade}^^xsd :

↪→ s t r i n g .42 source s e l e c t id , pais_de_nacional idade from pesqu i sador ;43

51

Page 66: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

52 APÊNDICE C

44 mappingId mapping−Pesquisador−nomeEmCitacoesBib l iogra f icas45 target : Pesquisador /{ id } : nomeEmCitacoesBib l iogra f icas {

↪→ nome_em_citacoes_bibl iograf icas}^^xsd : s t r i n g .46 source s e l e c t id , nome_em_citacoes_bibl iograf icas from pesqu i sador ;4748 mappingId mapping−Pesquisador−textoResumoCvRh49 target : Pesquisador /{ id } : textoResumoCvRh {texto_resumo_cv_rh}^^xsd : s t r i n g

↪→ .50 source s e l e c t id , texto_resumo_cv_rh from pesqu i sador ;5152 mappingId mapping−Pesquisador−textoResumoRvRhEn53 target : Pesquisador /{ id } : textoResumoRvRhEn {texto_resumo_cv_rh_en}^^xsd :

↪→ s t r i n g .54 source s e l e c t id , texto_resumo_cv_rh_en from pesqu i sador ;5556 mappingId mapping−Pesquisador−permissaoDeDivulgacao57 target : Pesquisador /{ id } : permissaoDeDivulgacao {permissao_de_divulgacao}^^

↪→ xsd : s t r i n g .58 source s e l e c t id , permissao_de_divulgacao from pesqu i sador ;5960 mappingId mapping−Pesquisador−numero Ident i f i cador61 target : Pesquisador /{ id } : numero Ident i f i cador { numero_ident i f i cador}^^xsd :

↪→ s t r i n g .62 source s e l e c t id , numero_ident i f i cador from pesqu i sador ;6364 mappingId mapping−Pesquisador−publ icou−Art igoPubl icado65 target : Pesquisador /{ id_pesquisador } : publ i cou : Art igoPubl icado /{ id_art igo }

↪→ .66 source s e l e c t pesqu i sador . id as id_pesquisador , r e v i s t a . id as id_art igo

↪→ from pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n r e v i s t a on a r t i g o . id = r e v i s t a . ar t igo_id

6768 mappingId mapping−Coautor69 target : Coautor /{ id } rd f : type : Coautor .70 source s e l e c t " id " from coautor ;7172 mappingId mapping−Coautor−nomeCompleto73 target : Coautor /{ id } : nomeCompleto {nome_completo_do_autor}^^xsd : s t r i n g .74 source s e l e c t id , nome_completo_do_autor from coautor ;7576 mappingId mapping−Coautor−nomeParaCitacao77 target : Coautor /{ id } : nomeParaCitacao {nome_para_citacao}^^xsd : s t r i n g .78 source s e l e c t id , nome_para_citacao from coautor ;7980 mappingId mapping−Coautor−ordemDeAutoria81 target : Coautor /{ id } : ordemDeAutoria {ordem_de_autoria}^^xsd : i n t .82 source s e l e c t id , ordem_de_autoria from coautor ;8384 mappingId mapping−Coautor−nroIdCnpq85 target : Coautor /{ id } : nroIdCnpq {nro_id_cnpq}^^xsd : s t r i n g .86 source s e l e c t id , nro_id_cnpq from coautor ;8788 mappingId mapping−AreaDoConhecimento89 target : AreaDeConhecimento/{ id } a : AreaDeConhecimento .90 source s e l e c t id from area_do_conhecimento ;9192 mappingId mapping−AreaDoConhecimento−nomeGrandeAreaDoConhecimento93 target : AreaDeConhecimento/{ id } : nomeGrandeAreaDoConhecimento {

↪→ nome_grande_area_do_conhecimento}^^xsd : s t r i n g .94 source s e l e c t id , nome_grande_area_do_conhecimento from

↪→ area_do_conhecimento ;9596 mappingId mapping−AreaDoConhecimento−nomeDaAreaDConhecimento97 target : AreaDeConhecimento/{ id } : nomeDaAreaDConhecimento {

↪→ nome_da_area_do_conhecimento}^^xsd : s t r i n g .

Page 67: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

MAPEAMENTO ONTOP 53

98 source s e l e c t id , nome_da_area_do_conhecimento from area_do_conhecimento ;99

100 mappingId mapping−AreaDoConhecimento−nomeDaSubAreaDoConhecimento101 target : AreaDeConhecimento/{ id } : nomeDaSubAreaDoConhecimento {

↪→ nome_da_sub_area_do_conhecimento}^^xsd : s t r i n g .102 source s e l e c t id , nome_da_sub_area_do_conhecimento from

↪→ area_do_conhecimento ;103104 mappingId mapping−AreaDoConhecimento−nomeDaEspecialidade105 target : AreaDeConhecimento/{ id } : nomeDaEspecialidade {nome_da_especialidade

↪→ }^^xsd : s t r i n g .106 source s e l e c t id , nome_da_especialidade from area_do_conhecimento ;107108 mappingId mapping−Art igoPubl icado109 target : Art igoPubl icado /{ id } rd f : type : Art igoPubl icado .110 source s e l e c t id from r e v i s t a111112 mappingId mapping−Pesquisador−publ icou−TrabalhoEmEvento113 target : Pesquisador /{ id_pesquisador } : publ i cou : TrabalhoEmEvento/{ id_art igo

↪→ } .114 source s e l e c t pesqu i sador . id as id_pesquisador , evento . id as id_art igo from

↪→ pesqu i sador j o i n a r t i g o on pesqu i sador . id =a r t i g o . pesquisador_id↪→ j o i n evento on a r t i g o . id = evento . ar t igo_id

115116 mappingId mapping−TrabalhoEmEvento117 target : TrabalhoEmEvento/{ id } rd f : type : TrabalhoEmEvento .118 source s e l e c t id from evento119120 mappingId mapping−ArtigoPubl icado−t i t u l o121 target : Art igoPubl icado /{ id } : t i t u l o { t i t u l o }^^xsd : s t r i n g .122 source s e l e c t r e v i s t a . id as id , a r t i g o . t i t u l o as t i t u l o from a r t i g o j o i n

↪→ r e v i s t a on a r t i g o . id = r e v i s t a . ar t igo_id123124 mappingId mapping−TrabalhoEmEvento−t i t u l o125 target : TrabalhoEmEvento/{ id } : t i t u l o { t i t u l o }^^xsd : s t r i n g .126 source s e l e c t evento . id as id , a r t i g o . t i t u l o from a r t i g o j o i n evento on

↪→ a r t i g o . id = evento . ar t igo_id127128 mappingId mapping−Coautors−publ icou−Art igoPubl icado129 target : Coautors /{ coautor_id } : publ i cou : Art igoPubl icado /{ rev i s t a_id } .130 source s e l e c t coautor . id as coautor_id , r e v i s t a . id as r ev i s t a_ id from

↪→ coautor j o i n a r t i g o on coautor . a r t igo_id = a r t i g o . id j o i n r e v i s t a on↪→ a r t i g o . id = r e v i s t a . a r t igo_id

131132 mappingId mapping−Coautor−publ icou−TrabalhoEmEvento133 target : Coautor /{ coautor_id } : publ i cou : TrabalhoEmEvento/{ evento_id} .134 source s e l e c t coautor . id as coautor_id , evento . id as evento_id from coautor

↪→ j o i n a r t i g o on coautor . a r t igo_id = a r t i g o . id j o i n evento on a r t i g o .↪→ id = evento . ar t igo_id

135 ] ]

Page 68: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

54 APÊNDICE C

Page 69: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice D

Esquema de banco de dados

Arquivo D.1: Esquema de banco de dados1 ActiveRecord : : Schema . d e f i n e ( v e r s i on : 20170629010350) do23 enable_extens ion " p lpg sq l "45 create_tab le "area_de_atuacaos " , f o r c e : : cascade do | t |6 t . s t r i n g " sequencia_area_de_atuacao"7 t . s t r i n g "nome_grande_area_do_conhecimento"8 t . s t r i n g "nome_da_area_do_conhecimento"9 t . s t r i n g "nome_da_sub_area_do_conhecimento"

10 t . s t r i n g "nome_da_especialidade"11 t . i n t e g e r " pesquisador_id "12 t . datet ime " created_at " , nu l l : f a l s e13 t . datet ime "updated_at " , nu l l : f a l s e14 t . index [ " pesquisador_id " ] , name : "

↪→ index_area_de_atuacaos_on_pesquisador_id " , us ing : : b t r ee15 end1617 create_tab le "area_do_conhecimentos " , f o r c e : : cascade do | t |18 t . s t r i n g "nome_grande_area_do_conhecimento"19 t . s t r i n g "nome_da_area_do_conhecimento"20 t . s t r i n g "nome_da_sub_area_do_conhecimento"21 t . s t r i n g "nome_da_especialidade"22 t . datet ime " created_at " , nu l l : f a l s e23 t . datet ime "updated_at " , nu l l : f a l s e24 t . i n t e g e r " art igo_id "25 t . index [ " art igo_id " ] , name : " index_area_do_conhecimentos_on_artigo_id

↪→ " , us ing : : b t r ee26 end2728 create_tab le " a r t i g o s " , f o r c e : : cascade do | t |29 t . s t r i n g " natureza "30 t . s t r i n g " t i t u l o "31 t . i n t e g e r "ano_do_artigo"32 t . s t r i n g " idioma"33 t . s t r i n g "meio_de_divulgacao"34 t . s t r i n g "home_page_do_trabalho"35 t . boolean " f l a g_re l e vanc i a "36 t . s t r i n g " doi "37 t . s t r i n g " t i tu lo_do_art igo_ing l e s "38 t . boolean " f l a g_d i vu l g a c ao_c i en t i f i c a "39 t . s t r i n g "volume"40 t . s t r i n g " f a s c i c u l o "41 t . s t r i n g " s e r i e "42 t . i n t e g e r " pag i na_ in i c i a l "43 t . i n t e g e r " pag ina_f ina l "44 t . s t r i n g " t ipo "

55

Page 70: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

56 APÊNDICE D

45 t . i n t e g e r " pesquisador_id "46 t . datet ime " created_at " , nu l l : f a l s e47 t . datet ime "updated_at " , nu l l : f a l s e48 t . index [ " pesquisador_id " ] , name : " index_artigos_on_pesquisador_id " ,

↪→ us ing : : b t r ee49 end5051 create_tab le " a tuacao_pro f i s s i ona l s " , f o r c e : : cascade do | t |52 t . s t r i n g " cod i go_ in s t i t u i c ao "53 t . s t r i n g " nome_inst i tu icao "54 t . i n t e g e r " sequenc ia_at iv idade "55 t . i n t e g e r " sequencia_importancia "56 t . i n t e g e r " pesquisador_id "57 t . datet ime " created_at " , nu l l : f a l s e58 t . datet ime "updated_at " , nu l l : f a l s e59 t . index [ " pesquisador_id " ] , name : "

↪→ index_atuacao_prof iss ionals_on_pesquisador_id " , us ing : : b t r ee60 end6162 create_tab le " coautor s " , f o r c e : : cascade do | t |63 t . s t r i n g "nome_completo_do_autor"64 t . s t r i n g "nome_para_citacao"65 t . i n t e g e r "ordem_de_autoria"66 t . s t r i n g "nro_id_cnpq"67 t . datet ime " created_at " , nu l l : f a l s e68 t . datet ime "updated_at " , nu l l : f a l s e69 t . i n t e g e r " art igo_id "70 t . index [ " art igo_id " ] , name : " index_coautors_on_artigo_id " , us ing : :

↪→ btree71 end7273 create_tab le " enderecos " , f o r c e : : cascade do | t |74 t . s t r i n g " f l ag_de_pre f e renc ia "75 t . s t r i n g " codigo_inst i tu icao_empresa "76 t . s t r i n g "nome_instituicao_empresa"77 t . s t r i n g " codigo_unidade"78 t . s t r i n g "nome_unidade"79 t . s t r i n g " codigo_orgao"80 t . s t r i n g "nome_orgao"81 t . s t r i n g " pa i s "82 t . s t r i n g " uf "83 t . s t r i n g " logradouro_complemento"84 t . s t r i n g " ba i r r o "85 t . s t r i n g " c idade "86 t . s t r i n g " ca ixa_posta l "87 t . s t r i n g "cep"88 t . s t r i n g "ddd"89 t . s t r i n g " t e l e f o n e "90 t . s t r i n g " ramal"91 t . s t r i n g " fax "92 t . s t r i n g "home_page"93 t . i n t e g e r " pesquisador_id "94 t . datet ime " created_at " , nu l l : f a l s e95 t . datet ime "updated_at " , nu l l : f a l s e96 t . index [ " pesquisador_id " ] , name : " index_enderecos_on_pesquisador_id " ,

↪→ us ing : : b t r ee97 end9899 create_tab le " eventos " , f o r c e : : cascade do | t |

100 t . s t r i n g " c la s s i f i cacao_do_evento "101 t . s t r i n g "nome_do_evento"102 t . s t r i n g "cidade_do_evento"103 t . i n t e g e r " ano_de_real izacao "104 t . s t r i n g " titulo_dos_anais_ou_proceedings "105 t . s t r i n g " i sbn "

Page 71: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ESQUEMA DE BANCO DE DADOS 57

106 t . s t r i n g "nome_da_editora"107 t . s t r i n g " cidade_da_editora "108 t . s t r i n g " pa i s "109 t . i n t e g e r " art igo_id "110 t . datet ime " created_at " , nu l l : f a l s e111 t . datet ime "updated_at " , nu l l : f a l s e112 t . index [ " art igo_id " ] , name : " index_eventos_on_artigo_id " , us ing : :

↪→ btree113 end114115 create_tab le " formacao_academicas " , f o r c e : : cascade do | t |116 t . s t r i n g " t ipo "117 t . s t r i n g " t itu lo_do_trabalho "118 t . s t r i n g "nome_do_orientador"119 t . s t r i n g " nome_inst i tu icao "120 t . s t r i n g "nome_curso"121 t . s t r i n g " status_do_curso"122 t . i n t e g e r " ano_de_inicio "123 t . i n t e g e r "ano_de_conclusao"124 t . boolean " f l ag_bo l sa "125 t . s t r i n g "nome_agencia"126 t . s t r i n g " codigo_curso_capes "127 t . i n t e g e r "ano_de_obtencao_do_titulo"128 t . s t r i n g "nome_completo_do_orientador"129 t . i n t e g e r " pesquisador_id "130 t . datet ime " created_at " , nu l l : f a l s e131 t . datet ime "updated_at " , nu l l : f a l s e132 t . index [ " pesquisador_id " ] , name : "

↪→ index_formacao_academicas_on_pesquisador_id " , us ing : : b t r ee133 end134135 create_tab le " idiomas " , f o r c e : : cascade do | t |136 t . s t r i n g " idioma"137 t . s t r i n g "descricao_do_idioma"138 t . s t r i n g " p ro f i c i e n c i a_de_ l e i t u r a "139 t . s t r i n g " p ro f i c i enc i a_de_fa l a "140 t . s t r i n g " p ro f i c i e n c i a_de_e s c r i t a "141 t . s t r i n g " prof ic ienc ia_de_compreensao "142 t . i n t e g e r " pesquisador_id "143 t . datet ime " created_at " , nu l l : f a l s e144 t . datet ime "updated_at " , nu l l : f a l s e145 t . index [ " pesquisador_id " ] , name : " index_idiomas_on_pesquisador_id " ,

↪→ us ing : : b t r ee146 end147148 create_tab le "keywords " , f o r c e : : cascade do | t |149 t . s t r i n g " d e s c r i c a o "150 t . datet ime " created_at " , nu l l : f a l s e151 t . datet ime "updated_at " , nu l l : f a l s e152 t . i n t e g e r " art igo_id "153 t . index [ " art igo_id " ] , name : " index_keywords_on_artigo_id " , us ing : :

↪→ btree154 end155156 create_tab le " pe squ i sador s " , f o r c e : : cascade do | t |157 t . s t r i n g "nome"158 t . s t r i n g " nome_em_citacoes_bibl iograf icas "159 t . s t r i n g "texto_resumo_cv_rh"160 t . datet ime " created_at " , nu l l : f a l s e161 t . datet ime "updated_at " , nu l l : f a l s e162 t . s t r i n g "texto_resumo_cv_rh_en"163 t . s t r i n g " nac i ona l idade "164 t . s t r i n g "pais_de_nascimento"165 t . s t r i n g "uf_nascimento"166 t . s t r i n g " cidade_nascimento"

Page 72: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

58 APÊNDICE D

167 t . s t r i n g "permissao_de_divuldacao"168 t . s t r i n g " s ig l a_pa i s_nac iona l idade "169 t . s t r i n g " pais_de_nacional idade "170 t . s t r i n g "permissao_de_divulgacao"171 t . s t r i n g " numero_ident i f i cador "172 end173174 create_tab le " r e v i s t a " , f o r c e : : cascade do | t |175 t . s t r i n g " t i tu lo_do_per iodico_ou_revista "176 t . s t r i n g " i s s n "177 t . s t r i n g " local_de_publ icacao "178 t . s t r i n g " pa i s "179 t . i n t e g e r " art igo_id "180 t . datet ime " created_at " , nu l l : f a l s e181 t . datet ime "updated_at " , nu l l : f a l s e182 t . index [ " art igo_id " ] , name : " index_revista_on_artigo_id " , us ing : :

↪→ btree183 end184185 create_tab le " v in cu l o s " , f o r c e : : cascade do | t |186 t . i n t e g e r " s equenc i a_h i s t o r i c o "187 t . s t r i n g " tipo_de_vinculo "188 t . s t r i n g " enquadramento_funcional "189 t . i n t e g e r " carga_horaria_semanal "190 t . boolean " f lag_ded icacao_exc lus iva "191 t . i n t e g e r "mes_inic io "192 t . i n t e g e r " ano_in ic io "193 t . i n t e g e r "mes_fim"194 t . i n t e g e r "ano_fim"195 t . s t r i n g " outras_informacoes "196 t . boolean " f lag_vincu lo_empregat i c io "197 t . s t r i n g " outro_vinculo_informado"198 t . s t r i n g "outro_enquadramento_funcional_informado"199 t . s t r i n g "outro_enquadramento_funcional_informado_ingles "200 t . s t r i n g " outras_in formacoes_ing les "201 t . i n t e g e r " atuacao_pro f i s s i ona l_id "202 t . datet ime " created_at " , nu l l :

↪→ f a l s e203 t . datet ime "updated_at " , nu l l :

↪→ f a l s e204 t . index [ " atuacao_pro f i s s i ona l_id " ] , name : "

↪→ index_vinculos_on_atuacao_prof iss ional_id " , us ing : : b t r ee205 end206207 add_foreign_key "area_de_atuacaos " , " pe squ i sador s "208 add_foreign_key "area_do_conhecimentos " , " a r t i g o s "209 add_foreign_key " a r t i g o s " , " pe squ i sador s "210 add_foreign_key " a tuacao_pro f i s s i ona l s " , " pe squ i sador s "211 add_foreign_key " coautor s " , " a r t i g o s "212 add_foreign_key " enderecos " , " pe squ i sador s "213 add_foreign_key " eventos " , " a r t i g o s "214 add_foreign_key " formacao_academicas " , " pe squ i sador s "215 add_foreign_key " idiomas " , " pe squ i sador s "216 add_foreign_key "keywords " , " a r t i g o s "217 add_foreign_key " r e v i s t a " , " a r t i g o s "218 add_foreign_key " v in cu l o s " , " a tua cao_pro f i s s i ona l s "219 end

Page 73: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice E

Consulta SQL gerada pelo sistema Ontop

Arquivo E.1: Consulta SQL gerada pelo Sistema Ontop1 SELECT ∗2 FROM (3 SELECT4 1 AS " researcherQuestType " , NULL AS " researcherLang " , ( ’ http ://www. onto .

↪→ org /obda/ bas ic−l a t t e s−f i n a l#Pesquisador / ’ | | REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(CAST(QVIEW1." pesquisador_id " AS VARCHAR(10485760) ) , ’ ’ ,↪→ ’\%20 ’) , ’ ! ’ , ’\%21 ’) , ’@’ , ’\%40 ’) , ’# ’ , ’\%23 ’) , ’ $ ’ , ’\%24 ’) , ’& ’ ,↪→ ’\%26 ’) , ’∗ ’ , ’\%42 ’) , ’ ( ’ , ’\%28 ’) , ’ ) ’ , ’\%29 ’) , ’ [ ’ , ’\%5B’ ) ,↪→ ’ ] ’ , ’\%5D’ ) , ’ , ’ , ’\%2C’ ) , ’ ; ’ , ’\%3B’ ) , ’ : ’ , ’\%3A’ ) , ’ ? ’ , ’\%3F↪→ ’ ) , ’= ’ , ’\%3D’ ) , ’+ ’ , ’\%2B’ ) , ’ ’ ’ ’ , ’\%22 ’) , ’ / ’ , ’\%2F ’ ) ) AS "↪→ r e s e a r ch e r " ,

5 1 AS "artigoQuestType " , NULL AS " art igoLang " , ( ’ http ://www. onto . org /obda↪→ / bas ic−l a t t e s−f i n a l#TrabalhoEmEvento / ’ | | REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ CAST(QVIEW1." id " AS VARCHAR(10485760) ) , ’ ’ , ’\%20 ’) , ’ ! ’ , ’\%21 ’) , ’↪→ @’ , ’\%40 ’) , ’# ’ , ’\%23 ’) , ’ $ ’ , ’\%24 ’) , ’& ’ , ’\%26 ’) , ’∗ ’ , ’\%42 ’) ,↪→ ’ ( ’ , ’\%28 ’) , ’ ) ’ , ’\%29 ’) , ’ [ ’ , ’\%5B’ ) , ’ ] ’ , ’\%5D’ ) , ’ , ’ , ’\%2C↪→ ’ ) , ’ ; ’ , ’\%3B’ ) , ’ : ’ , ’\%3A’ ) , ’ ? ’ , ’\%3F ’ ) , ’= ’ , ’\%3D’ ) , ’+ ’ ,↪→ ’\%2B’ ) , ’ ’ ’ ’ , ’\%22 ’) , ’ / ’ , ’\%2F ’ ) ) AS " a r t i g o " ,

6 7 AS " t itu loQuestType " , NULL AS " t i tu loLang " , QVIEW1." t i t u l o " AS " t i t u l o↪→ "

7 FROM8 a r t i g o QVIEW1,9 evento QVIEW2,

10 pesqu i sador QVIEW3,11 evento QVIEW412 WHERE13 (QVIEW1." id " = QVIEW2." art igo_id ") AND14 QVIEW1." id " IS NOT NULL AND15 QVIEW1." t i t u l o " IS NOT NULL AND16 (QVIEW1." pesquisador_id " = QVIEW3." id ") AND17 (QVIEW1." id " = QVIEW4." art igo_id ") AND18 QVIEW1." pesquisador_id " IS NOT NULL19 UNION20 SELECT21 1 AS " researcherQuestType " , NULL AS " researcherLang " , ( ’ http ://www. onto .

↪→ org /obda/ bas ic−l a t t e s−f i n a l#Pesquisador / ’ | | REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(CAST(QVIEW1." pesquisador_id " AS VARCHAR(10485760) ) , ’ ’ ,↪→ ’\%20 ’) , ’ ! ’ , ’\%21 ’) , ’@’ , ’\%40 ’) , ’# ’ , ’\%23 ’) , ’ $ ’ , ’\%24 ’) , ’& ’ ,↪→ ’\%26 ’) , ’∗ ’ , ’\%42 ’) , ’ ( ’ , ’\%28 ’) , ’ ) ’ , ’\%29 ’) , ’ [ ’ , ’\%5B’ ) ,↪→ ’ ] ’ , ’\%5D’ ) , ’ , ’ , ’\%2C’ ) , ’ ; ’ , ’\%3B’ ) , ’ : ’ , ’\%3A’ ) , ’ ? ’ , ’\%3F

59

Page 74: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

60 APÊNDICE E

↪→ ’ ) , ’= ’ , ’\%3D’ ) , ’+ ’ , ’\%2B’ ) , ’ ’ ’ ’ , ’\%22 ’) , ’ / ’ , ’\%2F ’ ) ) AS "↪→ r e s e a r ch e r " ,

22 1 AS "artigoQuestType " , NULL AS " art igoLang " , ( ’ http ://www. onto . org /obda↪→ / bas ic−l a t t e s−f i n a l#Art igoPubl icado / ’ | | REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(↪→ CAST(QVIEW1." id " AS VARCHAR(10485760) ) , ’ ’ , ’\%20 ’) , ’ ! ’ , ’\%21 ’) , ’↪→ @’ , ’\%40 ’) , ’# ’ , ’\%23 ’) , ’ $ ’ , ’\%24 ’) , ’& ’ , ’\%26 ’) , ’∗ ’ , ’\%42 ’) ,↪→ ’ ( ’ , ’\%28 ’) , ’ ) ’ , ’\%29 ’) , ’ [ ’ , ’\%5B’ ) , ’ ] ’ , ’\%5D’ ) , ’ , ’ , ’\%2C↪→ ’ ) , ’ ; ’ , ’\%3B’ ) , ’ : ’ , ’\%3A’ ) , ’ ? ’ , ’\%3F ’ ) , ’= ’ , ’\%3D’ ) , ’+ ’ ,↪→ ’\%2B’ ) , ’ ’ ’ ’ , ’\%22 ’) , ’ / ’ , ’\%2F ’ ) ) AS " a r t i g o " ,

23 7 AS " t itu loQuestType " , NULL AS " t i tu loLang " , QVIEW1." t i t u l o " AS " t i t u l o↪→ "

24 FROM25 a r t i g o QVIEW1,26 r e v i s t a QVIEW2,27 pesqu i sador QVIEW3,28 r e v i s t a QVIEW429 WHERE30 (QVIEW1." id " = QVIEW2." art igo_id ") AND31 QVIEW1." id " IS NOT NULL AND32 QVIEW1." t i t u l o " IS NOT NULL AND33 (QVIEW1." pesquisador_id " = QVIEW3." id ") AND34 (QVIEW1." id " = QVIEW4." art igo_id ") AND35 QVIEW1." pesquisador_id " IS NOT NULL36 ) SUB_QVIEW

Page 75: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice F

Estrutura do arquivo JSON armazenadono MongoDB

{"_id " : "" ," ident i f i ca t ion_number " : "" ,"name" : "" ,"name_in_citations " : """ country " : "" ," resume " : "" ," pub l i c a t i o n s " : [ {

"_id " : " " ," nature " : "" ," t i t l e " : "" ," t i t l e_en " : "" ," year " : "" ," country " : "" ," language " : "" ,"medium" : "" ," do i " : "" ," coauthors " : [ {

"name" : "" ,"name_in_citations " : "" ," ident i f i ca t ion_number " : ""

} ]} ]} ]

}

61

Page 76: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

62 APÊNDICE F

Page 77: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice G

Estrutura do arquivo XML extraído peloScriptLattes

<?xml ve r s i on="" encoding="" standa lone=""?><CURRICULO−VITAE SISTEMA−ORIGEM−XML="" DATA−ATUALIZACAO="" HORA−ATUALIZACAO

↪→ ="" NUMERO−IDENTIFICADOR=""><DADOS−GERAIS

NOME−COMPLETO=""NOME−EM−CITACOES−BIBLIOGRAFICAS=""NACIONALIDADE=""PAIS−DE−NASCIMENTO=""UF−NASCIMENTO=""CIDADE−NASCIMENTO=""PERMISSAO−DE−DIVULGACAO=""DATA−FALECIMENTO=""SIGLA−PAIS−NACIONALIDADE=""PAIS−DE−NACIONALIDADE=""><RESUMO−CV

TEXTO−RESUMO−CV−RH=""TEXTO−RESUMO−CV−RH−EN=""/><OUTRAS−INFORMACOES−RELEVANTES OUTRAS−INFORMACOES−RELEVANTES=""/>

<ENDERECO FLAG−DE−PREFERENCIA=""><ENDERECO−PROFISSIONAL

CODIGO−INSTITUICAO−EMPRESA=""NOME−INSTITUICAO−EMPRESA=""CODIGO−UNIDADE=""NOME−UNIDADE=""CODIGO−ORGAO=""NOME−ORGAO=""PAIS=""UF=""LOGRADOURO−COMPLEMENTO=""BAIRRO=""CIDADE=""CAIXA−POSTAL=""CEP=""DDD=""TELEFONE=""RAMAL=""FAX=""HOME−PAGE=""/>

</ENDERECO><FORMACAO−ACADEMICA−TITULACAO>

<GRADUACAOSEQUENCIA−FORMACAO=""NIVEL=""TITULO−DO−TRABALHO−DE−CONCLUSAO−DE−CURSO=""NOME−DO−ORIENTADOR=""

63

Page 78: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

64 APÊNDICE G

CODIGO−INSTITUICAO=""NOME−INSTITUICAO=""CODIGO−CURSO=""NOME−CURSO=""CODIGO−AREA−CURSO=""STATUS−DO−CURSO=""ANO−DE−INICIO=""ANO−DE−CONCLUSAO=""FLAG−BOLSA=""TIPO−GRADUACAO=""CODIGO−INSTITUICAO−GRAD=""NOME−INSTITUICAO−GRAD=""CODIGO−INSTITUICAO−OUTRA−GRAD=""NOME−INSTITUICAO−OUTRA−GRAD=""NOME−ORIENTADOR−GRAD=""CODIGO−AGENCIA−FINANCIADORA=""NOME−AGENCIA=""NUMERO−ID−ORIENTADOR=""CODIGO−CURSO−CAPES=""TITULO−DO−TRABALHO−DE−CONCLUSAO−DE−CURSO−INGLES=""NOME−CURSO−INGLES=""/><MESTRADO

SEQUENCIA−FORMACAO=""NIVEL=""CODIGO−INSTITUICAO=""NOME−INSTITUICAO=""CODIGO−CURSO=""NOME−CURSO=""CODIGO−AREA−CURSO=""STATUS−DO−CURSO=""ANO−DE−INICIO=""ANO−DE−CONCLUSAO=""FLAG−BOLSA=""TIPO−MESTRADO=""CODIGO−INSTITUICAO−DOUT=""NOME−INSTITUICAO−DOUT=""CODIGO−INSTITUICAO−OUTRA−DOUT=""NOME−INSTITUICAO−OUTRA−DOUT=""NOME−ORIENTADOR−DOUT=""CODIGO−AGENCIA−FINANCIADORA=""NOME−AGENCIA=""ANO−DE−OBTENCAO−DO−TITULO=""TITULO−DA−DISSERTACAO−TESE=""NOME−COMPLETO−DO−ORIENTADOR=""NUMERO−ID−ORIENTADOR=""CODIGO−CURSO−CAPES=""TITULO−DA−DISSERTACAO−TESE−INGLES=""NOME−CURSO−INGLES=""NOME−DO−CO−ORIENTADOR=""><PALAVRAS−CHAVE PALAVRA−CHAVE−1="" PALAVRA−CHAVE−2=""

↪→ PALAVRA−CHAVE−3="" PALAVRA−CHAVE−4="" PALAVRA−CHAVE↪→ −5="" PALAVRA−CHAVE−6=""/>

<AREAS−DO−CONHECIMENTO><AREA−DO−CONHECIMENTO−1 NOME−GRANDE−AREA−DO−CONHECIMENTO

↪→ ="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−SUB−↪→ AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE=""/><↪→ AREA−DO−CONHECIMENTO−2 NOME−GRANDE−AREA−DO−↪→ CONHECIMENTO="" NOME−DA−AREA−DO−CONHECIMENTO=""↪→ NOME−DA−SUB−AREA−DO−CONHECIMENTO="" NOME−DA−↪→ ESPECIALIDADE=""/></AREAS−DO−CONHECIMENTO><SETORES−↪→ DE−ATIVIDADE SETOR−DE−ATIVIDADE−1="" SETOR−DE−↪→ ATIVIDADE−2="" SETOR−DE−ATIVIDADE−3=""/></MESTRADO>

</FORMACAO−ACADEMICA−TITULACAO><ATUACOES−PROFISSIONAIS>

<ATUACAO−PROFISSIONAL CODIGO−INSTITUICAO=""

Page 79: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ESTRUTURA DO ARQUIVO XML EXTRAÍDO PELO SCRIPTLATTES 65

NOME−INSTITUICAO=""SEQUENCIA−ATIVIDADE="" SEQUENCIA−IMPORTANCIA=""><VINCULOS

SEQUENCIA−HISTORICO=""TIPO−DE−VINCULO=""ENQUADRAMENTO−FUNCIONAL=""CARGA−HORARIA−SEMANAL=""FLAG−DEDICACAO−EXCLUSIVA=""MES−INICIO=""ANO−INICIO=""MES−FIM=""ANO−FIM=""OUTRAS−INFORMACOES=""FLAG−VINCULO−EMPREGATICIO=""OUTRO−VINCULO−INFORMADO=""OUTRO−ENQUADRAMENTO−FUNCIONAL−INFORMADO=""OUTRO−ENQUADRAMENTO−FUNCIONAL−INFORMADO−INGLES=""OUTRAS−INFORMACOES−INGLES=""/>

</ATUACAO−PROFISSIONAL></ATUACOES−PROFISSIONAIS><AREAS−DE−ATUACAO>

<AREA−DE−ATUACAOSEQUENCIA−AREA−DE−ATUACAO=""NOME−GRANDE−AREA−DO−CONHECIMENTO=""NOME−DA−AREA−DO−CONHECIMENTO=""NOME−DA−SUB−AREA−DO−CONHECIMENTO=""NOME−DA−ESPECIALIDADE=""/>

<AREA−DE−ATUACAO SEQUENCIA−AREA−DE−ATUACAO="" NOME−GRANDE−AREA−DO↪→ −CONHECIMENTO="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−↪→ SUB−AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE=""/></↪→ AREAS−DE−ATUACAO>

<IDIOMAS><IDIOMA IDIOMA="" DESCRICAO−DO−IDIOMA="" PROFICIENCIA−DE−LEITURA

↪→ ="" PROFICIENCIA−DE−FALA="" PROFICIENCIA−DE−ESCRITA=""↪→ PROFICIENCIA−DE−COMPREENSAO=""/></IDIOMAS>

</DADOS−GERAIS><PRODUCAO−BIBLIOGRAFICA>

<TRABALHOS−EM−EVENTOS><TRABALHO−EM−EVENTOS SEQUENCIA−PRODUCAO="">

<DADOS−BASICOS−DO−TRABALHONATUREZA=""TITULO−DO−TRABALHO=""ANO−DO−TRABALHO=""PAIS−DO−EVENTO=""IDIOMA=""MEIO−DE−DIVULGACAO=""HOME−PAGE−DO−TRABALHO=""FLAG−RELEVANCIA=""DOI=""TITULO−DO−TRABALHO−INGLES=""FLAG−DIVULGACAO−CIENTIFICA=""/><DETALHAMENTO−DO−TRABALHOCLASSIFICACAO−DO−EVENTO=""NOME−DO−EVENTO=""CIDADE−DO−EVENTO=""ANO−DE−REALIZACAO=""TITULO−DOS−ANAIS−OU−PROCEEDINGS=""VOLUME=""FASCICULO=""SERIE=""PAGINA−INICIAL=""PAGINA−FINAL=""ISBN=""NOME−DA−EDITORA=""CIDADE−DA−EDITORA=""/>

Page 80: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

66 APÊNDICE G

<AUTORES NOME−COMPLETO−DO−AUTOR="" NOME−PARA−CITACAO=""↪→ ORDEM−DE−AUTORIA="" NRO−ID−CNPQ=""/>

<PALAVRAS−CHAVE PALAVRA−CHAVE−1="" PALAVRA−CHAVE−2=""↪→ PALAVRA−CHAVE−3="" PALAVRA−CHAVE−4="" PALAVRA−CHAVE↪→ −5="" PALAVRA−CHAVE−6=""/>

<AREAS−DO−CONHECIMENTO><AREA−DO−CONHECIMENTO−1 NOME−GRANDE−AREA−DO−CONHECIMENTO

↪→ ="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−SUB−↪→ AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE=""/>

<AREA−DO−CONHECIMENTO−2 NOME−GRANDE−AREA−DO−CONHECIMENTO↪→ ="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−SUB−↪→ AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE=""/>

<AREA−DO−CONHECIMENTO−3 NOME−GRANDE−AREA−DO−CONHECIMENTO↪→ ="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−SUB−↪→ AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE=""/>

</AREAS−DO−CONHECIMENTO><SETORES−DE−ATIVIDADE SETOR−DE−ATIVIDADE−1="" SETOR−DE−

↪→ ATIVIDADE−2="" SETOR−DE−ATIVIDADE−3=""/><INFORMACOES−ADICIONAIS DESCRICAO−INFORMACOES−ADICIONAIS

↪→ ="" DESCRICAO−INFORMACOES−ADICIONAIS−INGLES=""/></TRABALHO−EM−EVENTOS>

</TRABALHOS−EM−EVENTOS><ARTIGOS−PUBLICADOS>

<ARTIGO−PUBLICADO SEQUENCIA−PRODUCAO="" ORDEM−IMPORTANCIA=""><DADOS−BASICOS−DO−ARTIGO

NATUREZA=""TITULO−DO−ARTIGO=""ANO−DO−ARTIGO=""PAIS−DE−PUBLICACAO=""IDIOMA=""MEIO−DE−DIVULGACAO=""HOME−PAGE−DO−TRABALHO=""FLAG−RELEVANCIA=""DOI=""TITULO−DO−ARTIGO−INGLES=""FLAG−DIVULGACAO−CIENTIFICA=""/>

<DETALHAMENTO−DO−ARTIGO TITULO−DO−PERIODICO−OU−REVISTA=""↪→ ISSN="" VOLUME="" FASCICULO="" SERIE="" PAGINA−INICIAL↪→ ="" PAGINA−FINAL="" LOCAL−DE−PUBLICACAO=""/>

<AUTORES NOME−COMPLETO−DO−AUTOR="" NOME−PARA−CITACAO="" ORDEM↪→ −DE−AUTORIA="" NRO−ID−CNPQ=""/>

<PALAVRAS−CHAVE PALAVRA−CHAVE−1="" PALAVRA−CHAVE−2="" PALAVRA↪→ −CHAVE−3="" PALAVRA−CHAVE−4="" PALAVRA−CHAVE−5=""↪→ PALAVRA−CHAVE−6=""/>

<AREAS−DO−CONHECIMENTO><AREA−DO−CONHECIMENTO−1 NOME−GRANDE−AREA−DO−CONHECIMENTO

↪→ ="" NOME−DA−AREA−DO−CONHECIMENTO="" NOME−DA−SUB−↪→ AREA−DO−CONHECIMENTO="" NOME−DA−ESPECIALIDADE↪→ =""/></AREAS−DO−CONHECIMENTO>

<SETORES−DE−ATIVIDADE SETOR−DE−ATIVIDADE−1="" SETOR−DE−↪→ ATIVIDADE−2="" SETOR−DE−ATIVIDADE−3=""/>

<INFORMACOES−ADICIONAIS DESCRICAO−INFORMACOES−ADICIONAIS↪→ ="" DESCRICAO−INFORMACOES−ADICIONAIS−INGLES=""/>

</ARTIGO−PUBLICADO></ARTIGOS−PUBLICADOS>

</PRODUCAO−BIBLIOGRAFICA></CURRICULO−VITAE>

Page 81: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice H

Arquivo OWL da ontologia basic-lattes

Arquivo H.1: Arquivo OWL da ontologia basic-lattes<?xml ve r s i on ="1.0"?><rd f :RDF xmlns="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#"

xml : base="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l "xmlns : rd f="http ://www.w3 . org /1999/02/22− rdf−syntax−ns#"xmlns : owl="http ://www.w3 . org /2002/07/ owl#"xmlns : xsd="http ://www.w3 . org /2001/XMLSchema#"xmlns : r d f s="http ://www.w3 . org /2000/01/ rdf−schema#">

<owl : Ontology rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l "/>

<!−−//////////////////////////////////////////////////////

//// Object Prope r t i e s////////////////////////////////////////////////////////−−>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#publ icadoPor −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#publ icadoPor"><owl : inver seOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#publ i cou"/><rd f : type rd f : r e s ou r c e="http ://www.w3 . org /2002/07/ owl#

↪→ Inver seFunct iona lProper ty"/><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Coautor"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#publ i cou −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#publ i cou"><rd f : type rd f : r e s ou r c e="http ://www.w3 . org /2002/07/ owl#

↪→ Inver seFunct iona lProper ty"/>

67

Page 82: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

68 APÊNDICE H

<rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#Coautor"/>

<rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#Pesquisador"/>

<rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#Art igo"/>

</owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#temAreaDeAtuacao −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temAreaDeAtuacao"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeAtuacao"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#temAreaDeConhecimento↪→ −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temAreaDeConhecimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#ProducaoB ib l i og ra f i c a"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeConhecimento"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ temDetalhamentoDoArtigo −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temDetalhamentoDoArtigo"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igoPubl icado"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ temDetalhamentoDoEvento −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temDetalhamentoDoEvento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#TrabalhoEmEvento"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#temFormacaoAcademica↪→ −−>

Page 83: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL DA ONTOLOGIA BASIC-LATTES 69

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temFormacaoAcademica"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#FormacaoAcademica"/></owl : ObjectProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#temPalavraChave −−>

<owl : ObjectProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#temPalavraChave"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#ProducaoB ib l i og ra f i c a"/><rd f s : range rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#PalavraChave"/></owl : ObjectProperty>

<!−−//////////////////////////////////////////////////////

// Data p r op e r t i e s////////////////////////////////////////////////////////−−>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#anoDoArtigo −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#anoDoArtigo"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#in t "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#cidadeNascimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#cidadeNascimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#doi −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#doi"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

Page 84: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

70 APÊNDICE H

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#f a s c i c u l o −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#f a s c i c u l o "><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ f l a gD i vu l g a c a oC i e n t i f i c a −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#f l a gD i vu l g a c a oC i e n t i f i c a"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#boolean

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#f l a gRe l evanc i a −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#f l a gRe l evanc i a"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#homePageDoTrabalho −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#homePageDoTrabalho"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#idioma −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#idioma"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#i s s n −−>

Page 85: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL DA ONTOLOGIA BASIC-LATTES 71

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#i s s n"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igoPubl icado"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#loca lDePubl i cacao −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#loca lDePubl i cacao"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igoPubl icado"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#meioDeDivulgacao −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#meioDeDivulgacao"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nac i ona l i dade −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nac iona l i dade"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#natureza −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#natureza"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nomeCompleto −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeCompleto"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/>

Page 86: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

72 APÊNDICE H

<rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g↪→ "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nomeCompletoDoAutor↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeCompletoDoAutor"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Coautor"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ nomeDaAreaDConhecimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeDaAreaDConhecimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeConhecimento"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nomeDaEspecialidade↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeDaEspecialidade"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeConhecimento"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ nomeDaSubAreaDoConhecimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeDaSubAreaDoConhecimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeConhecimento"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ nomeEmCitacoesBib l iogra f icas −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeEmCitacoesBib l iogra f i cas"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/>

Page 87: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL DA ONTOLOGIA BASIC-LATTES 73

<rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g↪→ "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ nomeGrandeAreaDoConhecimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeGrandeAreaDoConhecimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#AreaDeConhecimento"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nomeParaCitacao −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nomeParaCitacao"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Coautor"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#nroIdCnpq −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#nroIdCnpq"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Coautor"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#numeroIdent i f i cador↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#numeroIdent i f i cador"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#ordemDeAutoria −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#ordemDeAutoria"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Coautor"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#in t "/>

</owl : DatatypeProperty>

Page 88: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

74 APÊNDICE H

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#pag inaFina l −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#pag inaFina l"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#in t "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#pa g i n a I n i c i a l −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#pa g i n a I n i c i a l "><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#in t "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#pa i s −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#pa i s"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igoPubl icado"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#paisDeNaciona l idade↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#paisDeNaciona l idade"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#paisDeNascimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#paisDeNascimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#permissaoDeDivulgacao↪→ −−>

Page 89: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL DA ONTOLOGIA BASIC-LATTES 75

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#permissaoDeDivulgacao"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#boolean

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#s e r i e −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#s e r i e "><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#s i g l aPa i sNac i ona l i dade↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#s i g l aPa i sNac i ona l i dade"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#textoResumoCvRh −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#textoResumoCvRh"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#textoResumoRvRhEn −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#textoResumoRvRhEn"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pesquisador"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#t ipo −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#t ipo"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/>

Page 90: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

76 APÊNDICE H

<rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g↪→ "/>

</owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#t i t u l o −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#t i t u l o "><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#t i t u l oDoAr t i g o Ing l e s↪→ −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#t i t u l oDoAr t i g o Ing l e s"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ t i tu loDoPer iod icoOuRevi s ta −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#t i tu loDoPer iod icoOuRevi s ta"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igoPubl icado"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#ufNascimento −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#ufNascimento"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Pessoa"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#volume −−>

<owl : DatatypeProperty rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−↪→ f i n a l#volume"><rd f s : domain rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−l a t t e s−

↪→ f i n a l#Art igo"/><rd f s : range rd f : r e s ou r c e="http ://www.w3 . org /2001/XMLSchema#s t r i n g

↪→ "/></owl : DatatypeProperty>

Page 91: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

ARQUIVO OWL DA ONTOLOGIA BASIC-LATTES 77

<!−−////////////////////////////////////////////////////////// C la s s e s////////////////////////////////////////////////////////−−>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#AreaDeAtuacao −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ AreaDeAtuacao"/>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#AreaDeConhecimento −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ AreaDeConhecimento"/>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#Art igo −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ Artigo"><rd f s : subClassOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−

↪→ l a t t e s−f i n a l#ProducaoB ib l i og ra f i c a"/></owl : Class>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#Art igoPubl icado −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ Art igoPubl icado"><rd f s : subClassOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−

↪→ l a t t e s−f i n a l#Art igo"/></owl : Class>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#Coautor −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ Coautor"><rd f s : subClassOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−

↪→ l a t t e s−f i n a l#Pessoa"/></owl : Class>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#FormacaoAcademica −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ FormacaoAcademica"/>

Page 92: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

78 APÊNDICE H

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#PalavraChave −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ PalavraChave"/>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#Pesquisador −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ Pesquisador"><rd f s : subClassOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−

↪→ l a t t e s−f i n a l#Pessoa"/></owl : Class>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#Pessoa −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ Pessoa"/>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#ProducaoB ib l i og ra f i c a↪→ −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ ProducaoB ib l i og ra f i c a"/>

<!−− http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#TrabalhoEmEvento −−>

<owl : Class rd f : about="http ://www. onto . org /obda/ bas ic−l a t t e s−f i n a l#↪→ TrabalhoEmEvento"><rd f s : subClassOf rd f : r e s ou r c e="http ://www. onto . org /obda/ bas ic−

↪→ l a t t e s−f i n a l#Art igo"/></owl : Class>

</rd f :RDF>

<!−− Generated by the OWL API ( ve r s i on 4.2 .8 .20170104−2310) https : // github .↪→ com/owlcs / owlapi −−>

Page 93: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Apêndice I

Classes do modelo de objetos doOntoMongo

Arquivo I.1: Classe publication do modelo de objetos do OntoMongo1 c l a s s Pub l i ca t i on2 inc lude Mongoid : : Document3 inc lude OntoMap45 embedded_in : r e s e a r c h e r s67 f i e l d : nature , type : S t r ing8 f i e l d : t i t l e , type : S t r ing9 f i e l d : t i t l e_en , type : S t r ing

10 f i e l d : year , type : I n t eg e r11 f i e l d : country , type : S t r ing12 f i e l d : language , type : S t r ing13 f i e l d : medium , type : S t r ing14 f i e l d : doi , type : S t r ing15 f i e l d : coauthors , type : Array1617 end

Arquivo I.2: Classes researcher do modelo de objetos do OntoMongo1 # coding : utf−82 c l a s s Researcher3 in c lude Mongoid : : Document4 inc lude OntoMap56 embeds_many : pub l i c a t i o n s78 f i e l d : name , type : S t r ing9 f i e l d : name_in_citations , type : S t r ing

10 f i e l d : country , type : S t r ing11 f i e l d : resume , type : S t r ing1213 v a l i d a t e s : name , : un iqueness => true14 v a l i d a t e s : name_in_citations , : un iqueness => true15 index ({ ’name ’ => 1 , ’ name_in_citations ’ => 1} , { unique : true , drop_dups

↪→ : t rue })1617 end

79

Page 94: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

80 APÊNDICE I

Page 95: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

Referências Bibliográficas

Araujo et al.(2017) Thiago Henrique Dias Araujo, Barbara Tieko Agena, Kelly Rosa Braghettoe Renata Wassermann. OntoMongo - Ontology-Based Data Access for NoSQL. Em Proceedingsof the IX Seminar on Ontology Research in Brazil and I Doctoral and Masters Consortium onOntologies, Brasília, Brazil, August 28th-30th, 2017., páginas 55–66. Citado na pág. xi, 2, 19, 25,26, 32

Bizer e Seaborne(2004) Christian Bizer e Andy Seaborne. D2RQ-treating non-RDF databa-ses as virtual RDF graphs. Em Proceedings of the 3rd international semantic web conference(ISWC2004), volume 2004. Springer. Citado na pág. 8

Botoeva et al.(2016) Elena Botoeva, Diego Calvanese, Benjamin Cogrel, Martin Rezk e GuohuiXiao. OBDA Beyond Relational DBs: A Study for MongoDB. Em Proceedings of the 29thInternational Workshop on Description Logics, Cape Town, South Africa, April 22-25, 2016.Citado na pág. 13, 15, 16, 17, 19, 25, 26, 29, 32, 43

Calvanese et al.(2007) Diego Calvanese, Giuseppe De Giacomo, Domenico Lembo, Maurizio Len-zerini, Antonella Poggi e Riccardo Rosati. Ontology-based Database Access. Em Proceedings ofthe Fifteenth Italian Symposium on Advanced Database Systems, SEBD 2007, 17-20 June 2007,Torre Canne, Fasano, BR, Italy, páginas 324–331. Citado na pág. 1, 7

Calvanese et al.(2013) Diego Calvanese, Martin Giese, Peter Haase, Ian Horrocks, Thomas Hu-bauer, Yannis E. Ioannidis, Ernesto Jiménez-Ruiz, Evgeny Kharlamov, Herald Kllapi, Johan W.Klüwer, Manolis Koubarakis, Steffen Lamparter, Ralf Möller, Christian Neuenstadt, T. Nordt-veit, Özgür L. Özçep, Mariano Rodriguez-Muro, Mikhail Roshchin, Domenico Fabio Savo, Mi-chael Schmidt, Ahmet Soylu, Arild Waaler e Dmitriy Zheleznyakov. Optique: OBDA Solution forBig Data. Em The Semantic Web: ESWC 2013 Satellite Events - ESWC 2013 Satellite Events,Montpellier, France, May 26-30, 2013, Revised Selected Papers, páginas 293–295. Citado na pág. xi,7

Calvanese et al.(2017) Diego Calvanese, Benjamin Cogrel, Sarah Komla-Ebri, Roman Kontcha-kov, Davide Lanti, Martin Rezk, Mariano Rodriguez-Muro e Guohui Xiao. Ontop: AnsweringSPARQL queries over relational databases. Semantic Web, 8(3):471–487. Citado na pág. 3, 8, 43

Curé et al.(2013) Olivier Curé, Myriam Lamolle e Chan Le Duc. Ontology Based Data IntegrationOver Document and Column Family Oriented NoSQL. CoRR, abs/1307.2603. Citado na pág. 44

Das et al.(2012) Souripriya Das, Seema Sundara e Richard Cyganiak. R2RML: RDB to RDFmapping language, 2012. Acessado: 2017-08-07. Citado na pág. 9

de Oliveira e Wassermann(2017) Rafael Brito de Oliveira e Renata Wassermann. Utilização deOntologia para Busca em Base de Dados de Acórdãos do STF (Using an Ontology for Searchingthe Decisions of the Brazilian Supreme Court). Em Proceedings of the IX Seminar on OntologyResearch in Brazil and I Doctoral and Masters Consortium on Ontologies, Brasília, Brazil, August28th-30th, 2017., páginas 147–157. Citado na pág. 19

81

Page 96: AcessoaDadosBaseado emOntologiascomNoSQL · 2018-02-19 · AcessoaDadosBaseado emOntologiascomNoSQL Bárbara Tieko Agena Dissertação apresentada ao Instituto de Matemática e Estatística

82 REFERÊNCIAS BIBLIOGRÁFICAS

Gruber(2009) Tom Gruber. Ontology. Em Ling Liu e M. Tamer Özsu, editors, Encyclopedia ofDatabase Systems, páginas 1963–1965. Springer US. ISBN 978-0-387-35544-3. Citado na pág. 3

Han et al.(2011) Jing Han, E Haihong, Guan Le e Jian Du. Survey on NoSQL database. Em 20116th International Conference on Pervasive Computing and Applications, páginas 363–366. IEEE.Citado na pág. 13

Klyne e Carroll(2006) Graham Klyne e Jeremy J. Carroll. Resource Description Framework(RDF):Concepts and Abstract Syntax. Relatório técnico, W3C Consortium. Citado na pág. xi, 6

Mena-Chalco e Junior(2009) Jesús P. Mena-Chalco e Roberto Marcondes Cesar Junior. Scrip-tLattes: an open-source knowledge extraction system from the Lattes platform. Journal of theBrazilian Computer Society, 15(4):31–39. Citado na pág. 26

Michel et al.(2015) Franck Michel, Loıc Djimenou, Catherine Faron-Zucker e Johan Montagnat.xR2RML: Non-relational databases to RDF mapping language. Relatório técnico, Signaux etSystèmes de Sophia-Antipolis. Citado na pág. 17

Michel et al.(2016) Franck Michel, Catherine Faron-Zucker e Johan Montagnat. A Mapping-Based Method to Query MongoDB Documents with SPARQL. Em DEXA (2), volume 9828 ofLecture Notes in Computer Science, páginas 52–67. Springer. Citado na pág. 13, 17, 29, 32

Ong et al.(2014) Kian Win Ong, Yannis Papakonstantinou e Romain Vernoux. The SQL++ Semi-structured Data Model and Query Language: A Capabilities Survey of SQL-on-Hadoop, NoSQLand NewSQL databases. CoRR, abs/1405.3631. Citado na pág. 43

Rodriguez-Muro e Calvanese(2011) Mariano Rodriguez-Muro e Diego Calvanese. Dependen-cies: Making Ontology Based Data Access Work in Practice. Em AMW, volume 749 of CEURWorkshop Proceedings. CEUR-WS.org. Citado na pág. 9

Rodrıguez-Muro e Calvanese(2012) Mariano Rodrıguez-Muro e Diego Calvanese. Quest, asystem for ontology based data access. Em Proceedings of OWL: Experiences and DirectionsWorkshop (OWLED), Heraklion. Citado na pág. 9

Rodriguez-Muro et al.(2012) Mariano Rodriguez-Muro, Josef Hardi e Diego Calvanese. Quest:Effcient SPARQL-to-SQL for RDF and OWL. Em International Semantic Web Conference (Pos-ters & Demos), volume 914 of CEUR Workshop Proceedings. CEUR-WS.org. Citado na pág. 9

Rodriguez-Muro et al.(2013a) Mariano Rodriguez-Muro, Roman Kontchakov e MichaelZakharyaschev. Ontology-Based Data Access: Ontop of Databases. Em International Seman-tic Web Conference (1), volume 8218 of Lecture Notes in Computer Science, páginas 558–573.Springer. Citado na pág. 10

Rodriguez-Muro et al.(2013b) Mariano Rodriguez-Muro, Martín Rezk, Josef Hardi, MindaugasSlusnys, Timea Bagosi e Diego Calvanese. Evaluating SPARQL-to-SQL Translation in Ontop.Em Informal Proceedings of the 2nd International Workshop on OWL Reasoner Evaluation (ORE-2013), Ulm, Germany, July 22, 2013, páginas 94–100. Citado na pág. 8

Sadalage e Fowler(2012) Pramod J. Sadalage e Martin Fowler. NoSQL Distilled: A Brief Guideto the Emerging World of Polyglot Persistence. Addison-Wesley Professional, 1st edição. ISBN0321826620, 9780321826626. Citado na pág. xi, 20

Sequeda et al.(2014) Juan F. Sequeda, Marcelo Arenas e Daniel P. Miranker. OBDA: QueryRewriting or Materialization? In Practice, Both! Em The Semantic Web - ISWC 2014 - 13thInternational Semantic Web Conference, Riva del Garda, Italy, October 19-23, 2014. Proceedings,Part I, páginas 535–551. Citado na pág. 8